{ "info": { "author": "Arish Pyne", "author_email": "arishpyne@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed" ], "description": "# \u26a1 Power Dataclass \u26a1\n[![Build Status](https://api.travis-ci.org/arishpyne/powerdataclass.svg?branch=master)](https://api.travis-ci.org/arishpyne/powerdataclass.svg?branch=master) [![PyPI version](https://badge.fury.io/py/powerdataclass.svg)](https://pypi.python.org/pypi/powerdataclass/) [![PyPI pyversions](https://img.shields.io/pypi/pyversions/powerdataclass.svg)](https://pypi.python.org/pypi/powerdataclass/)\n\n## Installation\n`pip install powerdataclass`\n\n## Usage\nPython 3.7 have introduced a spiritual successor of `NamedTuple`: the `dataclass`.\nWhile being nice, the `dataclass` type hinting is only, well, _hinting_.\n\nThis library gives you an ability to create dataclasses with field values automatically casted to \nthe types defined in the `dataclass`'s type hints:\n\n### Typecasting\n```python\nfrom powerdataclass import *\n\nclass Coordinates(PowerDataclass):\n x: int\n y: int\n\nc1 = Coordinates(1,2)\nc2 = Coordinates('1', '2')\nc3 = Coordinates(**{'x': 1.1, 'y': 2.2})\n\n\n>>> c1\nCoordinates(x=1, y=2)\n>>> c1 == c2 == c3 \nTrue\n ``` \n\nThis also works with every generic type that has a Python primitive type as it's origin. This applies to subscriptable types of any level of nestedness as well:\n\n```python\nclass Vector(PowerDataclass):\n items: List[int]\n\nv1 = Vector(['1', '2', '3'])\nv2 = Vector({1.1, 2.2, 3.3})\nv3 = Vector(range(1, 4))\n\n>>> v1\nVector(items=[1, 2, 3])\n>>> v1 == v2 == v3 \nTrue\n```\n\nThe typecasting also respects other dataclasses (and Power Dataclasses) declared in type hints.\nIf you pass a mapping or an iterable in place of actual dataclass instance, Power Dataclass will attempt to unpack it to a corresponding dataclass:\n\n```python\nclass Vector(PowerDataclass):\n items: List[int]\n\nclass Tensor(PowerDataclass):\n vectors: List[Vector]\n\nt1 = Tensor(**{\n 'vectors': [\n {'items': [1, 2, 3]},\n {'items': [4, 5, 6]},\n ([7, 8, 9],),\n ]\n})\n\n>>> t1\nTensor(vectors=[Vector(items=[1, 2, 3]), Vector(items=[4, 5, 6]), Vector(items=[7, 8, 9])])\n```\n\nIf a value type is defined as a dataclass and that dataclass can be instantiated with a sole argument,\nit will be casted as well\n\n```python\nclass TimestampedIntValue(PowerDataclass):\n value: int\n timestamp: int = time.time()\n\nclass SensorReadings(PowerDataclass):\n moon_phase_angle: TimestampedIntValue\n mars_surface_temperature: TimestampedIntValue\n\nreadings = SensorReadings(122, -70)\n\n>>> readings\nSensorReadings(moon_phase_angle=TimestampedIntValue(value=122, timestamp=1570898094), mars_surface_temperature=TimestampedIntValue(value=-70, timestamp=1570898094))\n```\n\n### Custom typecasting\nYou can modify the behaviour of type casting by registering two types of handlers on your fancy PowerDataclass:\n* **type handlers**: an unary method marked as a _type handler_ will be applied to any value that has a matching type declared in your dataclass typehints.\n* **field handlers**: an unary method marked as a _field handler_ will be applied to a value of a specific PDC field.\n\nThose functions must _always_ return a value.\n\nYou can do this by marking your methods with special decorators:\n\n```python\nclass CoolBool(PowerDataclass):\n string_bool: bool\n negated_bool: bool\n\n @type_handler(bool)\n def handle_bools(self, v):\n if type(v) is str:\n return v.lower() in ['y', 'yes', '1', 'True']\n else:\n return bool(v)\n\n @field_handler('negated_bool')\n def handle_negated_bools(self, v):\n return not self.handle_bools(v)\n\n>>> CoolBool('yes', 'no')\nCoolBool(string_bool=True, negated_bool=True)\n``` \n\n\nField handlers take precedence over the type handlers.\nField handlers and type handlers are scoped to a particular Power Dataclass. Inheritance is respected.\n\n### Field Metadata\nThe behaviour of fields can be modified by providing corresponding flags in a field's `metadata` dictionary, \nprovided by base Python `dataclasses`.\n\n#### Nullability\nFields are considered non-nullable by default.\nThis means that if, during instantiation, the value of a field will be equal to `None`, a `ValueError` exception will occur.\nType casting will be performed on non-null values, except for non-typecasted fields (see below)\n\nIf a field has a default value, and it is `None`, it will be considered nullable. \nAlso, if you want to accept `None` but you either don't want to provide defaults at all, provide a non-null default or provide a default factory, you\nyou can mark your field as nullable by either setting the flag or using a premade partial:\n\n```python\nclass Nihilus(PowerDataclass):\n x: int = field(metadata={FieldMeta.NULLABLE: True})\n y: int = None\n z: list = nullable_field(default_factory=list)\n\n>>> Nihilus()\nTypeError: __init__() missing 1 required positional argument: 'x'\n\n>>> Nihilus(1)\nNihilus(x=1, y=None, z=[])\n\n>>> Nihilus('1', '1', (1,))\nNihilus(x=1, y=1, z=[1])\n\n>>> Nihilus('1', None, None)\nNihilus(x=1, y=1, z=None)\n```\n\n#### Skipping typecasting (and null checking)\nIf you want to disable type checking for a specific field you can mark your field as nullable by either setting the corresponding flag in the fields's `metadata` dictionary or using a premade partial:\n\n```python\nclass Noncasted(PowerDataclass):\n x: int = field(metadata={FieldMeta.SKIP_TYPECASTING: True})\n y: int = noncasted_field()\n\n>>> Noncasted('1', 2.2)\nNoncasted(x='1', y=2.2)\n```\n\n#### Dependent and calculated fields\nIf some of your field processing requires other fields typecasted before you can declare this field dependencies by name by setting the corresponding value in the fields's `metadata`:\n\n```python\nclass Dependent(PowerDataclass):\n a: int\n b: int = field(metadata={FieldMeta.DEPENDS_ON_FIELDS: ['a']})\n c: int = field(metadata={FieldMeta.DEPENDS_ON_FIELDS: ['d', 'b']})\n d: int = field(metadata={FieldMeta.DEPENDS_ON_FIELDS: ['a']})\n```\n\nFields will be topologically sorted by their dependencies and type casting will be done in this order. For this example, the order will be:\n1) a\n2) b\n3) d\n4) c\n\nYou can use a combination of field handlers and dependent fields to declare calculated fields:\n\n```python \nclass CubeSquarer(PowerDataclass):\n n: int\n n_square: int = field(default=None, metadata={FieldMeta.DEPENDS_ON_FIELDS: ['n']})\n n_cube: int = calculated_field(depends_on=['n'])\n\n @field_handler('n_square')\n def handle_n_square(self, v):\n return self.n ** 2\n\n @field_handler('n_cube')\n def handle_n_cube(self, v):\n return self.n ** 3\n\n>>> CubeSquarer(4)\nCubeSquarer(n=4, n_square=16, n_cube=256)\n```\n\nIt is an error to declare a field as `calculatable` without registering a corresponding `field_handler`\n\n## Modification of Power Dataclass behaviour\nYou can modify the behaviour of Power Dataclass by editing the `Meta` nested class' attributes.\nAll Power Dataclasses have a default value for this `Meta` nested class equal to `powerdataclass.PowerDataclassDefaultMeta`\nThis `Meta` subclass will emulate the behaviour of class variable inheritance, making every attribute of `Meta` default to `powerdataclass.PowerDataclassDefaultMeta`\n\nCurrently, the following values are now supported:\n\n\n Name | Default value | Description \n------|---------------|-------------\n**dataclass_init** | *True* | passed to the `dataclasses.dataclass` constructor. [See docs](https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass)|\n**dataclass_repr** | *True* | passed to the `dataclasses.dataclass` constructor. \n**dataclass_eq** | *True* | passed to the `dataclasses.dataclass` constructor.\n**dataclass_order** | *False* | passed to the `dataclasses.dataclass` constructor. \n**dataclass_unsafe_hash** | *False* | passed to the `dataclasses.dataclass` constructor.\n**dataclass_frozen** | *False* | passed to the `dataclasses.dataclass` constructor. \n**singleton** | *False* | If *True* enables the [Singleton Mode](#singleton-mode). \n**json_encoder** | *None* | If set, this class will be used as a `cls` param to `json.dumps` in `PowerDataclass().to_json()` [See docs](https://docs.python.org/3/library/json.html#json.JSONEncoder). \n**json_decoder** | *None* | If set, this class will be used as a `cls` param to `json.loads` in `PowerDataclass.from_json()` [See docs](https://docs.python.org/3/library/json.html#json.JSONDecoder). \n**as_dict_ignored_when_nested** | *False* | If set to True, this PDC won't be converted when this PDC is nested and wrapping PDC's `.as_dict()` is called. Can be further ignored if `as_dict(force=True)` was called. \n\n\nExample of setting the `Meta` of a `PowerDataclass`:\n```python\nclass PowerDataclassWithNewBehaviour(PowerDataclass):\n class Meta:\n dataclass_frozen = True\n singleton = True\n```\n\n## Singleton Mode\nIf you set the `Meta.singleton` value to `True`, your PowerDataclass will turn into a [Singleton](https://en.wikipedia.org/wiki/Singleton_pattern). \n\nThis means that this PowerDataclass can be instantiated only once, and all further attempts to instantiate this PDC will return that instance instead:\n```python\nclass PDCSingleton(PowerDataclass):\n a: int\n\n class Meta:\n singleton = True\n\nsingleton1 = PDCSingleton(1)\nsingleton2 = PDCSingleton(2)\n\n>>> id(singleton1) == id(singleton2)\nTrue\n```\n\nYou can test whether a Singleton has bee instantiated by calling the classmethod `.get_instance()` on your Singleton Mode class.\nIf there is an instance, it will be returned. Otherwise, `None` will lbe returned. \n\n## Other features\n* Automatic recursive conversion to dict with the `.as_dict()` method.\n* Automatic recursive conversion to and from JSON strings with the `.as_json()` and `.from_json()` methods.\n\n### PowerDataclass merging\nThe `PowerDataclass.merge(other)` allows you to merge two PowerDataclasses, rewriting the fields' values of the first PDC with the corresponding values of the second PDCs, while retaining the memory address of the first PDC.\n\n```python\nclass PDC(PowerDataclass):\n x: int\n y: int\n z: int\n\na = PDC(1, 2, 3)\nb = PDC(3, 4, 5)\na.merge(b)\n>>> id(a) != id(b)\nTrue\n>>>a.as_dict() == b.as_dict()\nTrue\n```\n\n### PowerDataclass diff\nA simple dictionary diff can be calculated between thow instances of a same PowerDataclass by using the `.diff()` method\n```python\nclass DiffPDC(PowerDataclass):\n x: int\n y: int\n z: int\n\na = DiffPDC(1, 2, 3)\nb = DiffPDC(3, 4, 5)\n\n>>> a.diff(b)\n{'x': (1, 3), 'y': (2, 4), 'z': (3, 5)}\n```\n\nNote that an attempt to compatre DopwerDataclasses of different type will result a `DiffImpossible` exception\n\n### PowerConfig\nThe `powerdataclass.powerconfig` package contains two premade classes suitable for simple configuration management in your services.\nThose classes are: the `PowerConfig` and it's singleton mode subclass, the `GlobalPowerConfig`\nBoth of those share two extensions over regular `PowerDataclass`:\n* an ability to be configured from the OS environment variables by combining the specified in the `PowerDataclass.Meta.envvar_prefix` prefix an the name of the field.\n ```python\n class Config(PowerConfig):\n a: int\n\n class Meta:\n envvar_prefix = \"CNF\"\n\n >>> Config.from_environ()\n Config(a=5)\n ```\n This classmethod will read the OS environment variable `CNF_A`. In this example. it ts assumed that this variable is present and is equal to `5`.\n* there is a predefined `type_handler` for the `bool` type, which casts string values in `(y, yes, 1, True)` to `True`.\n\n\n\n---\nMade with \u26a1 by Arish Pyne (https://github.com/arishpyne/powerdataclass)\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.org/simple/powerdataclass", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "powerdataclass", "package_url": "https://pypi.org/project/powerdataclass/", "platform": "", "project_url": "https://pypi.org/project/powerdataclass/", "project_urls": { "Homepage": "http://pypi.org/simple/powerdataclass" }, "release_url": "https://pypi.org/project/powerdataclass/1.3.5/", "requires_dist": [ "setuptools", "toposort" ], "requires_python": ">=3.7", "summary": "Power Dataclass: dataclasses with auto typecasting and other power features", "version": "1.3.5", "yanked": false, "yanked_reason": null }, "last_serial": 6204183, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c62491acd2cb356a7470008635078d9b", "sha256": "298daf77294a9efed88f95e81fbe2993282e538f8afd2eb18b2f9b89d8c11f0e" }, "downloads": -1, "filename": "powerdataclass-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c62491acd2cb356a7470008635078d9b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 3857, "upload_time": "2019-07-31T23:42:56", "upload_time_iso_8601": "2019-07-31T23:42:56.131292Z", "url": "https://files.pythonhosted.org/packages/a5/d9/da199ae12979b864a36b9f7adc0884100a3c471f3e7c6f380e4cd4828730/powerdataclass-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3ae3cc9a1f82c16b5e67a7a4780afc0c", "sha256": "f3ca7c919d43ff594c94e04ed2c6a9b50bd48138a79f79056e3341efff26ce81" }, "downloads": -1, "filename": "powerdataclass-1.0.0.tar.gz", "has_sig": false, "md5_digest": "3ae3cc9a1f82c16b5e67a7a4780afc0c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 4261, "upload_time": "2019-07-31T23:42:58", "upload_time_iso_8601": "2019-07-31T23:42:58.293246Z", "url": "https://files.pythonhosted.org/packages/b0/70/b8644eb532c8fa245ede6c683785ff3c30945e4828f398cc26c5650a1f0d/powerdataclass-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b2ae920916135bebe4a3748138fb5512", "sha256": "7c5cb3743cb98cd1ed3ac8b9cd429976274c2c44931fb6217093198e4a72bb74" }, "downloads": -1, "filename": "powerdataclass-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b2ae920916135bebe4a3748138fb5512", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5816, "upload_time": "2019-08-01T12:42:56", "upload_time_iso_8601": "2019-08-01T12:42:56.614052Z", "url": "https://files.pythonhosted.org/packages/cb/16/ffb64758bf93822b9234cca14650c95871f37145bd71678f55682b336275/powerdataclass-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fb57c30a906131806277ed0f08ee9421", "sha256": "a213ff680a9622dc3b534290a2e9da597d435fd4a5afbc94a7d8cfddab40deba" }, "downloads": -1, "filename": "powerdataclass-1.0.1.tar.gz", "has_sig": false, "md5_digest": "fb57c30a906131806277ed0f08ee9421", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 5118, "upload_time": "2019-08-01T12:42:57", "upload_time_iso_8601": "2019-08-01T12:42:57.891649Z", "url": "https://files.pythonhosted.org/packages/33/b9/b928ec09dc7529751ab5aec2be42f52b37ddf131e0523fb064f68560f6f2/powerdataclass-1.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "1efe54fb310c5d7a5910b3292f27d362", "sha256": "5d3f1f8ef43d3c402620b519cd7cf8ade5c7d0f60f549f29deb1a9ee729818d8" }, "downloads": -1, "filename": "powerdataclass-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1efe54fb310c5d7a5910b3292f27d362", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5838, "upload_time": "2019-08-01T12:45:10", "upload_time_iso_8601": "2019-08-01T12:45:10.601950Z", "url": "https://files.pythonhosted.org/packages/e1/5a/0db7103428adcfcdd660809372ed91583d79b50561c7868391942754bd20/powerdataclass-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6b6b51e7c34aa44597d2ecae2c6e572f", "sha256": "def5fc2e429125f6b07343d3811ae1cb948d517e0831ee378fa25e9124dd3f63" }, "downloads": -1, "filename": "powerdataclass-1.0.2.tar.gz", "has_sig": false, "md5_digest": "6b6b51e7c34aa44597d2ecae2c6e572f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 5140, "upload_time": "2019-08-01T12:45:12", "upload_time_iso_8601": "2019-08-01T12:45:12.222912Z", "url": "https://files.pythonhosted.org/packages/61/39/e0aaac8c0306a556a5ff1780f6e6d815b9a676d25d23c22178c0ae182bf2/powerdataclass-1.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "31f6849958f3cc31801df996cc95380f", "sha256": "605fbb8e11654388a57614b9d063f18c34cde18c297f25092831d92241b662e3" }, "downloads": -1, "filename": "powerdataclass-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "31f6849958f3cc31801df996cc95380f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5840, "upload_time": "2019-08-01T12:45:53", "upload_time_iso_8601": "2019-08-01T12:45:53.854279Z", "url": "https://files.pythonhosted.org/packages/dd/29/1a858d6fbf45fe4d7a2c72a0eba274ebd2846f7cb0627f71ec7843d2e239/powerdataclass-1.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a98b8887d79adc0a6421dde860a81d8d", "sha256": "6ef7a808ea0bb8b1e2e93bd2401311dd5729ca495bfe3a2418eea4706b20685d" }, "downloads": -1, "filename": "powerdataclass-1.0.3.tar.gz", "has_sig": false, "md5_digest": "a98b8887d79adc0a6421dde860a81d8d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 5149, "upload_time": "2019-08-01T12:45:55", "upload_time_iso_8601": "2019-08-01T12:45:55.626891Z", "url": "https://files.pythonhosted.org/packages/cf/f4/e35371be8f5c846a482d527715f1cc830e0a90709327713e603bede9db8e/powerdataclass-1.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "166f02e22b58c259b7ff162eb59f5a91", "sha256": "f420b30a9cae7e9423f1fadb16198da715daa2763003a89d599aeeb4cb344e41" }, "downloads": -1, "filename": "powerdataclass-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "166f02e22b58c259b7ff162eb59f5a91", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5838, "upload_time": "2019-08-01T12:46:33", "upload_time_iso_8601": "2019-08-01T12:46:33.992432Z", "url": "https://files.pythonhosted.org/packages/dd/3c/bddefa55059b1e251247a83ffcc03ebb592b572278c5f98d0d745bc41018/powerdataclass-1.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bdad0ff0d9e770e757d49084f3534425", "sha256": "5205bf6771b58c4c86bef8b148dd56eca9c21d35e16737ba9ece1f84d6bf85a3" }, "downloads": -1, "filename": "powerdataclass-1.0.4.tar.gz", "has_sig": false, "md5_digest": "bdad0ff0d9e770e757d49084f3534425", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 5144, "upload_time": "2019-08-01T12:46:35", "upload_time_iso_8601": "2019-08-01T12:46:35.598780Z", "url": "https://files.pythonhosted.org/packages/e7/76/dc0b6a69a0c9fe82aec8c6e00542e43d9b04bce7defb2f1571b671c82839/powerdataclass-1.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "08c9897400ce8d69d53d45a35576fb7f", "sha256": "00b96b0646f9bcace90b74f84d32b3c6fbfe3e27ad1528a7d4615350cf012778" }, "downloads": -1, "filename": "powerdataclass-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "08c9897400ce8d69d53d45a35576fb7f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5844, "upload_time": "2019-08-01T13:02:01", "upload_time_iso_8601": "2019-08-01T13:02:01.410269Z", "url": "https://files.pythonhosted.org/packages/2c/15/e90f714dcb712e11fb19f8de263e740ee18f181b1de7e1abe0c5366377e2/powerdataclass-1.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "83f6a2addd9a95cac07cd6f6389f8b28", "sha256": "3e44f4baa5165c416671f63bf714ecb407cbf1881fc3cf966da016340868475e" }, "downloads": -1, "filename": "powerdataclass-1.0.5.tar.gz", "has_sig": false, "md5_digest": "83f6a2addd9a95cac07cd6f6389f8b28", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 5146, "upload_time": "2019-08-01T13:02:03", "upload_time_iso_8601": "2019-08-01T13:02:03.184695Z", "url": "https://files.pythonhosted.org/packages/b2/69/1150fc6c45f23d3e412f657e4432dcf46cfdccd5c7a1f93f4f57af4675db/powerdataclass-1.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "4f6c724601dabd30228bb7b381e9ed00", "sha256": "57168413c4ebee8f8324a05a81b0ff8cdc03a6b4784e4e1ba8186194ebb58380" }, "downloads": -1, "filename": "powerdataclass-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4f6c724601dabd30228bb7b381e9ed00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 7082, "upload_time": "2019-08-01T21:39:23", "upload_time_iso_8601": "2019-08-01T21:39:23.295916Z", "url": "https://files.pythonhosted.org/packages/a8/8f/07406dee632d2748ca6a41feaa7d2d88f2efb5363d6ba1777511bc0d5b8b/powerdataclass-1.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b3c4b1d1ef5041ed0a6845e2e526f589", "sha256": "5ab537a728f29e33f03b7c190f47618545c195888a3517ef7039e6697ad23e80" }, "downloads": -1, "filename": "powerdataclass-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b3c4b1d1ef5041ed0a6845e2e526f589", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 6467, "upload_time": "2019-08-01T21:39:24", "upload_time_iso_8601": "2019-08-01T21:39:24.762378Z", "url": "https://files.pythonhosted.org/packages/4e/8e/f844a9e47dca2007f9d04b9164b2ce715cf3258d96c39ed7726d576a6e96/powerdataclass-1.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "ebd4610ca69c9ece06996a6a28c39f1e", "sha256": "5b54925f66727aeb317c3f3308c3c06f91de9dbecbdfa44f932e904b90783d22" }, "downloads": -1, "filename": "powerdataclass-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ebd4610ca69c9ece06996a6a28c39f1e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 8870, "upload_time": "2019-08-02T23:41:10", "upload_time_iso_8601": "2019-08-02T23:41:10.643159Z", "url": "https://files.pythonhosted.org/packages/44/19/ffda4a4aee135f80c2c7d61dbb3386da77db1bf912e11cb7d9eca4e4a5ae/powerdataclass-1.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6e8a5c15004e939843b691ec54e96651", "sha256": "705beefc9e989c719cb37c84a75f94f3548cbea59228e5886a63bbfcc85c27c0" }, "downloads": -1, "filename": "powerdataclass-1.2.0.tar.gz", "has_sig": false, "md5_digest": "6e8a5c15004e939843b691ec54e96651", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 8915, "upload_time": "2019-08-02T23:41:12", "upload_time_iso_8601": "2019-08-02T23:41:12.544442Z", "url": "https://files.pythonhosted.org/packages/ee/97/41a47e8eb86878c4cc6b4b03847f8e071d16ca74fb292d7b756b3686f883/powerdataclass-1.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "b12d62bdde36104e1ea0baabdf12d547", "sha256": "b8442da1b999a5613832e3cd47a5ca589652c7fdf117d46164ad1c25e978ce72" }, "downloads": -1, "filename": "powerdataclass-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b12d62bdde36104e1ea0baabdf12d547", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 8924, "upload_time": "2019-08-03T16:04:01", "upload_time_iso_8601": "2019-08-03T16:04:01.752493Z", "url": "https://files.pythonhosted.org/packages/e5/89/19cb3cdc748ac82cd4cff7091cf56e119124eeb2c9b154b6243165b6130d/powerdataclass-1.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "76bedf3a04b96b2ccfd848c23082e3cd", "sha256": "88441db8981aa518f2640969575573643efc41deae3bd5bf3fb442c9ab49cbe4" }, "downloads": -1, "filename": "powerdataclass-1.2.1.tar.gz", "has_sig": false, "md5_digest": "76bedf3a04b96b2ccfd848c23082e3cd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 8968, "upload_time": "2019-08-03T16:04:03", "upload_time_iso_8601": "2019-08-03T16:04:03.638323Z", "url": "https://files.pythonhosted.org/packages/3b/b7/cba88f071ab0f686515c361d733353f171eb802825203bf92e0fa64bb6f6/powerdataclass-1.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.10": [ { "comment_text": "", "digests": { "md5": "2466a9c3297306e241e302cb36beed4a", "sha256": "51b8a8184b08d9b42d8ddd8ccd1bc8cc15febc501fd2bfb5c902da8afc4117a9" }, "downloads": -1, "filename": "powerdataclass-1.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "2466a9c3297306e241e302cb36beed4a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10140, "upload_time": "2019-10-06T18:07:38", "upload_time_iso_8601": "2019-10-06T18:07:38.077307Z", "url": "https://files.pythonhosted.org/packages/2c/e5/fecbba2047981a6b77e95d8597b238a01202f8a38201cee7b03decfdfa1c/powerdataclass-1.2.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a6132639ebed16652f0b0c26ff50170a", "sha256": "8902a3d886e44072bea70d0edf827bf2709b2f0a15d7513411f5e9d5e1a1cada" }, "downloads": -1, "filename": "powerdataclass-1.2.10.tar.gz", "has_sig": false, "md5_digest": "a6132639ebed16652f0b0c26ff50170a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10514, "upload_time": "2019-10-06T18:07:40", "upload_time_iso_8601": "2019-10-06T18:07:40.179914Z", "url": "https://files.pythonhosted.org/packages/f1/e9/115e22c38f9ffea67ea1a47b7d2fb90ee1cfaf45f7402f6fef72b5e16e30/powerdataclass-1.2.10.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.11": [ { "comment_text": "", "digests": { "md5": "946df700e8adfa95d86e984abce6f22f", "sha256": "c6aa8c6c2b9b9f0caf869b132a1bd972f19425d561041b7e081c6fc15dad5a71" }, "downloads": -1, "filename": "powerdataclass-1.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "946df700e8adfa95d86e984abce6f22f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10207, "upload_time": "2019-10-12T16:39:46", "upload_time_iso_8601": "2019-10-12T16:39:46.028071Z", "url": "https://files.pythonhosted.org/packages/d0/5a/7fc486f4c65be46f5d3013aca4be6debd1812294aeeaea4ecf9e687bc34c/powerdataclass-1.2.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b4d8226656380f594234638268a05650", "sha256": "4339ae4b43cab4998a71f50d0f63300b6229c49a61d80685de926d37ff3111a5" }, "downloads": -1, "filename": "powerdataclass-1.2.11.tar.gz", "has_sig": false, "md5_digest": "b4d8226656380f594234638268a05650", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10570, "upload_time": "2019-10-12T16:39:47", "upload_time_iso_8601": "2019-10-12T16:39:47.799727Z", "url": "https://files.pythonhosted.org/packages/f7/67/078299897eb8bd816ca8a63aebe3a34d8196096672a41b996708db2d28d0/powerdataclass-1.2.11.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "82f66ac45971a9b978a68a69aa69c1b8", "sha256": "596b0dbe0d15115afe229a28a5273c44bcd7fa6c424e0c5d98174efba366493b" }, "downloads": -1, "filename": "powerdataclass-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "82f66ac45971a9b978a68a69aa69c1b8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 8989, "upload_time": "2019-08-05T20:37:39", "upload_time_iso_8601": "2019-08-05T20:37:39.359363Z", "url": "https://files.pythonhosted.org/packages/f1/08/60870a8c5b39ca857370fa364f6f7ad356e46f56115828e27c07a4a0b666/powerdataclass-1.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "749862976c687d7ad853ce68c6af44de", "sha256": "c23d8a2f824db651a102e97874472a8828b2826102497d4958eabd5e25d5268c" }, "downloads": -1, "filename": "powerdataclass-1.2.2.tar.gz", "has_sig": false, "md5_digest": "749862976c687d7ad853ce68c6af44de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9027, "upload_time": "2019-08-05T20:37:41", "upload_time_iso_8601": "2019-08-05T20:37:41.342811Z", "url": "https://files.pythonhosted.org/packages/83/fd/7cbc958560b6441de1aaaf99370afaadfb1211fc8a262755784e7815eacf/powerdataclass-1.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "d6264bc00ffd5b2c08c84bb153395399", "sha256": "a2fd1b474bd22035be3a3c5baf70469b09fda6ef35640d13244552b73b42abd8" }, "downloads": -1, "filename": "powerdataclass-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d6264bc00ffd5b2c08c84bb153395399", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 9138, "upload_time": "2019-08-05T21:55:58", "upload_time_iso_8601": "2019-08-05T21:55:58.939068Z", "url": "https://files.pythonhosted.org/packages/ff/dc/77a0450dbb0d83b39c093d5da8544e82896b779e0129e3070a4781b83237/powerdataclass-1.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6653b325e0f6d168f3b75295409d4e98", "sha256": "5e7a3e9cb1c6852b7b5b67e1284ca0987a876434755d9e05d115931e632b80a2" }, "downloads": -1, "filename": "powerdataclass-1.2.3.tar.gz", "has_sig": false, "md5_digest": "6653b325e0f6d168f3b75295409d4e98", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9165, "upload_time": "2019-08-05T21:56:00", "upload_time_iso_8601": "2019-08-05T21:56:00.839686Z", "url": "https://files.pythonhosted.org/packages/f3/6b/301d51433cc776bc2898b125ab42c159be36ae14766e1272a1baff2cc978/powerdataclass-1.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "151117096e67b552669c5836936519cc", "sha256": "fb09abce7de42e58da61c1fd716ebe29841b3c037efeaee9a87ebe7a9791ddfe" }, "downloads": -1, "filename": "powerdataclass-1.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "151117096e67b552669c5836936519cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 9040, "upload_time": "2019-08-05T22:39:24", "upload_time_iso_8601": "2019-08-05T22:39:24.174519Z", "url": "https://files.pythonhosted.org/packages/f1/09/7a533a3fa2e35bacba9bf268554a247ceb723f69e0c4585dbd2b5919ee58/powerdataclass-1.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "33c3ed5af675f984bffcb71f24867c41", "sha256": "ba07b3103866e5215bfbdac724196e93248875bd202036d39c94dc2f8a71a1a2" }, "downloads": -1, "filename": "powerdataclass-1.2.4.tar.gz", "has_sig": false, "md5_digest": "33c3ed5af675f984bffcb71f24867c41", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9065, "upload_time": "2019-08-05T22:39:26", "upload_time_iso_8601": "2019-08-05T22:39:26.338687Z", "url": "https://files.pythonhosted.org/packages/cc/ae/b6fd4a6b56a9ddbd357919f806d39b3a2fb2a793484f0aedd69e6361f83d/powerdataclass-1.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "1db5908d678ef76cfe22c68832da8b4e", "sha256": "9fb790ea307567068f089190608d3d25afe0104a860da5826e6dc0eed4c6c5e7" }, "downloads": -1, "filename": "powerdataclass-1.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1db5908d678ef76cfe22c68832da8b4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 9149, "upload_time": "2019-08-06T18:09:33", "upload_time_iso_8601": "2019-08-06T18:09:33.681446Z", "url": "https://files.pythonhosted.org/packages/5e/2c/32379d1bd590746ce6c6a645a9eef01344834140d2232df0720280884b21/powerdataclass-1.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a2ccf1aec8edf4addaa241bf067be780", "sha256": "af26debbac127414b31f723f5470c769ed2c3a32cd1f9bb97e685fcdd1108c75" }, "downloads": -1, "filename": "powerdataclass-1.2.5.tar.gz", "has_sig": false, "md5_digest": "a2ccf1aec8edf4addaa241bf067be780", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9177, "upload_time": "2019-08-06T18:09:35", "upload_time_iso_8601": "2019-08-06T18:09:35.494398Z", "url": "https://files.pythonhosted.org/packages/ae/16/07bffe18ee3dee0eac58b8251618c9d311548fe511ef3ad0493574300318/powerdataclass-1.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.6": [ { "comment_text": "", "digests": { "md5": "f216de1f434048e6f64c8f4b8e236a17", "sha256": "c86cfb2d958a5084d1b89f03616ca4078aacd9b00c5afafdc315578e77e61e6e" }, "downloads": -1, "filename": "powerdataclass-1.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f216de1f434048e6f64c8f4b8e236a17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 9275, "upload_time": "2019-08-11T19:40:13", "upload_time_iso_8601": "2019-08-11T19:40:13.873541Z", "url": "https://files.pythonhosted.org/packages/02/8d/cccbf979a9191bd7b6007d57ba5aa24cd05ac01f1b6d8068cbc5e3e6a540/powerdataclass-1.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "79edd0968f4851228a2f8fe11ac94e68", "sha256": "4f110679fdd668871d47c309e140e61bf0aed2b49590aa7b39cfaf4ef31b0ee9" }, "downloads": -1, "filename": "powerdataclass-1.2.6.tar.gz", "has_sig": false, "md5_digest": "79edd0968f4851228a2f8fe11ac94e68", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9292, "upload_time": "2019-08-11T19:40:16", "upload_time_iso_8601": "2019-08-11T19:40:16.168277Z", "url": "https://files.pythonhosted.org/packages/31/e5/238ec55f6ca0e7c351f4a4889c44e391527bf0945427cab72c6ae8594144/powerdataclass-1.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.7": [ { "comment_text": "", "digests": { "md5": "dbd2eb17c435a141e4026dd83268dc20", "sha256": "51a44528e4070a519bf5c54cb4efabae870be6a80c49aef38009f335edf1bfa5" }, "downloads": -1, "filename": "powerdataclass-1.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "dbd2eb17c435a141e4026dd83268dc20", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 9771, "upload_time": "2019-08-13T22:59:37", "upload_time_iso_8601": "2019-08-13T22:59:37.494579Z", "url": "https://files.pythonhosted.org/packages/02/92/49cf3ca576a2fc15e55fe463ee7cf1420a73880b461a3177cc0143e2b9f7/powerdataclass-1.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "67d2b6085911b6af420f6c706c607102", "sha256": "c0cba468483c2a7d04a55a43a5674e3aa7781947dd1a2705d0e1efc3bac0a647" }, "downloads": -1, "filename": "powerdataclass-1.2.7.tar.gz", "has_sig": false, "md5_digest": "67d2b6085911b6af420f6c706c607102", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10101, "upload_time": "2019-08-13T22:59:39", "upload_time_iso_8601": "2019-08-13T22:59:39.709011Z", "url": "https://files.pythonhosted.org/packages/65/b5/48f17ebc3285043045da93e29663bf56a730c622245f06def35a5a91824b/powerdataclass-1.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.8": [ { "comment_text": "", "digests": { "md5": "bbcd90f5fad799aff164ad93d370af93", "sha256": "30d2c19b75ffa8138a3bc12ab347b811fc1142e39b4c38ad140a93672a5ddaac" }, "downloads": -1, "filename": "powerdataclass-1.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "bbcd90f5fad799aff164ad93d370af93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 9773, "upload_time": "2019-08-14T19:28:02", "upload_time_iso_8601": "2019-08-14T19:28:02.232750Z", "url": "https://files.pythonhosted.org/packages/1a/32/41f6acd4c6425844cf31222dd2dd30ca0691663d1814da0dbd3abf3fc444/powerdataclass-1.2.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7b5faaca1762345e3b8ae167e37f26b1", "sha256": "57ca4d89d604e59512a49acda85c9ba6f64c8ce3a6db34d9ff84b83b13e83760" }, "downloads": -1, "filename": "powerdataclass-1.2.8.tar.gz", "has_sig": false, "md5_digest": "7b5faaca1762345e3b8ae167e37f26b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10105, "upload_time": "2019-08-14T19:28:04", "upload_time_iso_8601": "2019-08-14T19:28:04.758412Z", "url": "https://files.pythonhosted.org/packages/b9/9f/096acf7f77bdd5b0bf940adb266d7f3950858fb7bcf10aa0166f426e319e/powerdataclass-1.2.8.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.9": [ { "comment_text": "", "digests": { "md5": "65c2d60bdac93b21a1b544d45a239c2c", "sha256": "08f56ac79dd534c3c7e8d7e31a028db842c38bb0bfc75fdb80da28850621f9cf" }, "downloads": -1, "filename": "powerdataclass-1.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "65c2d60bdac93b21a1b544d45a239c2c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10123, "upload_time": "2019-09-06T17:13:51", "upload_time_iso_8601": "2019-09-06T17:13:51.741118Z", "url": "https://files.pythonhosted.org/packages/3a/00/5c590f8999d344e4bd8b6eb20a08b42f32109e005f17f660de9ef5e53520/powerdataclass-1.2.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5673e698c32ae3d42d1703294405532f", "sha256": "c649060e7cc59ee7107e2ad991eebff808097a2b8555da740f389f8a71e497b2" }, "downloads": -1, "filename": "powerdataclass-1.2.9.tar.gz", "has_sig": false, "md5_digest": "5673e698c32ae3d42d1703294405532f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10497, "upload_time": "2019-09-06T17:13:53", "upload_time_iso_8601": "2019-09-06T17:13:53.715654Z", "url": "https://files.pythonhosted.org/packages/e0/98/e7fb8fa658ab7c15264df7cd55b6756e5214512f041dccf4c7b35b21c735/powerdataclass-1.2.9.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "3f2f02a1d59a9cd8625c2e576d6aec00", "sha256": "711dc6cf84ea8aabb922cd2a7aa4127da2f53d24575c246b7fa3b54ac900f193" }, "downloads": -1, "filename": "powerdataclass-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3f2f02a1d59a9cd8625c2e576d6aec00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10403, "upload_time": "2019-10-12T17:38:41", "upload_time_iso_8601": "2019-10-12T17:38:41.599649Z", "url": "https://files.pythonhosted.org/packages/09/36/d71ffd10088b4f8f7a10f6778c6a78d2423b2292f6a6665a27c06dbc14d2/powerdataclass-1.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9138d1cb45c256f06b32c7b7f4f7af86", "sha256": "d1c822179d7cb472e74f35477619e894bc10484133c67bfe1a18465b7b865b34" }, "downloads": -1, "filename": "powerdataclass-1.3.0.tar.gz", "has_sig": false, "md5_digest": "9138d1cb45c256f06b32c7b7f4f7af86", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10878, "upload_time": "2019-10-12T17:38:43", "upload_time_iso_8601": "2019-10-12T17:38:43.721908Z", "url": "https://files.pythonhosted.org/packages/1a/f9/d46fc633d2f5775b24f0b26e1a5b0d7b442039ca6df8ac0446b113eabc2b/powerdataclass-1.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "e329ac52ff03825ab7bbae173817c625", "sha256": "7d769e78aea07a97e1d0b0f43aa4c40100c34ba322ed65c625e77ba72ce57926" }, "downloads": -1, "filename": "powerdataclass-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e329ac52ff03825ab7bbae173817c625", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10660, "upload_time": "2019-10-12T19:33:18", "upload_time_iso_8601": "2019-10-12T19:33:18.398781Z", "url": "https://files.pythonhosted.org/packages/39/21/f91a8452aea395b6c19f516a557fb3f3a338ead7c4f3e6cbfa5b3cb87f19/powerdataclass-1.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "489a14182de84d61818da219628ce37d", "sha256": "faef287d4215510cedc68d2d94063497631559f6244e2fb8e87e88d328f7732c" }, "downloads": -1, "filename": "powerdataclass-1.3.1.tar.gz", "has_sig": false, "md5_digest": "489a14182de84d61818da219628ce37d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 11132, "upload_time": "2019-10-12T19:33:21", "upload_time_iso_8601": "2019-10-12T19:33:21.106785Z", "url": "https://files.pythonhosted.org/packages/6c/66/202babd5f582468d1fa3c9fc119ab9625dcdf01157ee6678afe8eb0a1c6b/powerdataclass-1.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "463440135cb10a0a375992df82a3be59", "sha256": "81af71edba4840f6cb84e6e4594f321ad63440ea4fc1739a9f11a85ff25420a6" }, "downloads": -1, "filename": "powerdataclass-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "463440135cb10a0a375992df82a3be59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10857, "upload_time": "2019-10-12T19:36:31", "upload_time_iso_8601": "2019-10-12T19:36:31.317950Z", "url": "https://files.pythonhosted.org/packages/8f/76/2a0a5bd97fdb66c42a422473864bcea4bb8d44b1fd771266be8fb1f096d6/powerdataclass-1.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "799cf6ace75f0237072802b6f78075c5", "sha256": "ae9267964063f934af7f2785ffa46dd01aed6335279ec53a2d4bd17c89c847b0" }, "downloads": -1, "filename": "powerdataclass-1.3.2.tar.gz", "has_sig": false, "md5_digest": "799cf6ace75f0237072802b6f78075c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 12122, "upload_time": "2019-10-12T19:36:33", "upload_time_iso_8601": "2019-10-12T19:36:33.481150Z", "url": "https://files.pythonhosted.org/packages/9b/07/ed7722a592c980bcbe5b0e8c5e47f2996b920d440348429678495c2e41f7/powerdataclass-1.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "86e582b833aa15acfdb029ce83470df5", "sha256": "d9987664cfadd9a20f0a77179562243273dbf89ee7fcf22ef57c75cca23dac1f" }, "downloads": -1, "filename": "powerdataclass-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "86e582b833aa15acfdb029ce83470df5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10859, "upload_time": "2019-10-16T22:01:41", "upload_time_iso_8601": "2019-10-16T22:01:41.987440Z", "url": "https://files.pythonhosted.org/packages/bc/39/ad53524563a30d41c0ead0730f09d1fbc794f7ddaa7a0eb1b2ed48de43b2/powerdataclass-1.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e0fed464cf8250c16221b00f3717f86b", "sha256": "f3ae83bc7ee391b54aca55116bb4ee1aee98bd2a80ba197f3a42b31e092a6e69" }, "downloads": -1, "filename": "powerdataclass-1.3.3.tar.gz", "has_sig": false, "md5_digest": "e0fed464cf8250c16221b00f3717f86b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 12115, "upload_time": "2019-10-16T22:01:44", "upload_time_iso_8601": "2019-10-16T22:01:44.065571Z", "url": "https://files.pythonhosted.org/packages/e5/46/a0baa157746d73f319f4f577ea03939c2757ed75370e9826ad11b063fd5d/powerdataclass-1.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.4": [ { "comment_text": "", "digests": { "md5": "b76dd4dffdd2c864af11dddbccdfd0dc", "sha256": "72129d2fffe123d9c91ca1ba33490d2f0a2bd1b3947519a4d1a31bf21b4f1055" }, "downloads": -1, "filename": "powerdataclass-1.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b76dd4dffdd2c864af11dddbccdfd0dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 11219, "upload_time": "2019-10-29T23:17:14", "upload_time_iso_8601": "2019-10-29T23:17:14.575588Z", "url": "https://files.pythonhosted.org/packages/86/31/cab7dd0c9366cc7397143724e86cab77b589d4be5dd210df66ba3802ec17/powerdataclass-1.3.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f2b45da348d0112da017abf73ce59f1f", "sha256": "b86e1846bd45ad2a598c0dd22dc9c4498db31ed02fc2176b54b6fa329cb782df" }, "downloads": -1, "filename": "powerdataclass-1.3.4.tar.gz", "has_sig": false, "md5_digest": "f2b45da348d0112da017abf73ce59f1f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13971, "upload_time": "2019-10-29T23:17:16", "upload_time_iso_8601": "2019-10-29T23:17:16.704034Z", "url": "https://files.pythonhosted.org/packages/91/49/c3f77d82c276f4a9a225ffa865882f097f89333ad454e75a4f513664fa17/powerdataclass-1.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.5": [ { "comment_text": "", "digests": { "md5": "f3ae6336bc78d748ed10401eb1d3a17a", "sha256": "14fb07efa20cdfef9598c742e91bf407cffafcbd7c5aa836f682482c1f7884dd" }, "downloads": -1, "filename": "powerdataclass-1.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f3ae6336bc78d748ed10401eb1d3a17a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 11273, "upload_time": "2019-11-26T22:19:35", "upload_time_iso_8601": "2019-11-26T22:19:35.979257Z", "url": "https://files.pythonhosted.org/packages/ab/a2/e76fabb7b2b3fa9b87766eaffd0ebe160667a32a19a5ca8c2a1a8c7c20b2/powerdataclass-1.3.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dc388bf0e5022dfde5bca7c0a554afbe", "sha256": "b5f3785ac43e022266f4ebdcab1a5ce2434bef522a1b2de4d6cbf02e0d26382c" }, "downloads": -1, "filename": "powerdataclass-1.3.5.tar.gz", "has_sig": false, "md5_digest": "dc388bf0e5022dfde5bca7c0a554afbe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14149, "upload_time": "2019-11-26T22:19:37", "upload_time_iso_8601": "2019-11-26T22:19:37.938983Z", "url": "https://files.pythonhosted.org/packages/76/e4/be93581006faf1a82918f34b34801b48aeefdd431648a39d51796713f82f/powerdataclass-1.3.5.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f3ae6336bc78d748ed10401eb1d3a17a", "sha256": "14fb07efa20cdfef9598c742e91bf407cffafcbd7c5aa836f682482c1f7884dd" }, "downloads": -1, "filename": "powerdataclass-1.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f3ae6336bc78d748ed10401eb1d3a17a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 11273, "upload_time": "2019-11-26T22:19:35", "upload_time_iso_8601": "2019-11-26T22:19:35.979257Z", "url": "https://files.pythonhosted.org/packages/ab/a2/e76fabb7b2b3fa9b87766eaffd0ebe160667a32a19a5ca8c2a1a8c7c20b2/powerdataclass-1.3.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dc388bf0e5022dfde5bca7c0a554afbe", "sha256": "b5f3785ac43e022266f4ebdcab1a5ce2434bef522a1b2de4d6cbf02e0d26382c" }, "downloads": -1, "filename": "powerdataclass-1.3.5.tar.gz", "has_sig": false, "md5_digest": "dc388bf0e5022dfde5bca7c0a554afbe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14149, "upload_time": "2019-11-26T22:19:37", "upload_time_iso_8601": "2019-11-26T22:19:37.938983Z", "url": "https://files.pythonhosted.org/packages/76/e4/be93581006faf1a82918f34b34801b48aeefdd431648a39d51796713f82f/powerdataclass-1.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }