{ "info": { "author": "Alex Becker", "author_email": "myself@alexcbecker.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6" ], "description": "dotlock\n=======\n\n.. image:: https://travis-ci.org/alexbecker/dotlock.svg?branch=master\n :target: https://travis-ci.org/alexbecker/dotlock\n\nFast and safe dependency management for Python applications.\n\nSupports Linux and OS X.\n\nMotivation\n----------\n\nThe de-facto standard way to keep track of Python dependencies is with a ``requirements.txt`` file,\nlisting the required packages and specifying what versions of them can be used.\nThere are two strategies for specifying versions in a ``requirements.txt`` file:\nadding only the top-level dependencies and constraints you know to be necessary,\nor adding every recursive dependency and pinning them to specific versions you know work.\nThe first strategy makes installing dependencies non-repeatable.\nThe second makes upgrading difficult, and is hard to manage with standard python tools.\n\nDotlock enables you to do both: keep track of top-level requirements and known constraints\nin ``package.json``, and generate repeatable requirement sets in ``package.lock.json``\nby running a single command: ``dotlock lock``.\n\nDotlock is partly inspired by `pipenv `_, which also provides\ndependency-locking functionality. However, dotlock has a different philosophy: instead of acting as a wrapper\naround pip, dotlock handles package resolution natively. This gives dotlock more flexibility, better performance,\nand a smaller surface area for bugs, but at the cost of the wide platform and package support the pip developers have\nput so much work into. This should make dotlock better for deploying to common environments such as linux servers\nwith common packages, but there will always be edge cases of platforms or packages it does not support.\n\nDotlock's main goals are:\n\n* Accuracy: ``dotlock lock`` locks to the level of specific distributions, not just versions.\n That means you know exactly what code will be installed by ``dotlock install``, and ``package.lock.json``\n will contain a single hash for each package. You can even vendor your dependencies with ``dotlock bundle``.\n\n* Speed: ``dotlock lock`` uses caching and asyncio to re-lock after changes to ``package.lock`` in 1s or less.\n Similarly, ``dotlock install`` and ``dotlock bundle`` download dependencies in parallel.\n\n* Extras Support: Unlike pipenv which only supports \"default\" dependencies and \"dev\" dependencies,\n ``dotlock`` supports arbitrary extra dependency groups, e.g. ``dotlock install --extras tests``.\n\nInstallation\n------------\n\nDotlock can be installed with ``pip``, i.e. ``pip install dotlock``.\nIt can be installed in an application's virtual environment, at the user level, or globally.\n\nDevelopment Setup\n-----------------\n\nOn your development machine, run ``dotlock init`` to create a virtualenv and a skeleton ``package.lock`` file.\nAdd your sources and dependencies to ``package.lock``:\n\n.. code-block:: javascript\n\n {\n \"sources\": [\n // PyPI-like package index hosting the dependencies.\n // If multiple indexes are included, each is tried in order during dependency resolution.\n \"https://pypi.org/pypi\"\n ],\n \"default\": {\n // Requirements in the form \"package-name\": \"specifier\".\n // Version specifiers may be \"*\", or a version number preceded by any of <, <=, >, >=, or ==.\n // Multiple specifiers can be separated by commas, e.g. \">=2.1,<3.0\".\n \"setuptools\": \">=39.0\",\n \"virtualenv\": \"*\",\n // Git, Mercurial and Subversion dependencies are also supported.\n \"requests\": \"git+git://github.com/requests/requests@v2.19.1\",\n // If you need extras or markers, supply a dictionary instead of a string.\n \"idna_ssl\": {\n \"specifier\": \"*\",\n \"marker\": \"python_version < 3.7\", // See PEP 496\n \"extras\": [\"tests\"],\n },\n // Local file paths can be used too, but this loses integrity guarantees.\n \"mypackage\": \"~/projects/mypackage\"\n },\n \"extras\": {\n // You can specify groups of additional dependencies that will be installed by\n // dotlock install --extras [names]\n \"dev\": {\n \"ipython\": \"*\"\n },\n \"tests\": {\n \"pytest\": \"*\"\n }\n }\n }\n\nThen you can lock and install your dependencies:\n\n.. code-block:: shell\n\n dotlock lock # Creates package.lock.json.\n dotlock install # Installs exactly the distributions in package.lock.json.\n # Either source venv/bin/activate to enter the virtualenv, or use dotlock run.\n dotlock run [program] [args] # Runs [program] in the virtualenv.\n\nFor more information, run ``dotlock -h`` or ``dotlock [command] -h``.\n\nDeveloping in Different Environments\n------------------------------------\n\nIf your development environment differs significantly from your target deployed environment,\ne.g. you use a different operating system or a different version of Python, you will have to\ndo some extra work and lose some of the benefits of ``dotlock``.\n\nIn order to resolve dependencies and select distributions correctly, ``dotlock`` needs to know\ncertain features of the deployed environment. Run ``dotlock dump-env`` on the deployed environment\nto create an ``env.json`` file. This file should live alongside your ``package.json`` file, and\nwill be used by ``dotlock lock``.\n\nSince ``package.lock.json`` contains only the distributions appropriate for your deployed environment,\nrunning ``dotlock install`` on an incompatible environment will error. Instead, you can run\n``dotlock install --skip-lock``, which will bypass ``package.lock.json``, looking just at ``package.json``.\n\nDeployment\n----------\n\nThere are two ways to install your locked dependencies during deployment:\n\n* Install ``dotlock`` and run ``dotlock install`` in the application root directory.\n\n* Use ``dotlock bundle`` to create ``bundle.tar.gz`` and ``install.sh`` prior to deployment,\n include these files in the deployment, and run ``./install.sh`` during deployment.\n\nUsing ``dotlock bundle`` is preferred because it does not require installing ``dotlock`` in\nthe deployed environment and does not depend on external services during deploy.\n\nOnce the dependencies are installed, run your application with one of:\n\n* ``source venv/bin/activate; [program] [args]``\n\n* Assuming ``dotlock`` is installed: ``dotlock run [program] [args]``\n\nRoadmap and Limitations\n-----------------------\n\nPlanned features:\n\n* Interpolate environment variables in ``sources``\n\n* Allow specifying indices for individual packages\n\nFeatures under consideration:\n\n* Support virtualenvs other than ``./venv``\n\n* Support installing into system python (useful in certain contexts, e.g. containers)\n\n* Support versions of Python before 3.6\n\n* Support locking for other platforms. This is not possible to do with perfect reliability,\n since the dependencies discovered by running ``setup.py`` may differ depending on what\n platform the script is run on.\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/alexbecker/dotlock", "keywords": "packaging requirements dependencies", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dotlock", "package_url": "https://pypi.org/project/dotlock/", "platform": "", "project_url": "https://pypi.org/project/dotlock/", "project_urls": { "Homepage": "https://github.com/alexbecker/dotlock" }, "release_url": "https://pypi.org/project/dotlock/0.8.1/", "requires_dist": [ "aiohttp (>=3.1)", "packaging", "pip (>=10.0)", "setuptools (>=39.0)", "six", "virtualenv", "pytest ; extra == 'tests'", "pytest-asyncio ; extra == 'tests'" ], "requires_python": ">=3.6", "summary": "Fast and accurate Python dependency management", "version": "0.8.1" }, "last_serial": 4886120, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6d6b39671fcd2ab4bec5b674391f4a0f", "sha256": "783a32965a549559e6034f5c122b772c1fa8e7e93c622151cc6ab0beca74879b" }, "downloads": -1, "filename": "dotlock-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6d6b39671fcd2ab4bec5b674391f4a0f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 1387, "upload_time": "2018-05-06T05:12:06", "url": "https://files.pythonhosted.org/packages/f1/73/5db88cf4b6e554e9ab5ccaf071e5bbca3e4a8927e07ab81b369d98beabb3/dotlock-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e2404afd17645529b2b2a5198c8d546", "sha256": "538b7b9cd1f01b42e07ebc85f1577924dd03932f5c82314206cac71461737c28" }, "downloads": -1, "filename": "dotlock-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9e2404afd17645529b2b2a5198c8d546", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 1334, "upload_time": "2018-05-06T05:12:07", "url": "https://files.pythonhosted.org/packages/cd/22/a058ae17662f16c33350d96c94330112c90e0cc8e955c76d4c5ac055a177/dotlock-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "3c498faee4c8bbcef374d20970a9f335", "sha256": "c91d6b130893b013576b6c9fddbaf98519ba46f4446ba7a4dbbb2f9e83762f83" }, "downloads": -1, "filename": "dotlock-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3c498faee4c8bbcef374d20970a9f335", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 21717, "upload_time": "2018-05-08T03:47:38", "url": "https://files.pythonhosted.org/packages/a1/a9/fc66425102b9658af1da022419d2bcc2b0e2f6ee3b59a456e2d46cb143b8/dotlock-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62208e39e9dcf9e28df51763211e2917", "sha256": "a01ddff2ad1a24d1ad846290f3f20a36580bad928f31852e32eb82cfeed267ec" }, "downloads": -1, "filename": "dotlock-0.1.0.tar.gz", "has_sig": false, "md5_digest": "62208e39e9dcf9e28df51763211e2917", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15719, "upload_time": "2018-05-08T03:47:39", "url": "https://files.pythonhosted.org/packages/72/dc/69e141521da0fda1b60936c9ac4ac6dbadce3acd2dec6bf80b43cb7ddbe2/dotlock-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "591ae7fd64a20fa2c7cd7aa89f1414aa", "sha256": "31406787f963df3ce00533a3a04c0ad9033e7565bfe74761ec2c434d804248cc" }, "downloads": -1, "filename": "dotlock-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "591ae7fd64a20fa2c7cd7aa89f1414aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 23308, "upload_time": "2018-05-12T16:19:41", "url": "https://files.pythonhosted.org/packages/e9/19/9c6bf186ce643444112af82117626b728608bff863702caafa17bcc98a93/dotlock-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8527e0c5b875015fa84950ca95b7f235", "sha256": "fd2e5ea9e919d24fb9b5fd373c4ad6b5d4211cee335ae2b09938d60bf7ac8c6d" }, "downloads": -1, "filename": "dotlock-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8527e0c5b875015fa84950ca95b7f235", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17465, "upload_time": "2018-05-12T16:19:47", "url": "https://files.pythonhosted.org/packages/01/1c/8c280d74993570fcd3714c6cc5c34e6e7625c0689b064a0a54ee154096f3/dotlock-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d44824fe4f040079bfb6558f5bdbd84e", "sha256": "8b41f41d5cfdd587defeb66cc349b5079ebb272db67905c09d12237a8487f1e5" }, "downloads": -1, "filename": "dotlock-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d44824fe4f040079bfb6558f5bdbd84e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33318, "upload_time": "2018-05-16T03:46:08", "url": "https://files.pythonhosted.org/packages/c8/a5/770e1d6b43c3266a923c7179cdcec475bc2c12dcc35e417c3addf2ed1a44/dotlock-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2787df7fbebc46ea9f4804f1033f65ba", "sha256": "628fc1fff9df5a6aee460749ac308583ea9639b44cd5c5db63c49efddc08113a" }, "downloads": -1, "filename": "dotlock-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2787df7fbebc46ea9f4804f1033f65ba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26862, "upload_time": "2018-05-16T03:46:09", "url": "https://files.pythonhosted.org/packages/91/00/6bf88b4a3807d63b0439f11af9d6aaf5be1162a50f4173de6cb060a8a20b/dotlock-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "29908b2ed2fbf7b46fba9b43aeb60e03", "sha256": "947e312863781b04d8729d562e0da0fea25c190a56990ae27089cbe359611d9e" }, "downloads": -1, "filename": "dotlock-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "29908b2ed2fbf7b46fba9b43aeb60e03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33383, "upload_time": "2018-05-16T06:55:43", "url": "https://files.pythonhosted.org/packages/1d/75/79fd9ae78aed8537e662fd6edcf443ad4de710ca6f6b960c9f4c6a935535/dotlock-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0974e7956d879ca7c4b847c149bb979d", "sha256": "bdd0001fba73e95355faa2cccff8350a57bd430078664b6c8be2093bb8cbc9ce" }, "downloads": -1, "filename": "dotlock-0.2.2.tar.gz", "has_sig": false, "md5_digest": "0974e7956d879ca7c4b847c149bb979d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26989, "upload_time": "2018-05-16T06:55:45", "url": "https://files.pythonhosted.org/packages/71/da/e20f7c77447e852d5ad2667457e69a1bf0f3b1c42a48c275327c2e1fea8f/dotlock-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "7a68205c8d682c18bf8b61e84274ec5d", "sha256": "67777ead1c84c37017ac042a231bcf43108f132aa0e2f8648e2b3c7d8ce39fba" }, "downloads": -1, "filename": "dotlock-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7a68205c8d682c18bf8b61e84274ec5d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33851, "upload_time": "2018-05-17T06:02:23", "url": "https://files.pythonhosted.org/packages/38/f2/03e9aa7855b8162d3e36c866d75d703beec947b95db1f45d6fda837c2f82/dotlock-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a290a6b60ff6bd66ef5af4e86828ef11", "sha256": "992d5311b3bfebbd289c9fa91ef4f723b6123cf0800c90abb96cafdf1d23eaae" }, "downloads": -1, "filename": "dotlock-0.2.3.tar.gz", "has_sig": false, "md5_digest": "a290a6b60ff6bd66ef5af4e86828ef11", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25299, "upload_time": "2018-05-17T06:02:25", "url": "https://files.pythonhosted.org/packages/d1/db/6128a88c54a55094cb32340079ba24cb2f857a5c5ce4032f0aa5df400950/dotlock-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "9df922b8abe9cd309a3987ce57064153", "sha256": "7dac9fbc8bc8a0e6b96b3436d52b2de75bb82beb43fb775e6da4c4149c3565b8" }, "downloads": -1, "filename": "dotlock-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9df922b8abe9cd309a3987ce57064153", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 34140, "upload_time": "2018-05-18T07:42:26", "url": "https://files.pythonhosted.org/packages/62/ea/31e2d72fa1a2e516a52fdb7466b16ccbc3345c7380de0f83df7992fae94b/dotlock-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2972decada852d26adb28dc20bb0e40f", "sha256": "1408096d85d30185dcc19dfd5ecd38857553db8deee0222a376a869996f66f33" }, "downloads": -1, "filename": "dotlock-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2972decada852d26adb28dc20bb0e40f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25578, "upload_time": "2018-05-18T07:42:28", "url": "https://files.pythonhosted.org/packages/9a/ef/8d388da89e316b3ee39c7c5d40306a7abdd26c7e2d9713479bc2c9ee1926/dotlock-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "0a3b7d0064848ee8cf9faad163c51d81", "sha256": "0d99c2b0f255e56fd66030b279de01f75c85e657fa328c0d01aec85e1f91229f" }, "downloads": -1, "filename": "dotlock-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0a3b7d0064848ee8cf9faad163c51d81", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 38568, "upload_time": "2018-09-01T20:25:21", "url": "https://files.pythonhosted.org/packages/bd/1f/be162730b4f2ad0852a4059e84a37049d0f8adf51402d95096ee50ed2d16/dotlock-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3529ddf4c9d5fb24d12d17a0cfbe74f0", "sha256": "22992cfd7d8f2ebeff794434d73f4607874d3e3a22df1cceee1c940beea1a98a" }, "downloads": -1, "filename": "dotlock-0.4.0.tar.gz", "has_sig": false, "md5_digest": "3529ddf4c9d5fb24d12d17a0cfbe74f0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 29624, "upload_time": "2018-09-01T20:25:23", "url": "https://files.pythonhosted.org/packages/7b/1b/a9b6281d9e34efea73a27f5c295e18b7384554687cc1fc025d3baf23e1ea/dotlock-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "0f368788043c33554edb2a100739417c", "sha256": "ce1f9b3a0b7dfe0061a8f1c3bcd919655d2c5c8fb3179248b9de8583257b83ab" }, "downloads": -1, "filename": "dotlock-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0f368788043c33554edb2a100739417c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 39092, "upload_time": "2018-09-03T17:13:06", "url": "https://files.pythonhosted.org/packages/82/fc/09f1144a17efd7cb89e9204a16d833b42d584aac9396043ea53efea801fe/dotlock-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccb5a945448bec98b073b07b8f233498", "sha256": "64d0bdcbd945915fc87a74313d5280f8b7db013e4ff27c68d45b1412a4da4502" }, "downloads": -1, "filename": "dotlock-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ccb5a945448bec98b073b07b8f233498", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30094, "upload_time": "2018-09-03T17:13:08", "url": "https://files.pythonhosted.org/packages/7b/6d/e04e61e9d477cc32049a9ef4b8b4777773803a996460bfc2658b49708163/dotlock-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "7f6ee0e898d85e2a99d5b44635ffccfb", "sha256": "e35530e1bd1d73fbe3cc5544d94f9b40108552a6deddef79f2c62c2cb9a5fe05" }, "downloads": -1, "filename": "dotlock-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7f6ee0e898d85e2a99d5b44635ffccfb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 39475, "upload_time": "2018-09-08T21:24:11", "url": "https://files.pythonhosted.org/packages/9f/4c/b9151805e3fb608ba88b9557798649e5facc9f632f258cf5c889105fdde3/dotlock-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db70808bb492711948c63f8b38315a7d", "sha256": "eda02d0e7f81a31f6a5f354a42675f994c6ae64abb6ca21493fd5c243a886bac" }, "downloads": -1, "filename": "dotlock-0.4.2.tar.gz", "has_sig": false, "md5_digest": "db70808bb492711948c63f8b38315a7d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30272, "upload_time": "2018-09-08T21:24:13", "url": "https://files.pythonhosted.org/packages/7d/a8/8d88385ad9f808bffd10148c02c5430d4ee6a8656cff487083e3d48ea066/dotlock-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "99bbbdcc03dc64a09c27399822021a98", "sha256": "5188229878bbf53c5328384d885b3a485cf5186b9e95c58120e3956a55d05b21" }, "downloads": -1, "filename": "dotlock-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "99bbbdcc03dc64a09c27399822021a98", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 39580, "upload_time": "2018-09-09T19:34:54", "url": "https://files.pythonhosted.org/packages/be/d2/c32a1cb43d7f9fc024127610305dd64bfff496e05be124220a4bd5d22195/dotlock-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "55e1393fa262edf9a088ffc47ac14090", "sha256": "1e268e7ca14b8a6b22c6c30e9219c04c2b27cfc264219ebb137d06e0d31b4610" }, "downloads": -1, "filename": "dotlock-0.4.3.tar.gz", "has_sig": false, "md5_digest": "55e1393fa262edf9a088ffc47ac14090", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30364, "upload_time": "2018-09-09T19:34:56", "url": "https://files.pythonhosted.org/packages/30/de/5d582b64a92831e576d2a094b56fdd6229496d42cc4d3341c4a0683a78c8/dotlock-0.4.3.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "504595cfaccba692e5d00fa7acd2eec6", "sha256": "9bd362c3ffc60b45f14d331e41084b3b88909f7461e40241d89d27a429f48805" }, "downloads": -1, "filename": "dotlock-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "504595cfaccba692e5d00fa7acd2eec6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 39913, "upload_time": "2018-09-21T05:56:12", "url": "https://files.pythonhosted.org/packages/bf/a0/def0f81c73e95ec8f4f18081248c6506836b20a092a542b65beec0178d16/dotlock-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6ae70d3126a79fccf9aa835eec68add", "sha256": "d93dd8785f7821bc8bcc7d90644eec4d125cce7c00d7bc9091950fa12218e275" }, "downloads": -1, "filename": "dotlock-0.5.0.tar.gz", "has_sig": false, "md5_digest": "c6ae70d3126a79fccf9aa835eec68add", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30690, "upload_time": "2018-09-21T05:56:13", "url": "https://files.pythonhosted.org/packages/a5/fb/15a4aecf8612136d783d362802188958a2d0cdec7b3b2f7d9d34ae2b867f/dotlock-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "da251af534a47336bca030ed804cb4e3", "sha256": "7255913b882f1865c062684d8fb78e8082e062cb39e23319aaae8a8f2f7d3b88" }, "downloads": -1, "filename": "dotlock-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "da251af534a47336bca030ed804cb4e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 40147, "upload_time": "2018-09-30T22:10:34", "url": "https://files.pythonhosted.org/packages/91/b6/29b9d248c16d387198fc2bea90e6549ac8e236a07f446100994351df7a1a/dotlock-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb8f8a35a81877da2838ee20133024e6", "sha256": "7802dcf42863c830020d65a4e8fa0d395b021c52f915cddbd26bddb44869481b" }, "downloads": -1, "filename": "dotlock-0.5.1.tar.gz", "has_sig": false, "md5_digest": "bb8f8a35a81877da2838ee20133024e6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 31021, "upload_time": "2018-09-30T22:10:36", "url": "https://files.pythonhosted.org/packages/61/5d/04034547eb12b12d6e23e4be6692c3f89d8da82416cb1a1d1a70999d591e/dotlock-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "4a80a24d39647417c3df69159d3b8a18", "sha256": "b330d04aa0e9a0ef1650474bbced7a3e8daae44bde365fb9f17f84813a948e5f" }, "downloads": -1, "filename": "dotlock-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4a80a24d39647417c3df69159d3b8a18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 40589, "upload_time": "2018-10-05T07:14:53", "url": "https://files.pythonhosted.org/packages/1b/91/533f66cd2e3d52d07478d2901540190b7dd52bbca8f336bfc19cd5c4eac7/dotlock-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c7e6a916341bd0e4f5fcbaa5fe90ea7", "sha256": "527c1daed78c458cb01a9a4b44dba3c86560922337213d6b64686d394869e06b" }, "downloads": -1, "filename": "dotlock-0.5.2.tar.gz", "has_sig": false, "md5_digest": "9c7e6a916341bd0e4f5fcbaa5fe90ea7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 31279, "upload_time": "2018-10-05T07:14:55", "url": "https://files.pythonhosted.org/packages/91/73/521b04f99f64de74f32166832a091cafe0d47a2d178466c1c6b67791e42e/dotlock-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "fd5f88e79a67f6e257242e6618d70936", "sha256": "ca5ea8a22f34cadb4962b5a1db473175cb3bf29fa93ad37384e3b95ef4c181c6" }, "downloads": -1, "filename": "dotlock-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fd5f88e79a67f6e257242e6618d70936", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 42599, "upload_time": "2018-10-10T15:46:04", "url": "https://files.pythonhosted.org/packages/1e/3e/adc6ab9000ffb247acb8362501fb9ce669ad791ea16cd3950e0da0a33951/dotlock-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a04d84b00e004127bc5879eee6ab2cf6", "sha256": "92706830f4902409a24a779bbf9ee55884a37cc33c2f9e62ddde8255f837cae8" }, "downloads": -1, "filename": "dotlock-0.6.0.tar.gz", "has_sig": false, "md5_digest": "a04d84b00e004127bc5879eee6ab2cf6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 32781, "upload_time": "2018-10-10T15:46:06", "url": "https://files.pythonhosted.org/packages/3c/1d/0468c52377d813762d91bc6a53d10ceda217777cecc6964c0f190baf2f4e/dotlock-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "074225f916a7fd713cc881715da0da63", "sha256": "82a53ac0fc43758a776245e7c682a8648b9c0e1213f4a7299d79cf103b37b085" }, "downloads": -1, "filename": "dotlock-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "074225f916a7fd713cc881715da0da63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45105, "upload_time": "2018-10-29T00:14:36", "url": "https://files.pythonhosted.org/packages/4c/2f/18a1dcc6c576ffcc98f0521fde49e7e6d7fe92eeb1cbcd98569250b6c8f2/dotlock-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c88a1778264736f7d11d8d218a32b7b1", "sha256": "a3e53ba8973b2891a8f148e030d3d29f048de440c6369f6ed0c8bc4d5d5f1f84" }, "downloads": -1, "filename": "dotlock-0.7.0.tar.gz", "has_sig": false, "md5_digest": "c88a1778264736f7d11d8d218a32b7b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35082, "upload_time": "2018-10-29T00:14:38", "url": "https://files.pythonhosted.org/packages/f4/b3/eec06afd85a59d67702edc77a8edf271d2b5217c968bdfa736d5dce1a7c2/dotlock-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "7bd113e370382e9af759ee3b3ec7ac28", "sha256": "2d0dbfeaa520209c37407acb75a6b2cd6a93678995679934c8fd85e3ab0e377e" }, "downloads": -1, "filename": "dotlock-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7bd113e370382e9af759ee3b3ec7ac28", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45114, "upload_time": "2018-11-02T15:59:39", "url": "https://files.pythonhosted.org/packages/33/ed/fd5b8454dfc47cbb9eb776a09cd2c509876af63907fed91ec1f4ea032374/dotlock-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ebb0aa5dc055cab7b1e0b4baff3da7cd", "sha256": "7f0231bcb9afc7aa1fe430a5af4d4bb349c6d6094b85c83b1324c55eaa4da69f" }, "downloads": -1, "filename": "dotlock-0.7.1.tar.gz", "has_sig": false, "md5_digest": "ebb0aa5dc055cab7b1e0b4baff3da7cd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35106, "upload_time": "2018-11-02T15:59:42", "url": "https://files.pythonhosted.org/packages/e2/77/d741353e26bef0b0b457cab224c356c69e7d56910d2a6328e5859d5abe82/dotlock-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "fb98047e2e6670f09df456da7ce7405f", "sha256": "50c9fbd08bc82721d52c53d0c1f4af61767a2dd971f38e86f45f9723f4da453a" }, "downloads": -1, "filename": "dotlock-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fb98047e2e6670f09df456da7ce7405f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45987, "upload_time": "2018-12-06T17:32:55", "url": "https://files.pythonhosted.org/packages/7e/f4/bd97bfdce2dd71905c135bd4f99876241840d08bdd8ff0b972a73bd9f942/dotlock-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e40bba96336c9460d645608089ac65c5", "sha256": "c19683e983d121ba9f5373c1266ddea82aea7996056f40792bb4a50e16b36e3c" }, "downloads": -1, "filename": "dotlock-0.7.2.tar.gz", "has_sig": false, "md5_digest": "e40bba96336c9460d645608089ac65c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35017, "upload_time": "2018-12-06T17:32:57", "url": "https://files.pythonhosted.org/packages/33/20/e7e7eb664e0221f5b5515957b9dfa4b081a69be4c0bd2ba5a05edf6f0a7b/dotlock-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "9bcd932570cbf378ba072eac8076c576", "sha256": "f5ad66f598ddcdb8a0134bd1b85721c49bf341136456fe783a6bb8acf8444952" }, "downloads": -1, "filename": "dotlock-0.7.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9bcd932570cbf378ba072eac8076c576", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46074, "upload_time": "2018-12-09T07:43:19", "url": "https://files.pythonhosted.org/packages/89/68/82bdabfb724e417b77f54328090a3f8f421e152f84987d2d1021704cffd3/dotlock-0.7.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b9e50195a9ad03e9b23a66531c596a4", "sha256": "38477af44d60cb8a1eabf195af6116b4014c7d6ef712111a030dcd7019c57daa" }, "downloads": -1, "filename": "dotlock-0.7.3.tar.gz", "has_sig": false, "md5_digest": "8b9e50195a9ad03e9b23a66531c596a4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35089, "upload_time": "2018-12-09T07:43:21", "url": "https://files.pythonhosted.org/packages/31/05/6242c87d2318fb27cb312027918b9e87adb2a553e8a6b5a213bd3d07b998/dotlock-0.7.3.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "39a7cd27d55091cdd88a425b0fd5a30b", "sha256": "d4b6b78d550ea002004e1d94a21861c39482d6f2b85a51c1eee0c0e60d49b588" }, "downloads": -1, "filename": "dotlock-0.7.4-py3-none-any.whl", "has_sig": false, "md5_digest": "39a7cd27d55091cdd88a425b0fd5a30b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46077, "upload_time": "2018-12-09T22:59:49", "url": "https://files.pythonhosted.org/packages/b7/25/911644464f775a118524fe96a0dac183acc440590bb5975483692e1262f4/dotlock-0.7.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5f606265894b8c37d6ad7d6560f2219", "sha256": "babac6b621e54425563631c956170178e0bca2943580fc2614f144ee6617cf41" }, "downloads": -1, "filename": "dotlock-0.7.4.tar.gz", "has_sig": false, "md5_digest": "f5f606265894b8c37d6ad7d6560f2219", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35097, "upload_time": "2018-12-09T22:59:50", "url": "https://files.pythonhosted.org/packages/ab/ae/7163e85b342051cbe0c6639084d4e85917798ee5fcf2591b055cc12d7c11/dotlock-0.7.4.tar.gz" } ], "0.7.5": [ { "comment_text": "", "digests": { "md5": "044fe76d096b2db86913acec43f15344", "sha256": "fd9576693beb1c5e9cf07193ff886708121a04ba273c26c625fb3d736289a932" }, "downloads": -1, "filename": "dotlock-0.7.5-py3-none-any.whl", "has_sig": false, "md5_digest": "044fe76d096b2db86913acec43f15344", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45306, "upload_time": "2018-12-11T01:37:58", "url": "https://files.pythonhosted.org/packages/eb/83/a4b62b6f76ecaa1fd7b7b82cb1bf993ba594190c67d6d26df0312874b72b/dotlock-0.7.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed81d56a5ddb9a4cde70ae71ae65fcce", "sha256": "8f36875f07fa58d3cd55f388abd30c929990864c0c7dfa1b11148fb684e4a6e2" }, "downloads": -1, "filename": "dotlock-0.7.5.tar.gz", "has_sig": false, "md5_digest": "ed81d56a5ddb9a4cde70ae71ae65fcce", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35251, "upload_time": "2018-12-11T01:38:00", "url": "https://files.pythonhosted.org/packages/53/9a/31cf260fb4c7740257fbee78452d94579d6172b73067ffe116c4f956c0ba/dotlock-0.7.5.tar.gz" } ], "0.7.6": [ { "comment_text": "", "digests": { "md5": "b8694b4debc84ea355ed11f3fe22b8db", "sha256": "8f4b6b2c5cec6e289eb254fa5c58b3af09eae3fb0e8d70e1cbaa88c5e1485df4" }, "downloads": -1, "filename": "dotlock-0.7.6-py3-none-any.whl", "has_sig": false, "md5_digest": "b8694b4debc84ea355ed11f3fe22b8db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45441, "upload_time": "2018-12-31T01:52:39", "url": "https://files.pythonhosted.org/packages/19/c0/b90ee73a957513ceb45154fcf8c492d071c0bb41c4f2fb18a65c98f3ff3f/dotlock-0.7.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70b9f11bd9cc037e245df45d8ccde600", "sha256": "bf08e7e2d8ba5b045c8216428bc25b645520f14b8045127cd92cf31022a55fc7" }, "downloads": -1, "filename": "dotlock-0.7.6.tar.gz", "has_sig": false, "md5_digest": "70b9f11bd9cc037e245df45d8ccde600", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35534, "upload_time": "2018-12-31T01:52:41", "url": "https://files.pythonhosted.org/packages/8b/12/9fe9536dd3a3ef1390a9925aef76e262af8334c3b4a54c6a2b5db7d7c344/dotlock-0.7.6.tar.gz" } ], "0.7.7": [ { "comment_text": "", "digests": { "md5": "dadb2b977142364ca21e569395a873a7", "sha256": "d73cf607c05ff7e84d397344bcfde1e1c9b220cdf69541c77b6b9d4e2a58b29d" }, "downloads": -1, "filename": "dotlock-0.7.7-py3-none-any.whl", "has_sig": false, "md5_digest": "dadb2b977142364ca21e569395a873a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46398, "upload_time": "2019-01-10T17:45:29", "url": "https://files.pythonhosted.org/packages/9d/42/5fdd09c1b08bcd9806613e2dacc366aef5eba211aa2dbbff155d5f43f99c/dotlock-0.7.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3efe4d1ee91a092c4c3dacdd446fcc06", "sha256": "311612facbd293d10cab2cfb5b9b3148f37a59c8959fe3e91579bdeaac1a37b7" }, "downloads": -1, "filename": "dotlock-0.7.7.tar.gz", "has_sig": false, "md5_digest": "3efe4d1ee91a092c4c3dacdd446fcc06", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35547, "upload_time": "2019-01-10T17:45:31", "url": "https://files.pythonhosted.org/packages/86/d7/5b1c6abfda481decd57847c6a4a5e2ab6df5482326cbab9b3b0a60329280/dotlock-0.7.7.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "f505e1eda36a98165b3fae37fcc2dda7", "sha256": "260efc320ce6afe6d70363a7f57062a572ee11fb4f5a83c703b8f9b197d263a2" }, "downloads": -1, "filename": "dotlock-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f505e1eda36a98165b3fae37fcc2dda7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45635, "upload_time": "2019-02-28T22:44:11", "url": "https://files.pythonhosted.org/packages/7f/1c/2178720b8be4aaf9f3e26c6f54f0f1d8f892055a17acb5e52b51d8428bc4/dotlock-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ace336b192f4229e7df89a53c0ce7f43", "sha256": "b630f0b3e732b611aac0dcebb3974609955772f275aa37d9211098063b2e4af3" }, "downloads": -1, "filename": "dotlock-0.8.0.tar.gz", "has_sig": false, "md5_digest": "ace336b192f4229e7df89a53c0ce7f43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 32276, "upload_time": "2019-02-28T22:44:13", "url": "https://files.pythonhosted.org/packages/90/91/d84929cebc2a2d75d3f2c5d1fd5a61d0a1aac11d849e6588b9d0b676ab74/dotlock-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "469188782aece3d18cb2ff08ff5ac897", "sha256": "e4440be144b199ab1510ab001eb8710a9328294a9d4f7536cd9b4b01638714ae" }, "downloads": -1, "filename": "dotlock-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "469188782aece3d18cb2ff08ff5ac897", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46688, "upload_time": "2019-03-01T18:39:23", "url": "https://files.pythonhosted.org/packages/e0/a7/5bd22949f038014cadc96258896b9fc1c60c279e1b0dd192d59afad352a1/dotlock-0.8.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c20c64dafd373afcfcc3a2327924d318", "sha256": "5f2f985b7b62f9484f3171071815ee4c3a61290a4f2512eb8a492e7930656e0f" }, "downloads": -1, "filename": "dotlock-0.8.1.tar.gz", "has_sig": false, "md5_digest": "c20c64dafd373afcfcc3a2327924d318", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35741, "upload_time": "2019-03-01T18:39:25", "url": "https://files.pythonhosted.org/packages/41/65/ce45399e56b3dd419fe19df7294b224a058b3d5c9d11a3687e6865c36251/dotlock-0.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "469188782aece3d18cb2ff08ff5ac897", "sha256": "e4440be144b199ab1510ab001eb8710a9328294a9d4f7536cd9b4b01638714ae" }, "downloads": -1, "filename": "dotlock-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "469188782aece3d18cb2ff08ff5ac897", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46688, "upload_time": "2019-03-01T18:39:23", "url": "https://files.pythonhosted.org/packages/e0/a7/5bd22949f038014cadc96258896b9fc1c60c279e1b0dd192d59afad352a1/dotlock-0.8.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c20c64dafd373afcfcc3a2327924d318", "sha256": "5f2f985b7b62f9484f3171071815ee4c3a61290a4f2512eb8a492e7930656e0f" }, "downloads": -1, "filename": "dotlock-0.8.1.tar.gz", "has_sig": false, "md5_digest": "c20c64dafd373afcfcc3a2327924d318", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35741, "upload_time": "2019-03-01T18:39:25", "url": "https://files.pythonhosted.org/packages/41/65/ce45399e56b3dd419fe19df7294b224a058b3d5c9d11a3687e6865c36251/dotlock-0.8.1.tar.gz" } ] }