Skip to main content

NTI Externalization

Project description

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.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.

Project details


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.1.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.1.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.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

nti_externalization-3.1.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.1.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.1.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.1.0-cp314-cp314-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

nti_externalization-3.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

nti_externalization-3.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.1 MB view details)

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

nti_externalization-3.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nti_externalization-3.1.0-cp313-cp313-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

nti_externalization-3.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

nti_externalization-3.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.1 MB view details)

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

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

Uploaded CPython 3.13macOS 26.0+ ARM64

nti_externalization-3.1.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.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

nti_externalization-3.1.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.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.1 MB view details)

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

nti_externalization-3.1.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.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

nti_externalization-3.1.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.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.1 MB view details)

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

nti_externalization-3.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nti_externalization-3.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

nti_externalization-3.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

nti_externalization-3.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.1 MB view details)

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

File details

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

File metadata

  • Download URL: nti_externalization-3.1.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.13

File hashes

Hashes for nti_externalization-3.1.0.tar.gz
Algorithm Hash digest
SHA256 f7910fd8c0379d0543a9faf0036f26649fbb6698a1f841b8f82d77410dd7ec9d
MD5 1ad29dd4e6ad909231ff818bbd3c0d78
BLAKE2b-256 eff1634aea3e782e92a63a0942833df798cbf621f89decd7458df7870c22a745

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 518be5139d57f59756369cca5f91d85631644d4d97d9a1225167ed12df5635c7
MD5 8410e22f135251892182a67a2ecc78db
BLAKE2b-256 205d4b1ae99dd6a542a8c1123ce58066475ee2b621bc7239a3fa127587c8d264

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 effa332ce9327c437aaa3793fe060511757b6b79c781f4510e2beb36d63aa7d5
MD5 915c6e8e1dc3fef0864e449e95ad6b49
BLAKE2b-256 f4af1a8254272c16de7b272ca2f3d16a53bb1ffa4732e9570c2a51aed8747c9f

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.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.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e396767503888d5476ff1cc1b5ee8f1963ba7b2fc686b9c0e4dfacabdcd98f64
MD5 99ef3147072d6c4cdb1676b02084c310
BLAKE2b-256 e1c9e88224789585498e00316b802656547fe8671d5210a9c289ba28c5501b6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e95405805ef7f7b4a26127e6f9f47b64ce35124a60ce81509c37ae6a0cce2ddc
MD5 1405dd64ab0c5c4c5e0909f666179357
BLAKE2b-256 b2ff3c258757fb0df583a1655cb615699d132e162fc99e42f71dead86b263cb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2c2db4de04db8285291a060314c1b903f1477a11c8b23e1c89b2a2440e2e322b
MD5 5ea1f15dff322ced5f0788851832a77b
BLAKE2b-256 76b86ae0c5a1cd7fbc39e0b4f480e2302ce3774787331d6bb372c8c5f247a0f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ab7cd4cbf54ecb9cf9adab07dabb9999ad0d1d2617a03a17003765390c086f4e
MD5 a9308d39e389f44a9c23624d5edf3cbf
BLAKE2b-256 0f465df9309e9686de8e0699fb5441bd906b0ad98cc529b47a24b43f5c15a9aa

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.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.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 51b41ab5903a872908bad1c516580757f88d92ce7b91d3a3e13f700b22d22b71
MD5 416ffa68bd0e28b9e9857063f8d0f8e7
BLAKE2b-256 52ecb86b3ebff1d2ce328ad456343fa742fd9fbb5cc2fc8b2e58f3388d0aef89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11c742820ae4611d7d01f006315874cb740ee6a2d3c48688276ebe8dff35027f
MD5 6cfe905bd5c18bf227730213fdf15d50
BLAKE2b-256 05263f87661eaceff1b8db90cf471e724d446c70481b312bcd09730ad4b538ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7b4a04141c1b3266e436813f826a1f77c7910115b128fbe66d9f8053747c9546
MD5 a2803521a96b7d05c6bf86863972dcfe
BLAKE2b-256 24a62adcae3277247355176213998be2e5977c5d8c2d6237ad99dd0bc6a690a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8391a900a62a0391c58d11578ebe35031e33d49ad4cc98e8305ae51ee87b42e7
MD5 6bfe54f947c0b06a95a903f80683f223
BLAKE2b-256 f1c92ea27c874ef2ee7a9411699d23f791766231ddad0029ca05768802352fb1

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.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.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 04a7d456d8fa107ca30927a444b2f6ad17541493c0e7d57f444fbc498b00bd80
MD5 2957152e2bbb620e51fcd1dfabca55f5
BLAKE2b-256 6b415db7a2a0a35eb8f9f647520577fa78d80a067c8be7c3883a5c61cabee54c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bb8b8d90a24ae1cb105d7535b7dc1d1a05045c0adc01700476b59936aab31047
MD5 f36a33cb1a904b98211ffac61f026be1
BLAKE2b-256 f373034f2a0062daca6ee9082920754fbdf1dfa89a1def7437c288ea78ac0d77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 8ac0cf41bbf8d7c3915333dd969b31801e9f2fe90198dbf0b2582e0722bc07d9
MD5 49ad7ed213294dd47acea3598ebeaedf
BLAKE2b-256 28b0e41dbd481cd10938ad3c705c64c297c13c1c737ff148abad2a01f21ac8fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 600e5fca97b5e3d34144557ca9f4827b22ef65421c29addbbc879b56bda3a9dd
MD5 faec07bcc0af64ed36276b9778602f55
BLAKE2b-256 043e3a17f8ce539eef268d1025146957744b5521281247901160b54b1aaed79a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4f3ece952ebd49cb60ae19ec956f74ab32123b73a73147e924c5d9e199df9a58
MD5 00e8fe165c5b62b9041fa9b24385f2a9
BLAKE2b-256 8485b5749a5629d6a452a896a07aaf83dc1258348a6f307f97c22c55c949022f

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.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.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 284b514ef18e58f153a1cf1c75ebec0fff9642fbea199598b89531d15e204596
MD5 5c769d63c2c8e35ea976d21a120c1566
BLAKE2b-256 6863807d65bc9dbedcab89e56adba7a254b64f6e2f88a7827c0ff0778751afce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3f0c8daf894b9be0fa57609978441df8dd28fddddc3bd2e8db298663841bd6ee
MD5 897a4870706333df5d93765858e44afa
BLAKE2b-256 bdf79e173863c4bc0fc26f1ca5d657981646cb9f58d0721eedd29c03d87135c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c7b28a266ba71fe4777cf66a19b9fd87dbb9e5a4ec03815f77fda5c6ebbfda42
MD5 687e1cc6f8aab9bc22b642afaecd07fe
BLAKE2b-256 d09a3d9d35e451c8fa373723bda6666f370f060f1e1363f6feaae4c6b060efbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f2855c3fc503fae4c77716574ff6dc492d224d210fa8681d7c6caab176d86954
MD5 853200c7e44e55d463be28a65a95366c
BLAKE2b-256 7324ecf45291499ac260b003ab33566a47d535ad637c58cd9e3204f741cb8717

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.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.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19e3a8a078d7b1cbdcc26c93150c7b655fac8c7b5232a3a8e63a619694772d71
MD5 b877a2ae6436a9d835959124cf287533
BLAKE2b-256 015493e39c493d3821894890fc6103e90ad246b5060543a83864f2bb5b1cd514

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 86c472f8271e8a3c0b618cb03e037db000178ddb392c00465877aba3f28fe72a
MD5 4bb65f33c7af65282b8b2c402c3160b9
BLAKE2b-256 24883beaf2c7ec11bbc76344678bb7c7e1d1a574c6a7e37a23a64c907d620d39

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fbb6c94bd808dd3d72fccf45a011249b08e855a1759e87aaaad17e48e099df1f
MD5 a658fdb5f4ec0adc09ffbd633cdd09b6
BLAKE2b-256 e51d2cdecbf2cf0a63359e5869825ffb064a03bbcc4c49e378774d15eddc59e0

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d0bff1ffab01c76d11bd3f8a4b8b16ebb906be00d8dba1067e9e51d9590b7290
MD5 b93b03783a1ec6e48122843c4e647886
BLAKE2b-256 e35a09920c463bb7f4b05a424d1f2c6e09fbc5f27b9938ef480f8557ca3a6511

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48d4f019689c0aca71316c9bbe6e9920281625e46d29460d94e86efa4d190f7a
MD5 147f0901945054f8b46a3ffd15854ee4
BLAKE2b-256 936fa52cbb7999c9763837fbd580be7582a3725ed503c86e7fca883500e3a90e

See more details on using hashes here.

File details

Details for the file nti_externalization-3.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nti_externalization-3.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ecc6a5cb3e8d44f42233af056fe8968290977ca8e0ac61b3f5fe5f081e109c63
MD5 fd82c8ff4139dc37dc4e39f319a0d1cf
BLAKE2b-256 efb5fe50f819c0606793c562035648e631282c8e488f3746cdf19f75af250799

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 Pingdom Monitoring Sentry Error logging StatusPage Status page