{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Dante\n\n[![Travis](https://api.travis-ci.com/sbg/dante.svg)](https://travis-ci.com/sbg/dante)\n[![PyPI version](https://badge.fury.io/py/dante.svg)](https://badge.fury.io/py/dante)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/sbg/dante/blob/master/LICENSE)\n[![Downloads](https://pepy.tech/badge/dante)](https://pepy.tech/project/dante)\n\nDante is a dependency management and validation tool for python projects.\n\n## Purpose\n\nDante was written to simplify dependency management in python by using lock\nfiles to keep consistent environments for both development and deployment. It\ndoes not manage installation of environments and packages but focuses on\nvalidation.\n\nDante will help you keep track of dependencies with just a few simple commands.\nUnlike some other tools, it is not as opinionated, and is highly configurable.\nWhile it uses standard requirements files, a parser can be written for any\nother file type.\n\n## Recommended convention\n\nFiles to use:\n\n- **requirements.txt** for used project packages\n- **requirements.lock** for deployment packages\n- **requirements-dev.txt** for used development packages\n- **requirements-dev.lock** for all test environment packages\n\nLock files enforce exact versions for all packages.\nWhen deploying and preparing the environment only install from lock files.\n\n## Installation\n\nDante can be found on PyPI and can simply be installed with:\n\n pip install dante\n\nSince version 2, it no longer installs it's own dependencies, but instead\nvendors them to avoid possible false positives.\n\n## Configuration\n\nDante has a default configuration which can be overridden using a standard\n`setup.cfg` file. Configurable properties are as follows:\n\n\n|Property|Description|\n|---|---|\n|**checks**|Checks to run when calling the `check` command. Defaults are `conflicts`, `cyclic`, `missing`, `validate`.|\n|**ignore_list**|List of package keys to ignore. Defaults are `dante`, `pip`, `setuptools`, and `wheel`.|\n|**allow_named_versions**|Whether to allow custom named versions (invalid by default) for packages. Default is `false`.|\n|**named_version_patterns**|List of regex patterns that will determine named versions. Default is empty.|\n|**requirements_files**|List of requirement files used in the project. Defaults to `requirements.txt`.|\n|**lock_files**|List of lock files used in the project. Defaults to `requirements.lock`.|\n|**lock_file_path**|Path of the lock file that will be generated with `dante lock --save`.|\n|**parser**|Parser to use to read/write requirements/lock files. Currently only the default is supported.|\n|**any_version**|Undefined version name. Default is `Any`.|\n|**graph_name**|Name of the graph that will be created. Defaults to `dante-graph`.|\n|**graph_filename**|Filename of the graph that will be created. Defaults to `dante-graph.pdf` in the working directory.|\n|**graph_format**|Format of the graph that will be created. Defaults to `pdf`. Supports all graphviz formats.|\n|**graph_engine**|Engine of the graph that will be created. Defaults to `dot`. Supports all graphviz engines.|\n|**graph_attributes**|Custom graph attributes. Supports all graphviz attributes.|\n|**graph_strict**|Whether the graphviz graph follows strict rules. Defaults to `True`.|\n|**graph_node_attributes**|Custom graph node attributes. Defaults to setting `shape` to `box3d`. Supports all graphviz node attributes.|\n|**graph_edge_attributes**|Custom graph edge attributes. Defaults to setting `fontsize` to `10`. Supports all graphviz edge attributes.|\n\n\n## Functionality\n\n### Commands\n\n|Command|Description|\n|---|---|\n|**list**|List all dependencies\n|**tree**|Show dependency tree\n|**config**|Print configuration\n|**validate**|Validate requirements and lock files\n|**conflicts**|Check for conflicts in required dependencies\n|**cyclic**|Check for cyclic dependencies\n|**missing**|Show missing dependencies\n|**check**|Run a complete list of checks\n|**lock**|Display or generate lock file from environment and/or requirements file(s)\n|**graph**|Export a dependency graph using graphviz\n\n\nNote: Almost all command flags have shorthands that are equivalent to the first\nletter of their name. They can be displayed with the help command.\n\n### Version\n\nThe version flag will get dante to display it's installed version end exit:\n\n dante --version\n\n### Dante command\n\nDante has several flags on the CLI's top level:\n\n- `--all` - Shows all packages (Does not use the ignore list)\n- `--ignore IGNORE` - Ignore specified package. Can be used multiple times.\n\n### Dependency list\n\nLists all packages relevant to the project:\n\n dante list [--requirements REQUIREMENTS]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--requirements**|**-r**|Requirements file to use (will ignore `setup.cfg`)|\n\nUnlike `pip freeze` unless it's used with the `--all` flag dante will only\ndisplay packages that are required for the project. This is determined by using\ninstalled packages and requirements files.\n\n### Dependency tree\n\nDisplays a dependency tree for a single package or the entire environment:\n\n dante tree [--package PACKAGE] [--requirements REQUIREMENTS]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--package**|**-p**|Package to display the tree for|\n|**--requirements**|**-r**|Requirements file to use (will ignore `setup.cfg`)|\n\n### Configuration\n\nDisplays the current configuration in JSON format:\n\n dante config\n\nExample result:\n~~~json\n{\n \"dante\": {\n \"any_version\": \"Any\",\n \"checks\": [\n \"conflicts\",\n \"cyclic\",\n \"missing\",\n \"validate\"\n ],\n \"ignore_list\": [\n \"dante\",\n \"pip\",\n \"setuptools\",\n \"wheel\"\n ],\n \"allow_named_versions\": true,\n \"named_version_patterns\": [\n \"0.*version\"\n ],\n \"lock_file_path\": \"requirements-dev.lock\",\n \"requirements_files\": [\n \"requirements-dev.lock\"\n ],\n \"lock_files\": [\n \"requirements-dev.lock\"\n ],\n \"graph_name\": \"dante-graph\",\n \"graph_filename\": null,\n \"graph_format\": \"pdf\",\n \"graph_engine\": \"dot\",\n \"graph_strict\": true\n },\n \"graph_attributes\": {},\n \"graph_node_attributes\": {\n \"shape\": \"box3d\"\n },\n \"graph_edge_attributes\": {\n \"fontsize\": \"10\"\n }\n}\n~~~\n\n### Validation\n\nPerforms various checks on requirements and lock files:\n\n dante validate [-requirments REQUIREMENTS] [--lock LOCK] [--strict]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--requirements**|**-r**|Requirements file to use (will ignore `setup.cfg`)|\n|**--lock**|**-l**|Lock file to use (will ignore `setup.cfg`)|\n|**--strict**|**-r**|Run strict checks|\n\nThe checks performed are as follows:\n- Check if all set requirements are set to a version or a version range\n- Check if all locked requirements are set to an exact version\n- Check if all installed package versions match the locked requirement versions\n- Check if all required versions match the locked requirement versions\n\nSuccessful run will print out:\n\n All set requirements locked\n No unset locks found\n All package versions matching\n All requirement versions matching\n\nRunning validation with the `--strict` flag will add some additional checks:\n\n- Check if there are installed packages that are not required by anything\n- Check if there are locked requirements that are not required by anything\n\nIt is recommended to use the strict check whenever it's possible.\n\nSuccessful run will print out:\n\n No non-required packages found\n No non-required locks found\n\n### Conflicting dependencies\n\nDetects conflicts between installed packages:\n\n dante conflicts\n\nConflicts can occur when multiple packages require the same package with\nincompatible versions (e.g. one requires <1.0.0 and the other >2.0.0).\nSuccessful run will print out:\n\n No conflicts found\n\n### Cyclic dependencies\n\nDetects cyclical dependencies in installed packages:\n\n dante cyclic\n\nThis can occur when there is a cyclical path in package dependencies (e.g.\n`package1` requires `package2` which requires `package3`, which in turn\nrequires `package1`). Successful run will print out:\n\n No cyclic dependencies found\n\n### Missing dependencies\n\nDetects if there are required packages that are not installed in the environment:\n\n dante missing [--requirements REQUIREMENTS]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--requirements**|-r|Requirements file to use (will ignore `setup.cfg`)|\n\n\nSuccessful run will print out:\n\n No missing dependencies found\n\n## Check\n\nRuns all defined checks at once:\n\n dante check [--requirements REQUIREMENTS] [--lock LOCK] [--strict]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--requirements**|**-r**|Requirements file to use (will ignore `setup.cfg`)|\n|**--lock**|**-l**|Lock file to use (will ignore `setup.cfg`)|\n|**--strict**|**-r**|Run strict checks|\n\n\nSuccessful run with all checks will print out:\n\n All set requirements locked\n No unset locks found\n All package versions matching\n All requirement versions matching\n No non-required packages found\n No non-required locks found\n No conflicts found\n No cyclic dependencies found\n No missing dependencies found\n\n## Lock\n\nDisplays or saves locked requirements for the current project:\n\n dante lock [--requirements REQUIREMENTS] [--save] [--file FILE]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--requirements**|**-r**|Requirements file to use (will ignore `setup.cfg`)|\n|**--save**|**-s**|Save to file|\n|**--file**|**-f**|Filename to save to (will override `setup.cfg`)|\n\nLocked requirements are determined by walking through all installed packages\nand provided requirements recursively retrieving their dependencies.\n\nOnly the requirements that are needed for the project will be returned.\n\n## Graph\n\nReturns a dependency graph description or renders it to a file:\n\n dante graph [--strict] [--render] [--view] [--name NAME] [--filename FILENAME]\n [--format FORMAT] [--engine ENGINE]\n [--graph_attr GRAPH_ATTR] [--node_attr NODE_ATTR]\n [--edge_attr EDGE_ATTR]\n\nFlag|Shorthand|Description\n|---|---|---|\n|**--render**|**-r**|Render graph to file|\n|**--view**|**-v**|Display graph after rendering|\n|**--strict**|**-s**|Use strict graph rules|\n|**--name**| |Graph name|\n|**--filename**| |Filename to save graph to|\n|**--format**| |Graph file format|\n|**--engine**| |Graph engine|\n|**--graph_attr**| |Graph attributes|\n|**--node_attr**| |Graph node attributes|\n|**--edge_attr**| |Graph edge attributes|\n\n## Api\n\nDante exposes it's operations through the api module, so they can be imported\nand used in your libraries/applications:\n\nExample for retrieving installed packages:\n~~~python\nfrom dante.api import dependency_list\ninstalled_packages = dependency_list()\n~~~\n\n## CI\n\nDante can be used as a CI checking tool, with proper configuration in\n`setup.cfg` configured, all it takes to run a check on any CI is:\n\n dante check\n\nDante includes error codes when run through the CLI, so it will fail the build\nif any problems are detected.\n\nNote: It's recommended to use the strict check whenever it's possible, since\nunnecessary requirements can still cause problems in the environments\n(e.g. can overwrite other package's files...):\n\n dante check --strict\n\n## Tests\n\nTo run tests simply install all dependencies from `requirements-dev.lock` and run:\n~~~\npytest --cov-config setup.cfg\n~~~\n\n\n## Roadmap:\n\n- Full documentation", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sbg/dante", "keywords": "lock,dependency,pip,requirement,sbg,sevenbridges", "license": "Apache Software License 2.0", "maintainer": "Seven Bridges Genomics Inc.", "maintainer_email": "quicksilver.machine@gmail.com", "name": "dante", "package_url": "https://pypi.org/project/dante/", "platform": "Windows", "project_url": "https://pypi.org/project/dante/", "project_urls": { "Homepage": "https://github.com/sbg/dante" }, "release_url": "https://pypi.org/project/dante/2.0.7/", "requires_dist": null, "requires_python": "", "summary": "Python dependency management utility", "version": "2.0.7" }, "last_serial": 5913634, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "25baf4747faf0d7bec64757c3080300b", "sha256": "00e6abe10e963fefc9fbf17700d1f95b86514318474af151db3b4b22fb999b0f" }, "downloads": -1, "filename": "dante-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "25baf4747faf0d7bec64757c3080300b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13752, "upload_time": "2017-11-03T15:04:00", "url": "https://files.pythonhosted.org/packages/1f/18/a2ddc77be9255275b5681f82486a4bbe99b79bd25f8335a8b5f3c736bfcb/dante-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c2ab86c7ab21dcced19eb5b6e3d971c", "sha256": "45d0c2ce7b9b348ecee34d7f29b521f441bda8c69aa8bbf4e5b2559daa289d1b" }, "downloads": -1, "filename": "dante-1.0.0.tar.gz", "has_sig": false, "md5_digest": "5c2ab86c7ab21dcced19eb5b6e3d971c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9546, "upload_time": "2017-11-03T15:04:02", "url": "https://files.pythonhosted.org/packages/fd/ef/5f5daade93c029a9d2e5e50c56263f0312dcd4fda856e113ae5451d079e9/dante-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c8c92d9e9008556fd21c630ca9c6de9d", "sha256": "5f9de66b5ca85f841ba0d8890a67249d94a18eb405cfc446c95c741191da8ae0" }, "downloads": -1, "filename": "dante-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c8c92d9e9008556fd21c630ca9c6de9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13836, "upload_time": "2017-11-03T15:39:04", "url": "https://files.pythonhosted.org/packages/48/f7/55aac04bef821bb4f85edf433cff2467ccb9623e7608081036feef1b3849/dante-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c245f2c0a0af2b2f84d02fe5c5f30fa", "sha256": "13a75582841d5171d0b903b1fffa46c4b4c0bf5bb50df84b8186faf750bddeb7" }, "downloads": -1, "filename": "dante-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0c245f2c0a0af2b2f84d02fe5c5f30fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9650, "upload_time": "2017-11-03T15:39:06", "url": "https://files.pythonhosted.org/packages/e5/4b/ec21287c6d5c7c94c30792d9389fb57996730ddce42e5c3c35cdd54008d7/dante-1.0.1.tar.gz" } ], "1.0.10": [ { "comment_text": "", "digests": { "md5": "5001dc484d2988e8e077b9fecdf79a99", "sha256": "30cd128d27d6f6ea79a9447bbaa140e1f9cb2eebb164045940ad1bd705163f3f" }, "downloads": -1, "filename": "dante-1.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "5001dc484d2988e8e077b9fecdf79a99", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20320, "upload_time": "2017-11-14T14:59:14", "url": "https://files.pythonhosted.org/packages/93/ef/35ed5a576a03c93fd24705e5028e6805f35d489e0daa4a6355f0d448e453/dante-1.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2ce678f7900e70798733c0efa2e9ab7", "sha256": "a1e26a15f7f0883a95228b57ffbd22f67c0a219b3c92730224464f6d486d4e0b" }, "downloads": -1, "filename": "dante-1.0.10.tar.gz", "has_sig": false, "md5_digest": "b2ce678f7900e70798733c0efa2e9ab7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18638, "upload_time": "2017-11-14T14:59:15", "url": "https://files.pythonhosted.org/packages/dc/7d/8097e69364886157f78a020f6a365240192015ddce98a633893e1324a450/dante-1.0.10.tar.gz" } ], "1.0.11": [ { "comment_text": "", "digests": { "md5": "2d237aaf159500bba1e3acad1bc0447a", "sha256": "bffc18cda0f4347ec14fcfdfd0453921e7c876399a42705d9a9136c2e1d44c2a" }, "downloads": -1, "filename": "dante-1.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "2d237aaf159500bba1e3acad1bc0447a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20575, "upload_time": "2017-12-08T10:09:41", "url": "https://files.pythonhosted.org/packages/0f/8e/e0daeba7392948d77102873f609625026e2225acad1c7b94f4af9a9576d7/dante-1.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3027444cc441eefaef0dd234b1c28252", "sha256": "e3c9093427609fb6ac8b86d11677cd98912b84bf9d5c5a352d624a8d59307504" }, "downloads": -1, "filename": "dante-1.0.11.tar.gz", "has_sig": false, "md5_digest": "3027444cc441eefaef0dd234b1c28252", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18885, "upload_time": "2017-12-08T10:09:44", "url": "https://files.pythonhosted.org/packages/16/a0/13f5fe76bded123c808718f29d90fcc027e88f916c07188355ce2465db0b/dante-1.0.11.tar.gz" } ], "1.0.12": [ { "comment_text": "", "digests": { "md5": "75b9a759b56642db6b83986abd8a50bc", "sha256": "d853dd9434473a788a9b4c37940aea2e3d909115861cb275dce53e7fac4beeca" }, "downloads": -1, "filename": "dante-1.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "75b9a759b56642db6b83986abd8a50bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20777, "upload_time": "2017-12-22T11:04:28", "url": "https://files.pythonhosted.org/packages/71/30/ac0b950cd22a903e5a0eb549a141b1cd5010c9d16901c899bd38dfd8e1b5/dante-1.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ff99562abecd07223c1a03fa6c8a8fa", "sha256": "7c53771c1d5b80cf4df2fd4630b9d45d018d2c3b2ffe410744f3cc6e350585f9" }, "downloads": -1, "filename": "dante-1.0.12.tar.gz", "has_sig": false, "md5_digest": "1ff99562abecd07223c1a03fa6c8a8fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19069, "upload_time": "2017-12-22T11:04:29", "url": "https://files.pythonhosted.org/packages/66/1f/8fde16d9f42537d4ab18c5d730ab68b7658eedb4979b8808f9d63ddd233c/dante-1.0.12.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8b311a067c05acc001e2d882fd088e8d", "sha256": "1b27c1752998eb1c0eac34828e29b06cdf1bff3982181d400c864417da052fd4" }, "downloads": -1, "filename": "dante-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8b311a067c05acc001e2d882fd088e8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15045, "upload_time": "2017-11-06T10:16:31", "url": "https://files.pythonhosted.org/packages/db/af/f32033f1230dc6229756c908d1e5976ba0cefe263c77cb2a590d16b1f62c/dante-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da3663716c29571753ac6190459cb711", "sha256": "1c5311410b9509c61a1f6156f9837d578474a9232d9b0982564931ff06d3c69d" }, "downloads": -1, "filename": "dante-1.0.2.tar.gz", "has_sig": false, "md5_digest": "da3663716c29571753ac6190459cb711", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10936, "upload_time": "2017-11-06T10:16:33", "url": "https://files.pythonhosted.org/packages/05/70/b90bdd2c0b29bf285fcb213218e4819dbacacf5666396dae9af483d4dd91/dante-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "90dcfe78258827f12438f46df6d0ed6a", "sha256": "eab4b19a2aeda02823144e666e44bac02ded842699b142b11b1f6855b46a5097" }, "downloads": -1, "filename": "dante-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "90dcfe78258827f12438f46df6d0ed6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19267, "upload_time": "2017-11-06T11:21:38", "url": "https://files.pythonhosted.org/packages/ce/40/1ec0f25652b23cf1e70dbc14fe315bbf5554535def5f1ecd9ad3770b1601/dante-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "159ce15e09bb6b16cbb4e3d9f314329e", "sha256": "1955e91e810c5d230178445e081cb32e1f9e063febc0cd19e503699f47927b52" }, "downloads": -1, "filename": "dante-1.0.3.tar.gz", "has_sig": false, "md5_digest": "159ce15e09bb6b16cbb4e3d9f314329e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15709, "upload_time": "2017-11-06T11:21:39", "url": "https://files.pythonhosted.org/packages/df/31/d173fd90282e06abc3b62a029ee3bf200d47c306d5312675614665e50b24/dante-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "141a42a281f37a7f66f3eae72f6afe18", "sha256": "cd1eea2c54bf5bea2b260f9b0047d89c60f551d5f764afa7280965a7f89b4016" }, "downloads": -1, "filename": "dante-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "141a42a281f37a7f66f3eae72f6afe18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19596, "upload_time": "2017-11-06T11:43:44", "url": "https://files.pythonhosted.org/packages/28/a7/0d0777dd020c344920e6e5a348d06a4d05b729dc44a2f3223d2124406581/dante-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a477e76a2220b1d5a56896146fbe9da5", "sha256": "c42d5535ab52e9acf323152a1cccaea7e295527f6d24e5f9307ff7b0492540d4" }, "downloads": -1, "filename": "dante-1.0.4.tar.gz", "has_sig": false, "md5_digest": "a477e76a2220b1d5a56896146fbe9da5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15923, "upload_time": "2017-11-06T11:43:46", "url": "https://files.pythonhosted.org/packages/55/80/c8eec7090231cf5cd99aaa029c97568880e34e41e7e19c030251dfac4232/dante-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "2eed632815048a8836d881f40f7da08e", "sha256": "a1449a18f5966f326eace079724ae60287f27d235bc5ea9d2802e6a6522dc0b1" }, "downloads": -1, "filename": "dante-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2eed632815048a8836d881f40f7da08e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19556, "upload_time": "2017-11-06T11:46:14", "url": "https://files.pythonhosted.org/packages/28/d9/779b4782b84b808555b384cf97549a96bba593d1c4f90c18f0db66a59eb5/dante-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b49dcabba8ce11adf4ca24315ae507b9", "sha256": "ba296928fbfaaf3d77451e027fb20b07ff23fdf574d39722948adaf7974ecc23" }, "downloads": -1, "filename": "dante-1.0.5.tar.gz", "has_sig": false, "md5_digest": "b49dcabba8ce11adf4ca24315ae507b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15920, "upload_time": "2017-11-06T11:46:15", "url": "https://files.pythonhosted.org/packages/37/a1/825405b5ebc387040ed91ad7a44c24b18c3cae481a309c7c2ba8fff32e37/dante-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "d5dae378b17a525c5d61ea039c0c9b4f", "sha256": "f5f2ac2394f0c05f6e3e1f8049d0a69aa34240de4850fcaebac89a6d31aeadaa" }, "downloads": -1, "filename": "dante-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "d5dae378b17a525c5d61ea039c0c9b4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19849, "upload_time": "2017-11-06T15:29:32", "url": "https://files.pythonhosted.org/packages/35/3c/842711dba3fd60d9e1b45b369739ce94381d53950fceed3ced4f2487d36b/dante-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35a5eddad361ca2dd673fb5dbdd412c2", "sha256": "e696c3d1a0c06f5e9ab5b28c236d912bfef2123a8b0d6f97ed3d32e5a12c148a" }, "downloads": -1, "filename": "dante-1.0.6.tar.gz", "has_sig": false, "md5_digest": "35a5eddad361ca2dd673fb5dbdd412c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16102, "upload_time": "2017-11-06T15:29:34", "url": "https://files.pythonhosted.org/packages/13/ba/def20bb171e83bdae71c1723661531ec63e66e870d7059defe5c62374fe5/dante-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "410033d8f55e4f483889e32e9a0465a1", "sha256": "c95561b307d8d0abc2de4d71ac82b12bab45bc01c99bc7c5db7f2d7c25cd0ff7" }, "downloads": -1, "filename": "dante-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "410033d8f55e4f483889e32e9a0465a1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19886, "upload_time": "2017-11-08T11:39:49", "url": "https://files.pythonhosted.org/packages/b8/f9/6ba4841d29c23d4796e26fc37fbe66f90339b5e56f6eab1ea0cf986f7d35/dante-1.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f1b74ab5a2d12f5c913a68183ee73d7", "sha256": "690bf2130e6940f479f0abdd35c98e761c2a42f83665f38646b0da03a5f2082e" }, "downloads": -1, "filename": "dante-1.0.7.tar.gz", "has_sig": false, "md5_digest": "2f1b74ab5a2d12f5c913a68183ee73d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16104, "upload_time": "2017-11-08T11:39:50", "url": "https://files.pythonhosted.org/packages/d5/58/689ea0e15fb728b5f21dc22ea79e4cdf20213ca87faf680ff320a8555d12/dante-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "7e226ac37a46f4016de28318939c3268", "sha256": "2d3966734c3748aca6f5d6089dcfb8170965326f297d46cb88cc9659115314f9" }, "downloads": -1, "filename": "dante-1.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "7e226ac37a46f4016de28318939c3268", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19925, "upload_time": "2017-11-08T11:43:22", "url": "https://files.pythonhosted.org/packages/7d/5c/ffa4adc1748075dfb26885733dbc56c72f2b082ffb6ebfda8b3d56a90757/dante-1.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50cfde36d5f4148ae4f4ddf0e0d87eca", "sha256": "9b057dad2f48e5bdb1bc0661f44fc03ac4b540e23701117451163c18ba804bfe" }, "downloads": -1, "filename": "dante-1.0.8.tar.gz", "has_sig": false, "md5_digest": "50cfde36d5f4148ae4f4ddf0e0d87eca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16144, "upload_time": "2017-11-08T11:43:23", "url": "https://files.pythonhosted.org/packages/96/a5/12c6fc21eaef5d32d8694a2cf8b8ad8bd321f3b3aca6d749bc40a0ddd901/dante-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "1fb1c18633c9373e6a6d41d63e967830", "sha256": "b5014d92e1789284f7a2952d3c8598e3c2c176c49107b75ff3394ce2ea402994" }, "downloads": -1, "filename": "dante-1.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "1fb1c18633c9373e6a6d41d63e967830", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20100, "upload_time": "2017-11-14T10:19:16", "url": "https://files.pythonhosted.org/packages/b6/9f/eb28e8e18a97571d06c7e7b4e359432e91c6746dad574a6edb406695d4c4/dante-1.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2dc0c018cb4a74b31b5cca6d1f2f529", "sha256": "c6b2b33dd70137b9a83ee371959a8b8d482cddb11c3b529b6abc63c4903b08c7" }, "downloads": -1, "filename": "dante-1.0.9.tar.gz", "has_sig": false, "md5_digest": "a2dc0c018cb4a74b31b5cca6d1f2f529", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18442, "upload_time": "2017-11-14T10:19:18", "url": "https://files.pythonhosted.org/packages/96/87/6b8bd6b9b0979fd5513de56b8807254b7b93acb31299db002cca9c116aa4/dante-1.0.9.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "bdc85550c75ec6b22fbb4d945221924a", "sha256": "00195a7536caed04c621c5777a1fe99b284cd5b7d9eb6b6b98362a3f9b4f6bd9" }, "downloads": -1, "filename": "dante-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bdc85550c75ec6b22fbb4d945221924a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 172482, "upload_time": "2019-06-05T10:19:54", "url": "https://files.pythonhosted.org/packages/cb/5d/915e7ba802690b6354b48aef2843ad2fe702ea2ba1906298db742f289461/dante-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e23e39ff88c22057efee9fde95edb6eb", "sha256": "57cc2daea27c22a7edd8513bf9f12443a1fcd17e664724005d100b92ad1cee23" }, "downloads": -1, "filename": "dante-2.0.0.tar.gz", "has_sig": false, "md5_digest": "e23e39ff88c22057efee9fde95edb6eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 150092, "upload_time": "2019-06-05T10:19:56", "url": "https://files.pythonhosted.org/packages/e6/c3/dfe5bee624031bc971a24995297b17de3fda728c10b6225d6721a86c43a2/dante-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "d8b73c54b43b6872f0993d1196041fb3", "sha256": "e1e24b0d7fe7118bc4727d0d29988447aa345db751086f219396ec8e11e92b99" }, "downloads": -1, "filename": "dante-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d8b73c54b43b6872f0993d1196041fb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 172481, "upload_time": "2019-06-05T10:29:44", "url": "https://files.pythonhosted.org/packages/7a/6e/16a7b67bff183059493770eb4e47f20d68ad5100838d4db11903fd21c97c/dante-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a7b56cbe24d23c643aee78c809e9e45", "sha256": "f61d53987f168c038d60393afee4eb39694cad70fa08ffd1df60a1474158c927" }, "downloads": -1, "filename": "dante-2.0.1.tar.gz", "has_sig": false, "md5_digest": "1a7b56cbe24d23c643aee78c809e9e45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 170164, "upload_time": "2019-06-05T10:29:46", "url": "https://files.pythonhosted.org/packages/8e/11/7fde0e78282c88b34c8f6f20a8043f76300ed04a8d0abb35f681850b28f1/dante-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "b348b01ad2b75a98e14dee791d9db4c4", "sha256": "864d6f4851f510b450a52230af07f61d2e2c883992f7f170f6ceac2459a86ed0" }, "downloads": -1, "filename": "dante-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b348b01ad2b75a98e14dee791d9db4c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 175839, "upload_time": "2019-06-05T11:26:25", "url": "https://files.pythonhosted.org/packages/5c/54/ba0332adf0a9301baf78ff2d978e959bce941f5c4c795ce1ff6f7f9b3105/dante-2.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9e304fa547c6a9e377a15fc11bdaf4b", "sha256": "a3de74dec0f27afb2e6f3d97518debc9b9a002516bcb9c5d74e5b1eaa6f84d0f" }, "downloads": -1, "filename": "dante-2.0.2.tar.gz", "has_sig": false, "md5_digest": "d9e304fa547c6a9e377a15fc11bdaf4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174493, "upload_time": "2019-06-05T11:26:27", "url": "https://files.pythonhosted.org/packages/f2/7c/0109f85ef9a632ced94a1ab7649066a2623ebb2dabb03fe57b375c00b0f0/dante-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "4070b96b79e99621ce0ced7f00744b4b", "sha256": "ab54e310a0366946f58a7c686ca62d6a4ada37f83483ea0fb5daf9070c795ee4" }, "downloads": -1, "filename": "dante-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4070b96b79e99621ce0ced7f00744b4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 175962, "upload_time": "2019-06-05T14:05:02", "url": "https://files.pythonhosted.org/packages/c2/fd/0b1584cc9f52fa94098cbb7671e40175b2b635e23b2023ce2ebe08bcf292/dante-2.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92e973124bbc00137b0af88a580c7546", "sha256": "7bd8f4c5ee86c4abd6533356335ab5f454d20382e019161373dc11902f6f9f6b" }, "downloads": -1, "filename": "dante-2.0.3.tar.gz", "has_sig": false, "md5_digest": "92e973124bbc00137b0af88a580c7546", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174679, "upload_time": "2019-06-05T14:05:04", "url": "https://files.pythonhosted.org/packages/14/01/5f2643dd6421251e18621376013489b668579e7e64ed113ebc05784205f7/dante-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "416ace894295be6f64d94a47db746224", "sha256": "9235793772061bbdffebca8492252a2036afeb4daba1cc96bac6400599b4d083" }, "downloads": -1, "filename": "dante-2.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "416ace894295be6f64d94a47db746224", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 176000, "upload_time": "2019-06-12T10:13:43", "url": "https://files.pythonhosted.org/packages/5d/8e/a2fe6083384801786f7fa2d9b38edfe0c8192f0bb8e0196caf58bc6ac665/dante-2.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95233448a1912415b5aa90486015f8d8", "sha256": "5c53876de2e780149a1b2bd7e28944e840f0ffd818f7ddb55645ecd191c1fcc2" }, "downloads": -1, "filename": "dante-2.0.4.tar.gz", "has_sig": false, "md5_digest": "95233448a1912415b5aa90486015f8d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174780, "upload_time": "2019-06-12T10:14:12", "url": "https://files.pythonhosted.org/packages/48/27/e8a5b5003c6470a21d19ba3993bca340bd42c206f526b7600be45a998b44/dante-2.0.4.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "a86edfaee6ddbdddd36dc9f19f3f2eae", "sha256": "3c61ebd8b51fca7fa7dad34971cbbdf7e8b8d5f712e6857f29073308c6e09f0c" }, "downloads": -1, "filename": "dante-2.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a86edfaee6ddbdddd36dc9f19f3f2eae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 175764, "upload_time": "2019-06-13T10:45:01", "url": "https://files.pythonhosted.org/packages/48/97/8de23e9a4f15b961725ebebb3da09bdad81403286b8b9c5dc3af1e1739a9/dante-2.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "125ddaca18e3d75ed0c2dc8aa3df2ec7", "sha256": "0e6bc7a64ffd712a7164bed4566874e9b2969af7580b12bd7de7e897cf028087" }, "downloads": -1, "filename": "dante-2.0.5.tar.gz", "has_sig": false, "md5_digest": "125ddaca18e3d75ed0c2dc8aa3df2ec7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 173656, "upload_time": "2019-06-13T10:45:03", "url": "https://files.pythonhosted.org/packages/85/26/38994993f27311ab35db8f96154b85753bb7a97ece305e2c874755be9771/dante-2.0.5.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "3dccd79f1e1498c4fb764983805bc2a6", "sha256": "28dc2e13bec3417cf9dca42b6794e6b49606ea7ba64ecf24819fdb86abb14ed4" }, "downloads": -1, "filename": "dante-2.0.6.tar.gz", "has_sig": false, "md5_digest": "3dccd79f1e1498c4fb764983805bc2a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 175806, "upload_time": "2019-06-19T15:25:43", "url": "https://files.pythonhosted.org/packages/85/e9/34bbde3d677ebd35da39c37857e8cedb00ef44f30203a1bf97705e732c83/dante-2.0.6.tar.gz" } ], "2.0.7": [ { "comment_text": "", "digests": { "md5": "e1bf821204836a3aee60776743ad85c3", "sha256": "8d1fd93ece260298e5dbf6682e686d6edae7070409e5189fd8040214514ce247" }, "downloads": -1, "filename": "dante-2.0.7.tar.gz", "has_sig": false, "md5_digest": "e1bf821204836a3aee60776743ad85c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 175838, "upload_time": "2019-10-01T16:35:25", "url": "https://files.pythonhosted.org/packages/1d/6d/fe993ee18060fa13d027c6d54fbf62b637435d6bc702643799e95574bc66/dante-2.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e1bf821204836a3aee60776743ad85c3", "sha256": "8d1fd93ece260298e5dbf6682e686d6edae7070409e5189fd8040214514ce247" }, "downloads": -1, "filename": "dante-2.0.7.tar.gz", "has_sig": false, "md5_digest": "e1bf821204836a3aee60776743ad85c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 175838, "upload_time": "2019-10-01T16:35:25", "url": "https://files.pythonhosted.org/packages/1d/6d/fe993ee18060fa13d027c6d54fbf62b637435d6bc702643799e95574bc66/dante-2.0.7.tar.gz" } ] }