pub repository
mirror.p-hatan.irreflectable
0.3.1This package allows programmers to reduce certain usages of dynamic reflection to a transformer generated specialization with the same behavior. The generated code does not use dynamic reflection and thus improves the performance of (esp. dart2js) generated code.
Readme
Reflectable
Please note that parts of this package are still unimplemented.
Introduction
This package provides support for reflection which may be tailored to cover certain reflective features and omit others, thus reducing the resource requirements at runtime.
The core idea is that the desired level of support for reflection is specified
explicitly and statically, and any usage of reflection at runtime must stay
within the boundaries thus specified; otherwise a NoSuchCapabilityError is
thrown. In return for statically confining the required reflection support,
programs can be smaller. Other than that, using this package and using
dart:mirrors is very similar.
The core concept in the reflection support specification is that of a reflectable capability. For a more detailed discussion about capabilities, please consult the reflectable capability design document. On this page we just use a couple of simple special cases.
The resource benefits obtained by using this package are established by
transformation. That is, this package includes a pub transformer. The
transformer receives a specification of which programs to transform (see the
description of entry_points: below), and it uses certain elements in the
program itself to decide how to transform it. As a result, the transformed
program will contain generated code providing the requested level of support for
reflection. If a quick turn-around is more important than space economy, it is
also possible to run the code without transformation. In this case, the behavior
of the program is identical, but it is implemented by delegation to
dart:mirrors, which means that the execution may be costly in terms of space.
In other words, the package can be used in two modes: transformed mode and untransformed mode.
For both modes, your code will not depend directly on dart:mirrors. In the
untransformed mode there is an indirect dependency because the support for
reflective features is implemented by delegation to mirror objects from
dart:mirrors. In the transformed mode there is no dependency on dart:mirrors
at all, because the transformer reflectable generates specialized, static code
that supports the required reflective features.
The use of dynamic reflection is supported if and only if the usage is covered by the set of capabilities specified.
In general, reflection is provided via a subclass of the class
Reflectable (we use the term reflector to designate an instance of such a
subclass).
class Reflector extends Reflectable {
const Reflector() : super(capability1, capability2, ...);
}
Reflection is disabled by default, and it is enabled by specifying reflectable
capabilities. With Reflector we have specified that capability1,
capability2, and so on must be supported. The main case for using this is
annotating a given class A with a reflector. This implies that the specified
level of reflection support for that reflector should be provided for the class
A and its instances.
@Reflector()
class A {
...
}
Only classes covered by a reflector R and their instances can be accessed
reflectively using R, and that access is constrained by the capabilities
passed as the superinitializer in the class of R. The basic case is when R
is used as an annotation of a given class (as is the case with A above), but a
class C can also be covered by a reflector R if a supertype A of C is
annotated by a reflector which specifies that subtypes of A are covered as
well.
As a result, the available universe of reflection related operations is so well-known at compile time that it is possible to specialize the support for reflection to a purely static form that satisfies the requirements of the given annotations and capabilities.
Usage
Here is a simple usage example. Assume that we have the following code in the
file web/main.dart:
import 'package:reflectable/reflectable.dart';
// Annotate with this class to enable reflection.
class Reflector extends Reflectable {
const Reflector()
: super(invokingCapability); // Request the capability to invoke methods.
}
const reflector = const Reflector();
@reflector // This annotation enables reflection on A.
class A {
final int a;
A(this.a);
greater(int x) => x > a;
lessEqual(int x) => x <= a;
}
main() {
A x = new A(10);
// Reflect upon [x] using the const instance of the reflector:
InstanceMirror instanceMirror = reflector.reflect(x);
int weekday = new DateTime.now().weekday;
// On Fridays we test if 3 is greater than 10, on other days if it is less
// than or equal.
String methodName = weekday == DateTime.FRIDAY ? "greater" : "lessEqual";
// Reflectable invocation:
print(instanceMirror.invoke(methodName, [3]));
}
You can directly run this code in untransformed mode, for instance using the
Dart VM. To avoid the dependency on dart:mirrors and save space, you can
transform the code using the transformer in this package.
In order to do this, add the following to your pubspec.yaml:
dependencies:
reflectable: any
transformers:
- reflectable:
entry_points:
- web/main.dart # The path to your main file
And then run pub build --mode=debug web (you can omit web because that
is the default). This will rename the file web/main.dart and generate a new
file build/web/main.dart containing the data needed for
reflection, and a main function that will initialize the
reflection framework before running the original main. When you run this file,
it is important that the package-root is set to build/web/packages,
because the reflectable package itself is transformed to a
version that uses the generated data, instead of using dart:mirrors.
For a more advanced example implementing the base of a serialization framework, please look into serialize_test.dart test and its library.
Comparison with dart:mirrors with MirrorsUsed annotations
A lot of the overhead of dart:mirrors can be mitigated by using a
MirrorsUsed annotation, just as specifying capabilities of reflectable.
One advantage of the reflectable approach is that the same restrictions are
implemented both for running untransformed (on top of dart:mirrors in the VM)
and transformed. So the behaviour will be the same on Dartium and the
transformed code compiled with Dart2js.
Another advantage is that, where the interaction between two different
MirrorsUsed annotations often is hard to predict, Reflectable allows for
several separate mirror-systems (reflectors) with different capabilities. It
means that for some reflection-targets used by one sub-system of the program
(say, a serializer) detailed information can be generated, and only little
information about those used by another.
Known limitations
Several parts of the library have not yet been implemented. In particular, the following parts are still missing:
- Side-tagging, i.e., the ability to annotate a class in another file.
- Library-mirrors (hence top-level functions).
- Generic types.
- Reflection on closures.
- Private members. There is currently no support for reflection on private members, as this would require special support from the runtime for accessing private names from other libraries.
Feature requests and bug reports
Please file feature requests and bugs using the github issue tracker for this repository.
Changelog
Changelog
0.3.1
- Fix bug where metadata was searched the same way for invocation and for
declarations with
InstanceInvokeMetaCapability(invocation must traverse superclasses). - Fix bug where some libraries were imported into generated code, even though they cannot be imported (private to core).
- Fix bugs in publication support script.
0.3.0
- Add support for type annotation quantification (this is a breaking change: we used to do that implicitly, but that is expensive and now it is only available on request).
- Change the way the set of supported classes are computed.
- Fix crash when transforming certain dart:html classes.
- Fix memory leak from the transformer.
0.2.1
- Recognize private identifier constants as metadata in certain cases.
- Bump required SDK version in
pubspec.yaml. - Correct generation of imports of the original entry point.
- Fix issues with the computation of static members.
- Allows the metadata capabilities to recognize any subtype of the given type.
0.2.0
- Enforces the use of a
TypeCapabilityas specified in the design document, and makes it a supertype of several other capabilities such that it is automatically included with, e.g.,declarationsCapability. - Fixed homepage link in pubspec
- Fix several bug with mixins in the transformer.
- Add
excludeUpperBoundflag toSuperClassQuantifyCapability. - Use a static initializer in the generated code which helps avoiding a stack overflow.
0.1.5
- Support for return types of getters and setters.
- Support for superTypeQuantifyCapability.
- Fix bug in the mirror-based implementation's collection of classes that could lead to infinite loops.
- Fix bug related to generating code for
operator~in the transformer. - Avoid crashing the transformer when an entry-point has no member named
main
0.1.4
- Support for subtype quantification in transformed code.
- Code generation bugs fixed; metadata/library related bugs fixed.
- Faster version of test procedure.
0.1.3
- Non-transformed code supports
subTypeQuantifyCapability - Transformer implements
.superinterfaces - Transformer implements
.mixin - Transformer implements reflection on libraries.
- Better support for default values in transformed code.
0.1.2
- Our tests started failing because of a version conflict introduced by an
update to
code_transformers. Changedpubspec.yamlto avoid the conflict. - Made changes to avoid deprecated features in the new version of
analyzer. - Implemented support for implicit accessors (setters, getters).
- Implemented support for
staticMembersonClassMirror.
0.1.1
- Transformer implements
.typeof fields and parameters. - Transformer has support for
mainfunction that is not in the entry-point file. - Transformer supports async
mainreturning aFuture. - Other bug fixes...
0.1.0
- First published release.
0.0.1
- Initial project creation
Installing
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add reflectablepubspec.yaml
name: reflectable
description: >
This package allows programmers to reduce certain usages of dynamic
reflection to a transformer generated specialization with the same
behavior. The generated code does not use dynamic reflection and thus
improves the performance of (esp. dart2js) generated code.
version: 0.3.1
author: The Dart Team <dart@google.com>
homepage: https://www.github.com/dart-lang/reflectable
environment:
sdk: ">=1.12.0 <2.0.0"
dependencies:
analyzer: '^0.26.0'
barback: '^0.15.0'
code_transformers: '^0.2.0'
logging: '^0.11.0'
dev_dependencies:
unittest: '^0.11.0'
transformers:
- reflectable/src/transform_import:
$include: lib/reflectable.dart
- $dart2js:
commandLineOptions: [--show-package-warnings]
# We do not want to compile anything in this package.
$include: []
Version history
| Version | Published | Archive | SHA-256 |
|---|---|---|---|
| 0.1.0 | 2015-07-28T13:27:42.139Z | Download | efbf34f29bd7ce8ff341508733c893dbaaf63384716a26bfa7a8e011c164af9d |
| 0.1.1 | 2015-08-19T10:37:41.472Z | Download | a6b6ff14a4d8fd83949e193c1d4a3204fd8fc03df4a947c0427b01608d76784c |
| 0.1.2 | 2015-08-21T07:49:02.669Z | Download | a93a36e0d938fad4a7452daa75addc929dbffdbb36846fd906c4d7e3e42b4782 |
| 0.1.3 | 2015-09-02T11:02:49.119Z | Download | 54d9cde5d2040a5b2d424bf2fe0c98410b4624474f00c23d426fac316a8f3f5e |
| 0.1.4 | 2015-09-04T09:13:52.523Z | Download | 080e75cfef633c588f104fb05e1515ecf961e62818e41517721c355ab4d46f52 |
| 0.1.5 | 2015-09-11T11:44:44.201Z | Download | 68cf7ba88e1fdf0cde284a6b8c289838b5419e3a6383021b041ce418d2a654ea |
| 0.2.0 | 2015-09-17T15:14:34.216Z | Download | f3b12bf84413b4667bfef6036b2f9b182cdd1c77c90ef968f04b3394ba22f810 |
| 0.2.1 | 2015-09-23T12:19:00.288Z | Download | ea0171c7a2a1e8dcf893209055def33041530672df97ae3f19f8ba2b060c3a41 |
| 0.3.0 | 2015-10-02T14:35:39.868Z | Download | fabd367952044e478e4fe3c83425f58f3313b6d8512f1083b8b9662c0f580767 |
| 0.3.1 | 2015-10-05T14:50:23.279Z | Download | b8194e72107595baa056bd7190b158222403e02fadd34cf9673c6f9bd4b82155 |
| 0.3.2 | 2015-10-09T12:03:17.035Z | Download | d4b54a635563deb3466f46067c8259752c0776b9c0def13be5e4e3448f2e6892 |
| 0.3.3 | 2015-10-19T14:15:23.823Z | Download | 0538b8438f5d2cea7484703bfe3d6b0fe88d9a06a890c840a48c4d22a7153a96 |
| 0.3.4 | 2015-11-24T11:58:56.652Z | Download | 99a01a514091d841633cc720826779c9cfa2b0926906fbbf747a759331e75b90 |
| 0.4.0 | 2015-11-30T08:34:54.267Z | Download | 0743ef86f60a940d5cf160d9a5a8d408baf8b827c831c6349c0592b5f4ba0a44 |
| 0.5.0 | 2015-12-17T15:10:54.126Z | Download | 6bd406fab36ad1eacfba0e4ebfb2a5440a4145b1256e062875792693b35f4b61 |
| 0.5.1 | 2015-12-22T15:18:31.236Z | Download | d21bf6a5f99ae67bf347ca1a31ce7cf3fa7d9e643705063b2a5397a93a30a55b |
| 0.5.2 | 2016-02-17T17:44:09.276Z | Download | 1ceedd89699d1e456f2dbda69171a04f048e2a06d62665215043295dfff4dbf0 |
| 0.5.3 | 2016-03-08T09:46:39.339Z | Download | be3281ad86093122fe33d137b5b504ac94508d93904d3684bac5cd5748bb13f7 |
| 0.5.4 | 2016-04-01T07:16:30.556Z | Download | e00a2b987438823b3031f2c1d70091463cdbda3935543925c6ac950229db79e4 |
| 1.0.0 | 2016-08-18T14:26:30.494Z | Download | 191668cafb773fa7df01939afd957cbf7f9dae8817925278358f8cf660029921 |
| 1.0.1 | 2016-11-15T15:20:14.927Z | Download | 34ae4127c9875b894405a8dc905df714006da6e68bbeeeda20ca0d41fd5c274a |
| 1.0.2 | 2017-02-24T16:20:51.226Z | Download | f2a7e3d46471919c8ca3542bbda104b619f4de1bc450cf16f62d6b08622f6605 |
| 1.0.3 | 2017-07-13T15:39:59.433596Z | Download | 1cb84f89c3075a9e0ce356127af5e7e1fb146ef29f1f489549a4aaaa28a51aa3 |
| 1.0.4 | 2017-08-24T12:44:12.608040Z | Download | 291e64f165344b15116e23345ef527324216800f3ca6338fe2a75ce7ed4e3c7e |
| 2.0.0-dev.1.0 | 2017-12-07T15:22:03.338793Z | Download | 0524bdb767abdb93823df1645e734f4d34b5ee83ce47f4e324a1264e50813421 |
| 2.0.0 | 2018-04-09T09:51:05.602901Z | Download | 9b1c7a53130de0b46971e27d2af7fbc73e1d5c249fede467baa2608711a269e8 |
| 2.0.1 | 2018-05-30T09:07:19.897595Z | Download | 8fb7781c30fe4eab6945d9bb25c6943643bf4b473938de1ad052922972c229c3 |
| 2.0.2 | 2018-07-20T16:35:03.836041Z | Download | e85132c2b374e35107dc9bdbd8852a810a302b3ce3ccf2bf3cf17fa05e040a00 |
| 2.0.3 | 2018-08-17T06:46:29.663365Z | Download | 44fb5329a8b35b32c556ec51febe5bcdb20d4a85c2ab126ce88bd507f5e8e5bb |
| 2.0.4 | 2018-08-22T13:06:31.691314Z | Download | bb7ce06d0f6e6926e125c6f937ab18416b230ef4cd343478ed72847aed00a408 |
| 2.0.5 | 2018-08-30T09:50:14.843768Z | Download | 8f68e3b74753e560b15a4bfab4d677a4207ee7f8a11a77614317b89dc299cd26 |
| 2.0.6 | 2018-09-06T08:28:28.314233Z | Download | 49ba1cfc6b1b9068087ca9005e3c4dc1a387c3868b85215ddfc8e844a5d5df6c |
| 2.0.7 | 2018-09-17T14:19:29.423094Z | Download | dc576cbb0d103fb5cbf71ba2794fc4622f7a6301387e85f83a64011da1c3e1e7 |
| 2.0.8 | 2018-10-30T10:24:57.306488Z | Download | ecef4689e83671cfb92a6a72d7781f27570023ab1aac6dc575904f0a34fc7072 |
| 2.0.8+1 | 2019-01-10T16:02:50.095086Z | Download | f6208fdfe027bc80d80ed83284db1f294ddabc6259ef1bc24276a40a8c946f40 |
| 2.0.9 | 2019-01-14T10:53:04.216326Z | Download | a54827b67dd9362d930420507be13299a247ba4107c3ba2b237b9901e5b23944 |
| 2.0.10 | 2019-02-15T12:52:53.852001Z | Download | d05469dd922e3f8cf691fad479d9b30a65f525fc02f47d20eb600df07e98bf27 |
| 2.0.10+1 | 2019-02-26T10:37:33.965779Z | Download | 7fb1793caf4afc3a6614b619b329b86538f53dd3ebc64005b113e26fe0453d37 |
| 2.0.11 | 2019-05-03T10:10:08.826886Z | Download | 2261a32f8126a3616145a92c8d48c064ab0e2b6ac746052b998f4c5583a6b92f |
| 2.0.12 | 2019-05-10T11:51:03.599726Z | Download | 227c7ec0b19636af6913d2dfda7169927a17b32b114f03776aa84e2df59ae5a6 |
| 2.1.0 | 2019-07-26T08:37:14.133488Z | Download | d42cf62ab0e597d34899d182a78b03d0eb6a52d7ef026dbac013d5940f0f14d1 |
| 2.2.0 | 2019-10-22T15:45:59.584963Z | Download | 898b0f051ff77e6bb06aa89cc4674f202a147c198023aa661965244d4efffa01 |
| 2.2.1 | 2019-12-20T13:51:14.873572Z | Download | 85c8a76b3e44f3ad6afcbe2bc07333b298557bb4cb13a4057753cfd68d4bad7e |
| 2.2.1+1 | 2020-01-14T10:49:04.036004Z | Download | c11bd279cc65d89da862ce6bae1de12772f3721c9179a76cf102119e023b85b7 |
| 2.2.1+2 | 2020-01-21T10:06:59.353749Z | Download | 2e21a87a5010b04da87505364bf2c2862f5cecfa2eb913e723cb3138d8bf4df8 |
| 2.2.2 | 2020-03-16T16:37:28.870288Z | Download | 214653b529bf186d4d5c6cfcdea62973ddab66fc1d145270ed1316c53d3f5883 |
| 2.2.3 | 2020-03-16T20:01:22.853643Z | Download | 3c863313ccec8b24c045ab50018c186e17b07e9a6593cce7d27e20a686791fb0 |
| 2.2.4 | 2020-03-27T13:02:07.559119Z | Download | 6c03c23c53ebb7caf229ae632eac7f8d5f1c562a6e867bc3d4e1b610b3f97308 |
| 2.2.5 | 2020-06-16T14:18:22.681426Z | Download | 3ccd77f6ecbb677d501e7f7727ebbbddc085988fcd5787ce2cfaa68361cc44c9 |
| 2.2.6 | 2020-09-28T13:20:47.384467Z | Download | 33e59fc7b6a61ff34d64a142c6609a52dc6d7f846bb6fd6e6e62d3b3f5105615 |
| 2.2.7 | 2020-10-07T11:09:33.168450Z | Download | 254ade9aaa343683335cb5682741a481d87fd03af71c4a3ac18deb1228bb2ade |
| 2.2.8 | 2020-10-08T08:38:09.453901Z | Download | 081371db4d9e11265a6ad24a37d410aaa818cf8cf9488bf783e80bf22a99e988 |
| 2.2.9 | 2020-12-03T14:30:28.911322Z | Download | e62cb614a9b50a5cfbeb085c8c930b53fcd1536ff6cc1c07609d9710c8e82ec7 |
| 3.0.0-nullsafety.0 | 2021-01-20T09:38:03.648798Z | Download | 2eea6679181a68cea575d6162e71a996c777ec0519f232b91b7a3ea781c6c63f |
| 3.0.0-nullsafety.1 | 2021-01-21T15:21:15.042923Z | Download | 658e8252d7abb80fb0801d52b484ec7ac64ce0bcf869f5090112dc5078d68729 |
| 3.0.0 | 2021-03-16T11:48:50.675512Z | Download | 2abcf09f3b7498cea9f7359d9eacb871176177a12bf569473d32fcbeae5599a1 |
| 3.0.1 | 2021-03-22T18:40:23.721269Z | Download | 3879ffe0688ef241202ca1d3f8ec03cb3c3f931f2062197a203c12776c80eadc |
| 3.0.2 | 2021-05-06T09:08:29.303527Z | Download | 37d90e3de9b42063ad4476a15c83116350b4a56bd0b038dc9cc2cb26f63da84a |
| 3.0.3 | 2021-07-29T13:02:59.624650Z | Download | 968fc0bc6e9305d94c6316f9336df6bd7726b72f811acd952be244c1b6831287 |
| 3.0.4 | 2021-08-17T16:26:20.030272Z | Download | 7ce05f12b51561a6d615ee445c37cde9615688bd36b8dc96c2cc61b45a9116a6 |
| 3.0.5 | 2022-01-19T09:57:18.214194Z | Download | 665d118e73763e4c3c16070a67958eca12cd2d3718d602265645544bc4e2b9ab |
| 3.0.6 | 2022-02-18T15:10:22.378763Z | Download | 0fcfec0ada9012418424c276659cb92307335fbb80e61a00ac74f64cdcc56263 |
| 3.0.7 | 2022-02-22T14:03:21.061405Z | Download | 60738b9ee3dde6dbbf524cbbae3ac91a0c990251c1857835056c06adfd5b0849 |
| 3.0.8 | 2022-03-17T14:36:08.879420Z | Download | d25aee28410ee7d8127f6f308e7a06f844739de85fa79850e7aacca80e528599 |
| 3.0.9 | 2022-07-08T13:30:17.371084Z | Download | d7a4498854c68d7e124724788e7097965857e091fa3ec0b27bdb942d7f8b57fd |
| 3.0.10 | 2022-09-15T11:41:31.275381Z | Download | 5a04b514f9054495986905ed531931ed41ecb3717c9feb6839bc6fa5a8cbfd83 |
| 4.0.0 | 2022-09-16T13:59:41.464046Z | Download | 016c975783db2313c820ddba8733cebd1d38eef8c6634eb793dfb7ffb58135d8 |
| 4.0.1 | 2022-10-26T15:57:02.341900Z | Download | f0d50bb3329a60f303856ce652a79888a605953ed768ee18e41302a7e38c168b |
| 4.0.2 | 2022-11-02T15:05:54.513107Z | Download | 57e9b2446eaa115f38c82a1db6247e240c98175d7cda7ebcfb5f833ab3831889 |
| 4.0.3 | 2022-12-05T14:54:09.646772Z | Download | 7fc252f55b52198ea45d7bf818c11afa65be2987dc21623e628b6ea64fbc583c |
| 4.0.4 | 2022-12-08T09:49:30.967265Z | Download | e21990e237008defe9abff5639ee4d0dcf854bb4cad4a653179736d9921fdfdd |
| 4.0.5 | 2023-02-13T17:00:26.385668Z | Download | 775388897bfce5b1d0386b7160706367b565cdc72b5870bc6a198d0f7be1aa0b |
| 4.0.6 | 2024-03-07T11:08:52.477991Z | Download | cdc1a278a2e9769abafaf9ba54ce1fd3432b2a38360e14b87ea6344f715340de |
| 4.0.7 | 2024-07-05T09:33:10.414710Z | Download | c09cdf1864c3b320ee4f7060323b84d4d619cb93f766ba4dd3c04ce41c67b7e1 |
| 4.0.8 | 2024-07-05T15:34:59.374157Z | Download | 9fa1bb5b533e404c93345c8c2beced73882c0ea45af1d980f5550546727db683 |
| 4.0.9 | 2024-07-05T16:07:34.706694Z | Download | 443ea2797f48455a5b5a29e2661aced7bba3b54d078f71fbebb697cf33c5960e |
| 4.0.10 | 2024-08-22T13:02:06.288172Z | Download | f6abe4c7779c6c88f77b79a4317d9277c870c7292a3d6c2e56624c4846124368 |
| 4.0.11 | 2024-10-22T13:43:54.047870Z | Download | 1d5bcd3ddbbd2d932784ca5752e939bc4a6d3ed4fffd9ac3a6097b6bf5740ad0 |
| 4.0.12 | 2024-10-23T09:36:03.291700Z | Download | 35ee17c3b759fa935cc7e9247445903384520fd174e0d6c142d8288e5439fd5b |
| 4.0.13 | 2025-05-28T07:23:50.207307Z | Download | d3f22f37d37f3d654fc0ea938d3c223f3d7ffce09ab7a0b6c016060cf142467f |
| 4.0.14 | 2025-08-29T15:25:06.625358Z | Download | c6fd6048b20d31c8e42f32b62e67e8a63a006fff8413875394c779d1bc272c66 |
| 4.0.15 | 2025-09-04T16:14:31.399540Z | Download | 8deaa83f6bc6bba6360a2778e6c1330fc331663251b82fbfd186096f16e35228 |
| 5.0.0 | 2025-09-29T10:24:10.964900Z | Download | 745cbffb91fd0b337c9b10d2f00250b4fb5ab9af74cea70809bb767a1c27689c |
| 5.0.1 | 2025-10-02T08:30:23.493752Z | Download | 80ec665d53a8e5f3782e542c65f43546537ad4fa37f228fffd0d7ae5eb382cc6 |
| 5.1.0 | 2025-12-09T14:14:50.028585Z | Download | ab4a185dcf100e2ae003610474e37a8ff4aa714326db36d42d86c8426508ab7c |
| 5.2.0 | 2026-02-02T10:40:19.126939Z | Download | 202c29a08ac57135c6cf478ee69d06ed8d7e54d137228dc330db24c048a0210a |
| 5.2.1 | 2026-02-10T16:46:52.931956Z | Download | fd29a8a935bb485f82076cd24873f7c4cd522194ad982189b5c8757fbbd7bba3 |
| 5.2.2 | 2026-05-19T14:04:10.480460Z | Download | cf7b234695230bff3f1523d65d2e09635516de67d4f872fec7b8dc83e5290ee6 |
| 5.2.3 | 2026-05-26T11:52:15.597918Z | Download | b492375a00dc71c2fbb90df00553886d684f4593eb1565bf5f673d7ab5853e97 |
Dependencies
analyzer "^0.26.0"
barback "^0.15.0"
code_transformers "^0.2.0"
logging "^0.11.0"