{ "info": { "author": "alfred82santa", "author_email": "alfred82santa@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "|travis-master| |coverall-master| |doc-master| |pypi-lastrelease| |python-versions|\n|project-status| |project-license| |project-format| |project-implementation|\n\n.. |travis-master| image:: https://travis-ci.org/alfred82santa/dirty-models.svg?branch=master\n :target: https://travis-ci.org/alfred82santa/dirty-models\n\n.. |coverall-master| image:: https://coveralls.io/repos/alfred82santa/dirty-models/badge.svg?branch=master&service=github\n :target: https://coveralls.io/r/alfred82santa/dirty-models?branch=master\n\n.. |doc-master| image:: https://readthedocs.org/projects/dirty-models/badge/?version=latest\n :target: http://dirty-models.readthedocs.io/?badge=latest\n :alt: Documentation Status\n\n.. |pypi-downloads| image:: https://img.shields.io/pypi/dm/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: Downloads\n\n.. |pypi-lastrelease| image:: https://img.shields.io/pypi/v/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: Latest Version\n\n.. |python-versions| image:: https://img.shields.io/pypi/pyversions/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: Supported Python versions\n\n.. |project-status| image:: https://img.shields.io/pypi/status/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: Development Status\n\n.. |project-license| image:: https://img.shields.io/pypi/l/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: License\n\n.. |project-format| image:: https://img.shields.io/pypi/format/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: Download format\n\n.. |project-implementation| image:: https://img.shields.io/pypi/implementation/dirty-models.svg\n :target: https://pypi.python.org/pypi/dirty-models/\n :alt: Supported Python implementations\n\n.. _Dirty Models Sphinx extension: http://dirty-models-sphinx-extension.readthedocs.io\n\n============\nDirty Models\n============\n\nDirty models for python 3\n\n-------------\nDocumentation\n-------------\n\nhttp://dirty-models.readthedocs.io/\n\n--------\nFeatures\n--------\n\n- Python 3 package.\n- Easy to create a model.\n- Non destructive modifications.\n- Non false positive modifications.\n- Able to restore original data for each field or whole model.\n- Access to original data.\n- Read only fields.\n- Alias for fields.\n- Custom getters and setters for each fields.\n- Automatic cast value.\n- Easy import from/export to dict.\n- Basic field type implemented.\n- Multi type fields.\n- Default values for each field or whole model.\n- HashMap model. It could be used instead of DynamicModel.\n- FastDynamicModel. It could be used instead of DynamicModel. Same behavior, better performance.\n- Pickable models.\n- Datetime fields can use any datetime format using parser and formatter functions.\n- No database dependent.\n- Auto documentation using `Dirty Models Sphinx extension`_.\n- Json encoder.\n- Field access like dictionary but with wildcards.\n- Opensource (BSD License)\n\n---------\nChangelog\n---------\n\nVersion 0.11.3\n--------------\n\n- Fix bug casting string negative float.\n- Fix exception casting non valid values to enumerations.\n- Added `title` property to fields.\n- Added `metadata` property to fields. It could be used to store anything.\n- Improved model formatter.\n\nVersion 0.11.2\n--------------\n\n- Fix bug #107.\n\n- Added ``~dirty_models.utils.ModelIterator`` class in order to be able to iterate over model fields.\n\n .. code-block:: python\n\n from dirty_models.utils import ModelIterator\n\n for fieldname, field_obj, value in ModelIterator(my_model):\n print('Field name: {}'.format(fieldname))\n print('Field alias: {}'.format(field_obj.alias))\n print('Field value: {}'.format(value))\n\n- Some fixes about read only data.\n\n\nVersion 0.11.1\n--------------\n\n- Distribution fixes.\n\n\nVersion 0.11.0\n--------------\n\n- New field type ``~dirty_models.fields.BytesField``.\n\n- String to integer casting could use any format allowed by Python: HEX (`0x23`), OCT (`0o43`) or\n no-meaning underscores (`1_232_232`, only since Python 3.6).\n\nVersion 0.10.1\n--------------\n\n- ``Factory`` feature. It allows to define a factory as\n default value in order to be executed each time model is instanced. (Issue #100)\n\n .. code-block:: python\n\n from dirty_models.utils import factory\n from datetime import datetime\n\n class Model(BaseModel):\n\n field_1 = DateTimeField(default=factory(datetime.now))\n\n model = Model()\n print(model.field_1)\n\n # 2017-11-02 21:52:46.339040\n\n- Makefile fixes.\n- Python 3.6 is supported officially. It works since first day, but now tests run on Travis for Python 3.6.\n\nVersion 0.10.0\n--------------\n\n- Pickable lists.\n- Improved pickle performance.\n- Setting ``None`` to a field remove content.\n- More tests.\n- Some code improvements.\n\nVersion 0.9.2\n-------------\n\n- Fix timezone when convert timestamp to datetime.\n\nVersion 0.9.1\n-------------\n\n- Fix installation.\n\nVersion 0.9.0\n-------------\n\n- New EnumField.\n- Fixes on setup.py.\n- Fixes on requirements.\n- Fixes on formatter iters.\n- Fixes on code.\n- Added ``__version__`` to main package file.\n- Synchronized version between main packege file, ``setup.py`` and docs.\n- Export only modifications.\n\n\nVersion 0.8.1\n-------------\n\n- Added __contains__ function to models and lists. It allows to use ``in`` operator.\n- Added ``default_timezone`` parameter to DateTimeFields and TimeFields. If value entered has no a timezone\n defined, default one will be set.\n- Added ``force_timezone`` parameter to DateTimeFields in order to convert values to a specific timezone.\n- More cleanups.\n\nVersion 0.8.0\n-------------\n\n- Renamed internal fields. Now they use double score format ``__fieldname__``.\n- Raise a RunTimeError exception if two fields use same alias in a model.\n- Fixed default docstrings.\n- Cleanup default data. Only real name fields are allowed to use as key.\n- Added ``~dirty_models.models.BaseModel.get_attrs_by_path`` in order to get all values using path.\n- Added ``~dirty_models.models.BaseModel.get_1st_attr_by_path`` in order to get first value using path.\n- Added option to access fields like in a dictionary, but using wildcards. Only for getters.\n See: ``~dirty_models.models.BaseModel.get_1st_attr_by_path``.\n- Added some documentation.\n\nVersion 0.7.2\n-------------\n\n- Fixed inherited structure\n- Added ``get_default_data`` method to models in order to retrieve default data.\n\nVersion 0.7.1\n-------------\n\n- Solved problem formatting dynamic models\n- Added date, time and timedelta fields to dynamic models.\n\nVersion 0.7.0\n-------------\n\n- Timedelta field\n- Generic formatters\n- Json encoder\n\n.. code-block:: python\n\n import json\n from datetime import datetime\n from dirty_models import BaseModel, DatetimeField\n from dirty_models.utils import JSONEncoder\n\n\n class ExampleModel(BaseModel):\n field_datetime = DatetimeField(parse_format=\"%Y-%m-%dT%H:%M:%S\")\n\n model = ExampleModel(field_datetime=datetime.now())\n\n assert json.dumps(model, cls=JSONEncoder) == '{\"field_datetime\": \"2016-05-30T22:22:22\"}'\n\n- Auto camelCase fields metaclass\n\n\nVersion 0.6.3\n-------------\n\n- Documentation fixed.\n- Allow import main members from root package.\n\nVersion 0.6.2\n-------------\n\n- Improved datetime fields parser and formatter definitions. Now there are three ways to define them:\n\n* Format string to use both parse and formatter:\n\n.. code-block:: python\n\n class ExampleModel(BaseModel):\n datetime_field = DateTimeField(parse_format='%Y-%m-%dT%H:%M:%SZ')\n\n\n* Define a format string or function for parse and format datetime:\n\n.. code-block:: python\n\n class ExampleModel(BaseModel):\n datetime_field = DateTimeField(parse_format={'parser': callable_func,\n 'formatter': '%Y-%m-%dT%H:%M:%SZ'})\n\n* Use predefined format:\n\n.. code-block:: python\n\n DateTimeField.date_parsers = {\n 'iso8061': {\n 'formatter': '%Y-%m-%dT%H:%M:%SZ',\n 'parser': iso8601.parse_date\n }\n }\n class ExampleModel(BaseModel):\n datetime_field = DateTimeField(parse_format='iso8061')\n\n\nVersion 0.6.1\n-------------\n\n- Improved model field autoreference.\n\n.. code-block:: python\n\n class ExampleModel(BaseModel):\n model_field = ModelField() # Field with a ExampleModel\n array_of_model = ArrayField(field_type=ModelField()) # Array of ExampleModels\n\n\nVersion 0.6.0\n-------------\n\n- Added default value for fields.\n\n.. code-block:: python\n\n class ExampleModel(BaseModel):\n integer_field = IntegerField(default=1)\n\n model = ExampleModel()\n assert model.integer_field is 1\n\n- Added default values at model level. Inherit default values could be override on new model classes.\n\n.. code-block:: python\n\n class InheritExampleModel(ExampleModel):\n __default_data__ = {'integer_field': 2}\n\n model = InheritExampleModel()\n assert model.integer_field is 2\n\n- Added multi type fields.\n\n.. code-block:: python\n\n class ExampleModel(BaseModel):\n multi_field = MultiTypeField(field_types=[IntegerField(), StringField()])\n\n model = ExampleModel()\n model.multi_field = 2\n assert model.multi_field is 2\n\n model.multi_field = 'foo'\n assert model.multi_field is 'foo'\n\nVersion 0.5.2\n-------------\n\n- Fixed model structure.\n- Makefile helpers.\n\n\nVersion 0.5.1\n-------------\n\n- Added a easy way to get model structure. It will be used by autodoc libraries as sphinx or json-schema.\n\nVersion 0.5.0\n-------------\n\n- Added autolist parameter to ArrayField. It allows to assign a single item to a list field,\n so it will be converted to a list with this value.\n\n.. code-block:: python\n\n class ExampleModel(BaseModel):\n array_field = ArrayField(field_type=StringField(), autolist=True)\n\n model = ExampleModel()\n model.array_field = 'foo'\n assert model.array_field[0] is 'foo'\n\n------------\nInstallation\n------------\n\n.. code-block:: bash\n\n $ pip install dirty-models\n\n------\nIssues\n------\n\n- Getter and setter feature needs refactor to be able to use as decorators.\n- DynamicModel is too strange. I don't trust in it. Try to use HashMapModel or FastDynamicModel.\n\n-----------\nBasic usage\n-----------\n\n.. code-block:: python\n\n from dirty_models.models import BaseModel\n from dirty_models.fields import StringField, IntegerField\n\n class FooBarModel(BaseModel):\n foo = IntegerField()\n bar = StringField(name=\"real_bar\")\n alias_field = IntegerField(alias=['alias1', 'alias2'])\n\n\n\n fb = FooBarModel()\n\n fb.foo = 2\n assert fb.foo is 2\n\n fb.bar = 'wow'\n assert fb.bar is 'wow'\n assert fb.real_bar is 'wow'\n\n fb.alias_field = 3\n assert fb.alias_field is 3\n assert fb.alias1 is fb.alias_field\n assert fb.alias2 is fb.alias_field\n assert fb['alias_field'] is 3\n\n.. note::\n\n More examples and documentation on http://dirty-models.readthedocs.io/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/alfred82santa/dirty-models", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "dirty-models", "package_url": "https://pypi.org/project/dirty-models/", "platform": "", "project_url": "https://pypi.org/project/dirty-models/", "project_urls": { "Homepage": "https://github.com/alfred82santa/dirty-models" }, "release_url": "https://pypi.org/project/dirty-models/0.11.3/", "requires_dist": [ "python-dateutil" ], "requires_python": "", "summary": "Dirty models for python 3", "version": "0.11.3" }, "last_serial": 5435809, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "54cd015fa1ca2eb89c77164684289e20", "sha256": "2844f86c49d5f00ca9f30671c3ba04c1b00dff1dd8a07acf1dbbb857c50e0eb7" }, "downloads": -1, "filename": "dirty-models-0.10.0.tar.gz", "has_sig": false, "md5_digest": "54cd015fa1ca2eb89c77164684289e20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22349, "upload_time": "2017-01-31T21:08:35", "url": "https://files.pythonhosted.org/packages/24/3f/707d13a02935c92f759c405f5e6f11f2db1dd7fb6692619693d85f013044/dirty-models-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "6f1bde6b8ad9e3544e22bab0feb95edf", "sha256": "d9a5d172ca3c12944db40e7a3901f71f3923ec3c804fe7a2b69968112fa29acb" }, "downloads": -1, "filename": "dirty-models-0.10.1.tar.gz", "has_sig": false, "md5_digest": "6f1bde6b8ad9e3544e22bab0feb95edf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23042, "upload_time": "2017-11-02T21:32:50", "url": "https://files.pythonhosted.org/packages/d1/a7/6fd9e1cc58d36700aac2aa4b1fe3a8abd67c6a4d5b05f329512ef63ee51b/dirty-models-0.10.1.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "06762b655df0abe192dd4afd6d7bef57", "sha256": "02e5e9af9df2d8abce68d806ab48386ec7d102cd469a19664a8681f8b2e13053" }, "downloads": -1, "filename": "dirty_models-0.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "06762b655df0abe192dd4afd6d7bef57", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 24777, "upload_time": "2017-11-19T11:31:00", "url": "https://files.pythonhosted.org/packages/38/6b/43d94892d3b05b10381e5ce0df4bf441737380d589df65305b16756a5136/dirty_models-0.11.0-py3-none-any.whl" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "46ca967659463204a3a95d15f9ff48fb", "sha256": "819f613be912bc6084f2b59f58c431b7ba98fa53b6524d28ab50f2d5cacd66c7" }, "downloads": -1, "filename": "dirty_models-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "46ca967659463204a3a95d15f9ff48fb", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 25397, "upload_time": "2017-11-19T17:31:49", "url": "https://files.pythonhosted.org/packages/e7/a3/078a5fc1854b44fe7ba75c5d18213eb3bc58380c4b682e5c5fa4f8979e10/dirty_models-0.11.1-py3-none-any.whl" } ], "0.11.2": [ { "comment_text": "", "digests": { "md5": "88c951ce7266f38c7e09b63614a2210e", "sha256": "83d7fef6cf14b6126a4c990a544de70bd819b925305bf4234308ef4a41a3aea2" }, "downloads": -1, "filename": "dirty_models-0.11.2-py3-none-any.whl", "has_sig": false, "md5_digest": "88c951ce7266f38c7e09b63614a2210e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 25732, "upload_time": "2018-02-20T12:59:46", "url": "https://files.pythonhosted.org/packages/a5/49/743dbfba01b57468cbaf8316e12af78931dca8c077f182d63b8af1384b74/dirty_models-0.11.2-py3-none-any.whl" } ], "0.11.3": [ { "comment_text": "", "digests": { "md5": "212347c0a9d407dfef0f83b7d201b646", "sha256": "def7c8f35a34931a5e257daf704d0a025d0d7a41f909afc3001b81744e7b6a61" }, "downloads": -1, "filename": "dirty_models-0.11.3-py3-none-any.whl", "has_sig": false, "md5_digest": "212347c0a9d407dfef0f83b7d201b646", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25987, "upload_time": "2019-06-22T22:46:14", "url": "https://files.pythonhosted.org/packages/b1/73/8973ab147ae831776c415b71fd21603131ca66c27c5a5fd408aeb80f0a67/dirty_models-0.11.3-py3-none-any.whl" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "55b080c930ee68af17138ed9ba43e3ee", "sha256": "9ca901b823cad4c6c213b9b8a07ba6932dcfc90a2951540aa991df8ea7404297" }, "downloads": -1, "filename": "dirty-models-0.2.15.tar.gz", "has_sig": false, "md5_digest": "55b080c930ee68af17138ed9ba43e3ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9599, "upload_time": "2014-06-17T09:30:11", "url": "https://files.pythonhosted.org/packages/cf/09/0e96d168d270d9f73e40ee0ac966afd2989e46f7ccd216f1adb1d84972cf/dirty-models-0.2.15.tar.gz" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "a27374cfab6cc4fef2328ca65f111a84", "sha256": "90e59a6db1588dfd6d4fd5ef8234c0aa4365ffadd6c03b66e10e3409da1a89da" }, "downloads": -1, "filename": "dirty-models-0.2.16.tar.gz", "has_sig": false, "md5_digest": "a27374cfab6cc4fef2328ca65f111a84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9624, "upload_time": "2014-07-01T08:55:10", "url": "https://files.pythonhosted.org/packages/17/b6/b305aa56271d7f137d5bf715f3b78b040b3b9abd94e825314d8d4561a970/dirty-models-0.2.16.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "46456916c2b8c4886d0a152f55c30b7b", "sha256": "f7c70da0c4c74bfce7c211ae0d835a62ef1ae836b46651b93f80023cf6208583" }, "downloads": -1, "filename": "dirty-models-0.2.7.tar.gz", "has_sig": false, "md5_digest": "46456916c2b8c4886d0a152f55c30b7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8896, "upload_time": "2014-04-25T18:54:27", "url": "https://files.pythonhosted.org/packages/71/87/5649fe067045e6eecd5e70823ec33296d2d993c704ef0fee060152683959/dirty-models-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "ffc00de9fc1adc6d07b1a7b8085937a6", "sha256": "241f25cd0920b00e7d89084046608834caa193b6f7f0ee366dd76747dfa2a818" }, "downloads": -1, "filename": "dirty-models-0.2.8.tar.gz", "has_sig": false, "md5_digest": "ffc00de9fc1adc6d07b1a7b8085937a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8909, "upload_time": "2014-05-13T08:39:08", "url": "https://files.pythonhosted.org/packages/cc/40/b9a33611df6111510ab47140e3c82458ea4f7dbcc6c08d6bde7d0673a43b/dirty-models-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "6ae291b9ac9fc51a33b4f049e1f20f85", "sha256": "a549241ceab75fad01f79deea9310f16c5d9c06818f1164cc4856aaf0c376c5d" }, "downloads": -1, "filename": "dirty-models-0.2.9.tar.gz", "has_sig": false, "md5_digest": "6ae291b9ac9fc51a33b4f049e1f20f85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8923, "upload_time": "2014-05-15T14:14:33", "url": "https://files.pythonhosted.org/packages/04/09/ed393c2dc9dcbd4dacf0a8df3910d4fca5ed50d54dbad77add84c96135e0/dirty-models-0.2.9.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "aa90634fa7698be203cb6ec492431f16", "sha256": "0e20f2902e2d63f4bf85dbfd721303d1cd4fba24804c417bafce279e2db9ec32" }, "downloads": -1, "filename": "dirty-models-0.3.3.tar.gz", "has_sig": false, "md5_digest": "aa90634fa7698be203cb6ec492431f16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10459, "upload_time": "2014-07-10T10:28:45", "url": "https://files.pythonhosted.org/packages/fc/c7/46058edab3bfc19fc41888ec4935852ee4ea67a0c3743ae44f0465e6bc56/dirty-models-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "791c8509069b025b514e681ec7415208", "sha256": "97847c276afa4084df65a34ad00ea814e335eeb1cf590a18b6cef56c1f779b16" }, "downloads": -1, "filename": "dirty-models-0.3.4.tar.gz", "has_sig": false, "md5_digest": "791c8509069b025b514e681ec7415208", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10678, "upload_time": "2014-07-29T06:46:49", "url": "https://files.pythonhosted.org/packages/4f/04/a2a256b6f76a844c3fa5c32dcb5e4e31729308210a4b57a3317fdde75fad/dirty-models-0.3.4.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "251b7817d12af6ae35e699a98c8671ae", "sha256": "9e1af24e3409332f5fbdfe35de407534327944df25253ef0a7a2ff561c9721bd" }, "downloads": -1, "filename": "dirty-models-0.3.6.tar.gz", "has_sig": false, "md5_digest": "251b7817d12af6ae35e699a98c8671ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10707, "upload_time": "2014-07-31T11:26:39", "url": "https://files.pythonhosted.org/packages/bb/1d/d9759b339f622b30130ebeb490834756d0be1b55d9b4903bee898a81b8d6/dirty-models-0.3.6.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "6e0eb12cdc0937881a339b38e7728332", "sha256": "7ea3a67c1518ed122db7af75fdf8a44f062b501df94baf53890e34c38564f01c" }, "downloads": -1, "filename": "dirty-models-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6e0eb12cdc0937881a339b38e7728332", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11674, "upload_time": "2014-09-15T22:25:04", "url": "https://files.pythonhosted.org/packages/f0/14/acc81dcaff7fe5070fb3b4bc663bc7e4627a69ffd3ebb5ed25de989a6afc/dirty-models-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "0d1ca93b950032bb14130e405bfb865a", "sha256": "b0f3558aaea40035eb8de04564b25c4769d29ffeae48181b2ee7cf9980a95c2a" }, "downloads": -1, "filename": "dirty-models-0.4.1.tar.gz", "has_sig": false, "md5_digest": "0d1ca93b950032bb14130e405bfb865a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11960, "upload_time": "2015-01-13T09:01:02", "url": "https://files.pythonhosted.org/packages/3b/ed/5e7070742d6cd853b8cce1ce9417cf0593fac069231a062ab6545dca3d36/dirty-models-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "ef667f427e69e66cf6966216b833da62", "sha256": "b46af00e3be6620d23ac92c29dbf0696936004e67314a4b8f91c19eeeb134d78" }, "downloads": -1, "filename": "dirty-models-0.4.2.tar.gz", "has_sig": false, "md5_digest": "ef667f427e69e66cf6966216b833da62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12125, "upload_time": "2015-03-09T11:22:05", "url": "https://files.pythonhosted.org/packages/23/44/476997ae7c1dfc5e29c8c41da7927a68a315d59df5d1e439b3a099c56794/dirty-models-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "99ebd5f70da493708b67b1c88692b5ea", "sha256": "68a1c704383d18d4c88f6a01dcc25291f04a04a6ce7b21f7476a365fe1a0833a" }, "downloads": -1, "filename": "dirty-models-0.5.0.tar.gz", "has_sig": false, "md5_digest": "99ebd5f70da493708b67b1c88692b5ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12338, "upload_time": "2015-04-20T09:35:05", "url": "https://files.pythonhosted.org/packages/9f/a1/089a9ffb64a8ad0171a3d5c053612059acf3e4784e497833c8f6481615e3/dirty-models-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "b41f2f579939475dfabeb69825478a74", "sha256": "7a85b3022604fc39e9e4e9851c536b8be28d830015d96123ab08aa2d13695f28" }, "downloads": -1, "filename": "dirty-models-0.5.1.tar.gz", "has_sig": false, "md5_digest": "b41f2f579939475dfabeb69825478a74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14943, "upload_time": "2015-11-10T22:21:31", "url": "https://files.pythonhosted.org/packages/b1/a5/c5a6f8beb0f4ab784bf9a06dfde9d92b275926913559189fd006727d3d76/dirty-models-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "bc4a0e417b4bbddf0f85a33afe5dc0d5", "sha256": "dea3a1e906507c71f3f1e80529da0d613c8968eee305018694c54eb2a7acc32d" }, "downloads": -1, "filename": "dirty-models-0.5.2.tar.gz", "has_sig": false, "md5_digest": "bc4a0e417b4bbddf0f85a33afe5dc0d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15036, "upload_time": "2015-12-26T12:59:31", "url": "https://files.pythonhosted.org/packages/da/33/2c21e90ac362f851f5e38890e7b6a0c06bc97a2aee841757a3fc4c270a74/dirty-models-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "06499fe7f48b95e2c7f6e7a8b88e4d18", "sha256": "3cbee5b48a182204613cb21cfa86b0ae194475f5593c64b9d1a33cbab44312e0" }, "downloads": -1, "filename": "dirty-models-0.6.0.tar.gz", "has_sig": false, "md5_digest": "06499fe7f48b95e2c7f6e7a8b88e4d18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14654, "upload_time": "2016-03-15T23:33:51", "url": "https://files.pythonhosted.org/packages/ed/d3/16a75a57bf4e61f4d495d7e0b81dfaa7b7f680076d3492510a853051b067/dirty-models-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "737da47006ee34d9804124e8f325e6de", "sha256": "6cd856e9b00b2f2058da184f5d6479c8f420e0bb11e97ebf74bcbde51d50b174" }, "downloads": -1, "filename": "dirty-models-0.6.1.tar.gz", "has_sig": false, "md5_digest": "737da47006ee34d9804124e8f325e6de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14806, "upload_time": "2016-05-11T16:51:56", "url": "https://files.pythonhosted.org/packages/96/91/03c434e4d46a9f8d472ad068ca5998207f9ab270c5d3f7bc2eb8ad5427b1/dirty-models-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "a44a7a13577cfd3c2e8425d22f67032a", "sha256": "d0e76131473f54561fe6152a0d25b5cd4ac8357e2626740fd731daf742a0103c" }, "downloads": -1, "filename": "dirty-models-0.6.2.tar.gz", "has_sig": false, "md5_digest": "a44a7a13577cfd3c2e8425d22f67032a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15408, "upload_time": "2016-05-19T10:11:20", "url": "https://files.pythonhosted.org/packages/29/0e/632601ecfe4debc85edfc1a32b17d97b46e3805c20af77db20d38014d6f5/dirty-models-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "1745e28561769602183ee7927bff3226", "sha256": "e0e6b66f97d5ee6f587b7227569fdc2c1ab695a263e5e25812db6d30135635c9" }, "downloads": -1, "filename": "dirty-models-0.6.3.tar.gz", "has_sig": false, "md5_digest": "1745e28561769602183ee7927bff3226", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15787, "upload_time": "2016-05-20T10:17:38", "url": "https://files.pythonhosted.org/packages/19/51/18f0cb01e1974d7f3cf15bb3c1f7b6358491c03af1bb5e803d0a0cf8b049/dirty-models-0.6.3.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "79a02212c3401e5e370a5eb7c27e3fef", "sha256": "44b1bf83d9b546d40951ef7f6d048ea449d26a71e631684ce53940e3658af6bd" }, "downloads": -1, "filename": "dirty-models-0.7.0.tar.gz", "has_sig": false, "md5_digest": "79a02212c3401e5e370a5eb7c27e3fef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17192, "upload_time": "2016-05-30T21:43:45", "url": "https://files.pythonhosted.org/packages/7a/e0/1fa77de1f9703ec943386decf598e82d265b45b1383368eab6bd56d9f881/dirty-models-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "2c8e960310580138182e2829c8be9335", "sha256": "0a024e6388f2878306778aa90d2a0c05f4d26ee8819a722ef8840b33a3b0e725" }, "downloads": -1, "filename": "dirty-models-0.7.1.tar.gz", "has_sig": false, "md5_digest": "2c8e960310580138182e2829c8be9335", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17377, "upload_time": "2016-06-08T13:12:47", "url": "https://files.pythonhosted.org/packages/73/28/1506886bc12eb0a8eef442f0e201efc7e1bc349dda99b68541bff7a4b0ee/dirty-models-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "837aa2f445f7cc9417c6724b1ae53a1a", "sha256": "da9616a8ea6c650feddf7582b9d9168fcb45e37c611a5daae85cc1ffd74f8aa1" }, "downloads": -1, "filename": "dirty-models-0.7.2.tar.gz", "has_sig": false, "md5_digest": "837aa2f445f7cc9417c6724b1ae53a1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17543, "upload_time": "2016-09-14T19:39:45", "url": "https://files.pythonhosted.org/packages/39/11/6179f9179c28344f1ee4a2c4de5b31a58feb881a46a74f645ad6c10bb085/dirty-models-0.7.2.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "aa3795a326e18908635792b0e625342f", "sha256": "626905f8e62dbcbec81d96caeeecab39c1983fb220358c17afaf74e66e6e73e4" }, "downloads": -1, "filename": "dirty-models-0.8.0.tar.gz", "has_sig": false, "md5_digest": "aa3795a326e18908635792b0e625342f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19522, "upload_time": "2016-09-27T19:45:02", "url": "https://files.pythonhosted.org/packages/e1/85/2611d873fae4e2a184bcd746bfac2823c3a64dcd13db88fd4960dd4b3180/dirty-models-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "7f299d0ee02be6d4ded78f16cb7fe518", "sha256": "fc86d6b58c3a59596a1d09dbade2fa6c2633ec48349672a86512836c6ad36719" }, "downloads": -1, "filename": "dirty-models-0.8.1.tar.gz", "has_sig": false, "md5_digest": "7f299d0ee02be6d4ded78f16cb7fe518", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20291, "upload_time": "2016-10-17T10:06:23", "url": "https://files.pythonhosted.org/packages/70/ad/33757f33c84d706b5cbe287c1225e6a188dbc4224d95b8c0e72884fbb2c2/dirty-models-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "fc141cc56d4bd72899ea2829968c3c1e", "sha256": "1050c63eaf0735d3502214b3d3717d348a0bde55286b4b5a8a354c7b09dc9b52" }, "downloads": -1, "filename": "dirty-models-0.9.0.tar.gz", "has_sig": false, "md5_digest": "fc141cc56d4bd72899ea2829968c3c1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21408, "upload_time": "2016-11-06T21:53:22", "url": "https://files.pythonhosted.org/packages/37/38/1ebca1f923d98d05364945677b63dc7d5d7d4628e8ac7a6fb689c861cfe6/dirty-models-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "c58b8f74215f202e7619d05653bb2f86", "sha256": "cf9f070795c9273714ad4106ddab81686648f3319864b1d8074cacdecdc83abf" }, "downloads": -1, "filename": "dirty-models-0.9.1.tar.gz", "has_sig": false, "md5_digest": "c58b8f74215f202e7619d05653bb2f86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21744, "upload_time": "2016-11-07T20:52:18", "url": "https://files.pythonhosted.org/packages/9d/61/a3eaaf7fc52314124e3d007e3b63669d30a791b39cdbb9dd5d35d61b8866/dirty-models-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "14c14ea21531c36be9bfc8e5adfde9e1", "sha256": "786779973c2e9171ab9bb86ba572bd060bb0e89384df94d145948dd5eeb559da" }, "downloads": -1, "filename": "dirty-models-0.9.2.tar.gz", "has_sig": false, "md5_digest": "14c14ea21531c36be9bfc8e5adfde9e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21829, "upload_time": "2016-11-10T20:56:26", "url": "https://files.pythonhosted.org/packages/38/e8/03bdc3d80b75f47956581229edd3f5b6380124107a6a151bda5986db9a6a/dirty-models-0.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "212347c0a9d407dfef0f83b7d201b646", "sha256": "def7c8f35a34931a5e257daf704d0a025d0d7a41f909afc3001b81744e7b6a61" }, "downloads": -1, "filename": "dirty_models-0.11.3-py3-none-any.whl", "has_sig": false, "md5_digest": "212347c0a9d407dfef0f83b7d201b646", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25987, "upload_time": "2019-06-22T22:46:14", "url": "https://files.pythonhosted.org/packages/b1/73/8973ab147ae831776c415b71fd21603131ca66c27c5a5fd408aeb80f0a67/dirty_models-0.11.3-py3-none-any.whl" } ] }