Skip to main content

nti.externalization

Latest release Supported Python versions https://github.com/NextThought/nti.externalization/workflows/tests/badge.svg https://coveralls.io/repos/github/NextThought/nti.externalization/badge.svg?branch=master Documentation Status

A flexible, schema-driven system for converting Python objects to and from external formats such as JSON and YAML. This works well in a zope.component environment such as Pyramid.

Documentation is hosted at https://ntiexternalization.readthedocs.io/

Changes

3.3.0 (2026-07-14)

  • Introduce IWantsMutableSequenceToUpdate marker interface that objects can implement to be passed the raw MutableSequence object, rather than assuming the sequence contains objects to create/update in place. This is sufficient for direct calls to update_from_external_object on the object so marked, but when used in a nested context (an attribute of another object), you may still need/want to implement an adapter @adapter(list) that @implementer(YourType) that does the same thing.

3.2.1 (2026-06-02)

  • Make internalizing anonymous dictionary objects support IMapping fields, rather than only its subclass IDict.

3.2.0 (2026-05-19)

  • Drop support for Python 3.10.

  • Add support for Python 3.15.

  • Move the orjson dependency to the orjson extra for compatibility with free-threaded Python. If you’re using regular Python, it is highly recommended to install this extra.

  • Add support for free-threaded CPython. However, note that some dependencies, most notably orjson, cannot currently be installed on free-threaded CPython, and other dependencies may currently require enabling the GIL.

3.1.0 (2026-05-08)

  • Document the to_json_representation variants and add one that guarantees sorted keys. Make the “fast” variant not dependent on second-chance externalization.

  • Renamed the “datetime” module to “datetime_ext” to avoid conflicts with the standard library. Backwards compatibility shims are in place.

  • Remove some long-deprecated parameters that were typically undocumented.

  • Introduce some basic type annotations.

3.0.0 (2026-05-07)

  • Switch to using orjson for JSON dumping/loading, from simplejson. This introduces the following changes:

    • Floating nan and negative and positive infinity can no longer be represented; they are serialized as null.

    • decimal.Decimal objects may be represented with reduced precision.

    • Whitespace has changed (orjson elides unnecessary whitespace).

  • Remove deprecated uses of datetime.datetime.utcfromtimestamp. Now, instead of being “naive” parsed dates from timestamps will have a tzinfo of UTC.

  • Support for PyPy has been removed (orjson doesn’t run on PyPy).

2.6.0 (2026-02-09)

  • Remove the automatic hooking of get_current_request to pyramid.threadlocal.get_current_request. If you want this behaviour, you must do so yourself.

2.5.0 (2025-11-14)

  • Reduce the logging level for recursive invocations. We handle this case correctly, it did not need to be a warning.

  • Add support for Python 3.14.

  • Add the new ‘zodb’ extra, which installs optional dependencies that use the ZODB ecosystem: persistent, BTrees, zope.intid, zope.container, etc. These dependencies are no longer installed by default.

  • No longer build binary wheels for the legacy ‘manylinux2014’ standard, only 2_28. Similarly, switch from musllinux_1_1 to 1_2.

2.4.0 (2024-11-11)

  • Drop support for anything older than Python 3.10.

  • Use native namespace packages.

  • Start publishing manylinux binary wheels.

  • Remove some legacy code for Python 2 support to enable compiling with Cython 3.1.

2.3.0 (2021-08-02)

  • Add a new base class, StandardInternalObjectExternalizer. See PR 120 and issue 117.

  • Rename IExternalMappingDecorator to IExternalStandardDictionaryDecorator to emphasize that it is only used if you (directly or through a super class) call to_standard_external_dictionary. A compatibility alias remains. See PR 120 and issue 118.

  • Docs-deprecated aliases in nti.externalization.interfaces now also emit deprecation warnings at runtime.

  • Other documentation improvements. Sphinx can now run all the doctests (on Python 3); many doctests are still run an Python 2.

2.2.0 (2021-04-14)

  • Add support for Python 3.9.

  • Depend on BTrees 4.8 and above. This simplifies externalization checks. See issue 111.

2.1.0 (2020-08-03)

  • Add support for “externalization policies.” These are instances of ExternalizationPolicy that can be used to tweak certain low-level details of externalization without replacing externalization objects wholesale. They are intended to have a very low performance impact.

    The only supported detail that can be changed right now is whether the standard created and last modified fields are externalized as Unix timestamps (the default) or as ISO 8601 strings.

    See https://github.com/NextThought/nti.externalization/issues/109

2.0.0 (2020-07-02)

  • Change ILocatedExternalMapping: Previously it extended the legacy zope.interface.common.mapping.IFullMapping. Now it extends the modern zope.interface.common.collections.IMapping. Note that this does not require mutability unlike the older interface. (The LocatedExternalDict class provided by this package is fully mutable and implements IMutableMapping. It also continues to implement IFullMapping, but use of that interface is discouraged.)

  • Change ILocatedExternalSequence: Previously it extended the legacy zope.interface.common.sequence.ISequence. Now it extends the modern zope.interface.common.collections.ISequence. Note that this does not require mutability unlike the older interface. (The LocatedExternalList class provided by this package is fully mutable and implements IMutableSequence.)

  • Fix the interface resolution order for LocatedExternalList. Previously, with zope.interface 5, it began implementing both IMutableSequence (the new interface from zope.interface.common.collections) as well as the older interface ISequence (from zope.interface.common.sequence); the two have inconsistent resolution orders. Now, it only implements IMutableSequence and a subset of the legacy interfaces that do not conflict. See issue 105.

1.1.3 (2020-06-25)

  • Correctly fire IObjectWillUpdateFromExternalEvent events before updating an object.

1.1.2 (2020-04-07)

1.1.1 (2020-03-27)

  • Fix a faulty assertion error. See issue 102.

1.1.0 (2020-03-27)

  • Make instances of fractions.Fraction externalize as a string such as "1/3". When received by a schema field that can parse this format, such as zope.schema.Rational (or higher on the numeric tower), this means fractions can be round-tripped.

  • Support externalizing decimal.Decimal objects in the YAML representation.

1.0.0 (2020-03-19)

  • Add compatibility with, and require, zope.interface 5.0.

  • Document which tagged values are inherited and which are not.

  • Stop inheriting _ext_is_marker_interface.

1.0.0a14 (2019-11-13)

  • Build with Cython 0.29.14 using ‘3str’ as the language level.

  • Add support for Python 3.8.

  • Update PyYAML to 5.1 and change the default output style slightly.

  • Fix tests with Persistent 4.4.3 and above.

  • Support zope.interface 4.7, which lets tagged values on interfaces be inherited, when using <registerAutoPackageIO> on a module that had multiple objects implementing a derived interface. See issue 97.

1.0.0a13 (2018-09-20)

  • Support IFromBytes fields introduced by zope.schema 4.8.0. See issue 92.

  • Make validate_field_value (and by extension InterfaceObjectIO.update_from_external_object) call fromObject defined by any fields for non-byte and non-text data. Previously, only if the field raised a WrongContainedTypeError would fromObject be called.

1.0.0a12 (2018-09-11)

  • Add support for zope.schema 4.7.0 and nti.schema 1.5.0. Drop support for older versions, which includes dropping support for dm.zope.schema.Object fields.

1.0.0a11 (2018-08-29)

  • The @WithRepr decorator takes into account the updated default repr of Persistent objects with persistent 4.4 and doesn’t hide it.

  • Subclasses of ExternalizableInstanceDict that have non-str (unicode on Python 2, bytes on Python 3) keys in their __dict__ do not throw TypeError when externalizing. Instead, the non-str values are converted to strs (using ASCII encoding) and the _p_changed attribute, if any, is set.

1.0.0a10 (2018-08-21)

  • The registry argument to most functions is deprecated and ignored. Instead of making calls to registry.queryAdapter, we now invoke the interface directly. For example, IInternalObjectExternalizer(containedObject). This lets individual objects have a say if they already provide the interface without going through the legacy code paths (it also calls __conform__ on the object if needed).

1.0.0a9 (2018-08-20)

  • Allow subclasses of InterfaceObjectIO to have non-frozenset values for _ext_primitive_out_ivars_. This issues a warning and in the future will be a TypeError.

1.0.0a8 (2018-08-16)

  • Better support for internalizing anonymous value objects discovered in a Dict value. Now, they won’t raise a ComponentLookupError when require_updater is True, and they will be given a MimeType based on the schema (if they don’t have one).

1.0.0a7 (2018-07-31)

  • Avoid a TypeError from validate_named_field_value when external objects have unicode keys.

  • LocatedExternalDict objects accept more constructor arguments and allow arbitrary attributes.

1.0.0a6 (2018-07-31)

  • InterfaceObjectIO only returns an anonymous factory for IDict fields when it wants objects for the value.

  • StandardExternalFields and StandardInternalFields are deprecated aliases in nti.externalization.externalization.

  • update_from_external_object properly handles the case where INamedExternalizedObjectFactoryFinder and IInternalObjectUpdater are registered with different levels of specificity, and the finder also implements IInternalObjectUpdater. Before, the finder would, perhaps incorrectly, be used as the updater.

1.0.0a5 (2018-07-30)

  • Objects inheriting from InterfaceObjectIO and registered with the component registry (in ZCML) for IInternalObjectIO can still be found and used as INamedExternalizedObjectFactoryFinder, an interface implemented by InterfaceObjectIO through IInternalObjectIOFinder. A warning will be issued to update the registration (which generally means removing the provides line in ZCML).

  • ExternalizableInstanceDict no longer inherits from AbstractDynamicIO, it just implements the same interface (with the exception of many of the _ext methods). This class is deprecated.

  • Formally document the notify_modified member of nti.externalization.internalization. notifyModified is a deprecated alias.

1.0.0a4 (2018-07-30)

  • Make InterfaceObjectIO._ext_self readable from Python, even though that is not documented (and may change again in the future). Document the intended API, _ext_replacement(). See issue 73.

  • Make AbstractDynamicObjectIO._ext_getattr handle a default value, and add _ext_replacement_getattr for when it will only be called once. See issue 73.

1.0.0a3 (2018-07-28)

  • The @NoPickle decorator also works with Persistent subclasses (and may or may not work with multiple-inheritance subclasses of Persistent, depending on the MRO, but that’s always been the case for regular objects). A Persistent subclass being decorated with @NoPickle doesn’t make much sense, so a RuntimeWarning is issued. A warning is also issued if the class directly implements one of the pickle protocol methods.

  • Updating objects that use createFieldProperties or otherwise have FieldProperty objects in their type is at least 10% faster thanks to avoiding double-validation due to a small monkey-patch on FieldProperty. See issue 67.

  • Proxies around objects that implement toExternalObject are allowed again; the proxied object’s toExternalObject will be called.

  • The signature for updateFromExternalObject() has been tightened. It should be (self, external_object, context, **kwargs), where **kwargs is optional, as is context. **kwargs currently contains nothing useful. Uses of dataserver=None in the signature will generate a warning. This may be tightened further in the future. See issue 30.

  • __ext_ignore_updateFromExternalObject__ is officially deprecated and generates a warning.

  • update_from_external_object caches certain information about the types of the updater objects, making it 8-25% faster.

  • update_from_external_object mutates sequences contained in a dict in-place instead of overwriting with a new list.

  • update_from_external_object mutates sequences at the top level instead of returning a new list.

  • Add support for finding factories for incoming data which do not specify a MIME type or class field based on the key they are assigned to. This aids in consuming data produced by foreign systems or using Dict schema fields that require modelled values. See issue 51 and PR 68.

  • Schemas that use InterfaceObjectIO (including through the ZCML directive registerAutoPackageIO) can use Dict fields more easily on internalization (externalization has always worked): They automatically internalize their values by treating the Dict as anonymous external data.

  • Strings can automatically be adapted into ITimeDelta objects.

1.0.0a2 (2018-07-05)

  • The low levels of externalization no longer catch and hide POSKeyError. This indicates a problem with the database. See https://github.com/NextThought/nti.externalization/issues/60

  • Remove support for object_hook in update_from_external_object. See https://github.com/NextThought/nti.externalization/issues/29.

  • A number of deprecated aliases for moved functions have been removed.

  • On CPython, some of the modules are compiled as extension modules using Cython for a 10-30% increase in speed. Set the PURE_PYTHON environment variable to disable this at runtime.

  • The unused, undocumented method stripSyntheticKeysFromExternalDictionary was removed from instances of ExternalizableDictionaryMixin. Use the import instead.

  • Unused keyword arguments for to_standard_external_dictionary and to_minimal_standard_external_dictionary now produce a warning. In the future, extra keyword arguments will be an error.

  • notifyModified no longer accepts the eventFactory argument.

  • The notify_modified alias for notifyModified has been removed.

  • Decorating external mappings and external objects handled decorate_callback differently. This argument is only used when decorate is false. This argument is also confusing and should be considered deprecated.

  • choose_field no longer has the undocumented conversion behaviour for the CREATOR external field name.

1.0.0a1 (2017-09-29)

  • First PyPI release.

  • Add support for Python 3.

  • Drop support for externalizing to plists. See https://github.com/NextThought/nti.externalization/issues/21

  • Reach 100% test coverage and ensure we remain there through CI.

  • Introduce nti.externalization.extension_points to hold hook functions. Move the Pyramid integration there (and deprecate that). Also move the NTIID support there (but the old name works too). See https://github.com/NextThought/nti.externalization/issues/27

  • Deprecate nti.externalization.internalization.register_legacy_search_module. See https://github.com/NextThought/nti.externalization/issues/35

  • Stop ext:registerAutoPackageIO from registering the legacy class-name based factories by default. If you need class-name based factories, there are two options. The first is to explicitly register IClassObjectFactory objects in ZCML (we could add a scanning directive to make that more convenient for large numbers of classes), and the second is to set register_legacy_search_module to a true value in the ZCML directive for ext:registerAutoPackageIO. Note that we expect the behaviour of this attribute to change in the near future. See https://github.com/NextThought/nti.externalization/issues/33

  • Make ext:registerAutoPackageIO perform legacy class registrations when the configuration context executes, not when the directive runs. This means that conflicts in legacy class names will be detected at configuration time. It also means that legacy class names can be registered locally with z3c.baseregistry (previously they were always registered in the global site manager). See https://github.com/NextThought/nti.externalization/issues/28

  • Drop dependency on zope.preference and zope.annotation. They were not used by this package, although our configure.zcml did include them. If you use zope.preference or zope.annotation, please include them in your own ZCML file.

  • Drop hard dependency on Acquisition. It is still used if available and is used in test mode.

  • Add public implementations of IMimeObjectFactory and IClassObjectFactory in nti.externalization.factory.

  • Drop dependency on nti.zodb and its PersistentPropertyHolder. The datastructures in nti.externalization.persistence no longer extend that class; if you have further subclasses that add nti.zodb.peristentproperty.PropertyHoldingPersistent properties, you’ll need to be sure to mixin this class now. See https://github.com/NextThought/nti.externalization/issues/43

  • Add the <ext:classObjectFactory> directive for registering Class based factories. (Note: MIME factories are preferred.)

  • Callers of to_standard_external_dictionary (which includes AutoPackageScopedInterfaceIO) will now automatically get a MimeType value if one can be found. Previously only callers of to_minimal_standard_external_dictionary would.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nti_externalization-3.3.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

nti_externalization-3.3.0-cp315-cp315t-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp315-cp315t-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

nti_externalization-3.3.0-cp315-cp315-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.15musllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp315-cp315-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.15musllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

nti_externalization-3.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

nti_externalization-3.3.0-cp314-cp314-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp314-cp314-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

nti_externalization-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

nti_externalization-3.3.0-cp313-cp313-macosx_26_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

nti_externalization-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

nti_externalization-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nti_externalization-3.3.0-cp311-cp311-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

nti_externalization-3.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nti_externalization-3.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file nti_externalization-3.3.0.tar.gz.

File metadata

  • Download URL: nti_externalization-3.3.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for nti_externalization-3.3.0.tar.gz
Algorithm Hash digest
SHA256 43b45834a239369674b6388486502d0248d815e75c2879a9af0078114b67e058
MD5 89a77672f11cbd3265308c48612f26ce
BLAKE2b-256 6ad905ce567dfe15c2905d9110f4b95ab563447c4f0456e845275bb2285ca9aa

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ea033b4e2156464034fb42f312f160beaced07986de768aa90043e6c75ab73e6
MD5 93ba092e5a31560e80ad21eb22d602a9
BLAKE2b-256 03a2f094f5a83de948bbc3828322116c97cf7c65b4df78916978b15304ab3e1b

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9fff1983399b967156e789f4da6cee6b1a0d149999794981f417f61a40643bc8
MD5 f42501aae12396a5b3b573fd9e4b7e70
BLAKE2b-256 50d2730b2bfff98cfdbc05e7c385d5d6a1f4d212ba0c02cc32a92b21467d40fb

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c92395b6f7d6b2a8f120280faea8f0fc2faa76ce2bd6848e1304f77d64fc19d
MD5 5bd7d59f14dae5f2c3c21975d6b59ecb
BLAKE2b-256 5e1956be3d485afae3fbf19eb534a25e4a3cf62307e64558ddb77b1f51352a90

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c86b9a302cb2697812dc721d0dc136ab0bbcc9c658ee8f7961678c0b9d43da5b
MD5 7f350a53bd322053ed7fa95a261cb150
BLAKE2b-256 7997652706ec638708f80d489ce09b869c0832092f9bb64240c8ef1c7034e4b4

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 19922c087d01f6ba7543d4194e543e827a91d881c1c12ff1ea503a0891b59d5e
MD5 d26f81290bb22ae97a80f248875b1a38
BLAKE2b-256 c87c93910c9b0c77e8c51f29a2af96dbc91b3ab8202b8a471ded19a55ea6c080

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cb5eac35353dd0b5634cab371f41e0c3497c8e19baa082f8e61b58b4aa451145
MD5 67fdc59f135ff7648835c7d7a1e2aed7
BLAKE2b-256 01d121cac3303ca78f60e4be94843e0304dc897971bb51d8ed125d52546fe56e

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4cfab501878296f807af8819bae45c853b8e5c67924cb57d01fb625b4dd53eb
MD5 2831d4de4ff6d1595afb3da2cc19b067
BLAKE2b-256 2d7398ae4107040722a6c55da4ce367227e1f1795e25076c65b06c0480d43cad

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 93783450a597bc6a2c48f3f87bb8f7d768f837487b279a3b230a4b5e4dd2b187
MD5 80207cdd1fc49cf5e2f8335ddcdfa033
BLAKE2b-256 a7ab13b14c45bcb8c9840053740b066ab29dab9eacd4161e4d69ebfe18e6255f

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc928115c56fedccc4e3f7bc0af73f7adc728be1b45cc35a824ade8e41c09c18
MD5 f53a073ecf8847b03e2cab8f0992751f
BLAKE2b-256 062e471867ae9b0300a88753d2f7c78eddde0a72794ad9a35521cf1ddf7a5f26

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9863ff3bbd19aa571641b2aaff9a86938c1a945491198a2f6ace75ae8a49f852
MD5 89d1651f5dfe79549934fe083f88259d
BLAKE2b-256 c3e947e4614df82fd4c4002dc11b995e27cf24c3cb70b30cb81860cf0b662ead

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 05f4ac3e6d12906cc48ffdc079815353d91afea880911571174babc30042f787
MD5 c5df70adb516d2cb14e3b7745412764c
BLAKE2b-256 0fd31df5228b167db43b084d2a11a422795f3abc52b5d875a0f2b470c0c122ea

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6f5e0faee49cbb3032c6c56f83249c026cc775816ebc93bb9c983625f346bba4
MD5 eed82f14f0276912e6fe9b27cafea879
BLAKE2b-256 1cc3e06fa0c842c7ff3aee0ad6b303c3ad5262aadb446edfe0d1e11a07efe36e

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a9e2ec5a97578c8fce732657b0ffb42b1bdd4ce51612f17b0ab7a336e03900bb
MD5 3ec9719939a858af12e243b72dbca185
BLAKE2b-256 bffe501c400edf75b44156d4bf0551fa6b67311082f07f97f1197e91f923d95f

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e90db21802a70429dde35b3085e59d5beb33aefdd56a5ce0bca3a0327ad8418c
MD5 e5122eb0d7d6ded57ec0bd98f488344c
BLAKE2b-256 c490a426fa53c5cdafb48d11a31e3a2a8e0c793a77ff168156a22edf81d1891a

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62735bec2f6c35f904908dfa98c50d67e0145c7328a3e29bc0cf0d2b3ea9fda3
MD5 44268a638866246f32a3e3a4091b9313
BLAKE2b-256 8383c8a25218103a113b7eddd33d3a04ebb635e9697d3a2c0ef94b38c276cb51

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0799ac8f99ea5b96acf8d1cdd3db287d55c4f2890ef1102b6d696b6b1e084a54
MD5 d4316229ef67ba675adf9b2b6d61e95a
BLAKE2b-256 9476ecdeca0717451bc325556de5369f527a128717841ad89acae1761fc3b5fb

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 db7624fc710fcef2e393ad79100eb86a31062f6cb4b070e6bb166f7d7e98b9eb
MD5 e594f6421a8f5f9d589e02dd26c16d72
BLAKE2b-256 bc82b6e41dcd40a09a9a5aedbc6dc24bda958f5ed23517ba84f44d1afde6a5e2

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 46df04207fd3343d50a3cbf799dcec8c4e2f1be1bf48031562e80fea6bbed577
MD5 ea7925e56f2d980e4bd17852cd353ffe
BLAKE2b-256 efb39fe4fef36d88e2f8bef91e01d4a79d61f8894f70b33a319185427cb01c83

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bddec775c822c089333ca364566f54a9feee617a59af27123cf089a670556976
MD5 62394f6eb9c0ebd6fa04cc5a7d71cf49
BLAKE2b-256 9d61ce3f77677c39c0f091fbe89e10fe4ee6a8fcb927fb8fa45e9d33c185ebb9

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 740da6724a5e49520329ab8b0ad15667ac98574b377efd4b3a09870a92128b7e
MD5 f83101036075e81e98d5d94984731172
BLAKE2b-256 44676605ec9b20008923b0977947652d128dc0808ba05065539b11b3aab2414a

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 990857e4950615c5a78f12555c8183ebfc3358b5956ecf425287524ec8c774bb
MD5 e66d557b7e6b1547d1a68907ab9bec71
BLAKE2b-256 5bca5a4e651f4c96e37a00f5c58616ffda02d64bc6cb34796666a9e5c21b844f

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4207bb882c5421ffdafe49e7c9ecaf0b6881214aff2097b7cfbe380730cd8f6d
MD5 22ee3823966cc0e8824306f5d06a4954
BLAKE2b-256 acb51b6719be19cfeacdf9007243bd715ffd4035bb64d3bffc3f2099b6021d3b

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7bb8a1ab1123419c2957ff2701b5a317d75ae7713826c1b2a2926e8e1e14d18a
MD5 a3f246ae0993706660cf619288eebd2b
BLAKE2b-256 c849c6a475c3d97484d2c2b90d8798bbfcd8c3ed02f2843e3e6c2875221cfc3a

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c4852cdc4422145a19adbc2c8492c620621da95c417656ce4b30e9a9a42f9be7
MD5 3a8461665c8a9d89d6e62ba6c4f85761
BLAKE2b-256 6b0956c3d1f4a9df47ef74efe426fe4122dd340b4ae4bc2672190a6854ac9696

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 82d6cfb510321046347536c8cf041c0e01ef9bee82debfee7af17eb6ed7589d7
MD5 0627c6a20065caa9333ec688cd2a414e
BLAKE2b-256 c7f8bfcce1fde5a2c928404ff9e9398b4c10892d0b2cf04dfca3ff22d6d8b4f7

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 30ba5b4a6aee2ba3aef795399197666f82389f59c196854c21859ef696fbe325
MD5 3bf572e0c34bce66fcfc2d14a2b04ffc
BLAKE2b-256 ccabaa7243cac5c0a859e07ba969836de11afe5ee6fcf9b62dbc189bba8931c7

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b498a6af30da3fb5d253184c38312b03edfbdd1b7a9e163ff1ba0f5871b204c9
MD5 a35120e48ffc8c2082561674172c2374
BLAKE2b-256 a5ad6a5f9bc2b0425db059d83270685aa264cf6eb7b6c530b378d99fb05e2fa4

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b12baa95731ce80435e73c3d317577bd988a1bc0e27b8f2f244295d59a637c2
MD5 ea70dcabd48f33770af08b658bccc7b1
BLAKE2b-256 f29e6ab8da1aa358671d5e398540ffed35a146146c93f9ddf847407659280038

See more details on using hashes here.

File details

Details for the file nti_externalization-3.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a397d284eaab904c69483563dfe2c3d31d3e1b18e0e1c99dbe3de292094c5c81
MD5 94bfd5ad69acce24caef9ddd5e68782a
BLAKE2b-256 1c359ca6e0ad0baac8775b7bbf5c3255a8e5c95eb0ed51aed9f4c84b5b303edf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page