{ "info": { "author": "Micha\u0142 Kaczmarczyk", "author_email": "michal.s.kaczmarczyk@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development", "Topic :: Software Development :: Code Generators" ], "description": "renew\n=====\n\n| Semi-text-pickling in pure python.\n| If you meet just a few restrictions, you can store classes\n| state into a python file and import or evaluate it somewhere\n| else or later on. You can even use it as a database unless\n| the amount of data is huge.\n\n1 minute - example:\n~~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n import renew \n\n class ThatNiceClass(renew.Mold):\n # manual implementation of __init__ is needed. Constructor_arguments\n # have to be actual names of this class attributes\n def __init__(self, f_a, f_b, *f_c, **f_d):\n self.f_a, self.f_b, self.f_c, self.f_d = f_a, f_b, f_c, f_d\n\n c = ThatNiceClass(1, 2, 3, 4, five=5, six=6)\n\n assert repr(c) == \"ThatNiceClass(1, 2, 3, 4, five=5, six=6)\"\n assert c == eval(repr(c)) # __eq__ implemented \n assert repr(c) == repr(eval(repr(c))) # pure reproduction, instance \"survives\" eval\n\n class SecondClass(renew.Mold):\n _cls_namespace = \"foo_pkg\"\n\n def __init__(self, one, two=\"number two\", three=None):\n self.one, self.two, self.three = one, two, three\n\n s1 = SecondClass(1)\n s2 = SecondClass(3.14159, \"non default\")\n s3 = SecondClass(\"Lorem ipsum dolor sit amet, consectetur adipiscing elit\")\n s4 = SecondClass(4, three=ThatNiceClass(1, 2, 3, 4, five=5, six=6))\n\n d = ThatNiceClass(s1, s2, lorem=s3, im_nesting=s4)\n\n assert repr(d) == \"\"\"\\\n ThatNiceClass(\n foo_pkg.SecondClass(1),\n foo_pkg.SecondClass(3.14159, 'non default'),\n im_nesting=foo_pkg.SecondClass(4, three=ThatNiceClass(1, 2, 3, 4, five=5, six=6)),\n lorem=foo_pkg.SecondClass('Lorem ipsum dolor sit amet, consectetur adipiscing elit'),\n )\"\"\"\n\nThe ``__repr__`` story - repr(object)\n-------------------------------------\n\n| Does ``repr`` stand for \"representation\" or \"reproduction\"?\n| According to python documentation ``__repr__`` functionality has two\n| separate approaches. From\n https://docs.python.org/3/library/functions.html#repr (v 3.7.2)\n\n | ``repr(object)`` Return a string containing a printable\n representation of an object.\n | For many types, this function makes an attempt to return a string\n | that would yield an object with the same value when passed to\n eval(),\n | otherwise the representation is a string enclosed in angle\n brackets\n | that contains the name of the type of the object together with\n | additional information often including the name and address of\n | the object. A class can control what this function returns for\n | its instances by defining a ``__repr__()`` method.\n\n1. reproducible repr:\n---------------------\n\n| For several native objects it returns a string that can be used\n| to reproduce given object, i.e. to create a copy of given object.\n\n.. code:: python\n\n a = [1, 3.141559, None, \"string\"]\n statement_str = repr(a)\n assert statement_str == '[1, 3.141559, None, \"string\"]'\n\nYou may tell that repr of an object is ``reproducible`` if this is meet:\n\n.. code:: python\n\n a = [1, 3.14159, None, \"string\"]\n statement_str = repr(a)\n assert repr(eval(statement_str)) == statement_str\n # if the object implements __eq__ this should be also true:\n assert eval(statement_str) == a\n\n2. descriptive repr:\n--------------------\n\n| Unfortunately python does not serve the \"reproducible repr\" out of the\n box\n| for types defined by user:\n\n.. code:: python\n\n class Car(object):\n def __init__(self, body_type, engine_power):\n self.body_type = body_type\n self.engine_power = engine_power\n\n car = Car(\"coupe\", 124.0)\n # repr(car) == '<__main__.Car object at 0x7f0ff6313290>'\n # but using renew:\n\n import renew\n\n class ReproducibleCar(renew.Mold):\n _cls_namespace = \"bar\"\n def __init__(self, body_type, engine_power):\n self.body_type = body_type\n self.engine_power = engine_power\n\n car2 = ReproducibleCar(\"sedan\", 110.0)\n assert repr(car2) == 'bar.ReproducibleCar(\"sedan\", 110.0)'\n\nThe method above is implemented as a decorator, but you can also use a\ninheritance to get the same result.\n\n.. code:: python\n\n import renew\n\n class Car(renew.Mold):\n _cls_namespace = \"cars\"\n _cls_dependency = \"that.things\"\n\n def __init__(self, body_type, engine_power, fuel, seats, color=None):\n self.body_type = body_type\n self.engine_power = engine_power\n self.fuel = fuel\n self.seats = seats\n self.color = color\n\n class Driver(renew.Mold):\n _cls_namespace = \"persons\"\n\n def __init__(self, first_name, last_name, *cars):\n self.first_name = first_name\n self.last_name = last_name\n self.cars = cars\n\n car_1 = Car(\"Truck\", 120.0, \"diesel\", 2)\n car_2 = Car(\"Van\", 145.0, \"diesel\", seats=7, color=\"silver\")\n car_3 = Car(\"Roadster\", 210.0, \"gasoline\", seats=2)\n\n driver_1 = Driver(\"Blenda\", \"Klapa\", car_1)\n driver_2 = Driver(\"Trytka\", \"Blotnick\", car_2, car_3)\n\n assert repr(driver_1) == \".Driver('Blenda', 'Klapa', cars.Car('Truck', 120.0, 'diesel', 2))\"\n assert repr(driver_2) == \"\"\"\\\n persons.Driver(\n 'Trytka',\n 'Blotnick',\n cars.Car('Van', 145.0, 'diesel', 7, 'silver'),\n cars.Car('Roadster', 210.0, 'gasoline', 2),\n )\"\"\"\n\n renew.serialize(\"/tmp/target.py\", blenda=driver_1, trytka=driver_2)\n\nThe created file looks like this:\n\n.. code:: python\n\n #!/usr/bin/env python\n # -*- coding: utf-8 -*-\n\n # This file has been created with renew.\n # A py-pickling tool: https://pypi.org/project/renew/\n\n from living.things import persons\n from that.things import cars\n\n blenda = persons.Driver('Blenda', 'Klapa', cars.Car('Truck', 120.0, 'diesel', 2))\n\n trytka = persons.Driver(\n 'Trytka',\n 'Blotnick',\n cars.Car('Van', 145.0, 'diesel', 7, 'silver'),\n cars.Car('Roadster', 210.0, 'gasoline', 2),\n )\n\nHow it works?\n-------------\n\n| Note that ``ReproducibleCar`` does not explicitly implement the\n ``__repr__``, but the ``renew.reproducible``\n| decorator supplements it (overrides it if any has been defined\n before).\n| ``renew.reproduction`` inspects constructor's argument specification\n| of decorated class and yields a string that tries to be a call\n statement composed of\n\n- ``namespace``, e.g. your package name (according to desired importing\n convention)\n- given class name\n- given class' attributes values, that have the same names and order as\n constructor arguments\n\nThat forms the only one usage restriction:\n\n**The class has to store all the constructor arguments in its attributes\nwith the same\nname** (as in ``ReproducibleCar`` definition above).\n\n| Variadic args have to be stored in the instance either as ``list``,\n ``tuple`` (no cast needed), ``set`` or ``OrderedDict``\n| (set is rendered with sorting). Keyword args have to be stored in the\n instance as a ``dict`` or ``OrderedDict``.\n\n.. code:: python\n\n from collections import OrderedDict\n import renew\n\n class ThatClass(renew.Mold):\n def __init__(self, x=1, *others, **kw_args):\n self.x = x\n self.others = OrderedDict(others)\n self.kw_args = kw_args\n\n that = ThatClass(3.14159, (\"a\", \"A\"), (\"b\", \"B\"), one=1, two=2, many=666)\n\n assert repr(that) == \"ThatClass(3.14159, many=666, one=1, two=2)\"\n assert that.x == 3.14159\n assert that.others == OrderedDict([(\"a\", \"A\"), (\"b\", \"B\")])\n assert that.kw_args == dict(one=1, two=2, many=666)\n\n\nLimitations\n-----------\n\n- keys of plain ``dict`` being \"complex\" objects get a bit ugly layout\n if repr of given key spans multiple lines.\n- | ``renew`` does not cross-reference objects while serializing.\n | Although neither ``pickle`` nor ``marshal`` does cross-reference,\n ``renew`` most probably could do it but it's\n | hard to tell how to let renew know where and how a chain of objects\n have to be cross-referenced.\n\n- For ultra-capable meta programming ``MacroPy``:\n https://pypi.org/project/MacroPy/ would be a better choice.\n\nFor full list of features and usage examples, please refer to unit\ntests, especially ``tests/test_renew.py``.\n\n\n", "description_content_type": "text/x-rst; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/kamichal/renew", "keywords": "", "license": "MIT license", "maintainer": "Micha\u0142 Kaczmarczyk", "maintainer_email": "michal.s.kaczmarczyk@gmail.com", "name": "renew", "package_url": "https://pypi.org/project/renew/", "platform": "", "project_url": "https://pypi.org/project/renew/", "project_urls": { "Homepage": "https://gitlab.com/kamichal/renew" }, "release_url": "https://pypi.org/project/renew/0.5.4/", "requires_dist": [ "six" ], "requires_python": "", "summary": "Gives a reproducible manner to your objects and can serialize them in 100% pythonic format.", "version": "0.5.4" }, "last_serial": 5352987, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "bfbf9056e9b85eee6601d3a49e982550", "sha256": "efba969c2d952e4f0775df6c8b15f5693959a0b784932d5ab77183a6521124d5" }, "downloads": -1, "filename": "renew-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bfbf9056e9b85eee6601d3a49e982550", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10458, "upload_time": "2019-02-10T11:00:23", "url": "https://files.pythonhosted.org/packages/40/8c/868dbe7c73c38dc8d33c8b24d4af75f8167fd8783bca42dd364a94dbbcc7/renew-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6bbdb0987e5a785a466bc52960d07bc3", "sha256": "c335338064f6009e3bed94a1084df0e9254fa01bbcebf6fba4e5396b81646384" }, "downloads": -1, "filename": "renew-0.1.tar.gz", "has_sig": false, "md5_digest": "6bbdb0987e5a785a466bc52960d07bc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8901, "upload_time": "2019-02-10T10:59:52", "url": "https://files.pythonhosted.org/packages/ca/1f/7d7590d4aef5eb8e9e70be1db6982bedadf29a7fb85a8bfe627b7edf3dd0/renew-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b9299192d12f2d93959e6e3d419dc9dd", "sha256": "0efef9e9d621212f8196192104ef091cc3807e29dd3157816f8dd8927f179b71" }, "downloads": -1, "filename": "renew-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9299192d12f2d93959e6e3d419dc9dd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10768, "upload_time": "2019-02-11T10:53:32", "url": "https://files.pythonhosted.org/packages/c4/47/8faf154f32fadf65f0a44459afee6a1e934c3d7dd71a1556661d2ceead2d/renew-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4b83b46c5d153dfb62d69815c0a1c07", "sha256": "1efbb6acf5d68118f1606b8070701085c1d37fc528da451328d2bf462764801c" }, "downloads": -1, "filename": "renew-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e4b83b46c5d153dfb62d69815c0a1c07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9082, "upload_time": "2019-02-11T10:53:34", "url": "https://files.pythonhosted.org/packages/4b/5d/4b9194f675d6898ea1c0d108db4a4b2a6948e498367b4ce3bc34944592be/renew-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9d9ff3a805ab933ee5a9ec1e33aa147f", "sha256": "1ac738a82a82eeec8cd811aac3b39879bfc230468f908eef549674efcc0d8303" }, "downloads": -1, "filename": "renew-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9d9ff3a805ab933ee5a9ec1e33aa147f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10832, "upload_time": "2019-02-11T12:14:41", "url": "https://files.pythonhosted.org/packages/a2/c1/e2a0a6fa133b1a6b56a84ab148be3bdda47d058b9d5caec28bcad4a2b3bc/renew-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8bd78c5f39e03a0263e307ec8bc374d", "sha256": "a683c22ce2ebc78b22710489c9a440f4681bc217e901dad8cc9d27464499064a" }, "downloads": -1, "filename": "renew-0.2.tar.gz", "has_sig": false, "md5_digest": "f8bd78c5f39e03a0263e307ec8bc374d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9607, "upload_time": "2019-02-11T12:14:42", "url": "https://files.pythonhosted.org/packages/44/13/84514e8f9837037e8967b9fa9dbbc7781b4461ef0ffe8754310e81295a63/renew-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "163993778c0a2830bbc27640bd719b1d", "sha256": "3e68ba09aff82ae926a1a7cf091bbcce9abb3a5d4cca7d728e91227322d0d1d4" }, "downloads": -1, "filename": "renew-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "163993778c0a2830bbc27640bd719b1d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10938, "upload_time": "2019-02-11T14:17:23", "url": "https://files.pythonhosted.org/packages/ed/df/b2cadf8e9ba03e4318cf287a97f0bce384022db186a1e280162948282ee5/renew-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec022bb099a647834630f5eb35cc1b1b", "sha256": "eac20efe85c18776970603a7fddd7a9b17938638fe18e75cbbac9d0e6cf656d2" }, "downloads": -1, "filename": "renew-0.2.1.tar.gz", "has_sig": false, "md5_digest": "ec022bb099a647834630f5eb35cc1b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10487, "upload_time": "2019-02-11T14:17:25", "url": "https://files.pythonhosted.org/packages/e6/ca/61a0da050b80048121203a6bb32cb386c9d9fbcd072a7eb99c98720ad3ca/renew-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "abe18a203459718c3d4b6790d2e1de39", "sha256": "78ab533a0f3cdf5b6463f70f1a0811468e9e5bb53059590f5800c0d07f976d1f" }, "downloads": -1, "filename": "renew-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "abe18a203459718c3d4b6790d2e1de39", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11396, "upload_time": "2019-02-14T13:30:19", "url": "https://files.pythonhosted.org/packages/ac/a3/f2921d6e982253d2cc6a64777c23c5e6b3068d0d8333e9915fb8533f8335/renew-0.2.2-py2.py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7bc572bb982c4ec5947a791a1bc18eaa", "sha256": "36ef25df76928f5626a4fe8a5f5e2d5687937ac0adbf3b8bfbc4d59e8ee1aec8" }, "downloads": -1, "filename": "renew-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7bc572bb982c4ec5947a791a1bc18eaa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18748, "upload_time": "2019-03-12T16:42:05", "url": "https://files.pythonhosted.org/packages/53/ab/7de4bf640adaa1e19fde3c032fdf17f965b0ebde4f028ce4e66fa937412d/renew-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bc2469796ff410a564c7fedb019a26f", "sha256": "3660ba60e81186d8244fd970f94ba8e408afab63a9098bcdd2fc3951d6d0de76" }, "downloads": -1, "filename": "renew-0.3.0.tar.gz", "has_sig": false, "md5_digest": "9bc2469796ff410a564c7fedb019a26f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11828, "upload_time": "2019-03-12T16:42:07", "url": "https://files.pythonhosted.org/packages/14/63/724e2e44f026142aa16b95801beceb5363b60846ee7b23630dc28f88579d/renew-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "b526f66bf43362e962cf1f0315bb26ee", "sha256": "e9d4b7b1ca47e266e7ae742b352c6eda4b70e8b89de3a89936634a2d3b656ddc" }, "downloads": -1, "filename": "renew-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b526f66bf43362e962cf1f0315bb26ee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18786, "upload_time": "2019-03-13T14:33:28", "url": "https://files.pythonhosted.org/packages/a1/a5/77da6b080acfe1f6951506103080932119b336682abd51b3a7bbf5d89434/renew-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29f79de9ab3b2426bc6a1d1c120e2952", "sha256": "290a5c2a2c0ece6e7a53cc2d4c1b7586d0714347652ce14a3ca0787f85086b46" }, "downloads": -1, "filename": "renew-0.3.1.tar.gz", "has_sig": false, "md5_digest": "29f79de9ab3b2426bc6a1d1c120e2952", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11865, "upload_time": "2019-03-13T14:33:43", "url": "https://files.pythonhosted.org/packages/0d/12/86fca19e706b0a1cb2677e3eb0f332cc7931fad1872ff828e81dbed9bb4b/renew-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "0649b29d79994105684646d132eb3d7f", "sha256": "7d250c814e9e1b44b13a0dada7016cf1686472d529051b68f42aa766beb86062" }, "downloads": -1, "filename": "renew-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0649b29d79994105684646d132eb3d7f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19309, "upload_time": "2019-03-13T23:18:39", "url": "https://files.pythonhosted.org/packages/7e/03/0712c98f657e46fc3a9b8ed66e4c144642519828fa619afdaba2ac0e6fb5/renew-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da82d9702f90dd2188cf28a64a2bc5f3", "sha256": "ca9c4ad4d763d24564f62e630b5a489df0534d6cb9244991fa4d85cef515c47a" }, "downloads": -1, "filename": "renew-0.3.2.tar.gz", "has_sig": false, "md5_digest": "da82d9702f90dd2188cf28a64a2bc5f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13157, "upload_time": "2019-03-13T23:18:41", "url": "https://files.pythonhosted.org/packages/a1/1e/1c01f4d3c8426af687e125e385907eeec0e66b46d14e380493334c63bf42/renew-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "eb980a05c141250541e5f27b83710a43", "sha256": "aa15ce06719f1d9aa0483b5933249e52536d7dcbbc27412a359f833d05f4041b" }, "downloads": -1, "filename": "renew-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eb980a05c141250541e5f27b83710a43", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22158, "upload_time": "2019-03-18T13:44:15", "url": "https://files.pythonhosted.org/packages/0e/61/176d6168c2704322ba3203117f8c26de60e3c3bd630bf9efbe0f0b6a08d0/renew-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2704ce779127c50c0527022b48ddf4fb", "sha256": "aed59ebd33c6b78d13ea13205722a7df136bfbac937ac9d613cb83f0d948e3a9" }, "downloads": -1, "filename": "renew-0.4.0.tar.gz", "has_sig": false, "md5_digest": "2704ce779127c50c0527022b48ddf4fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15213, "upload_time": "2019-03-18T13:44:16", "url": "https://files.pythonhosted.org/packages/9c/4b/2335a399720d354c37e83fe41bc5e46190086de86626ebbcb8d95c553676/renew-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "a75b83813c2c9ad0dcdb793c1950b462", "sha256": "5c8d1724aa4bec76ace39e3bc8cc9bee77c024baee629ad7d303278b314058c9" }, "downloads": -1, "filename": "renew-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a75b83813c2c9ad0dcdb793c1950b462", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22260, "upload_time": "2019-03-18T14:28:01", "url": "https://files.pythonhosted.org/packages/7e/0e/b289be045e1e470122b49710b23cb31d290c7115ac00f0891c0ef2714c4b/renew-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61de5e1e887d47cf2123557739402178", "sha256": "9ad62ffb09c6982eadeb0badcc2c13ca9ffa3bc58775d95b33a894b95439ed52" }, "downloads": -1, "filename": "renew-0.4.1.tar.gz", "has_sig": false, "md5_digest": "61de5e1e887d47cf2123557739402178", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15326, "upload_time": "2019-03-18T14:28:03", "url": "https://files.pythonhosted.org/packages/04/40/20e1b3527c98ce2d1e39b6ab858ce01fb39572aa9569cd736a64c2f059c5/renew-0.4.1.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "322a10fd8a116561d39b86c1908a8efb", "sha256": "4b5752163e89c41f8055d66ddeb92372726fd4407200e04f34f3132a57d9faa4" }, "downloads": -1, "filename": "renew-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "322a10fd8a116561d39b86c1908a8efb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22283, "upload_time": "2019-03-20T15:16:12", "url": "https://files.pythonhosted.org/packages/c3/4e/f74dbd3847e1e970a39842984ba8eb59c64d9dd9f69818457aa7c71ce951/renew-0.4.3-py2.py3-none-any.whl" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "1f5cfc4eab202504d5deea01abbad871", "sha256": "e544788a526efc1c64858d09f63ac5798f3d98d110b80b2f3551cf68b79ad313" }, "downloads": -1, "filename": "renew-0.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1f5cfc4eab202504d5deea01abbad871", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22546, "upload_time": "2019-03-26T16:47:00", "url": "https://files.pythonhosted.org/packages/ce/43/eec505597997c68523d9dd30d25a1c910317ebeab9b319fb480e952d8035/renew-0.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a617f5732270beca66a40b95ed3a5c1", "sha256": "511e59d8e617512833ee25affe63c979b358730ed8bc6007e88693d9e9752a9a" }, "downloads": -1, "filename": "renew-0.4.4.tar.gz", "has_sig": false, "md5_digest": "6a617f5732270beca66a40b95ed3a5c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15737, "upload_time": "2019-03-26T16:47:02", "url": "https://files.pythonhosted.org/packages/49/df/6b5128f101bd7b2d8f41864fa40fb766f2a5b691a9cba12f9984a9a8178a/renew-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "fef0c9de65e5ffe0011a68605735eed8", "sha256": "8fa2d6595ab4f40863d2aef3e9f2907a0499becfead02559186412a83cb3c834" }, "downloads": -1, "filename": "renew-0.4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fef0c9de65e5ffe0011a68605735eed8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22557, "upload_time": "2019-03-29T08:21:51", "url": "https://files.pythonhosted.org/packages/b9/3c/225f0d1f2287be6722512cbc02aef80cf98fae1eb7cc2e16496b99f15142/renew-0.4.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e85116ec1eb113d70fe5996e6b5a80ed", "sha256": "a03e33e8d46356ff5910fcac12a628f959bd9b8dc60aeef5360a61553ea46a23" }, "downloads": -1, "filename": "renew-0.4.5.tar.gz", "has_sig": false, "md5_digest": "e85116ec1eb113d70fe5996e6b5a80ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15801, "upload_time": "2019-03-29T08:21:52", "url": "https://files.pythonhosted.org/packages/c6/fe/e736d08d3054f0660a5c838110fb67bbeb8ca554f400778b93d57ddf7eb7/renew-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "96866baa6464d228f754b5a5ef17cc85", "sha256": "4d102bab37c9edceb9bb4b3ce646c3a26908c6514355f1d32bb5e3ce12a920e0" }, "downloads": -1, "filename": "renew-0.4.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96866baa6464d228f754b5a5ef17cc85", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12420, "upload_time": "2019-04-17T18:40:09", "url": "https://files.pythonhosted.org/packages/3c/88/fd86024d8ad4c523cb8a0aa54f4717ec6a314e0f9fec1ce8c6d51d28c80e/renew-0.4.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a2aa731e3b3042faea486a718637d8f", "sha256": "078ad5bcf9c787a212e2cd0d6bff3524e9514c81b78b2f6ba09d81fef056d442" }, "downloads": -1, "filename": "renew-0.4.6.tar.gz", "has_sig": false, "md5_digest": "1a2aa731e3b3042faea486a718637d8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16043, "upload_time": "2019-04-24T07:10:27", "url": "https://files.pythonhosted.org/packages/59/27/915e44656b84fb5a9a125c01d5511eb1059acf763077bf97900a50b3ac87/renew-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "acedfc9374d19c652ee4d7761ed2834c", "sha256": "e0479c1f2278e29a2b472a471dd3aaed08344d7d177001039638ad119e95926e" }, "downloads": -1, "filename": "renew-0.4.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "acedfc9374d19c652ee4d7761ed2834c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22771, "upload_time": "2019-04-24T07:10:21", "url": "https://files.pythonhosted.org/packages/90/19/4ed8a12cde637bde28b573c577effae0e6c86be94ff1971b9ebe29c3ad55/renew-0.4.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fa76d3b5ffe14a392d220fc5d952d7d", "sha256": "2ab3a12459dab1bd9c47dd4470daf13c15af266384b4da96b450dd46bfaad26b" }, "downloads": -1, "filename": "renew-0.4.7.tar.gz", "has_sig": false, "md5_digest": "0fa76d3b5ffe14a392d220fc5d952d7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16080, "upload_time": "2019-04-24T07:10:29", "url": "https://files.pythonhosted.org/packages/7b/cf/069d26e3a17514155a6e0fad9f3fecabefa55569ebf9fabea2530d6cd0a9/renew-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "17b8023eb58305bc1c991fa7fc299a44", "sha256": "66b668b4b42057fc1db1695c7b1eda959616a4badc4d042ffed3dc701dce3e46" }, "downloads": -1, "filename": "renew-0.4.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "17b8023eb58305bc1c991fa7fc299a44", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15502, "upload_time": "2019-05-22T21:50:50", "url": "https://files.pythonhosted.org/packages/03/48/eaab08ad3fdb4bc4b6a28e024865c8ff7a12fded128a317eddb644b75fc5/renew-0.4.8-py2.py3-none-any.whl" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "c1348b95facfec2ca3639d0189dd8adc", "sha256": "236fd21e9cf7d5d38a1f59851478a2772c67b652e9b9ea6b74a615d652bd8d85" }, "downloads": -1, "filename": "renew-0.4.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c1348b95facfec2ca3639d0189dd8adc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16031, "upload_time": "2019-05-28T08:54:17", "url": "https://files.pythonhosted.org/packages/66/59/5439adfb36b2b38a9e46480283e9e71e3999e828e8bf656533893d428324/renew-0.4.9-py2.py3-none-any.whl" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "da6e27fb4afcf55d63b260dcc69d3946", "sha256": "00a5a72bc24193278350e70baa6c9f1c37cbf1b9a17c6856a849e1b23c575ff7" }, "downloads": -1, "filename": "renew-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "da6e27fb4afcf55d63b260dcc69d3946", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14584, "upload_time": "2019-05-21T12:22:20", "url": "https://files.pythonhosted.org/packages/85/2a/f5ec519e8e68588514b45c72b278d5ae8e89c996a0932c0f6de9ef172ed8/renew-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d91f1af1062b48efdc7ff4386f51e939", "sha256": "f1d4e5295a4f99c4fee5ef85b0af8d18489038eeef0ab7a904048488133a0c40" }, "downloads": -1, "filename": "renew-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d91f1af1062b48efdc7ff4386f51e939", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18020, "upload_time": "2019-05-21T12:22:22", "url": "https://files.pythonhosted.org/packages/78/89/dc9b0bda878e0881a0562bf257247e2e080e9e5a758ae211f7b800fa6420/renew-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "8de8a4db82370d65cded3d2f43ab1b7f", "sha256": "cb3b10f7bd1b19af94258b3acfdbc9b2ec85c07837238d12b18c2ee274943fe2" }, "downloads": -1, "filename": "renew-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8de8a4db82370d65cded3d2f43ab1b7f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15501, "upload_time": "2019-05-22T21:54:39", "url": "https://files.pythonhosted.org/packages/d2/b9/185361f98c6cdf214e93d310e4dc9646cc38372773a935e8ea672b164875/renew-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "755eba8a5e88f087f590c252263154fe", "sha256": "590cfe5c220d03c1eb93156461d2ff5699999dc5c8cf73ed4ae1be2263a85028" }, "downloads": -1, "filename": "renew-0.5.1.tar.gz", "has_sig": false, "md5_digest": "755eba8a5e88f087f590c252263154fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18903, "upload_time": "2019-05-22T21:54:42", "url": "https://files.pythonhosted.org/packages/bc/e9/8afd8c4a5822e623598ba0c6102b7527c4af7164a9e3741a5e7eafa8e0c2/renew-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "f706e0c405ecb77552cf53c0c20d4efe", "sha256": "b6413112fa87a2cc275f191e211b450cab4da7d901af5cfd57361645ed5ecbcb" }, "downloads": -1, "filename": "renew-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f706e0c405ecb77552cf53c0c20d4efe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16029, "upload_time": "2019-05-28T08:55:33", "url": "https://files.pythonhosted.org/packages/79/60/3bf125583bd8c8feb3cb3c5186df7f3332771eba84052a6de8f8bdb780cc/renew-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8e7b8bed935d8dd2f179aaa66eecd05", "sha256": "36789c3d1c72739a13bc8c2b72b2481903cbcbb150e6e4f5a10b6ba52930f603" }, "downloads": -1, "filename": "renew-0.5.2.tar.gz", "has_sig": false, "md5_digest": "e8e7b8bed935d8dd2f179aaa66eecd05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19827, "upload_time": "2019-06-03T14:18:17", "url": "https://files.pythonhosted.org/packages/db/4a/6a87d5a02354f9a5f143281db4a6bef15758f3c4bc5a1716d69d51cf85a2/renew-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "b62278e1dbbd3112c55a8e354cb07095", "sha256": "926c64fce12f7c430cded8031d33b57f3a9c8b2d3f306593522244153642e6bd" }, "downloads": -1, "filename": "renew-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b62278e1dbbd3112c55a8e354cb07095", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26332, "upload_time": "2019-06-03T14:18:14", "url": "https://files.pythonhosted.org/packages/36/e9/1f1460fa52c69f2582e6434b777d257f2af5002dfbbdd1f8503465669a69/renew-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfce90f6662d25d280d95a04d77e967b", "sha256": "7e79f4f100bb39c71cd30692b192bfad66658e57161b8432b760ff98328c3aad" }, "downloads": -1, "filename": "renew-0.5.3.tar.gz", "has_sig": false, "md5_digest": "cfce90f6662d25d280d95a04d77e967b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19834, "upload_time": "2019-06-03T14:18:19", "url": "https://files.pythonhosted.org/packages/1d/02/74900ef4da761a84b6caec0c0b24db9e52cebb9b3c86fc0be13034f7a790/renew-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "538e5052fa501b20e76787668f5288cd", "sha256": "73a20b0bb481fe3c17800f67a2b1fb44291759c11fcb4851deac7e613be35add" }, "downloads": -1, "filename": "renew-0.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "538e5052fa501b20e76787668f5288cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16110, "upload_time": "2019-06-03T14:50:27", "url": "https://files.pythonhosted.org/packages/25/46/9d9271720f563ca7aef5febd5bf9ba855a73d1e50474f1215134f16e439b/renew-0.5.4-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "538e5052fa501b20e76787668f5288cd", "sha256": "73a20b0bb481fe3c17800f67a2b1fb44291759c11fcb4851deac7e613be35add" }, "downloads": -1, "filename": "renew-0.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "538e5052fa501b20e76787668f5288cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16110, "upload_time": "2019-06-03T14:50:27", "url": "https://files.pythonhosted.org/packages/25/46/9d9271720f563ca7aef5febd5bf9ba855a73d1e50474f1215134f16e439b/renew-0.5.4-py2.py3-none-any.whl" } ] }