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.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.12.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.12-cp311-cp311-win_amd64.whl (65.8 kB view details)

Uploaded CPython 3.11Windows x86-64

Acquisition-4.12-cp311-cp311-win32.whl (63.7 kB view details)

Uploaded CPython 3.11Windows x86

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

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

Acquisition-4.12-cp310-cp310-win_amd64.whl (65.7 kB view details)

Uploaded CPython 3.10Windows x86-64

Acquisition-4.12-cp310-cp310-win32.whl (63.7 kB view details)

Uploaded CPython 3.10Windows x86

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

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

Acquisition-4.12-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.12-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.12-cp310-cp310-macosx_11_0_x86_64.whl (66.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

Acquisition-4.12-cp39-cp39-win_amd64.whl (65.7 kB view details)

Uploaded CPython 3.9Windows x86-64

Acquisition-4.12-cp39-cp39-win32.whl (63.8 kB view details)

Uploaded CPython 3.9Windows x86

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

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

Acquisition-4.12-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.12-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.12-cp39-cp39-macosx_10_15_x86_64.whl (66.6 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

Acquisition-4.12-cp38-cp38-win_amd64.whl (65.7 kB view details)

Uploaded CPython 3.8Windows x86-64

Acquisition-4.12-cp38-cp38-win32.whl (63.8 kB view details)

Uploaded CPython 3.8Windows x86

Acquisition-4.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (119.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

Acquisition-4.12-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (123.3 kB view details)

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

Acquisition-4.12-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.12-cp38-cp38-macosx_10_15_x86_64.whl (66.6 kB view details)

Uploaded CPython 3.8macOS 10.15+ x86-64

Acquisition-4.12-cp37-cp37m-win_amd64.whl (65.7 kB view details)

Uploaded CPython 3.7mWindows x86-64

Acquisition-4.12-cp37-cp37m-win32.whl (63.6 kB view details)

Uploaded CPython 3.7mWindows x86

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

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

Acquisition-4.12-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.12-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.12-cp37-cp37m-macosx_10_15_x86_64.whl (66.5 kB view details)

Uploaded CPython 3.7mmacOS 10.15+ x86-64

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

Uploaded CPython 3.6mWindows x86-64

Acquisition-4.12-cp36-cp36m-win32.whl (63.9 kB view details)

Uploaded CPython 3.6mWindows x86

Acquisition-4.12-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (110.5 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

Acquisition-4.12-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.12-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.12-cp36-cp36m-macosx_10_14_x86_64.whl (66.3 kB view details)

Uploaded CPython 3.6mmacOS 10.14+ x86-64

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

Uploaded CPython 3.5mWindows x86-64

Acquisition-4.12-cp35-cp35m-win32.whl (63.9 kB view details)

Uploaded CPython 3.5mWindows x86

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

Uploaded CPython 2.7mWindows x86-64

Acquisition-4.12-cp27-cp27m-win32.whl (62.7 kB view details)

Uploaded CPython 2.7mWindows x86

Acquisition-4.12-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.12.tar.gz.

File metadata

  • Download URL: Acquisition-4.12.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.12.tar.gz
Algorithm Hash digest
SHA256 054297d9c3d0d68d52a1ac204742b72f7cf034cbfbeb67428bfdb70dbc9580d5
MD5 1f7bebe4ba15086806ee3a71ff8e1bec
BLAKE2b-256 e508ecfe17d38556a9f0d4122fc7550da2df77183b1f29d58590c9fc02062728

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 65.8 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.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 65e19dad7b2ca0420978b2a6331db1b8f9080dbf34cf9778cc9a3e1fc350f52c
MD5 e1848b99669ce42efced7b620323e0e1
BLAKE2b-256 e89cdafa83ea4c487f02bb4365490f0c16ff88e658cd2c2c47e8a87bc54f4b78

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp311-cp311-win32.whl.

File metadata

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

File hashes

Hashes for Acquisition-4.12-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 cba97a3cd2b9458d14f5713c651a8dea7ebf3d5a401cdee4cd6611cc8668120d
MD5 7189b135376f116a3be43b5d905fa30c
BLAKE2b-256 7e9d7f37ffc8e654f12014f5193133e4e9578d130fae01b66875f7ae0b28f29d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d070fb44d85f8dba5c227a9592046e306a5c16f0f51b40395da2af20d8936db
MD5 0af35b254552aed02ad5ac204f9a79e3
BLAKE2b-256 ebb6361f33094eed5202d52ab031a2af2e46972134c55c0fcaedb075b2863456

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 65.7 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.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 15d1edcc87ed596f1573132ffe7f6f45a39d50e4cb7cfc775f0aee13306b99cd
MD5 fc6e63c4f54e5338723f11931946d54b
BLAKE2b-256 83278778e934393ba56f9a857018105ecdb042fd7b081ed35b8bf9ce4c5bcece

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp310-cp310-win32.whl.

File metadata

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

File hashes

Hashes for Acquisition-4.12-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 a61e87d63fe01d4be6977a2b7de8b79dccd03a667051fe924f98d635a560c2d6
MD5 4704bde6a446e2663061bafa6a0899dd
BLAKE2b-256 599741c987b490f3767acb071a1046acbf06f20bb8cd9e9bfc49815a0a4a2d1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 365468f4f14215a02d623b39414393cdd227cd351d0c52ee8df597e5c74fc43c
MD5 4df2e0e364cf4ee6afa4f0dfad78eb45
BLAKE2b-256 cab04381b717290c6cfb9c57ae5253931c3c86766206ea20621e6184e585cc12

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-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.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 eaa007774a1e1982befee6782a91be9fe3bc32be12589e0301ace9659d5fbb07
MD5 f20e0e9026c6dad0fcd083b9d7b43b5c
BLAKE2b-256 976fdf08fc19cac56057a81e5d57f142d61135b49f227cfad27977785ef01435

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 21188cbea08283e6f5f404d83c4f3352e4fb4bdc1ced564608e9cd93588d589a
MD5 8b025b5e099a23dde9664ebe198dd73c
BLAKE2b-256 d4988809422418a47edbcfa84476d5867c0ace781172b1f124c4d76c0ae82469

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.12-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b46662e1171b3b4747edf4a8eb49ee27563966061b60652ef9d27e3a820af100
MD5 223e1904f874a48af92dceda5c5771dd
BLAKE2b-256 790dbb3d39e7ad22e41d1dbe42fee0ab8e241a90ef8dd38eea62549f43d17265

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 65.7 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.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0569426ef429bac616945bcd15936c51aa290d861a59796009dc9dcce37321bd
MD5 e1c3a426790ff4c5e67f9ea9bf9d3ffc
BLAKE2b-256 ce7350ad0e2d0f45ecdd85689c119b5cd0bf9aa3ba4713a05fd6315fbdc8d8f8

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp39-cp39-win32.whl.

File metadata

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

File hashes

Hashes for Acquisition-4.12-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 dfdccc9ba9beba61b9ef03f559b21daf4d133cc04c0dec47e444e185428f9243
MD5 0c59c5445a5ad44f98f740dfbd27539f
BLAKE2b-256 7d141cb02e3dc24f5f45326f28f6e0716e056f90641f2268f056131e84e32c10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4f56ebcc0e06d73343542fd9b02b88c05d0005ce4ec85d452435c6ad7f7e1b24
MD5 c023c6d526c48e3241a5019cde0e1985
BLAKE2b-256 04ee312a0dc2594bbdc62c722c5ac73e630d25d64937a14daf61c78e060d8ae4

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-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.12-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 96367ce6df84435b40e818a9c728ee002f4abf5a8d7617d62533d2c3267dd5bc
MD5 e672c10db89cb38b650d4cf7dc928bb4
BLAKE2b-256 ad8a3728f46931f990e41b281ce8ea18936ca1d110613139107866f7fc5e690c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 2f90e8fa2f090a8f82d6a7e92520b45944148949f107de8abc5abad2c66c1179
MD5 58fa68f71af6219e3dd983c97767e8f2
BLAKE2b-256 9f63ec9a9d508d1a7c557b91f3539da3d652f22317c352d042bd892d14b90007

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.12-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 72dd01e340a1c30a4944cc740067689e8dc74d03ea8067a95fb83c42159f0f31
MD5 2991cff8673663ec6c2e0135cfd7cce5
BLAKE2b-256 2209dc8dbc0158185aa9159ea5798ee3eb03fde637b94c0a72f94a0000da3998

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 65.7 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.12-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 667d35d22b428cccb94b9063894852e0c5336092750aa86d87a4c69b5f4a56d7
MD5 252ca77ab07194c36e30abdc2e2ae0fe
BLAKE2b-256 7b36d53d19010187ab05f967578a4c10df45e8e700fced7a1294c366465d3f43

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp38-cp38-win32.whl.

File metadata

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

File hashes

Hashes for Acquisition-4.12-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 3655ef9af78be0f3bee86d2873ecdbedf6d332d08dfaf6ccfd06f7ddd1c9f206
MD5 83fc08ab9b5d30aa6fdddc522d3c8102
BLAKE2b-256 177d6de8423a130ecd04aff555e29dad091b9809ae6310d309f0b97f1f14cf62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 efd300b5655faa685084d193c0fe1677ff07eda9a7edecca17a9fe3ac99221b3
MD5 c2d7e8c3e19ef0f82939127f4f9b7a7a
BLAKE2b-256 00d546ec2b46a7222b9c66400c5ef4eac51fe920ae45c17bd4cfe1aa176c9ebd

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-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.12-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 dd6319267f66b6333efd55384c23a0b1560ce387e1dee47f3a333bdfbd54ac2f
MD5 66afbd960aeef9616a19258666037092
BLAKE2b-256 9549639115bb63a565015af363392b915ee608fb32db52f3d87ab8703da3f571

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 69e49f9e9cb9345701c903eed9b6bc47deaa8d6393edbddf7b9dcadfb5292379
MD5 d98b8128ac68a0ae83216fe15351d968
BLAKE2b-256 525c161d531bfdfc31dde2c8a5580202bc7fd237fc2c8243d45e9638e00874d2

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for Acquisition-4.12-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 cd2a2c45a65038ae5b852230be94dc0f0cfa4d3522258b8734845c6a3f4ea155
MD5 559a0fe1dac0b92d7f4596ab05822d5b
BLAKE2b-256 96740de9645582c375b9cbdde2b4d58a9d94d20dab44cdbf657f80f3b03bdedc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 65.7 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.12-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 57345d783fe236e7e84e588345ff2958a4cef2d00557024269be68dac99f5d16
MD5 54a8c81512ffd0b9dfe8683e044427bf
BLAKE2b-256 176c75daeab189820bf2c864ce8e5ae4f4ad06d9434fc4114569f883f8f86118

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp37-cp37m-win32.whl.

File metadata

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

File hashes

Hashes for Acquisition-4.12-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 48b49472da8e9ab30aad343a381454f8d988834f006233dc5cb91a7bbc76b18f
MD5 74a18a35e3f1e664bae9395ce22646f1
BLAKE2b-256 a64ce74e6cc44447dbbef839f0141042d803fdfc346ee7a6504d87ae4abee3f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ea53e068704fa57b6b6096db657969e3119636ae874a247b036c241a4fb34fc
MD5 37edf5139c4130a98a3ff5382704bb38
BLAKE2b-256 6eb4cb769d5ece30a776393a36a0a28a7f12fbd10ad25487cab4fb2c759154e1

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-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.12-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 4a5838f318e0c63f4f2279bebe077e89eeea210a63c0743d6a0ce881cced3638
MD5 75cae3fc1d0e04709abebe8ed984cae7
BLAKE2b-256 f94ff868ec258694963995831e3a88e042de2229845b021ef368e6795bf5a426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 fa0ed251b99a67ba1b88937679926d16d0385a4f2be4b0022383c4385951016d
MD5 14c5499b4cd4440e687b5df5218fcfe8
BLAKE2b-256 9c5254f0caffe386933e9d4815bab4cd74f82eb3456d9218e5c837e2bf11f67f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7a34f7dcb0d9291699d14a249a65b45ae1bfc84836a8fae533d77caee2073dbe
MD5 2c4a75cdff0ffc300da702ae53908767
BLAKE2b-256 d23742b62326c599ed362c0e5e3a67eb8ce4124de74b141a6b45fdb7f7c49e8e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-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.12-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 2113a8a7c7b64da11e78da5293fa0923ccb49bf4f9620d2b29521acebbae2df4
MD5 89f0ef82182614ef511a213048dce3be
BLAKE2b-256 1d9514660cda9eb8959c876f71b5e8eeb01fceabc7295eb12462c1cf1ed2171b

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp36-cp36m-win32.whl.

File metadata

  • Download URL: Acquisition-4.12-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 63.9 kB
  • Tags: CPython 3.6m, Windows x86
  • 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.12-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 62b5959bae9e26bf948fb4a6503db99eea5e18001c553b93c98535f595f1290a
MD5 d3cb935dbac0747fa7fc0f0b30bd9db9
BLAKE2b-256 d14d540540355a60f0ffbffce4dfb24537771b55edd5f87de76d3b990eac6e2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2fff062931ebbf7c99ce8a89ca9f2b68bb55326dd881df8b27a2b9f451f61df6
MD5 4f0134ee79759d32a7e9675e79777327
BLAKE2b-256 1624d833b5faa51421a14453c736ef88159aa19570139620092570cf7c1fdb15

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-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.12-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1a457036e07be6746e85536dcf3005561cd70ce1bfbab4a322d7a60c334cb79c
MD5 7fa7da386082eeccfb9ef467b5b1d001
BLAKE2b-256 7627ca4a0bdeb51e66d063e97f0f0e23ef8d4d8143bf43e018f7b844858ffb1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Acquisition-4.12-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 80500a5d5c7e5840d15b34962365616530f5531cbb5b49adafc30693c13c506e
MD5 a2144b285e78531aa4d828a3010d53bd
BLAKE2b-256 aa07d60f067a15bc3a94a12cea36cee2d352546e83544427908f9ce0044a110e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-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.12-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 9bc093d5ac17df9f22f4a46c09f1c11858819821668c1ce7a06853f9d58b937e
MD5 9657d19710164609f80f54d67d0589ba
BLAKE2b-256 e28b1df3518fa5f357937466341a138389fb04c9b6e63ac26fe43a7286c0ca0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-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.12-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 730cf9b6c6898012051db1e61183e7702dd997a516edfbbd514866e9ba0a3c8b
MD5 b03919eb44ae133df198db44339f1567
BLAKE2b-256 2ff5f0010f842601e9f64e56bbceef29db69695e1fa40f8286b42872eb4eaf85

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp35-cp35m-win32.whl.

File metadata

  • Download URL: Acquisition-4.12-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 63.9 kB
  • Tags: CPython 3.5m, Windows x86
  • 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.12-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 60f7ad2b61b832d2112748874479e9dc7f1fd08d0487717b7d777cfce0140205
MD5 ab780247293bf924f0c2d3d48fe12f8f
BLAKE2b-256 6767e9f0962dd239e9c1cef62dbe9272e0d1042699543787608bd59ab5525a64

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-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.12-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 096688c6b67f045eb4d0dddeb601b322b41fe38fe830a2e6f798c0ab0bdc8604
MD5 13b558d9b6b16dc4af189eb62ed2cb00
BLAKE2b-256 fa4a35edef6a2b501eaee519f81318933b04e7c411dfc50a28c79141268cc35d

See more details on using hashes here.

File details

Details for the file Acquisition-4.12-cp27-cp27m-win32.whl.

File metadata

  • Download URL: Acquisition-4.12-cp27-cp27m-win32.whl
  • Upload date:
  • Size: 62.7 kB
  • Tags: CPython 2.7m, Windows x86
  • 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.12-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 0a4c66164c6cdf9be0f30b7c4bfb49e2877b213660152efbb23e439bcfdade48
MD5 435879ed59f29a3be8f6fd8cf8211b73
BLAKE2b-256 f43115296c61f8ecb4226dd2e849b2c4fbbb5809181a2fba7547463e173557a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Acquisition-4.12-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.12-cp27-cp27m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 3d3194fa70f6d22635623dd46db7efabc7a2e62d44dd11bc898f4cbe3deb60f5
MD5 7edef282c8527842bd6515d629d1ea1e
BLAKE2b-256 25aaf3af0bc50d4a97a94f44f4a122fa13194675a41cccbcfd87e254cc95db43

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