Skip to main content

Mutable variants of tuple (memoryslots) and collections.namedtuple (recordclass), which support assignments and more memory efficient variants (arrayclass and structclass)

Project description

# RECORDCLASS

**recordclass** is [MIT Licensed](http://opensource.org/licenses/MIT) python library.
From the begining it implements the type `memoryslots` and factory function `recordclass`
in order to create record-like classes -- mutable variant of `collection.namedtuple`.
Later more memory saving variant `structclass` is added.

* `memoryslots` is `tuple`-like type, which supports assignment operations.
* `recordclass` is a factory function that create a "mutable" analog of
`collection.namedtuple`. It produce a subclass of `memoryslots`. Attribute
access is provided on the base of specially defined desciptors (`memoryslots.getsetitem`).
* `structclass` is analog of `recordclass`. It produce a class with less memory footprint
(same as class instances with `__slots__`) and `namedtuple` -- like API. It's instances has no `__dict__`,
`__weakref__` and don't support cyclic garbage collection by default. But `structclass` can support
any of them.
* `arrayclass` is factory function. It also produce a class with same memory footprint as class
instances with `__slots__`. It implements array of object.

This library starts as a "proof of concept" for the problem of fast "mutable"
alternative of `namedtuple` (see [question](https://stackoverflow.com/questions/29290359/existence-of-mutable-named-tuple-in-python) on stackoverflow).

Main repository for `recordclass`
is on [bitbucket](https://bitbucket.org/intellimath/recordclass).

Here is also a simple [example](http://nbviewer.ipython.org/urls/bitbucket.org/intellimath/recordclass/raw/default/examples/what_is_recordclass.ipynb).

## Quick start:

First load inventory:

>>> from recordclass import recordclass, RecordClass

Simple example with `recordclass`:

>>> Point = recordclass('Point', 'x y')
>>> p = Point(1,2)
>>> print(p)
Point(1, 2)
>>> print(p.x, p.y)
1 2
>>> p.x, p.y = 10, 20
>>> print(p)
Point(10, 20)

Simple example with `RecordClass` and typehints::

class Point(RecordClass):
x: int
y: int

>>> p = Point(1, 2)
>>> print(p)
Point(1, 2)
>>> print(p.x, p.y)
1 2
>>> p.x, p.y = 10, 20
>>> print(p)
Point(10, 20)

## Recordclass

Recorclass was created as unswer to [question](https://stackoverflow.com/questions/29290359/existence-of-mutable-named-tuple-in-python/29419745#29419745) on `stackoverflow.com`.

`Recordclass` was designed and implemented as a type that, by api, memory footprint, and speed, would be completely identical to` namedtuple`, except that it would support assignments that could replace any element without creating a new instance, as in ` namedtuple`, i.e. it would be almost identical to `namedtuple` and
would support in addition assignments (` __setitem__` / `setslice__`).

The effectiveness of a namedtuple is based on the effectiveness of the `tuple` type in python. In order to achieve the same efficiency, we had to create the type `memoryslots`. It's structure (`PyMemorySlotsObject`) is identical to the structure` tuple` (`PyTupleObject`) and therefore occupies the same amount of memory as` tuple`.

`Recordclass` is defined on top of `memoryslots` in the same way as `namedtuple` defined on top of `tuple`. Attributes are accessed via a descriptor (`itemgetset`), which provides quick access and assignment by attribute index.

The class generated by `recordclass` looks like:

``` python
from recordclass import memoryslots, itemgetset

class C(memoryslots):
__slots__ = ()

_fields = ('attr_1',...,'attr_m')

attr_1 = itemgetset(0)
...
attr_m = itemgetset(m-1)

def __new__(cls, attr_1, ..., attr_m):
'Create new instance of {typename}({arg_list})'
return memoryslots.__new__(cls, attr_1, ..., attr_m)
```

etc. following the definition scheme of `namedtuple`.

As a result, `recordclass` takes up as much memory as `namedtuple`, supports fast access by `__getitem__` / `__setitem__` and by the name of the attribute through the descriptor protocol.

## Structclass

In the discussion, it was correctly noted that instances of classes with `__slots__` also support fast access to the object fields and take up less memory than` tuple` and instances of classes created using the factory function `recordclass`. This happens because instances of classes with `__slots__` do not store the number of elements, like` tuple` and others (`PyObjectVar`), but they store the number of elements and the list of attributes in their type (` PyHeapTypeObject`).

Therefore, a special class prototype was created from which, using a special metaclass of `arrayclasstype`, classes can be created, instances of which can occupy as much in memory as instances of classes with` __slots__`, but do not use `__slots__` at all. Based on this, the factory function `recordclass2` can create classes, instances of which are all similar to instances created using `recordclass`, but taking up less memory space.

The class generated by `recordclass` looks like:

``` python
from recordclass.arrayclass import RecordClass, ArrayClassGetSet, arrayclasstype

class C(ArrayClass):
__metaclass__ = arrayclasstype

_fields = ('attr_1',...,'attr_m')

attr_1 = ArrayClassGetSet(0)
...
attr_m = ArrayClassGetSet(m-1)

def __new__(cls, attr_1, ..., attr_m):
'Create new instance of {typename}({arg_list})'
return ArrayClass.__new__(cls, attr_1, ..., attr_m)
```
etc. following the definition scheme of `recordclass`.

As a result, `recordclass2`-created objects takes up as much memory as `__slots__`-based instances and also have same functionality as `recordclass`-created instances.

## Comparisons

The following table explain memory footprints of `recordclass`-, `recordclass2`-base objects:

| namedtuple | class + \_\_slots\_\_ | recordclass | structclass |
| ------------- | ----------------- | -------------- | ------------- |
| b+s+n*p | b+n*p | b+s+n*p | b+n*p-g |

where:

* b = sizeof(`PyObject`)
* s = sizeof(`Py_ssize_t`)
* n = number of items
* p = sizeof(`PyObject*`)
* g = sizeof(PyGC_Head)

Special option `gc=False` (by default) of `structclass` allows to disable support of the cyclic
garbage collection.
This is useful in that case when you absolutely sure that reference cycle isn't possible.
For example, when all field values are instances of atomic types.
As a result the size of the instance is decreased by 24 bytes:

``` python
class S:
__slots__ = ('a','b','c')
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c

R_gc = recordclass2('R_gc', 'a b c', gc=True)
R_nogc = recordclass2('R_nogc', 'a b c')

s = S(1,2,3)
r_gc = R_gc(1,2,3)
r_nogc = R_nogc(1,2,3)
for o in (s, r_gc, r_nogc):
print(sys.getsizeof(o))
64 64 40
```


### Changes:

#### 0.8.2

* Remove `usedict`, `gc`, `weaklist` from class `__dict__`.

#### 0.8.1

* Remove Cython dependence by default for building `recordclass` from the sources [Issue #7].

#### 0.8

* Add `structclass` factory function. It's analog of `recordclass` but with less memory
footprint for it's instances (same as for instances of classes with `__slots__`) in the camparison
with `recordclass` and `namedtuple`
(it currently implemented with `Cython`).
* Add `arrayclass` factory function which produce a class for creation fixed size array.
The benefit of such approach is also less memory footprint
(it currently currently implemented with `Cython`).
* `structclass` factory has argument `gc` now. If `gc=False` (by default) support of cyclic garbage collection
will switched off for instances of the created class.
* Add function `join(C1, C2)` in order to join two `structclass`-based classes C1 and C2.
* Add `sequenceproxy` function for creation of immutable and hashable proxy object from class instances,
which implement access by index
(it currently currently implemented with `Cython`).
* Add support for access to recordclass object attributes by idiom: `ob['attrname']` (Issue #5).
* Add argument `readonly` to recordclass factory to produce immutable namedtuple.
In contrast to `collection.namedtuple` it use same descriptors as for
regular recordclasses for performance increasing.

#### 0.7

* Make memoryslots objects creation faster. As a side effect: when number of fields >= 8
recordclass instance creation time is not biger than creation time of instaces of
dataclasses with `__slots__`.
* Recordclass factory function now create new recordclass classes in the same way as namedtuple in 3.7
(there is no compilation of generated python source of class).

#### 0.6

* Add support for default values in recordclass factory function in correspondence
to same addition to namedtuple in python 3.7.

#### 0.5

* Change version to 0.5

#### 0.4.4

* Add support for default values in RecordClass (patches from Pedro von Hertwig)
* Add tests for RecorClass (adopted from python tests for NamedTuple)

#### 0.4.3

* Add support for typing for python 3.6 (patches from Vladimir Bolshakov).
* Resolve memory leak issue.

#### 0.4.2

* Fix memory leak in property getter/setter




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

recordclass-0.8.2.tar.gz (110.8 kB view details)

Uploaded Source

Built Distributions

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

recordclass-0.8.2-cp37-cp37m-win_amd64.whl (80.0 kB view details)

Uploaded CPython 3.7mWindows x86-64

recordclass-0.8.2-cp37-cp37m-win32.whl (69.9 kB view details)

Uploaded CPython 3.7mWindows x86

recordclass-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl (84.4 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

recordclass-0.8.2-cp36-cp36m-win_amd64.whl (80.0 kB view details)

Uploaded CPython 3.6mWindows x86-64

recordclass-0.8.2-cp36-cp36m-win32.whl (70.0 kB view details)

Uploaded CPython 3.6mWindows x86

recordclass-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl (86.4 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

recordclass-0.8.2-cp35-cp35m-win_amd64.whl (76.3 kB view details)

Uploaded CPython 3.5mWindows x86-64

recordclass-0.8.2-cp35-cp35m-win32.whl (66.3 kB view details)

Uploaded CPython 3.5mWindows x86

recordclass-0.8.2-cp35-cp35m-macosx_10_6_intel.whl (144.5 kB view details)

Uploaded CPython 3.5mmacOS 10.6+ Intel (x86-64, i386)

recordclass-0.8.2-cp34-cp34m-win_amd64.whl (72.8 kB view details)

Uploaded CPython 3.4mWindows x86-64

recordclass-0.8.2-cp34-cp34m-win32.whl (65.6 kB view details)

Uploaded CPython 3.4mWindows x86

recordclass-0.8.2-cp34-cp34m-macosx_10_6_intel.whl (143.7 kB view details)

Uploaded CPython 3.4mmacOS 10.6+ Intel (x86-64, i386)

recordclass-0.8.2-cp27-cp27m-win_amd64.whl (74.1 kB view details)

Uploaded CPython 2.7mWindows x86-64

recordclass-0.8.2-cp27-cp27m-win32.whl (65.2 kB view details)

Uploaded CPython 2.7mWindows x86

recordclass-0.8.2-cp27-cp27m-macosx_10_9_x86_64.whl (81.9 kB view details)

Uploaded CPython 2.7mmacOS 10.9+ x86-64

File details

Details for the file recordclass-0.8.2.tar.gz.

File metadata

  • Download URL: recordclass-0.8.2.tar.gz
  • Upload date:
  • Size: 110.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2.tar.gz
Algorithm Hash digest
SHA256 6eacb9eecccbd58a9533bcd81a0eada6e22f152081b0a35ba4df16f2e1b454cd
MD5 d4a2aaa68720e301b8785792c6bd91cb
BLAKE2b-256 c19414525b7346fa3352c2a3c1efb76e586d44b8fccd3e26dc69c5b1a8b36825

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 80.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 23a77d7d56f7c9e5604a91c4b556cb5ac79c36c5e9354e2fa9852a4183852e37
MD5 0e7ff2f70065e1b425625f3367321640
BLAKE2b-256 0d4a53a5502f962ca560553014ccdcba71862c05f01514f132204c1372bd6dde

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp37-cp37m-win32.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 69.9 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 0e4bf32fb21a46b4449e71dd90febb3256c8dd7c52081ca4c5b89ded4c554b8a
MD5 d6e54642de2b834ffd243ef2e52089c5
BLAKE2b-256 44f97ca79619f53ab5e11c715796ee1f85b11a5a99d348cd2eb687e8f1c44588

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 84.4 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d6102cd5608c354a3b785e03c4239d45d6b1860331c93c108026d1abd6acc384
MD5 613b2e3cb8f9f7890a817061f38e4285
BLAKE2b-256 edd6f499578aff8264933b75f7ca278e6750c594abe0a0bda3cdc8dbbeb88bbf

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 80.0 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ed812056391b8b33f0a15458297941e0785bc42a41721d2bc05a983114fee46b
MD5 0480946d2982e234b373dea85fcd69b3
BLAKE2b-256 6b0812a8fdf7adde6379e722feb410c3815cd5fca57094faf0c1f9b9f8bd91c4

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp36-cp36m-win32.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 70.0 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 5e7a2e0953ccfdebfbd4d4ed79909bbdb4ff30ab047160f7cbdd02f0c438daae
MD5 b24d8d410529be03e4cd56595095bedc
BLAKE2b-256 3fcd623de05f8949b739e8dff8e9ba9d663c854e6566d715324a44e0c62ad21e

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 422dbc9a8338926d836efba2ae3b92f1b9cd7e6a7d0ac24b915a504a5bf45ebb
MD5 e3907a3864b6e4ab768a618d74720d2e
BLAKE2b-256 5a7e0ad8b7b052350ca3b2566733477e4a92796d8986fc38d33ffd517cd2029c

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 76.3 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 410c6aa5fa5b680940c4e0a0a29538bc9a95d2a2bb395a32a3e114e9b6eeda0a
MD5 f4a837bd553805b711dd8be7a927b395
BLAKE2b-256 4cf9f50b7c4aaed4d845d67bd4d35a2f73819196a828d3be3f117cf4dc1b0970

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp35-cp35m-win32.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 66.3 kB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 05e1f4221e48a815b4b57b57b24f127edfc613bdd7bdea6714db18bf517de184
MD5 4e428966b2678455f1a50681f201e7be
BLAKE2b-256 2b984d4767bc9b632294ea5ee32f7a263e936e9566f87919bf7b6ce333697bd1

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp35-cp35m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 144.5 kB
  • Tags: CPython 3.5m, macOS 10.6+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 478d2ceca19ebf33ced66750c7d0a7ee58bcf7f0d2e5d402745f17c2b70206e6
MD5 b01b1bf1afb784876cdd0b0eaa3c1fa7
BLAKE2b-256 aeb8994c7007c04633eee41d905b73675b0bfd14c69d1dfbb6ec896bd3a14c37

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp34-cp34m-win_amd64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp34-cp34m-win_amd64.whl
  • Upload date:
  • Size: 72.8 kB
  • Tags: CPython 3.4m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 4bb8e098955c5bcda35a93ce76017e7ba2d6f089978394e7ea61af1e7105ce2b
MD5 c38b7ae08aef5e7d8407975d1d517f9f
BLAKE2b-256 a2071d8522c603d698b5c2ff75865adcedee9e866d3a799792ffb06fcd2e04a4

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp34-cp34m-win32.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp34-cp34m-win32.whl
  • Upload date:
  • Size: 65.6 kB
  • Tags: CPython 3.4m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 c797aef9f116adc6fadc746e071fd7176557448e47327ddb3396ab2d60e68222
MD5 48db299c83ddfd44883801720abce9d3
BLAKE2b-256 57a9feea002d943a055649a53cfe1aeec61373e62a10db1e8af5b6f00edc3617

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp34-cp34m-macosx_10_6_intel.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp34-cp34m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 143.7 kB
  • Tags: CPython 3.4m, macOS 10.6+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp34-cp34m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 b650f18d5605286a70a76b0d101a7de0420babb312d8ec8ffe3c5bc775947ef9
MD5 63306cb0584d99a9979fccf59b8c881c
BLAKE2b-256 e30edfbbb4cfecaf0bf3093b7c232599250b492ac79c9fb996f1844a2c0b87fc

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp27-cp27m-win_amd64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp27-cp27m-win_amd64.whl
  • Upload date:
  • Size: 74.1 kB
  • Tags: CPython 2.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 f083c192c263c9f83c0249917b84de3cbc070d8b1f20a46356da492032edc037
MD5 e22af6b8f4b7f0bd8c2590e3ee739ff3
BLAKE2b-256 53ccc3a0caa2a7f75b043dd3954022791bd779caf029e9433df8ab15967c315e

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp27-cp27m-win32.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp27-cp27m-win32.whl
  • Upload date:
  • Size: 65.2 kB
  • Tags: CPython 2.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 d0bdd1d18de91e4f8abfeb9cfe6a65881fd6a06eaadd5acde5bd70d6b5293040
MD5 bf7bbe3721cef37a5f2d06a1be30e9cb
BLAKE2b-256 73218ed018a969d0be9a359fe8b3ff8784d3a86b2b79f60a0bfb4135e6702050

See more details on using hashes here.

File details

Details for the file recordclass-0.8.2-cp27-cp27m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: recordclass-0.8.2-cp27-cp27m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 81.9 kB
  • Tags: CPython 2.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for recordclass-0.8.2-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b1cb4b336fa3ae23253602cc220fce1296a35656c0c710baaee1d07a07f2565d
MD5 c504d7ada070de082fe7dc84d965874d
BLAKE2b-256 acdf25b0380d266331578456d48d27d685879f862fd6cbefa457ebcbadb758de

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