devel/cython-lint: Add cython-lint 0.16.2
cython-lint provides everything flake8 used to do (by accident), plus much more.
cython-lint is a tool and pre-commit hook to lint Cython files.
devel/py-xstatic-autosize: New port
autosize 1.17.2 (XStatic packaging standard)
autosize (jQuery plugin for dynamic textarea sizing) packaged for
setuptools (easy_install) / pip.
This package is intended to be used by **any** project that needs these
files.
It intentionally does **not** provide any extra code except some
metadata **nor** has any extra requirements. You MAY use some minimal
support code from the XStatic base package, if you like.
WWW: https://www.jacklmoore.com/autosize/
ports: Fix after 771e57d671d9
I missed a step when I renamed devel/xtensa-esp32-elf to
devel/xtensa-esp-elf; update devel/Makefile
PR: 281677
Reported by: Robert William Vesterman
devel/electron32: add port: Build cross-platform desktop apps with JavaScript,
HTML, and CSS
Build cross platform desktop apps with JavaScript, HTML, and CSS.
It's easier than you think.
If you can build a website, you can build a desktop app. Electron is a
framework for creating native applications with web technologies like
JavaScript, HTML, and CSS. It takes care of the hard parts so you can
focus on the core of your application.
WWW: https://electronjs.org/
devel/py-xstatic-bootstrap3: New port
Bootstrap 3.1.1 (XStatic packaging standard)
Twitter Bootstrap packaged for setuptools (easy_install) / pip.
This package is intended to be used by any project that needs these
files.
It intentionally does not provide any extra code except some metadata
nor has any extra requirements. You MAY use some minimal support code
from the XStatic base package, if you like.
WWW: https://getbootstrap.com/
devel/py-xstatic-bootstrap: New port
Bootstrap 4.5.3 (XStatic packaging standard)
Twitter Bootstrap packaged for setuptools (easy_install) / pip.
This package is intended to be used by any project that needs these
files.
It intentionally does not provide any extra code except some metadata
nor has any extra requirements. You MAY use some minimal support code
from the XStatic base package, if you like.
devel/py-flatland: New port
HTML form management and validation
Flatland maps between rich, structured Python application data and the
string-oriented flat namespace of web forms, key/value stores, text
files and user input. Flatland provides a schema-driven mapping toolkit
with optional data validation.
Flatland is great for:
- Collecting, validating, re-displaying and processing HTML form data
- Dealing with rich structures (lists, dicts, lists of dicts, etc.) in
web data
- Validating JSON, YAML, and other structured formats
- Associating arbitrary Python types with JSON, .ini, or sys.argv
members that would otherwise deserialize as simple strings.
- Reusing a single data schema for HTML, JSON apis, RPC
The core of the flatland toolkit is a flexible and extensible
declarative schema system representing many data types and structures.
A validation system and library of schema-aware validators is also
provided, with rich i18n capabilities for use in HTML, network APIs and
other environments where user-facing messaging is required.
WWW: https://github.com/discorporate/flatland/
devel/Makefile: Add entry for linux-rl9-libtool-ltdl
Fixes: df72b6b948fc ("devel/linux-rl9-libtool-ltdl: Runtime libraries for GNU
libtool (Rocky Linux 9)")
Sponsored by: Beckhoff Automation GmbH & Co. KG
devel/rubygem-activejob72: Add rubygem-activejob72 7.2.1
Active Job is a framework for declaring jobs and making them run on a variety of
queuing backends. These jobs can be everything from regularly scheduled
clean-ups, to billing charges, to mailings -- anything that can be chopped up
into small units of work and run in parallel.
It also serves as the backend for Action Mailer's #deliver_later functionality
that makes it easy to turn any mailing into a job for running later. That's one
of the most common jobs in a modern web application: sending emails outside the
request-response cycle, so the user doesn't have to wait on it.
The main point is to ensure that all Rails apps will have a job infrastructure
in place, even if it's in the form of an "immediate runner". We can then have
framework features and other gems build on top of that, without having to worry
about API differences between Delayed Job and Resque. Picking your queuing
backend becomes more of an operational concern, then. And you'll be able to
switch between them without having to rewrite your jobs.
devel/rubygem-activesupport72: Add rubygem-activesupport72 7.2.1
Active Support is a collection of utility classes and standard library
extensions that were found useful for the Rails framework. These additions
reside in this package so they can be loaded as needed in Ruby projects outside
of Rails.
devel/rubygem-actionview72: Add rubygem-actionview72 7.2.1
Action View is a framework for handling view template lookup and rendering, and
provides view helpers that assist when building HTML forms, Atom feeds and more.
Template formats that Action View handles are ERB (embedded Ruby, typically used
to inline short Ruby snippets inside HTML), and XML Builder.
devel/py-anywidget: Add py-anywidget 0.9.13
Anywidget uses modern web standards to simplify authoring and distributing
custom Jupyter Widgets.
- Create widgets without complicated cookiecutter templates
- Publish to PyPI like any other Python package
- Prototype within .ipynb or .py files
- Run in Jupyter, JupyterLab, Google Colab, VSCode, marimo and more
- Develop with instant HMR, like modern web frameworks
devel/py-psygnal: Add py-psygnal 0.11.1
Psygnal (pronounced "signal") is a pure python implementation of the observer
pattern, with the API of Qt-style Signals with (optional) signature and type
checking, and support for threading. It has no dependencies.
This library does not require or use Qt in any way, It simply implements a
similar observer pattern API.
devel/py-pytest-instafail: Add py-pytest-instafail 0.5.0
pytest-instafail is a plugin for pytest that shows failures and errors instantly
instead of waiting until the end of test session.
devel/gitea-act_runner: New port
Act runner is a runner for Gitea based on Gitea fork of act.
This is a fork of the original act runner developed and maintained by Gitea
community and intended to be used with Gitea only.
PLEASE NOTE that this port still does not ship with a rc script as this is
a WIP at the moment.
WWW: https://gitea.com/gitea/act_runner/
devel/py-iterable-io: New port
iterable-io is a small Python library that provides an adapter so that
it's possible to read from iterable objects in the same way as file-like
objects.
WWW: https://github.com/pR0Ps/iterable-io
PR: 279304
devel/radicle: New port: Sovereign code forge built on Git
Radicle is an open source, peer-to-peer code collaboration stack built
on Git. Unlike centralized code hosting platforms, there is no single
entity controlling the network. Repositories are replicated across
peers in a decentralized manner, and users are in full control of
their data and workflow.
WWW: https://radicle.xyz/
devel/rubygem-metrics: Add rubygem-metrics 0.10.2
Capture metrics about code execution in a vendor agnostic way. As the author of
many libraries which would benefit from metrics, there are few key priorities:
(1) zero overhead if metrics are disabled, minimal overhead if enabled, and (2)
a small and opinionated interface with standardised semantics.
Features:
- Zero-overhead if tracing is disabled and minimal overhead if enabled.
- Small opinionated interface with standardised semantics.
devel/rubygem-pagy6: Add rubygem-pagy6 6.5.0
Pagy is a pagination gem.
It works in any environment: with Rack frameworks (Rails, Sinatra, Padrino,
etc.) or in pure ruby without Rack
It works with any collection: with any ORM, any DB, any search gem,
elasticsearch_rails, meilisearch, searchkick, ransack, and just about any list,
even if you cannot count it
It supports all kinds of pagination: calendar, countless, geared, incremental,
auto-incremental, infinite, headers, JSON, cursor
It supports all kinds of CSS Frameworks and APIs: bootstrap, bulma, foundation,
materialize, semantic, uikit, tailwind, JSON:API
It supports faster client-side rendering: with classic or innovative UI
components (see Javascript Components) or by serving JSON to your favorite
Javascript framework
It has 100% of test coverage for Ruby, HTML and Javascript E2E (see Pagy
Workflows CI)
devel/py-opentelemetry-proto: Add py-opentelemetry-proto 1.27.0
OpenTelemetry Python Proto contains the generated code for OpenTelemetry
protobuf data model.
devel/py-opentelemetry-exporter-otlp-proto-common: Add
py-opentelemetry-exporter-otlp-proto-common 1.27.0
OpenTelemetry Protobuf Encoding is provided as a convenience to encode to
Protobuf. Currently used by:
- opentelemetry-exporter-otlp-proto-grpc
- opentelemetry-exporter-otlp-proto-http
devel/py-opentelemetry-exporter-otlp-proto-grpc: Add
py-opentelemetry-exporter-otlp-proto-grpc 1.27.0
OpenTelemetry Collector Protobuf over gRPC Exporter allows to export data to the
OpenTelemetry Collector using the OpenTelemetry Protocol using Protobuf over
gRPC.
devel/py-opentelemetry-exporter-otlp-proto-http: Add
py-opentelemetry-exporter-otlp-proto-http 1.27.0
OpenTelemetry Collector Protobuf over HTTP Exporter allows to export data to the
OpenTelemetry Collector using the OpenTelemetry Protocol using Protobuf over
HTTP.
devel/py-lxml5: Add py-lxml5 5.3.0
lxml is the most feature-rich and easy-to-use library for processing XML and
HTML in the Python language. It's also very fast and memory friendly, just so
you know.
devel/py-opentelemetry-exporter-otlp: Add py-opentelemetry-exporter-otlp 1.27.0
OpenTelemetry Collector Exporters is provided as a convenience to install all
supported OpenTelemetry Collector Exporters. Currently it installs:
- opentelemetry-exporter-otlp-proto-grpc
- opentelemetry-exporter-otlp-proto-http
In the future, additional packages will be available:
opentelemetry-exporter-otlp-json-http
To avoid unnecessary dependencies, users should install the specific package
once they've determined their preferred serialization and protocol method.
devel/py-argparse-manpage: Add py-argparse-manpage 4.6
Avoid documenting your Python script arguments on two places! This is typically
done in an argparse.ArgumentParser help configuration (help=, description=,
etc.), and also in a manually crafted manual page.
The good thing about an ArgumentParser objects is that it actually provides a
traversable "tree-like" structure, with all the necessary info needed to
automatically generate documentation, for example in a groff typesetting system
(manual pages). And this is where this project can help.
There are two supported ways to generate the manual, either script it using the
installed command argparse-manpage, or via setup.py build automation (with a
slight bonus of automatic manual page installation with setup.py install).
devel/py-shpyx: Add py-shpyx 0.0.29
shpyx is a simple, lightweight and typed library for running shell commands in
Python.
Use shpyx.run to run a shell command in a subprocess.
devel/p5-lib-filter: Add p5-lib-filter 0.281
lib::filter lets you allow/disallow loading modules using some rules. It works
by installing a coderef in @INC (and additionally by pruning some entries in
@INC). The main use-case for this pragma is for testing.
devel/p5-Module-Path-More: Add p5-Module-Path-More 0.340
Module::Path::More provides a function, module_path(), which will find where a
module (or module prefix, or .pod file) is installed locally. (There is also
another function pod_path() which is just a convenience wrapper.)
It works by looking in all the directories in @INC for an appropriately named
file. If module is Foo::Bar, will search for Foo/Bar.pm, Foo/Bar.pmc (if
find_pmc argument is true), Foo/Bar directory (if find_prefix argument is true),
or Foo/Bar.pod (if find_pod argument is true).
devel/p5-Proc-ChildError: Add p5-Proc-ChildError 0.04
Proc::ChildError produces a string description of an error number. $child_error
defaults to $? if not specified. $os_error defaults to $! if not specified.
The algorithm is taken from perldoc -f system.
devel/p5-Scalar-Util-Numeric-PP: Add p5-Scalar-Util-Numeric-PP 0.04
Scalar::Util::Numeric::PP is written mainly for the convenience of Data::Sah, as
a drop-in pure-perl replacement for the XS module Scalar::Util::Numeric, in the
case when Data::Sah needs to generate code that uses PP modules instead of XS
ones.
Not all functions from Scalar::Util::Numeric have been provided.
devel/p5-Time-Duration-Parse-AsHash: Add p5-Time-Duration-Parse-AsHash 0.10.6
Time::Duration::Parse::AsHash is like Time::Duration::Parse except:
- By default it returns a hashref of parsed duration elements instead of number
of seconds
There are some circumstances when you want this, e.g. when feeding into
DateTime::Duration and you want to count for leap seconds.
To return number of seconds like Time::Duration::Parse, pass a true value as
the second argument.
- By default seconds are not rounded
For example: "0.1s" or 100ms will return result { seconds => 0.1 }, and "2.3s"
will return { seconds => 2.3 }.
Also, <01:02:03> being recognized as 1h2min3s, 01:02:03.4567 will also be
recognized as 1h2min3.4567s.
- It recognizes more duration units
milliseconds (ms), which will be returned in the seconds key, for example
"400ms" returns { seconds => 0.4 }.
microseconds. This will also be returned in seconds key.
nanoseconds (ns). This will also be returned in seconds key.
decades. This will be returned in years key, for example "1.5 decades" will
return { years => 15 }.
- It has a lower startup overhead
By avoiding modules like Carp and Exporter::Lite, even strict and warnings
(starts up in ~3m vs ~9ms on my computer).
devel/p5-Data-Sah-Filter: Add p5-Data-Sah-Filter 0.025
Data::Sah::Filter contains a standard set of filter rules for Data::Sah (to be
used in prefilters and postfilters clauses). It is separated from the Data-Sah
distribution and can be used independently.
A filter rule is put in Data::Sah::Filter::$COMPILER::$CATEGORY:$DESCRIPTION
module, for example: Data::Sah::Filter::perl::Str::trim for trimming whitespace
at the beginning and end of string.
Basically, a filter rule will provide an expression (in expr_filter) in the
target language (e.g. Perl, JavaScript, or others) to convert one data to
another. Multiple filter rules can be combined to form the final filtering code.
This code can be used by Data::Sah when generating validator code from Sah
schema, or can be used directly. Some projects which use filtering rules
directly include: App::orgadb (which lets users specify filters from the
command-line).
devel/p5-Data-Sah-Resolve: Add p5-Data-Sah-Resolve 0.011
Data::Sah::Resolve provides resolve_schema. Sah schemas can be defined in terms
of other schemas as base. The resolving process follows the (outermost) base
schema until it finds a builtin type as the (innermost) base. It then returns a
hash result (a DefHash with v=2) containing the type as well other information
like the collected clause sets and others.
This routine performs the following steps:
1. Normalize the schema
Unless schema_is_normalized option is true, in which case schema is assumed
to be normalized already.
2. Check if the schema's type is a builtin type
Currently this is done by checking if the module of the name
Data::Sah::Type::<type> is loadable. If it is a builtin type then we are
done.
3. Check if the schema's type is the name of another schema
This is done by checking if Sah::Schema::<name> module exists and is
loadable. If this is the case then we retrieve the base schema from the
$schema variable in the Sah::Schema::<name> package and repeat the process
while accumulating and/or merging the clause sets.
4. If schema's type is neither, we die.
devel/p5-IPC-System-Options: Add p5-IPC-System-Options 0.341
IPC::System::Options provides replacement (wrapper) for Perl's system(),
readpipe() (qx//, a.k.a. the backtick operator), as well as IPC::Run's start()
and run(). The wrappers give you options like forcing/avoiding use of shell
(like what IPC::System::Simple offers you), logging the arguments and/or output
(using Log::ger), temporarily setting environment variables, temporarily setting
working directory, dying on non-zero exit code, capturing (or tee-ing) output
(stdout/stderr) (using Capture::Tiny), and a few others. They are meant as a
convenience so you can just call system() (or the other wrapper target) instead
of doing some additional setup and cleanup yourself.
devel/p5-Language-Expr: Add p5-Language-Expr 0.29
Language::Expr defines a simple, Perl-like expression minilanguage. It supports
mathematical and string operators, arrays, hashes, variables, and functions. See
Language::Expr::Manual::Syntax for description of the language syntax.
This distribution consists of the language parser (Language::Expr::Parser), some
interpreters (Language::Expr::Interpreter::*), and some compilers
(Language::Expr::Compiler::*).
devel/p5-Data-Sah: Add p5-Data-Sah 0.917
Data-Sah implements compilers for producing Perl and JavaScript validators, as
well as translatable human description text from Sah schemas. Compiler approach
is used instead of interpreter for faster speed.
The generated validator code can run without the Data::Sah::* modules.
devel/p5-Data-Sah-Coerce: Add p5-Data-Sah-Coerce 0.054
Data::Sah::Coerce contains a standard set of coercion rules for Data::Sah. It is
separated from the Data-Sah distribution and can be used independently.
A coercion rule is put in
Data::Sah::Coerce::$COMPILER::To_$TARGET_TYPE::From_$SOURCE_TYPE::DESCRIPTION
module, for example: Data::Sah::Coerce::perl::To_date::From_float::epoch for
converting date from integer (Unix epoch) or
Data::Sah::Coerce::perl::To_date::From_str::iso8601 for converting date from
ISO8601 strings like "2016-05-15".
Basically, a coercion rule will provide an expression (expr_match) that
evaluates to true when data can be coerced, and an expression (expr_coerce) to
actually coerce/convert data to the target type. This rule can be combined with
other rules to form the final coercion code.
devel/p5-Data-Sah-DefaultValue: Add p5-Data-Sah-DefaultValue 0.005
Data::Sah::DefaultValue generates code to set default value using value rules.
A value rule is put in Data::Sah::Value::$COMPILER::$TOPIC::$DESCRIPTION module,
for example: Data::Sah::Value::perl::Perl::this_mod contains the value "this
module" (see App::ThisDist for more details on the meaning of "this module").
Basically, a value rule will provide an expression (expr_value) that return some
value.
devel/p5-Data-Cmp: Add p5-Data-Cmp 0.010
This relatively lightweight (no non-core dependencies, under 100 lines of code)
module offers the cmp_data function that, like Perl's cmp, returns -1/0/1 value.
cmp_data differs from cmp in that it can compare two data of different types and
compare data items recursively, with pretty sensible semantics. In addition to
returning -1/0/1, cmp_data can also return 2 if two data differ but not
comparable: there is no sensible notion of which one is "greater than" the
other. An example is empty hash {} vs empty array []).
This module can handle circular structure.
devel/p5-Data-ModeMerge: Add p5-Data-ModeMerge 0.360
There are already several modules on CPAN to do recursive data structure
merging, like Data::Merger and Hash::Merge. Data::ModeMerge differs in that it
offers merging "modes" and "options". It provides greater flexibility on what
the result of a merge between two data should/can be. This module may or may not
be what you need.
One application of this module is in handling configuration. Often there are
multiple levels of configuration, e.g. in your typical Unix command-line program
there are system-wide config file in /etc, per-user config file under ~/, and
command-line options. It's convenient programatically to load each of those in a
hash and then merge system-wide hash with the per-user hash, and then merge the
result with the command-line hash to get the a single hash as the final
configuration. Your program can from there on deal with this just one hash
instead of three.
In a typical merging process between two hashes (left-side and right-side), when
there is a conflicting key, then the right-side key will override the left-side.
This is usually the desired behaviour in our said program as the system-wide
config is there to provide defaults, and the per-user config (and the
command-line arguments) allow a user to override those defaults.
devel/kdsingleapplication: New port: Class that helps implement applications
that follow the single-instance policy
Class that helps implement applications that follow the single-instance
policy referring to those applications that want to spawn a unique
instance for a given user session. Even when launched multiple times,
such applications will not spawn a number of separate instances.
WWW: https://github.com/KDAB/KDSingleApplication/
devel/linux-rl9-libatomic: Add new port
Libatomic is a GCC-specific fallback implementation for atomics to
allow architectures that don't always provide a full set of atomics
to runtime-detect the existence of them, or fall back to the use of
mutexes. This is the Linux version.
https://gcc.gnu.org/
devel/py-jsonargparse: Library for creating CLIs
Library for creating command-line interfaces (CLIs) and making Python
apps easily configurable. It is a well-maintained project with frequent
releases, adhering to high standards of development: semantic versioning,
deprecation periods, changelog, automated testing, and full test coverage.
https://github.com/omni-us/jsonargparse
PR: 280925
Sponsored by: Bell Tower Integration
Sponsored by: Klara, Inc.
devel/pipelight: New port: self-hosted lightweight CI/CD pipelines
Pipelight is a Rust based small cli tool to be used from inside a terminal.
* Define pipelines using typescript, toml, hcl and yaml.
* Trigger on events: git hooks, file changes...
devel/pybind11_protobuf: Add pybind11_protobuf 0.0.0.20240809
pybind11_protobuf provides pybind11 bindings for Google's Protocol Buffers.
These adapters make Protocol Buffer message types work with Pybind11 bindings.
devel/pybind11_abseil: Add pybind11_abseil 202402.0
pybind11_abseil provides the pybind11 bindings for the Abseil C++ common
libraries. These adapters make Abseil types work with Pybind11 bindings.
devel/p5-Test2-Suite: Remove obsoleted port
Use devel/p5-Test-Simple instead.
Test2-Suite has been merged into Test-Simple since 1.302200.
Reference: https://metacpan.org/dist/Test-Simple/changes
devel/tracy: New port: Frame and sampling profiler for games and other
applications
A real time, nanosecond resolution, remote telemetry, hybrid frame and
sampling profiler for games and other applications.
Tracy supports profiling CPU (Direct support is provided for C, C++, and
Lua integration. At the same time, third-party bindings to many other
languages exist on the internet, such as Rust, Zig, C#, OCaml, Odin,
etc.), GPU (All major graphic APIs: OpenGL, Vulkan, Direct3D 11/12,
OpenCL.), memory allocations, locks, context switches, automatically
attribute screenshots to captured frames, and much more.
https://github.com/wolfpld/tracy
Interactive demo: https://tracy.nereid.pl
PR: 278126
devel/R-cran-urlchecker: new port
Provide the URL checking tools available in R 4.1+ as a package for earlier
versions of R. Also uses concurrent requests so can be much faster than the
serial versions.
Required by new version of devel/R-cran-devtools.
devel/R-cran-profvis: new port: visualizing code profiling data
Profvis is a tool for visualizing code profiling data from R. It creates a web
page which provides a graphical interface for exploring the data.
Required to update devel/R-cran-devtools.
x11/iaito: New port: Official QT frontend of radare2
iaito is the official graphical interface for radare2, a libre reverse
engineering framework.
* Requires radare2 and Qt-5/6.
* Iaito was the original name of this GUI before being forked as Cutter.
* Use r2 plugins (f.ex: no need for r2ghidra-iaito plugin if r2ghidra is
installed).
* Focus on simplicity, parity with commands, keybindings and r2-style
workflows.
* Aims to cover other radare2 features, not just a disassembler:
forensics, networking, bindiffing, solvers, ...
https://github.com/radareorg/iaito
PR: 278339
devel/Makefile: add port devel/pycdc
PR: 280659
Reported by: antoine (via email)
Fixes: 3b5336de74e5 (New port: Python bytecode disassembler and decompiler)
misc/py-ollama: New port: Official Python client for Ollama
This reverts commit 5f8c92831aae9f9783923dcb6c29ba6287d2f576.
Requested by: nivit@FreeBSD.org (maintainer of devel/py-ollama; via e-mail)
devel/py-ollama: Add new port
Ollama Python library provides the easiest way to integrate Python 3.8+
projects with Ollama.
https://github.com/ollama/ollama-python
devel/p5-ExtUtils-Builder-Compiler: New port: Interface around different
compilers
- This new port is needed as an indirect dependency for
a new major release of existing port security/p5-Crypt-Argon2
- Interface around different compilers. It's usually not used directly
but by a portability layer like: ExtUtils:Builder::Autodetect::C
https://metacpan.org/dist/ExtUtils-Builder-Compiler
PR: 280630
devel/p5-ExtUtils-Builder: New port: Overview of foundations of
ExtUtils::Builder Plan framework
- This new port is needed as an indirect dependency for
a new major release of existing port security/p5-Crypt-Argon2
- An overview of the foundations of the ExtUtils::Builder Plan framework.
Actions are the cornerstone of this framework. They provide an
interface between build tools (e.g. ExtUtils::MakeMaker, Module::Build,
...) and building extensions. This allows producing and consuming sides
to be completely independent from each other. It is a flexible
abstraction around pieces of work, this work can be a piece of
perl code, an external command, a mix of those or possibly other things.
https://metacpan.org/dist/ExtUtils-Builder
PR: 280628
devel/p5-ExtUtils-HasCompiler: New port: Check for the presence of a compiler
Check for the presence of a compiler.
This module tries to check if the current system is capable of
compiling, linking and loading an XS module.
https://metacpan.org/dist/ExtUtils-HasCompiler
PR: 280625
devel/rubygem-yard-sorbet: Add rubygem-yard-sorbet 0.9.0
yard-sorbet is a YARD plugin that parses Sorbet type annotations.
Features:
- Attaches existing documentation to methods and attributes that follow sig
declarations. (This information is otherwise discarded.)
- Translates sig type signatures into corresponding YARD tags
- Generates method definitions from T::Struct fields
- Generates constant definitions from T::Enum enums
- Modules marked abstract! or interface! are tagged @abstract
- Modules using mixes_in_class_methods will attach class methods
- Merges sigs in rbi files with source code documentation (rbi files must come
after source code in yard configuration)
devel/rubygem-packwerk: Add rubygem-packwerk 3.2.1
Packwerk is a Ruby gem used to enforce boundaries and modularize Rails
applications.
Packwerk can be used to:
- Combine groups of files into packages
- Define package-level constant visibility (i.e. have publicly accessible
constants)
- Help existing codebases to become more modular without obstructing development