Skip to main content

Acquisition is a mechanism that allows objects to obtain attributes from the containment hierarchy they're in.

Project description

Environmental Acquisiton

This package implements “environmental acquisiton” for Python, as proposed in the OOPSLA96 paper by Joseph Gil and David H. Lorenz:

We propose a new programming paradigm, environmental acquisition in the context of object aggregation, in which objects acquire behaviour from their current containers at runtime. The key idea is that the behaviour of a component may depend upon its enclosing composite(s). In particular, we propose a form of feature sharing in which an object “inherits” features from the classes of objects in its environment. By examining the declaration of classes, it is possible to determine which kinds of classes may contain a component, and which components must be contained in a given kind of composite. These relationships are the basis for language constructs that supports acquisition.

Introductory Example

Zope implements acquisition with “Extension Class” mix-in classes. To use acquisition your classes must inherit from an acquisition base class. For example:

>>> import ExtensionClass, Acquisition

>>> class C(ExtensionClass.Base):
...     color = 'red'

>>> class A(Acquisition.Implicit):
...     def report(self):
...         print(self.color)
...
>>> a = A()
>>> c = C()
>>> c.a = a

>>> c.a.report()
red

>>> d = C()
>>> d.color = 'green'
>>> d.a = a

>>> d.a.report()
green

>>> try:
...     a.report()
... except AttributeError:
...     pass
... else:
...     raise AssertionError('AttributeError not raised.')

The class A inherits acquisition behavior from Acquisition.Implicit. The object, a, “has” the color of objects c and d when it is accessed through them, but it has no color by itself. The object a obtains attributes from its environment, where its environment is defined by the access path used to reach a.

Acquisition Wrappers

When an object that supports acquisition is accessed through an extension class instance, a special object, called an acquisition wrapper, is returned. In the example above, the expression c.a returns an acquisition wrapper that contains references to both c and a. It is this wrapper that performs attribute lookup in c when an attribute cannot be found in a.

Acquisition wrappers provide access to the wrapped objects through the attributes aq_parent, aq_self, aq_base. Continue the example from above:

>>> c.a.aq_parent is c
True
>>> c.a.aq_self is a
True

Explicit and Implicit Acquisition

Two styles of acquisition are supported: implicit and explicit acquisition.

Implicit acquisition

Implicit acquisition is so named because it searches for attributes from the environment automatically whenever an attribute cannot be obtained directly from an object or through inheritance.

An attribute can be implicitly acquired if its name does not begin with an underscore.

To support implicit acquisition, your class should inherit from the mix-in class Acquisition.Implicit.

Explicit Acquisition

When explicit acquisition is used, attributes are not automatically obtained from the environment. Instead, the method aq_acquire must be used. For example:

>>> print(c.a.aq_acquire('color'))
red

To support explicit acquisition, your class should inherit from the mix-in class Acquisition.Explicit.

Controlling Acquisition

A class (or instance) can provide attribute by attribute control over acquisition. You should subclass from Acquisition.Explicit, and set all attributes that should be acquired to the special value Acquisition.Acquired. Setting an attribute to this value also allows inherited attributes to be overridden with acquired ones. For example:

>>> class C(Acquisition.Explicit):
...     id = 1
...     secret = 2
...     color = Acquisition.Acquired
...     __roles__ = Acquisition.Acquired

The only attributes that are automatically acquired from containing objects are color, and __roles__. Note that the __roles__ attribute is acquired even though its name begins with an underscore. In fact, the special Acquisition.Acquired value can be used in Acquisition.Implicit objects to implicitly acquire selected objects that smell like private objects.

Sometimes, you want to dynamically make an implicitly acquiring object acquire explicitly. You can do this by getting the object’s aq_explicit attribute. This attribute provides the object with an explicit wrapper that replaces the original implicit wrapper.

Filtered Acquisition

The acquisition method, aq_acquire, accepts two optional arguments. The first of the additional arguments is a “filtering” function that is used when considering whether to acquire an object. The second of the additional arguments is an object that is passed as extra data when calling the filtering function and which defaults to None. The filter function is called with five arguments:

  • The object that the aq_acquire method was called on,

  • The object where an object was found,

  • The name of the object, as passed to aq_acquire,

  • The object found, and

  • The extra data passed to aq_acquire.

If the filter returns a true object that the object found is returned, otherwise, the acquisition search continues.

Here’s an example:

>>> from Acquisition import Explicit

>>> class HandyForTesting(object):
...     def __init__(self, name):
...         self.name = name
...     def __str__(self):
...         return "%s(%s)" % (self.name, self.__class__.__name__)
...     __repr__=__str__
...
>>> class E(Explicit, HandyForTesting): pass
...
>>> class Nice(HandyForTesting):
...     isNice = 1
...     def __str__(self):
...         return HandyForTesting.__str__(self)+' and I am nice!'
...     __repr__ = __str__
...
>>> a = E('a')
>>> a.b = E('b')
>>> a.b.c = E('c')
>>> a.p = Nice('spam')
>>> a.b.p = E('p')

>>> def find_nice(self, ancestor, name, object, extra):
...     return hasattr(object,'isNice') and object.isNice

>>> print(a.b.c.aq_acquire('p', find_nice))
spam(Nice) and I am nice!

The filtered acquisition in the last line skips over the first attribute it finds with the name p, because the attribute doesn’t satisfy the condition given in the filter.

Filtered acquisition is rarely used in Zope.

Acquiring from Context

Normally acquisition allows objects to acquire data from their containers. However an object can acquire from objects that aren’t its containers.

Most of the examples we’ve seen so far show establishing of an acquisition context using getattr semantics. For example, a.b is a reference to b in the context of a.

You can also manually set acquisition context using the __of__ method. For example:

>>> from Acquisition import Implicit
>>> class C(Implicit): pass
...
>>> a = C()
>>> b = C()
>>> a.color = "red"
>>> print(b.__of__(a).color)
red

In this case, a does not contain b, but it is put in b’s context using the __of__ method.

Here’s another subtler example that shows how you can construct an acquisition context that includes non-container objects:

>>> from Acquisition import Implicit

>>> class C(Implicit):
...     def __init__(self, name):
...         self.name = name

>>> a = C("a")
>>> a.b = C("b")
>>> a.b.color = "red"
>>> a.x = C("x")

>>> print(a.b.x.color)
red

Even though b does not contain x, x can acquire the color attribute from b. This works because in this case, x is accessed in the context of b even though it is not contained by b.

Here acquisition context is defined by the objects used to access another object.

Containment Before Context

If in the example above suppose both a and b have an color attribute:

>>> a = C("a")
>>> a.color = "green"
>>> a.b = C("b")
>>> a.b.color = "red"
>>> a.x = C("x")

>>> print(a.b.x.color)
green

Why does a.b.x.color acquire color from a and not from b? The answer is that an object acquires from its containers before non-containers in its context.

To see why consider this example in terms of expressions using the __of__ method:

a.x -> x.__of__(a)

a.b -> b.__of__(a)

a.b.x -> x.__of__(a).__of__(b.__of__(a))

Keep in mind that attribute lookup in a wrapper is done by trying to look up the attribute in the wrapped object first and then in the parent object. So in the expressions above proceeds from left to right.

The upshot of these rules is that attributes are looked up by containment before context.

This rule holds true also for more complex examples. For example, a.b.c.d.e.f.g.attribute would search for attribute in g and all its containers first. (Containers are searched in order from the innermost parent to the outermost container.) If the attribute is not found in g or any of its containers, then the search moves to f and all its containers, and so on.

Additional Attributes and Methods

You can use the special method aq_inner to access an object wrapped only by containment. So in the example above, a.b.x.aq_inner is equivalent to a.x.

You can find out the acquisition context of an object using the aq_chain method like so:

>>> [obj.name for obj in a.b.x.aq_chain]
['x', 'b', 'a']

You can find out if an object is in the containment context of another object using the aq_inContextOf method. For example:

>>> a.b.aq_inContextOf(a)
True

Acquisition Module Functions

In addition to using acquisition attributes and methods directly on objects you can use similar functions defined in the Acquisition module. These functions have the advantage that you don’t need to check to make sure that the object has the method or attribute before calling it.

aq_acquire(object, name [, filter, extra, explicit, default, containment])

Acquires an object with the given name.

This function can be used to explictly acquire when using explicit acquisition and to acquire names that wouldn’t normally be acquired.

The function accepts a number of optional arguments:

filter

A callable filter object that is used to decide if an object should be acquired.

The filter is called with five arguments:

  • The object that the aq_acquire method was called on,

  • The object where an object was found,

  • The name of the object, as passed to aq_acquire,

  • The object found, and

  • The extra argument passed to aq_acquire.

If the filter returns a true object that the object found is returned, otherwise, the acquisition search continues.

extra

Extra data to be passed as the last argument to the filter.

explicit

A flag (boolean value) indicating whether explicit acquisition should be used. The default value is true. If the flag is true, then acquisition will proceed regardless of whether wrappers encountered in the search of the acquisition hierarchy are explicit or implicit wrappers. If the flag is false, then parents of explicit wrappers are not searched.

This argument is useful if you want to apply a filter without overriding explicit wrappers.

default

A default value to return if no value can be acquired.

containment

A flag indicating whether the search should be limited to the containment hierarchy.

In addition, arguments can be provided as keywords.

aq_base(object)

Return the object with all wrapping removed.

aq_chain(object [, containment])

Return a list containing the object and it’s acquisition parents. The optional argument, containment, controls whether the containment or access hierarchy is used.

aq_get(object, name [, default, containment])

Acquire an attribute, name. A default value can be provided, as can a flag that limits search to the containment hierarchy.

aq_inner(object)

Return the object with all but the innermost layer of wrapping removed.

aq_parent(object)

Return the acquisition parent of the object or None if the object is unwrapped.

aq_self(object)

Return the object with one layer of wrapping removed, unless the object is unwrapped, in which case the object is returned.

In most cases it is more convenient to use these module functions instead of the acquisition attributes and methods directly.

Acquisition and Methods

Python methods of objects that support acquisition can use acquired attributes. When a Python method is called on an object that is wrapped by an acquisition wrapper, the wrapper is passed to the method as the first argument. This rule also applies to user-defined method types and to C methods defined in pure mix-in classes.

Unfortunately, C methods defined in extension base classes that define their own data structures, cannot use aquired attributes at this time. This is because wrapper objects do not conform to the data structures expected by these methods. In practice, you will seldom find this a problem.

Conclusion

Acquisition provides a powerful way to dynamically share information between objects. Zope uses acquisition for a number of its key features including security, object publishing, and DTML variable lookup. Acquisition also provides an elegant solution to the problem of circular references for many classes of problems. While acquisition is powerful, you should take care when using acquisition in your applications. The details can get complex, especially with the differences between acquiring from context and acquiring from containment.

Changelog

4.13 (2022-11-17)

  • Add support for building arm64 wheels on macOS.

4.12 (2022-11-03)

  • Add support for final Python 3.11 release.

4.11 (2022-09-16)

  • Add support for Python 3.11 (as of 3.11.0rc1).

  • Switch from -Ofast to -O3 when compiling code for Linux wheels. (#64)

4.10 (2021-12-07)

  • Fix bug in the PURE_PYTHON version affecting aq_acquire applied to a class with a filter.

  • Improve interface documentation.

  • Add support for Python 3.10.

4.9 (2021-08-19)

  • On CPython no longer omit compiling the C code when PURE_PYTHON is required. Just evaluate it at runtime. (#53)

4.8 (2021-07-20)

  • Various fixes for the PURE_PYTHON version, e.g. make Acquired an str (as required by Zope), avoid infinite __cmp__ loop. (#51, #48)

  • Create aarch64 wheels.

4.7 (2020-10-07)

  • Add support for Python 3.8 and 3.9.

4.6 (2019-04-24)

  • Drop support for Python 3.4.

  • Add support for Python 3.8a3.

  • Add support to call bytes() on an object wrapped by an ImplicitAcquisitionWrapper. (#38)

4.5 (2018-10-05)

  • Avoid deprecation warnings by using current API.

  • Add support for Python 3.7.

4.4.4 (2017-11-24)

  • Add Appveyor configuration to automate building Windows eggs.

4.4.3 (2017-11-23)

  • Fix the extremely rare potential for a crash when the C extensions are in use. See issue 21.

4.4.2 (2017-05-12)

  • Fix C capsule name to fix import errors.

  • Ensure our dependencies match our expactations about C extensions.

4.4.1 (2017-05-04)

  • Fix C code under Python 3.4, with missing Py_XSETREF.

4.4.0 (2017-05-04)

  • Enable the C extension under Python 3.

  • Drop support for Python 3.3.

4.3.0 (2017-01-20)

  • Make tests compatible with ExtensionClass 4.2.0.

  • Drop support for Python 2.6 and 3.2.

  • Add support for Python 3.5 and 3.6.

4.2.2 (2015-05-19)

4.2.1 (2015-04-23)

4.2 (2015-04-04)

  • Add support for PyPy, PyPy3, and Python 3.2, 3.3, and 3.4.

4.1 (2014-12-18)

  • Bump dependency on ExtensionClass to match current release.

4.0.3 (2014-11-02)

  • Skip readme.rst tests when tests are run outside a source checkout.

4.0.2 (2014-11-02)

  • Include *.rst files in the release.

4.0.1 (2014-10-30)

  • Tolerate Unicode attribute names (ASCII only). LP #143358.

  • Make module-level aq_acquire API respect the default parameter. LP #1387363.

  • Don’t raise an attribute error for __iter__ if the fallback to __getitem__ succeeds. LP #1155760.

4.0 (2013-02-24)

  • Added trove classifiers to project metadata.

4.0a1 (2011-12-13)

  • Raise RuntimeError: Recursion detected in acquisition wrapper if an object with a __parent__ pointer points to a wrapper that in turn points to the original object.

  • Prevent wrappers to be created while accessing __parent__ on types derived from Explicit or Implicit base classes.

2.13.9 (2015-02-17)

  • Tolerate Unicode attribute names (ASCII only). LP #143358.

  • Make module-level aq_acquire API respect the default parameter. LP #1387363.

  • Don’t raise an attribute error for __iter__ if the fallback to __getitem__ succeeds. LP #1155760.

2.13.8 (2011-06-11)

  • Fixed a segfault on 64bit platforms when providing the explicit argument to the aq_acquire method of an Acquisition wrapper. Thx to LP #675064 for the hint to the solution. The code passed an int instead of a pointer into a function.

2.13.7 (2011-03-02)

  • Fixed bug: When an object did not implement __unicode__, calling unicode(wrapped) was calling __str__ with an unwrapped self.

2.13.6 (2011-02-19)

  • Add aq_explicit to IAcquisitionWrapper.

  • Fixed bug: unicode(wrapped) was not calling a __unicode__ method on wrapped objects.

2.13.5 (2010-09-29)

  • Fixed unit tests that failed on 64bit Python on Windows machines.

2.13.4 (2010-08-31)

  • LP 623665: Fixed typo in Acquisition.h.

2.13.3 (2010-04-19)

  • Use the doctest module from the standard library and no longer depend on zope.testing.

2.13.2 (2010-04-04)

  • Give both wrapper classes a __getnewargs__ method, which causes the ZODB optimization to fail and create persistent references using the _p_oid alone. This happens to be the persistent oid of the wrapped object. This lets these objects to be persisted correctly, even though they are passed to the ZODB in a wrapped state.

  • Added failing tests for http://dev.plone.org/plone/ticket/10318. This shows an edge-case where AQ wrappers can be pickled using the specific combination of cPickle, pickle protocol one and a custom Pickler class with an inst_persistent_id hook. Unfortunately this is the exact combination used by ZODB3.

2.13.1 (2010-02-23)

  • Update to include ExtensionClass 2.13.0.

  • Fix the tp_name of the ImplicitAcquisitionWrapper and ExplicitAcquisitionWrapper to match their Python visible names and thus have a correct __name__.

  • Expand the tp_name of our extension types to hold the fully qualified name. This ensures classes have their __module__ set correctly.

2.13.0 (2010-02-14)

2.12.4 (2009-10-29)

  • Fix iteration proxying to pass self acquisition-wrapped into both __iter__ as well as __getitem__ (this fixes https://bugs.launchpad.net/zope2/+bug/360761).

  • Add tests for the __getslice__ proxying, including open-ended slicing.

2.12.3 (2009-08-08)

  • More 64-bit fixes in Py_BuildValue calls.

  • More 64-bit issues fixed: Use correct integer size for slice operations.

2.12.2 (2009-08-02)

2.12.1 (2009-04-15)

  • Update for iteration proxying: The proxy for __iter__ must not rely on the object to have an __iter__ itself, but also support fall-back iteration via __getitem__ (this fixes https://bugs.launchpad.net/zope2/+bug/360761).

2.12 (2009-01-25)

  • Release as separate package.

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

Acquisition-4.13.tar.gz (66.5 kB view details)

Uploaded Source

Built Distributions

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

Acquisition-4.13-cp311-cp311-win_amd64.whl (65.9 kB view details)

Uploaded CPython 3.11Windows x86-64

Acquisition-4.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (123.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

Acquisition-4.13-cp311-cp311-macosx_11_0_arm64.whl (66.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

Acquisition-4.13-cp311-cp311-macosx_10_9_x86_64.whl (66.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

Acquisition-4.13-cp310-cp310-win_amd64.whl (65.8 kB view details)

Uploaded CPython 3.10Windows x86-64

Acquisition-4.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (119.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

Acquisition-4.13-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (122.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

Acquisition-4.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (116.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

Acquisition-4.13-cp310-cp310-macosx_11_0_arm64.whl (66.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

Acquisition-4.13-cp310-cp310-macosx_10_9_x86_64.whl (66.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

Acquisition-4.13-cp39-cp39-win_amd64.whl (65.8 kB view details)

Uploaded CPython 3.9Windows x86-64

Acquisition-4.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (118.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

Acquisition-4.13-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (121.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

Acquisition-4.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (115.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

Acquisition-4.13-cp39-cp39-macosx_11_0_arm64.whl (66.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

Acquisition-4.13-cp39-cp39-macosx_10_9_x86_64.whl (66.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

Acquisition-4.13-cp38-cp38-win_amd64.whl (65.8 kB view details)

Uploaded CPython 3.8Windows x86-64

Acquisition-4.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (119.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

Acquisition-4.13-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (123.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

Acquisition-4.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (116.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

Acquisition-4.13-cp38-cp38-macosx_11_0_arm64.whl (66.1 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

Acquisition-4.13-cp38-cp38-macosx_10_9_x86_64.whl (66.5 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

Acquisition-4.13-cp37-cp37m-win_amd64.whl (65.8 kB view details)

Uploaded CPython 3.7mWindows x86-64

Acquisition-4.13-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (110.5 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

Acquisition-4.13-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (113.5 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

Acquisition-4.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (106.8 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

Acquisition-4.13-cp37-cp37m-macosx_10_15_x86_64.whl (66.5 kB view details)

Uploaded CPython 3.7mmacOS 10.15+ x86-64

Acquisition-4.13-cp36-cp36m-win_amd64.whl (66.2 kB view details)

Uploaded CPython 3.6mWindows x86-64

Acquisition-4.13-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (110.6 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

Acquisition-4.13-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (112.6 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

Acquisition-4.13-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (105.9 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

Acquisition-4.13-cp36-cp36m-macosx_10_14_x86_64.whl (66.3 kB view details)

Uploaded CPython 3.6mmacOS 10.14+ x86-64

Acquisition-4.13-cp35-cp35m-win_amd64.whl (66.2 kB view details)

Uploaded CPython 3.5mWindows x86-64

Acquisition-4.13-cp27-cp27m-win_amd64.whl (64.2 kB view details)

Uploaded CPython 2.7mWindows x86-64

Acquisition-4.13-cp27-cp27m-macosx_10_14_x86_64.whl (66.5 kB view details)

Uploaded CPython 2.7mmacOS 10.14+ x86-64

File details

Details for the file Acquisition-4.13.tar.gz.

File metadata

  • Download URL: Acquisition-4.13.tar.gz
  • Upload date:
  • Size: 66.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for Acquisition-4.13.tar.gz
Algorithm Hash digest
SHA256 04f585d3643f931ebd45b843cade06639b54ce3f3f30ff49211baf83f31fa788
MD5 406a1b4bcc905948a0d436cd320e7465
BLAKE2b-256 683b607e24ba26b7693d4a6274cd4b99a05681616866890d5a98fe66f875cae1

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 65.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for Acquisition-4.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 185c5b4a3216c6ec3e0dda20aba4e087d31bad265d62ba0eaf2968b1a3e56f56
MD5 1bf4b75998842a9f8ed08b27cba175e8
BLAKE2b-256 0a977e5666c99200887b264a1c709981d0507cb6d29abea7930c8e6787aaf1fa

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9ff8961a6901de84778b84308f75227114c230ec6b48ac592196358b3bea757
MD5 e63caa6d1f402d235b222014aa8a1ec6
BLAKE2b-256 864a74808a0a8b44f662ffa438d2b8f4149b41c47271c0ad2e297501228f9915

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 846acb679e78f67f3b5e99966910008564318d090ed349c7978fc17339599657
MD5 6217e056bae05d967c0bedc485b77437
BLAKE2b-256 3deefebe10195ae6aaf66b2c6a4eb26440887ebc1fe06bb7d746688873a0c107

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 321790007c260247260769f877679ff1df2c41c2f0f93dcbee6114e2188082f9
MD5 83e522dca4d47c4a22f21f038459d18d
BLAKE2b-256 dfe7ed69ee90e44c7d949c388212117cecf36dc7c3a0ce285c7e5c256d107ed1

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 65.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for Acquisition-4.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7c316f454fcaa803feb5b882c12e0af159c55abaafd586b594b43a2a285f3773
MD5 738797ca5a428e91964d471419f8ab65
BLAKE2b-256 0a97dcc1decaff9b71739f2365abc7e05403eb0264df9cea68b92ee774ec9642

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 aaeb1799933275675acec48dc1d9a7b81ed3f683eae7931b98404be130b1086b
MD5 c495aa026fcf9ca402c6c9736627be0b
BLAKE2b-256 9fdc5c96a83bc18bb8889da7ba3f77f9157f9373e8b21a024b37253d55e20342

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7ce1095fdd424cc75c5d7f9323680ad48ed622622f044af4a8bbbbc2ce17a7ed
MD5 9a7c2d0e6d69e1d89665f10d774b68fc
BLAKE2b-256 8b40376606232228ba221abf2b8223ff2869d4300506aeaaa266313540f8e0c6

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 fb59e5f51c351e7794d9a6f36fdaa12a7fd7281b0222fe6f640e6185f2638187
MD5 69c974e0c3d5d5d89779bc8eee265bc1
BLAKE2b-256 04dca25324ea6677eefcfeef2f82ff2a4225171f0e2f4163f5bc7aed0184f3c2

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 92839cc418007fa322acd35d5153f3c0dd89d9f3d79aae73d2a57a46f02c3273
MD5 7c490e3b5d9576eabe1b6e5dbdc44739
BLAKE2b-256 780d6fa1c445677fe27e6b986e22cf8ed7b709356a191e1906371c73a31a528b

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ea46864c70cf53bbd029c76ab9015e18b6fb3035e4870fa05c150d95e8c50f05
MD5 04993cc4cbeb59fd37b39ba04cbeeb6a
BLAKE2b-256 2fbc85b6788b6b65257381126b0baf189dee202544dd0b827c0dd37a97ce6e82

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 65.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.0

File hashes

Hashes for Acquisition-4.13-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7326bf6690de71e7026c68e3d626870e215808ed0ab2e66e3e16b0df9e0c9f1b
MD5 0143c30976f2c7c8ee460fccf13fd29f
BLAKE2b-256 bea08bfe75ea6425fe58da528a4589465b1faf503e8105e1c1aa9934c2a21d5c

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 09e4815fa36d13c97268ebf84d335404434da1f9b22bdc44a87766e8b83297a1
MD5 af7716783cee3d201ed6a392f4ad6cdf
BLAKE2b-256 858cd052df196529da6a0a71f97c03c2da72830b880b1c73ef15ef0607d814c2

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 3581b1d69dc34cb3bd9e93f07d2ff5bcf93fa6dea2e7f10cf24639b21b27e07c
MD5 12e8fa6d3e340c0a90b43d0c5103f9ff
BLAKE2b-256 524f89a13aba1d4a98f1ea7918f10b39fb7f1528831e277edbe75e3dd722a81f

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 91de2ed30f3eb737fcd60de946cf67ea0429f2326e1f6edde28a18eb3d3a92b8
MD5 56193e52cdd436a75305d138a7963d06
BLAKE2b-256 44cde22dc5d0290096659c4f33d424720a5bc286b45fa13101bd8146a70d5e60

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 572a56dbe718a3ab8ef1f569e2c08ee46dc8f2ca0b94c96c4efc839853fe7038
MD5 2d3709510a96ebb4ad782e6e6456e8b3
BLAKE2b-256 93176194bfee1e7b601483fa9b32bca4f0a4b357ecefe916687407e96533621b

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64fe3fce36947390fd6bcd2f2e9a3348205e5502d3afaaa96cea17ee6a6a12ce
MD5 0d230ace42e713c977ae55811560deed
BLAKE2b-256 17460fb68b58f165132ee63d003ee1d489fdf95d10bb07d770dc5979cc4d2728

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 65.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.0

File hashes

Hashes for Acquisition-4.13-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e93f72524110cff3dca4d8b667a3e4ef5e90b56b45de1f07992d887547c28020
MD5 ece25eeb019d32f73b59e95e04854e9d
BLAKE2b-256 dff5ada525583fea0855e658b2ec29a1811d3ffdb901750ef75980416fe18712

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ca9774c3a0c22caa4a2c3f064400113af6800c7b12de857d1ee516fb41b2af13
MD5 2db1b05859fe1e5c15cb35ab429da77d
BLAKE2b-256 766e7f44c69096ebe0464eae89fa72aa4d85543785e32da20247312db336d009

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 aa0dde20115e405ce73b2462e4dfbafeeef6842de41d6da456b21b9e00a867b7
MD5 54dcceec240e51f214544ff612c5d9dd
BLAKE2b-256 cb28116d3fac407bf807d85426361f009395f0c574eedd7a8880ed732d9168fe

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 4c9961814af38c398d8e2a9362f5d4f523139d0a0c7106af03cd50ed7cc4f3b1
MD5 4a086504255476c9a317f6c4490a402c
BLAKE2b-256 fa54e1bf666235065f469320be3426635ac26693c01d1c223f13b3ec059d5fa6

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93fb52dcb9b47d2410de57657f386603f20d28e20f19b23644e8e892f2af184f
MD5 a4891185ec98791e3a35c8d242060e48
BLAKE2b-256 e07f15843713fe89b15f252d5f65b8b9eaa50c454a072e518188f6fc916ca93a

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 edf55fb4cdb308043daa296b6c003d987007dd98ac4887c4de234e9eacecc988
MD5 9feedfb94cf4d5059a135da6adc5ea2f
BLAKE2b-256 0b9791642dd6b2005f37d87ea826713b8ba559e61e3429387f352c38152ed4f8

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 65.8 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.5

File hashes

Hashes for Acquisition-4.13-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 3553fa487d31af15a82adf1db9be2515b66a921548dd0f3b92f5b16e0206be54
MD5 94132aa6c2e728a0247f3f7feae7a32b
BLAKE2b-256 78304f060add6e9adbacc431e82393a598de4028b39d14eae49b592ecf477227

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 33d3feb56568432d1e7a37cccd01100d527e6eaf9c5debddf9968f8b9cd94846
MD5 069f35deade890c96b91ed374ead0e9c
BLAKE2b-256 13d0e28dbe6ed4ea3ae0e1b54d57609213c6c6a7805c0ab45e754521986a5d5a

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6a0757adca64c4e3a88582930d95c747f39a83f40027c16fe57fb8946f4ab6ec
MD5 9bf7eb9bec2bf90debbeef1e8a990be4
BLAKE2b-256 fffdd3311996ffe7917902ee5fc6bd0695145b2c3b2f06d3c814df64b8b7b4d3

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 61ef3ec4fb169695f5e0853dfe3f934059f9acf5d249d78db1e6a3b7bd27e042
MD5 181acddced33a58179ecd96fc8bdd87e
BLAKE2b-256 cef04ad3807185d4c1b7177d86516365036d9ca30cd42753d0c492b8c8545c4f

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 445dc241bc4d0df148fa99ef3754249a701d2418561d70d1e7d95507f6900638
MD5 c2e563893a636618245f55a23b3d3c6e
BLAKE2b-256 608f9ff4de2d6a199571a37f27c335743884da3e3192542771693f5cdec7a982

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 66.2 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.12 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.8

File hashes

Hashes for Acquisition-4.13-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 33c0a5870f2bb2ac2472d974bb9453855ac88755201b8d3a2038c8e3390ddb79
MD5 3d941ed323484b21b63a6ee00b634cc7
BLAKE2b-256 1a216c2356e188878e0c4313d2506df131d739cad83b0c6faab3ec4cafc10e66

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e70fc7341d25a4be2fcf931f620ee480cf5b34e1d60f44b9da324e11a9e57042
MD5 dece18b28456592cebce5ff3c92bf51b
BLAKE2b-256 15190ce377e16ee66621ccb4931209f1c54d5ce5e13151b75ce48a57c077eb3b

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 29bfa8ff0fdf0a913a71001bda00f7d80dd0967391e9ed0f177addcf7113d7e8
MD5 60eec30203fb89da65581eb78f264e5c
BLAKE2b-256 d21f7ccb40fc2430ee06c016a44034b62b4e3c5932e3de707a8252b89e3dde56

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for Acquisition-4.13-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 c0fd32876d5d1141a4ace79310a071b5fd0813c20e96db23f0cba6086afa9399
MD5 fa704da33ff4ddeb8f190100fb6c49b5
BLAKE2b-256 3c4999f9366b9a359b6dc9eeaec0f78ba0f3e2b9316d3565b7561eb1e9a8cdce

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 66.3 kB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.12 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.15

File hashes

Hashes for Acquisition-4.13-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 4337ab3e1a5e34d675b41fd3ace713c180c126acaa1fbd577e3ec1d17c04e7b6
MD5 dc51eb05611801912b357d4bdbab5a6c
BLAKE2b-256 ca150432828d09d9cb5a09c004b48c43e93242fd423626d7f7ede4934f3965ef

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 66.2 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.2 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/3.5.4

File hashes

Hashes for Acquisition-4.13-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 6d17dd43a6fb053bbc29d7ab55c101c7690d0b080334fef3a61c879fee254de8
MD5 1303a637bdec67e21380474db49ec009
BLAKE2b-256 41942c4ecfcb4f061d916227fc669035679deff37e891a105e5f3583fdff09ef

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp27-cp27m-win_amd64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp27-cp27m-win_amd64.whl
  • Upload date:
  • Size: 64.2 kB
  • Tags: CPython 2.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.3 requests/2.27.1 setuptools/44.1.1 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/2.7.17

File hashes

Hashes for Acquisition-4.13-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 4e2f683e9a4a84266011101366ef8ecc896baa1e5195f03577e4118b0e9ec383
MD5 3e160e47ca78dd64f94dc5af0e4741aa
BLAKE2b-256 34611e8f6b09d020157db97ba2f3646a83a29a5ab27651d7aae1a65d4d6f6b53

See more details on using hashes here.

File details

Details for the file Acquisition-4.13-cp27-cp27m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: Acquisition-4.13-cp27-cp27m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 66.5 kB
  • Tags: CPython 2.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.3 requests/2.27.1 setuptools/44.1.1 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/2.7.18

File hashes

Hashes for Acquisition-4.13-cp27-cp27m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 5a6896ffbb1cae64266b7e69492450957f85fd172f692f28adf339137a59d284
MD5 7b05333bd40493c467f8a5be73c67452
BLAKE2b-256 883248532eb47af3a893bb96ef31bb828df385af9c250dc003d4da913d361e5c

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