diff --git a/CHANGES.txt b/CHANGES.txt index d597a35..e90dd22 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,12 +1,41 @@ Changelog ========= -4.3.4 (unreleased) +5.0b3 (unreleased) ------------------ - Nothing changed yet. +5.0b2 (2025-07-10) +------------------ + +- Fixed a bug that failed to find license-expression fields. + + +5.0b1 (2025-07-04) +------------------ + +- Changed the internal metadata names to match Core Metadata. This brings + less confusion, especially since setuptools and PyPI aren't exactly the + same either, so let's pick the offical standard and run with it. + +- Added a rating for if the wheel fails to build. Unfortunately it's + impossible to get a proper error out of it, so the message tells + you to run python -m build. + + +5.0a1 (2025-07-02) +------------------ + +- Removed support for fetching data via monkey-patching setup.py. + +- Added a warning if you have only a setup.cfg, something that is + working with some tools, but is not officially supported. + +- Some general cleanups and simplifications thanks to those changes. + + 4.3.3 (2025-07-03) ------------------ diff --git a/Makefile b/Makefile index 28cc050..b8246e7 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,3 @@ clean-pyc: ## remove Python file artifacts find . -name '__pycache__' -exec rm -fr {} + find . -name 'pip-selfcheck.json' -exec rm -fr {} + find . -name 'pyvenv.cfg' -exec rm -fr {} + - -prepare-release: - python fetch_classifiers.py diff --git a/pyproject.toml b/pyproject.toml index 55ec8d7..81954b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,2 +1,6 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + [tool.black] line-length = 120 diff --git a/pyroma/__init__.py b/pyroma/__init__.py index 038d13c..7a0560d 100644 --- a/pyroma/__init__.py +++ b/pyroma/__init__.py @@ -75,7 +75,8 @@ def skip_tests(arg): def main(): parser = ArgumentParser() parser.add_argument( - "package", help="A python package, can be a directory, a distribution file or a PyPI package name." + "package", + help="A python package, can be a directory, a distribution file or a PyPI package name.", ) parser.add_argument( "-n", diff --git a/pyroma/distributiondata.py b/pyroma/distributiondata.py index fb8c666..3326e73 100644 --- a/pyroma/distributiondata.py +++ b/pyroma/distributiondata.py @@ -43,7 +43,7 @@ def get_data(path): raise ValueError("Unknown file type: " + ext) projectpath = os.path.join(tempdir, basename) - data = projectdata._get_data(projectpath) + data = projectdata.get_build_data(projectpath) finally: shutil.rmtree(tempdir, ignore_errors=True) diff --git a/pyroma/projectdata.py b/pyroma/projectdata.py index d296dc5..e5859f4 100644 --- a/pyroma/projectdata.py +++ b/pyroma/projectdata.py @@ -1,31 +1,30 @@ # Extracts information from a project import build import build.util -import logging import os import pathlib -import sys -import tokenize -from copy import copy -from distutils import core +import re -try: # config renamed to config.setupcfg on Setuptools >=61 adding pyproject.toml support - from setuptools.config.setupcfg import read_configuration -except ModuleNotFoundError: - from setuptools.config import read_configuration +from setuptools.config.setupcfg import read_configuration +from distutils.errors import DistutilsFileError +# MAP from old setup.py type keys to Core Metadata keys METADATA_MAP = { - "summary": "description", - "classifier": "classifiers", - "project_url": "project_urls", - "home_page": "url", - "description": "long_description", - "description_content_type": "long_description_content_type", - "requires_python": "python_requires", + "description": "summary", + "classifiers": "classifier", + "project-urls": "project-url", + "url": "home-page", + "long-description": "description", + "long-description-content-type": "description-content-type", + "python-requires": "requires-python", } -def build_metadata(path, isolated=None): +def normalize(name): + return re.sub(r"[-_.]+", "-", name).lower() + + +def wheel_metadata(path, isolated=None): # If explictly specified whether to use isolation, pass it directly if isolated is not None: return build.util.project_wheel_metadata(path, isolated=isolated) @@ -34,32 +33,47 @@ def build_metadata(path, isolated=None): try: return build.util.project_wheel_metadata(path, isolated=False) # If building with build isolation fails, e.g. missing build deps, try with it - except build.BuildBackendException: + except (build.BuildException, build.BuildBackendException): return build.util.project_wheel_metadata(path, isolated=True) -def map_metadata_keys(metadata): +def build_metadata(path, isolated=None): + try: + metadata = wheel_metadata(path, isolated) + except build.BuildBackendException: + # The backend failed spectacularily. This happens with old packages, + # when we can't build a wheel. It's not always a fatal error. F ex, if + # you are getting info for a package from PyPI, we already have the + # metadata from PyPI, we just couldn't get the additional build data. + return {"_wheel_build_failed": True} + + # As far as I can tell, we can't trust that the builders normalize the keys, + # so we do it here. Definitely most builders do not lower case them, which + # Core Metadata Specs recommend. data = {} - if "Description" not in metadata.keys(): - # Having the description as a payload tends to add two newlines, we clean that up here: - long_description = metadata.get_payload().strip() + "\n" - data["long_description"] = long_description - for key in set(metadata.keys()): value = metadata.get_all(key) + key = normalize(key) + if len(value) == 1: value = value[0] if value.strip() == "UNKNOWN": + # XXX This is also old behavior that may not hjappen any more. continue - key = key.lower().replace("-", "_") - if key in METADATA_MAP: - key = METADATA_MAP[key] + data[key] = value + + if "description" not in data.keys(): + # XXX I *think* having the description as a payload doesn't happen anymore, but I haven't checked. + # Having the description as a payload tends to add two newlines, we clean that up here: + description = metadata.get_payload().strip() + if description: + data["description"] = description + "\n" return data def get_build_data(path, isolated=None): - metadata = map_metadata_keys(build_metadata(path, isolated=isolated)) + metadata = build_metadata(path, isolated=isolated) # Check if there is a pyproject_toml if "pyproject.toml" not in os.listdir(path): metadata["_missing_pyproject_toml"] = True @@ -67,15 +81,28 @@ def get_build_data(path, isolated=None): def get_setupcfg_data(path): - # Note: By default, setup.cfg will read the pyroma.git/setup.cfg - forcing explicit setup.cfg under test's file path data = read_configuration(str(pathlib.Path(path) / "setup.cfg")) - metadata = data["metadata"] + + metadata = {} + # Python requires is under "options" in setup.cfg (and so are other + # requirements, but those are optional and have no tests) + if "python_requires" in data["options"]: + metadata["requires-python"] = data["options"]["python_requires"] + + for key, value in data["metadata"].items(): + key = normalize(key) + if key in METADATA_MAP: + key = METADATA_MAP[key] + metadata[key] = value + return metadata def get_data(path): data = _get_data(path) - data["_path"] = path + if data: + # We got something, add the path to it. + data["_path"] = path return data @@ -88,193 +115,14 @@ def _get_data(path): # Let's see if there is a setup.cfg: try: metadata = get_setupcfg_data(path) - # Yes, there's a setup.cfg. Pyroma accepted this earlier, but that was probably - # a mistake. For the time being, warn for it, but in a future version just fail. + # Yes, there's a setup.cfg. Pyroma accepted this earlier, because it worked, + # and at some point the idea was that that setup.cfg should replace setup.py. + # But that never happened, and instead pyproject.toml arrived. metadata["_missing_build_system"] = True return metadata - except Exception: - # No, that didn't work. Hide this second exception and raise the first: - pass - raise e - - except Exception: - logging.exception("Exception raised during metadata preparation") - metadata = get_setuppy_data(path) - metadata["_stoneage_setuppy"] = True - return metadata - - -class FakeContext: - def __init__(self, path): - self._path = path - - def __enter__(self): - self._old_path = os.path.abspath(os.curdir) - if self._old_path in sys.path: - sys.path.remove(self._old_path) - os.chdir(self._path) - - if self._path not in sys.path: - sys.path.insert(0, self._path) - self._path_appended = True + except DistutilsFileError: + # There is no setup.cfg either, so this isn't a python package at all + return {"_no_config_found": True} else: - self._path_appended = False - - def __exit__(self, exc_type, exc_val, exc_tb): - if self._path_appended: - sys.path.remove(self._path) - sys.path.append(self._old_path) - - os.chdir(self._old_path) - - -class SetupMonkey: - used_setuptools = False - - def distutils_setup_replacement(self, **kw): - self._distutils_setup(**kw) - - def setuptools_setup_replacement(self, **kw): - self.used_setuptools = True - self._setuptools_setup(**kw) - - def get_data(self): - return self._kw - - def __enter__(self): - import distutils.core - - self._distutils_setup = distutils.core.setup - distutils.core.setup = self.distutils_setup_replacement - - try: - import setuptools - - self._setuptools_setup = setuptools.setup - setuptools.setup = self.setuptools_setup_replacement - except ImportError: - self._setuptools_setup = None - - self._kw = {} - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - import distutils.core - - distutils.core.setup = self._distutils_setup - if self._setuptools_setup is not None: - import setuptools - - setuptools.setup = self._setuptools_setup - - -# This is a version of distutils run_setup() that doesn't give -# up just because Setuptools throws errors if you try to exec it. -def run_setup(script_name, script_args=None, stop_after="run"): - """Run a setup script in a somewhat controlled environment, and - return the Distribution instance that drives things. This is useful - if you need to find out the distribution meta-data (passed as - keyword args from 'script' to 'setup()', or the contents of the - config files or command-line. - - 'script_name' is a file that will be run with 'execfile()'; - 'sys.argv[0]' will be replaced with 'script' for the duration of the - call. 'script_args' is a list of strings; if supplied, - 'sys.argv[1:]' will be replaced by 'script_args' for the duration of - the call. - - 'stop_after' tells 'setup()' when to stop processing; possible - values: - init - stop after the Distribution instance has been created and - populated with the keyword arguments to 'setup()' - config - stop after config files have been parsed (and their data - stored in the Distribution instance) - commandline - stop after the command-line ('sys.argv[1:]' or 'script_args') - have been parsed (and the data stored in the Distribution) - run [default] - stop after all commands have been run (the same as if 'setup()' - had been called in the usual way - - Returns the Distribution instance, which provides all information - used to drive the Distutils. - """ - if stop_after not in ("init", "config", "commandline", "run"): - raise ValueError(f"invalid value for 'stop_after': {stop_after!r}") - - core._setup_stop_after = stop_after - - save_argv = copy(sys.argv) - glocals = copy(globals()) - glocals["__file__"] = script_name - glocals["__name__"] = "__main__" - try: - try: - sys.argv[0] = script_name - if script_args is not None: - sys.argv[1:] = script_args - with tokenize.open(script_name) as f: - exec(f.read(), glocals, glocals) - finally: - sys.argv = save_argv - core._setup_stop_after = None - except Exception: - logging.warning("Exception when running setup.", exc_info=True) - - if core._setup_distribution is None: - raise RuntimeError( - f"'distutils.core.setup()' was never called -- perhaps '{script_name}' is not a Distutils setup script?" - ) - - # I wonder if the setup script's namespace -- g and l -- would be of - # any interest to callers? - return core._setup_distribution - - -def get_setuppy_data(path): - """ - Returns data from a package directory. - 'path' should be an absolute path. - """ - metadata = {} - # Run the imported setup to get the metadata. - with FakeContext(path): - with SetupMonkey() as sm: - if os.path.isfile("setup.py"): - - try: - distro = run_setup("setup.py", stop_after="config") - - metadata = {} - - for k, v in distro.metadata.__dict__.items(): - if k[0] == "_" or not v: - continue - if all(not x for x in v): - continue - metadata[k] = v - - if sm.used_setuptools: - for extras in ["cmdclass", "zip_safe", "test_suite"]: - v = getattr(distro, extras, None) - if v is not None and v not in ([], {}): - metadata[extras] = v - except Exception as e: - # Looks like setup.py is broken. - logging.exception(e) - metadata = {} - - elif os.path.isfile("setup.cfg"): - try: - data = read_configuration("setup.cfg") - metadata = data["metadata"] - metadata["_setuptools"] = True - except Exception as e: - logging.exception(e) - - else: - logging.exception("Neither setup.py nor setup.cfg was found") - - return metadata + # There's something else wrong + raise e diff --git a/pyroma/pypidata.py b/pyroma/pypidata.py index f2d7fc1..3f9e401 100644 --- a/pyroma/pypidata.py +++ b/pyroma/pypidata.py @@ -1,11 +1,23 @@ import logging import os +import re import requests import tempfile import xmlrpc.client from pyroma import distributiondata +# MAP from old PyPI `info` keys to Core Metadata keys +INFO_MAP = { + "classifiers": "classifier", + "project-urls": "project-url", + "project-url": "home-page", +} + + +def normalize(name): + return re.sub(r"[-_.]+", "-", name).lower() + def _get_project_data(project): # I think I should be able to monkeypatch a mock-thingy here... I think. @@ -22,14 +34,17 @@ def get_data(project): # Pick the latest release. project_data = _get_project_data(project) releases = project_data["releases"] - data = project_data["info"] + data = {} + + for key, value in project_data["info"].items(): + key = normalize(key) + if key in INFO_MAP: + key = INFO_MAP[key] + data[key] = value + release = data["version"] logging.debug(f"Found {project} version {release}") - # Map things around: - data["long_description"] = data["description"] - data["description"] = data["summary"] - with xmlrpc.client.ServerProxy("https://pypi.org/pypi") as xmlrpc_client: roles = xmlrpc_client.package_roles(project) diff --git a/pyroma/ratings.py b/pyroma/ratings.py index df4d37f..5664965 100644 --- a/pyroma/ratings.py +++ b/pyroma/ratings.py @@ -171,41 +171,41 @@ def message(self): return "The package's version number does not comply with PEP-386 or PEP-440." -class Description(BaseTest): +class Summary(BaseTest): weight = 100 def test(self, data): - description = data.get("description") - if not description: + summary = data.get("summary") + if not summary: # No description at all. That's fatal. self.fatal = True return False self.fatal = False - return len(description) > 10 + return len(summary) > 10 def message(self): if self.fatal: - return "The package had no description!" + return "The package had no Summary!" else: - return "The package's description should be longer than 10 characters." + return "The package's Summary should be longer than 10 characters." -class LongDescription(BaseTest): +class Description(BaseTest): weight = 50 def test(self, data): - long_description = data.get("long_description", "") - if not isinstance(long_description, str): - long_description = "" - return len(long_description) > 100 + description = data.get("description", "") + if not isinstance(description, str): + description = "" + return len(description) > 100 def message(self): - return "The package's long_description is quite short." + return "The package's Description is quite short." class Classifiers(FieldTest): weight = 100 - field = "classifiers" + field = "classifier" class ClassifierVerification(BaseTest): @@ -213,7 +213,7 @@ class ClassifierVerification(BaseTest): def test(self, data): self._incorrect = [] - classifiers = data.get("classifiers", []) + classifiers = data.get("classifier", []) for classifier in classifiers: if classifier not in CLASSIFIERS and not classifier.startswith("Private :: "): self._incorrect.append(classifier) @@ -230,7 +230,7 @@ class PythonClassifierVersion(BaseTest): def test(self, data): self._major_version_specified = False - classifiers = data.get("classifiers", []) + classifiers = data.get("classifier", []) for classifier in classifiers: parts = [p.strip() for p in classifier.split("::")] if parts[0] == "Programming Language" and parts[1] == "Python": @@ -279,7 +279,7 @@ class PythonRequiresVersion(BaseTest): def test(self, data): # https://github.com/regebro/pyroma/pull/83#discussion_r955611236 - python_requires = data.get("python_requires", None) + python_requires = data.get("requires-python", None) if not python_requires: return False @@ -292,10 +292,7 @@ def test(self, data): return True def message(self): - return ( - "You should specify what Python versions you support with " - "the 'requires-python'/'python_requires' metadata." - ) + return "You should specify what Python versions you support with " "the 'Requires-Python' metadata." class Keywords(FieldTest): @@ -308,22 +305,22 @@ class Author(FieldTest): field = "author" def test(self, data): - """Check if author_email field contains author name.""" - email = data.get("author_email") + """Check if author-email field contains author name.""" + email = data.get("author-email") # Pass if author name in email, e.g. "Author Name " return True if email and "<" in email else super().test(data) class AuthorEmail(FieldTest): weight = 100 - field = "author_email" + field = "author-email" class Url(BaseTest): weight = 20 def test(self, data): - return bool(data.get("url")) or bool(data.get("project_urls")) + return bool(data.get("home-page")) or bool(data.get("project-url")) def message(self): return ( @@ -338,13 +335,13 @@ class Licensing(BaseTest): def test(self, data): license = data.get("license") - license_expression = data.get("license_expression") - classifiers = data.get("classifiers", []) + license_expression = data.get("license-expression") + classifiers = data.get("classifier", []) licenses = set() for classifier in classifiers: parts = [p.strip() for p in classifier.split("::")] if parts[0] == "License": - # license classifier exist + # license classifiers exist licenses.add(classifier) if not license and not license_expression and not licenses: @@ -380,7 +377,7 @@ class DevStatusClassifier(BaseTest): weight = 20 def test(self, data): - classifiers = data.get("classifiers", []) + classifiers = data.get("classifier", []) for classifier in classifiers: parts = [p.strip() for p in classifier.split("::")] if parts[0] == "Development Status": @@ -414,14 +411,14 @@ class ValidREST(BaseTest): weight = 50 def test(self, data): - content_type = data.get("long_description_content_type", None) + content_type = data.get("description-content-type", None) if content_type in ("text/plain", "text/markdown"): # These can't fail. Markdown will just assume everything # it doesn't understand is plain text. return True # This should be ReStructuredText - source = data.get("long_description", "") + source = data.get("description", "") stream = io.StringIO() settings = {"warning_stream": stream} @@ -437,7 +434,7 @@ def test(self, data): return False def message(self): - return "Your long_description is not valid ReST: " + self._message + return "Your Description is not valid ReST: " + self._message class BusFactor(BaseTest): @@ -466,24 +463,19 @@ class MissingBuildSystem(BaseTest): def test(self, data): if "_missing_build_system" in data: # These sort of "negative only/deprecation" ratings only give you negative weight - self.weight = 200 + self.weight = 400 return False def message(self): return ( - "You seem to have a setup.cfg, but neither a setup.py, nor a build-system defined. This makes " - "it unclear how your project should be built. You probably want to have a pyproject.toml file " - "with the following configuration:\n\n" - " [build-system]\n" - ' requires = ["setuptools>=42"]\n' - ' build-backend = "setuptools.build_meta"\n\n' - 'In the future this may become a hard failure and your package may be rated as "not cheese".' + "You seem to neither have a setup.py, nor a pyproject.toml, only setup.cfg.\n" + "This makes it unclear how your project should be built, and some packaging tools may fail." ) class MissingPyProjectToml(BaseTest): def test(self, data): - if "_missing_pyproject_toml" in data: + if "_missing_build_system" in data or "_missing_pyproject_toml" in data: # These sort of "negative only/deprecation" ratings only give you negative weight self.weight = 100 return False @@ -494,33 +486,19 @@ def message(self): "You probably want to create one with the following configuration:\n\n" " [build-system]\n" ' requires = ["setuptools>=42"]\n' - ' build-backend = "setuptools.build_meta"\n\n' - ) - - -class StoneAgeSetupPy(BaseTest): - def test(self, data): - if "_stoneage_setuppy" in data: - # These sort of "negative only/deprecation" ratings only give you negative weight - self.weight = 200 - return False - - def message(self): - return ( - "Your Cheese may have spoiled!! The only way to gather metadata from your package was to execute " - "a patched setup.py. This indicates that your package is using very old packaging techniques, " - "(or that your setup.py isn't executable at all), and Pyroma will soon regard that as a complete " - "failure!\nPlease modernize your packaging! If it is already modern, this is a bug." + ' build-backend = "setuptools.build_meta"\n' ) ALL_TESTS = [ + MissingBuildSystem(), + MissingPyProjectToml(), Name(), Version(), VersionIsString(), PEPVersion(), + Summary(), Description(), - LongDescription(), Classifiers(), ClassifierVerification(), PythonClassifierVersion(), @@ -534,9 +512,6 @@ def message(self): ValidREST(), BusFactor(), DevStatusClassifier(), - MissingBuildSystem(), - StoneAgeSetupPy(), - MissingPyProjectToml(), ] try: @@ -569,9 +544,20 @@ def message(self): def rate(data, skip_tests=None): - if not data: - # No data was gathered. Fail: - return (0, ["I couldn't find any package data"]) + if len([key for key in data if not key.startswith("_")]) == 0: + if "_no_config_found" in data: + # Are you in the correct directory?: + return (0, ["I couldn't find any package data. Are checking the correct directory or file?"]) + + if "_wheel_build_failed" in data: + return ( + 0, + [ + "Pyroma failed to build your packages wheel metadata, which indicates an error with " + "your build configuration, like you not having a pyproject.toml file, or it being faulty.\n" + "Running `python -m build` in your package directory may give more information." + ], + ) if skip_tests is None: skip_tests = [] diff --git a/pyroma/testdata/distributions/complete-1.0.dev1.tar b/pyroma/testdata/distributions/complete-1.0.dev1.tar index 9cab91b..fd031f5 100644 Binary files a/pyroma/testdata/distributions/complete-1.0.dev1.tar and b/pyroma/testdata/distributions/complete-1.0.dev1.tar differ diff --git a/pyroma/testdata/distributions/complete-1.0.dev1.tar.bz2 b/pyroma/testdata/distributions/complete-1.0.dev1.tar.bz2 index 47d7703..8929401 100644 Binary files a/pyroma/testdata/distributions/complete-1.0.dev1.tar.bz2 and b/pyroma/testdata/distributions/complete-1.0.dev1.tar.bz2 differ diff --git a/pyroma/testdata/distributions/complete-1.0.dev1.tar.gz b/pyroma/testdata/distributions/complete-1.0.dev1.tar.gz index 74c0fba..b79be12 100644 Binary files a/pyroma/testdata/distributions/complete-1.0.dev1.tar.gz and b/pyroma/testdata/distributions/complete-1.0.dev1.tar.gz differ diff --git a/pyroma/testdata/distributions/complete-1.0.dev1.zip b/pyroma/testdata/distributions/complete-1.0.dev1.zip index e9fe22a..3ba86e7 100644 Binary files a/pyroma/testdata/distributions/complete-1.0.dev1.zip and b/pyroma/testdata/distributions/complete-1.0.dev1.zip differ diff --git a/pyroma/testdata/jsondata/complete.json b/pyroma/testdata/jsondata/complete.json index dc844b0..80f1151 100644 --- a/pyroma/testdata/jsondata/complete.json +++ b/pyroma/testdata/jsondata/complete.json @@ -1 +1 @@ -{"info":{"author":"Logilab and Shoobx Team","author_email":"dev@shoobx.com","bugtrack_url":null,"classifiers":["Development Status :: 3 - Alpha","Framework :: ZODB","Intended Audience :: Developers","License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)","Natural Language :: English","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 2","Programming Language :: Python :: 2.7","Programming Language :: Python :: 3","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6"],"description":"========\nXML Diff\n========\n\n.. image:: https://travis-ci.org/Shoobx/complete.png?branch=master\n :target: https://travis-ci.org/Shoobx/complete\n\n.. image:: https://coveralls.io/repos/github/Shoobx/complete/badge.svg?branch=master\n :target: https://coveralls.io/github/Shoobx/complete?branch=master\n\n.. image:: https://img.shields.io/pypi/v/complete.svg\n :target: https://pypi.python.org/pypi/complete\n\n.. image:: https://img.shields.io/pypi/pyversions/complete.svg\n :target: https://pypi.python.org/pypi/complete/\n\n\ncomplete is a utility for extracting differences between two xml files. It\nreturns a set of primitives to apply on source tree to obtain the destination\ntree.\n\nThe implementation is based on `Change detection in hierarchically structured\ninformation`, by S. Chawathe, A. Rajaraman, H. Garcia-Molina and J. Widom,\nStanford University, 1996\n\nInstallation\n------------\n\nTo install the latest release:\n\n.. code:: bash\n\n pip install complete\n\n\nTo install the development version:\n\n.. code:: bash\n\n git clone https://github.com/Shoobx/complete.git\n cd complete\n virtualenv ./.venv\n ./.venv/bin/python setup.py install\n\nThen to compare two given XML files:\n\n.. code:: bash\n\n ./.venv/bin/complete 1.xml 2.xml\n\n\nRunning tests\n-------------\n\nTo run the test suite for all python versions:\n\n.. code:: bash\n\n tox\n\n\nCHANGES\n=======\n\n1.1.0 (2018-06-15)\n------------------\n\n- When using namespaces, the returned xpaths are now in the form ns_prefix:tag\n instead of the earlier {ns_uri}tag, which isn't correct xpaths.\n\n\n1.0.0 (2018-04-13)\n------------------\n\n- pep8 cleanup, added flake8 checking to tox\n\n\n1.0.0a6 (2018-04-12)\n--------------------\n\n- Removed encoding, because python does unicode just fine\n\n- Switched on namespace handling for XML input\n\n\n1.0.0a5 (2018-04-11)\n--------------------\n\n- Brownbag release to make up for bad previous ones.\n\n1.0.0a2 (2018-04-11)\n--------------------\n\n- Temporary disabling of encoding text (hopefully permanent).\n\n- Reverted bug fix: Do not remove newlines from text while parsing\n the XML.\n\n\n1.0.0a1 (2018-04-10)\n--------------------\n\n- Bug: Fix a off-by-one issue with `insert-after` action.\n\n- Bug: Do not rename children on text node updates.\n\n- Bug: Text moves were not recorded as part of the fmes edit script.\n\n- Remove only partially implemented xmlrev script.\n\n- Removed support for xupdate, which never became a standard.\n\n- Removed deprecated ezs optional algorithm.\n\n- Removed support for Debian and RedHat packaging.\n\n- Removed Windows support\n\n- LOTS of package cleanup (setup.py, MANIFEST, proper console script, etc)\n\n- tests moved to py.test and cleaned, added tox, travis, coverage support\n\n\n0.6.10 (2010-08-27)\n-------------------\n\n- apply Daiki Ueno patch: fails when comparing minimal trees on i386\n\n\n0.6.9 (2009-04-02)\n------------------\n\n- Fixed complete-xmlrev compilation error\n\n\n0.6.8 (2006-06-15)\n------------------\n\n- Fixed 64bit cleanness issues\n\n\n0.6.7 (2005-05-04)\n------------------\n\n- WARNING: complete is no longer a logilab subpackage. Users may have to\n manually remove the old logilab/complete directory.\n\n- fixed debian bug #275750, also reported by Christopher R Newman on the\n xml-projects mailing list\n\n- fixed --profile option, wrap function from maplookup when profiling so that\n they appear in the profile information\n\n- fixed setup.py to ignore the xmlrev shell script under windows platforms\n\n- small improvements (remove recursion in object.py, minor enhancement in\n mydifflib.py, rewrite of lcs4 in C)\n\n\n0.6.6 (2004-12-23)\n------------------\n\n- Applied patch by Bastian Kleineidam which\n\n - corrects the typo in ML_DIR\n\n - fixes the TMPFILE_XSLT/TMPFILE_XSL typo\n\n - makes sure the files are XML or SGML files, else prints an error\n\n - adds various missing quotes around filenames which could have\n spaces or begin with a hyphen\n\n - fixes typos in the usage() function\n\n Thanks a lot, Bastian.\n\n- Fixed some problems in the xmlrev.xslt stylesheet\n\n- Fixed problems in xmlrev caused by the exit status of complete when\n successful\n\n- Added a man page for complete and xmlrev\n\n\n0.6.5 (2004-09-02)\n------------------\n\n- xmlrev bugfixes\n\n- Fixed packaging problems (missing xsl stylesheets and MANIFEST file)\n\n\n0.6.4 (2003-10-02)\n------------------\n\n- fix recursive mode\n\n- rewrite regression test, add test for the recursive mode\n\n- add --help option to xlmrev\n\n- packaging fixes\n\n- turn API.txt and HELP.txt to correct ReST\n\n\n0.6.3 (2002-11-06)\n------------------\n\n- fix wrong xpath for attributes\n\n- fix bug with temporary duplicate attribute node\n\n- fix for xupdate\n\n- fix ext_pes option bug\n\n- update changelog to new format\n\n\n0.6.2 (2002-09-23)\n------------------\n\n- return number of differences on command line\n\n- reintroduce misc.list_print which caused recursive mode\n to fail\n\n- use psyco if available (http://psyco.sf.net)\n\n- little changes in C extension\n\n\n0.6.1 (2002-08-29)\n------------------\n\n- fix packaging problems\n\n\n0.6.0 (2002-08-23)\n------------------\n\n- change of the internal representation\n\n- remove support for the EZS algorithm (no more maintened\n for the moment)\n\n- add command line options to parse html and to control\n entities inclusion and output encoding\n\n- fixing coalescing text nodes bug\n\n- many other bugs fixes\n\n- great speed improvement\n\n\n0.5.3 (2002-01-31)\n------------------\n\n- add __init__.py in \"logilab\" directory\n\n\n0.5.2 (2001-10-29)\n------------------\n\n- bug fixes in xupdate formatting and in the dom interface.\n\n\n0.5.1 (2001-09-07)\n------------------\n\n- Fast Match / Edit Scritp algorithm, now fully usable\n\n- fixes Unicode problem\n\n\n0.2.1 (2001-08-10)\n------------------\n\n- bug fixes, optimizations for ezs algorithm\n\n\n0.1.1 (2001-08-04)\n------------------\n\n- original revision","description_content_type":"","docs_url":null,"download_url":"","downloads":{"last_day":-1,"last_month":-1,"last_week":-1},"home_page":"https://github.com/Shoobx/complete","keywords":"xml,diff,complete,tree 2 tree","license":"LGPL","maintainer":"","maintainer_email":"","name":"complete","package_url":"https://pypi.org/project/complete/","platform":"","project_url":"https://pypi.org/project/complete/","project_urls":{"Homepage":"https://github.com/Shoobx/complete"},"release_url":"https://pypi.org/project/complete/1.1.0/","requires_dist":null,"requires_python":"","python_requires": ">=2.7","summary":"Tree 2 tree correction between xml documents. Extract differences between two xml files. It returns a set of primitives to apply on source tree to obtain the destination tree.","version":"1.1.0","yanked":false,"yanked_reason":null},"last_serial":5948813,"releases":{"0.6.10":[{"comment_text":"","digests":{"md5":"9ab11f838f7e0b1dcadc94bb81eb1539","sha256":"edeb13ae5d2cc1de72b58bc989f10dc006db5acc19d42f4b05309b14bc99bbe0"},"downloads":-1,"filename":"complete-0.6.10.zip","has_sig":false,"md5_digest":"9ab11f838f7e0b1dcadc94bb81eb1539","packagetype":"sdist","python_version":"source","requires_python":null,"size":44447,"upload_time":"2015-04-02T16:07:22","upload_time_iso_8601":"2015-04-02T16:07:22.450850Z","url":"https://files.pythonhosted.org/packages/01/5c/e10197f6b699497bbbb32baa73a7b85b4be4f0117c8dae3d525ff5451987/complete-0.6.10.zip","yanked":false,"yanked_reason":null}],"0.6.4":[{"comment_text":"","digests":{"md5":"65c173fb5adcdce1008ab3a9a39ae6bd","sha256":"678042e7d8fc249f6ae78bc5f26847b1da7705ec887dce63e01a2348bfab0664"},"downloads":-1,"filename":"complete-0.6.4.tar.gz","has_sig":false,"md5_digest":"65c173fb5adcdce1008ab3a9a39ae6bd","packagetype":"sdist","python_version":"source","requires_python":null,"size":28540,"upload_time":"2015-04-02T15:37:18","upload_time_iso_8601":"2015-04-02T15:37:18.791051Z","url":"https://files.pythonhosted.org/packages/78/be/25e4c3b6e295205adcc102c72d3c182366e9adc0a42c9c641b14a710dc3c/complete-0.6.4.tar.gz","yanked":false,"yanked_reason":null}],"0.6.6":[{"comment_text":"","digests":{"md5":"b4461fcf85dbcef9d2dc3f712445f1ae","sha256":"a1d4f928c955d072afcf86bc5d67e1d901a4825fc028f05a30e957693f8369ec"},"downloads":-1,"filename":"complete-0.6.6.tar.gz","has_sig":false,"md5_digest":"b4461fcf85dbcef9d2dc3f712445f1ae","packagetype":"sdist","python_version":"source","requires_python":null,"size":30589,"upload_time":"2015-04-02T15:34:58","upload_time_iso_8601":"2015-04-02T15:34:58.448942Z","url":"https://files.pythonhosted.org/packages/b0/77/222543b1aa3687f4ded31948019a61ffc0e6e1713e5c7116d32a434663ff/complete-0.6.6.tar.gz","yanked":false,"yanked_reason":null}],"0.6.7":[{"comment_text":"","digests":{"md5":"495afb1b4e059af9099ca90cd619e0d3","sha256":"8fa3dce3f000ed5ac97023b4a2d4e0d4aa3cd1db3885c6d0480e63617a5073d9"},"downloads":-1,"filename":"complete-0.6.7.zip","has_sig":false,"md5_digest":"495afb1b4e059af9099ca90cd619e0d3","packagetype":"sdist","python_version":"source","requires_python":null,"size":44737,"upload_time":"2015-04-02T16:06:22","upload_time_iso_8601":"2015-04-02T16:06:22.122578Z","url":"https://files.pythonhosted.org/packages/2a/c1/1a009a72a524974480996e572cdad6eee1fb9c5c51c291111b1b8e240623/complete-0.6.7.zip","yanked":false,"yanked_reason":null}],"0.6.8":[{"comment_text":"","digests":{"md5":"02a6192bb2bb4196077fcf66aaf67129","sha256":"7e2d1e13a991dc490d0ea70b13528b78f6a7e44d0317536d1f54950a90ae8525"},"downloads":-1,"filename":"complete-0.6.8.zip","has_sig":false,"md5_digest":"02a6192bb2bb4196077fcf66aaf67129","packagetype":"sdist","python_version":"source","requires_python":null,"size":44988,"upload_time":"2015-04-02T16:06:45","upload_time_iso_8601":"2015-04-02T16:06:45.550281Z","url":"https://files.pythonhosted.org/packages/01/eb/4395ef31da4129fc1ade423d0728aee0865f85b1dc5cc58d083d805cd220/complete-0.6.8.zip","yanked":false,"yanked_reason":null}],"0.6.9":[{"comment_text":"","digests":{"md5":"57b6b3f0e3c21163744b1abede196749","sha256":"7ea0451330d9e57633c0ae389cedcf30efc3925ab0c2763563bb28c558b47981"},"downloads":-1,"filename":"complete-0.6.9.zip","has_sig":false,"md5_digest":"57b6b3f0e3c21163744b1abede196749","packagetype":"sdist","python_version":"source","requires_python":null,"size":44179,"upload_time":"2015-04-02T16:07:07","upload_time_iso_8601":"2015-04-02T16:07:07.388937Z","url":"https://files.pythonhosted.org/packages/bb/db/df65a8a5a09aa6fd391c2e52edf3d4ab75396f961e36a425aadc3a50dc75/complete-0.6.9.zip","yanked":false,"yanked_reason":null}],"1.0.0":[{"comment_text":"","digests":{"md5":"3d7c20a999963b8f3d8651bb8a18f577","sha256":"81394752277427af4e3783846716a4780d4100724628668e6153eb3c899fa01d"},"downloads":-1,"filename":"complete-1.0.0.tar.gz","has_sig":false,"md5_digest":"3d7c20a999963b8f3d8651bb8a18f577","packagetype":"sdist","python_version":"source","requires_python":null,"size":39642,"upload_time":"2018-04-13T13:22:51","upload_time_iso_8601":"2018-04-13T13:22:51.840164Z","url":"https://files.pythonhosted.org/packages/6b/d3/376909843cdb112f0ce50173fbcfcd9204efde27e1797de99706c95cde55/complete-1.0.0.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a1":[{"comment_text":"","digests":{"md5":"669a8bc7160c3de61b6f8a9f4005ae53","sha256":"e882b8fb68e07c5e483b9b1395b41324ca46632c5875c61e725e8bdb9a0b97e9"},"downloads":-1,"filename":"complete-1.0.0a1.tar.gz","has_sig":false,"md5_digest":"669a8bc7160c3de61b6f8a9f4005ae53","packagetype":"sdist","python_version":"source","requires_python":null,"size":37723,"upload_time":"2018-04-10T13:22:53","upload_time_iso_8601":"2018-04-10T13:22:53.589597Z","url":"https://files.pythonhosted.org/packages/5d/f3/b3de2527aaeb8d5d8c4c9c8b49fa5fb9b30463c3568fdb04c4891010d3d4/complete-1.0.0a1.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a2":[{"comment_text":"","digests":{"md5":"8ca07eb4bbb09cce4b07b64e56c7d7d6","sha256":"8bb91f15ecd2a0efa11bcaf8be013df16629af7ab0c909ca4ff1330d0aacae73"},"downloads":-1,"filename":"complete-1.0.0a2.tar.gz","has_sig":false,"md5_digest":"8ca07eb4bbb09cce4b07b64e56c7d7d6","packagetype":"sdist","python_version":"source","requires_python":null,"size":36836,"upload_time":"2018-04-10T15:48:43","upload_time_iso_8601":"2018-04-10T15:48:43.658000Z","url":"https://files.pythonhosted.org/packages/8b/22/88e32c7999c85a6aa97b2c36e4b366bd5e6631f03c14988124b93564bdb1/complete-1.0.0a2.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a3.dev0":[{"comment_text":"","digests":{"md5":"65c035101c40d30dc0838acaa135ec41","sha256":"79a4955f3585dc8f05d07494a2a35ad41fe26192e831b6fbd062188226bd42f6"},"downloads":-1,"filename":"complete-1.0.0a3.dev0.tar.gz","has_sig":false,"md5_digest":"65c035101c40d30dc0838acaa135ec41","packagetype":"sdist","python_version":"source","requires_python":null,"size":36846,"upload_time":"2018-04-10T15:56:31","upload_time_iso_8601":"2018-04-10T15:56:31.070448Z","url":"https://files.pythonhosted.org/packages/80/70/df743f6777b4a43689aaa6dfad3f8ca96c041d4f959607cb067e7903019a/complete-1.0.0a3.dev0.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a4.dev0":[{"comment_text":"","digests":{"md5":"f5034450dcd8df3abe0759a62251bc65","sha256":"2ee7f0f4a86e68e537d77e6922ebc79bb3bb1b316c3a7c2e50bc8f61774ca506"},"downloads":-1,"filename":"complete-1.0.0a4.dev0.tar.gz","has_sig":false,"md5_digest":"f5034450dcd8df3abe0759a62251bc65","packagetype":"sdist","python_version":"source","requires_python":null,"size":36899,"upload_time":"2018-04-10T16:02:36","upload_time_iso_8601":"2018-04-10T16:02:36.150652Z","url":"https://files.pythonhosted.org/packages/02/80/86b6e9a5fc6267e1e945734228073a42f40398ff78537d1e17c0f6f11b93/complete-1.0.0a4.dev0.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a5":[{"comment_text":"","digests":{"md5":"19bbc60ebbf9d290069649f1e24e7d55","sha256":"5a38bc0e7a5daf89c0a960643fcdabbd8b24b0913c94ff1ef0de06321b4bdbbd"},"downloads":-1,"filename":"complete-1.0.0a5.tar.gz","has_sig":false,"md5_digest":"19bbc60ebbf9d290069649f1e24e7d55","packagetype":"sdist","python_version":"source","requires_python":null,"size":37417,"upload_time":"2018-04-11T13:02:26","upload_time_iso_8601":"2018-04-11T13:02:26.425291Z","url":"https://files.pythonhosted.org/packages/0a/e7/d0889a2a39d214ca883873fa1547eda0672b1ef2bd6d7f5d1bb8bb1e3351/complete-1.0.0a5.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a6":[{"comment_text":"","digests":{"md5":"1785ee59afdf2ff4c634276f33767302","sha256":"02a3ce91aa39a42146e7dae240cb16a6da529f8c725e53939afe1df736ea4475"},"downloads":-1,"filename":"complete-1.0.0a6.tar.gz","has_sig":false,"md5_digest":"1785ee59afdf2ff4c634276f33767302","packagetype":"sdist","python_version":"source","requires_python":null,"size":38050,"upload_time":"2018-04-12T12:48:52","upload_time_iso_8601":"2018-04-12T12:48:52.719912Z","url":"https://files.pythonhosted.org/packages/4e/b4/50f65f8e77da28899e31945ae5719535e9a9e67bea961ecfba77c39399fe/complete-1.0.0a6.tar.gz","yanked":false,"yanked_reason":null}],"1.1.0":[{"comment_text":"","digests":{"md5":"ee08b66cae5d77364f6deee252638b3b","sha256":"462c76c145403eb5e9a8358dc402a53b264ab202ebabf83cdc660ed2cf72c89b"},"downloads":-1,"filename":"complete-1.0.dev1.tar.gz","has_sig":false,"md5_digest":"ee08b66cae5d77364f6deee252638b3b","packagetype":"sdist","python_version":"source","requires_python":null,"size":39258,"upload_time":"2018-06-15T12:24:36","upload_time_iso_8601":"2018-06-15T12:24:36.191454Z","url":"https://files.pythonhosted.org/packages/ab/4a/cab33ec593f433b7cded3cec85d1f7c900261fd503bd894e16782f7c0d09/complete-1.0.dev1.tar.gz","yanked":false,"yanked_reason":null}],"1.1.1":[{"comment_text":"","digests":{"md5":"dd17d5d775b9433df64513265502cdb8","sha256":"b8dc6c36a3499e752cf5b5d2704d961be37fcf2ea5be2e4187572e18f674d053"},"downloads":-1,"filename":"complete-1.1.1.tar.gz","has_sig":false,"md5_digest":"dd17d5d775b9433df64513265502cdb8","packagetype":"sdist","python_version":"source","requires_python":null,"size":39523,"upload_time":"2018-06-20T18:38:14","upload_time_iso_8601":"2018-06-20T18:38:14.221847Z","url":"https://files.pythonhosted.org/packages/35/cc/ae210f70dac681a7566f25f43740a0cbdc53a77e23684f7b9b1d71e4d918/complete-1.1.1.tar.gz","yanked":false,"yanked_reason":null}],"2.0":[{"comment_text":"","digests":{"md5":"dacf1d5fe5e94e0b656e8985e2e81faa","sha256":"31f83117e38d78670e1994e7160b1463adb04ffa34ff267700b2ca61bada5e57"},"downloads":-1,"filename":"complete-2.0-py2.py3-none-any.whl","has_sig":false,"md5_digest":"dacf1d5fe5e94e0b656e8985e2e81faa","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":55479,"upload_time":"2018-09-25T07:05:49","upload_time_iso_8601":"2018-09-25T07:05:49.423913Z","url":"https://files.pythonhosted.org/packages/ce/dc/7caf3ada02afcab68c7330c207f0b05b54dd5ef6ac96fb18e2fa85f1038a/complete-2.0-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"982c288a450198b414363a9388631c26","sha256":"221733cfbfafff1d90756834f1f2bc8a3cfa097a57ad6ab11e83db308c1b486e"},"downloads":-1,"filename":"complete-2.0.tar.gz","has_sig":false,"md5_digest":"982c288a450198b414363a9388631c26","packagetype":"sdist","python_version":"source","requires_python":null,"size":86965,"upload_time":"2018-09-25T07:05:51","upload_time_iso_8601":"2018-09-25T07:05:51.301648Z","url":"https://files.pythonhosted.org/packages/41/80/5c6ef6fc423fb7902cc7fe6d5784545559d11dc157b1dbe50de59192bd08/complete-2.0.tar.gz","yanked":false,"yanked_reason":null}],"2.0b1":[{"comment_text":"","digests":{"md5":"0003996e2c8b62541743c80f1367925f","sha256":"9a15649073d795f2a742f0c46f44ebc732727ae201cf92e796ffb7b31eaebf59"},"downloads":-1,"filename":"complete-2.0b1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"0003996e2c8b62541743c80f1367925f","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":53036,"upload_time":"2018-09-03T12:49:24","upload_time_iso_8601":"2018-09-03T12:49:24.676079Z","url":"https://files.pythonhosted.org/packages/65/35/0820f8a49e5812dbcdb2aee651f19df8bf7c67d379e449699ed4ede5df51/complete-2.0b1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5f60ea9a2bc0109d1828ae753c332ed2","sha256":"173ad39aa5c95e9deeb563e94174c944ffd814441b2587f5645f0119c192220c"},"downloads":-1,"filename":"complete-2.0b1.tar.gz","has_sig":false,"md5_digest":"5f60ea9a2bc0109d1828ae753c332ed2","packagetype":"sdist","python_version":"source","requires_python":null,"size":70341,"upload_time":"2018-09-03T12:49:27","upload_time_iso_8601":"2018-09-03T12:49:27.080969Z","url":"https://files.pythonhosted.org/packages/54/45/006a8a3068f261dfbb543e4a4905ea1495a9deaa6b880af881e7112fe590/complete-2.0b1.tar.gz","yanked":false,"yanked_reason":null}],"2.0b2":[{"comment_text":"","digests":{"md5":"e2431ed70e7c940e72b065b3c2fc4d66","sha256":"0ea1eabb994a10160cdeb3b3a93e80e09191bc971ddf10213ec4618e890a79a1"},"downloads":-1,"filename":"complete-2.0b2-py2.py3-none-any.whl","has_sig":false,"md5_digest":"e2431ed70e7c940e72b065b3c2fc4d66","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":53862,"upload_time":"2018-09-06T14:41:53","upload_time_iso_8601":"2018-09-06T14:41:53.157424Z","url":"https://files.pythonhosted.org/packages/10/db/b5e9c37e5e66e86b5f87220db5e18d4f6b79f5b57037fcb251ca1116d9d0/complete-2.0b2-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"0199ffb374b5378b5b3f03b23008ee31","sha256":"4d95ddf206f4c440fcace43c0a9f4d26fb704b1fd5087c6c9b903e04a008bf05"},"downloads":-1,"filename":"complete-2.0b2.tar.gz","has_sig":false,"md5_digest":"0199ffb374b5378b5b3f03b23008ee31","packagetype":"sdist","python_version":"source","requires_python":null,"size":85397,"upload_time":"2018-09-06T14:41:55","upload_time_iso_8601":"2018-09-06T14:41:55.709235Z","url":"https://files.pythonhosted.org/packages/e6/ec/5c92cdd29d86e05b0938c56af54e06962a822689c5c70b5fa4eba727d799/complete-2.0b2.tar.gz","yanked":false,"yanked_reason":null}],"2.0b3":[{"comment_text":"","digests":{"md5":"810ffd544e5de013bbc0ad49258d017c","sha256":"a7c2efc42f6b2e47af36d905521a0e97c5f469d3d8c4243b87db9281c056c5de"},"downloads":-1,"filename":"complete-2.0b3-py2.py3-none-any.whl","has_sig":false,"md5_digest":"810ffd544e5de013bbc0ad49258d017c","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":54110,"upload_time":"2018-09-11T19:48:45","upload_time_iso_8601":"2018-09-11T19:48:45.470945Z","url":"https://files.pythonhosted.org/packages/0a/0c/fa7d475d3be9c376bb46fa7d0db1f70ee7cbce8d7328de750d06c72c1f8a/complete-2.0b3-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"116600a8ebf81955bbdde9716dcb8a70","sha256":"77e234d9e9e2f274e9bd86380f2fd0bb58ad3071278ab4c9df801ff54caead01"},"downloads":-1,"filename":"complete-2.0b3.tar.gz","has_sig":false,"md5_digest":"116600a8ebf81955bbdde9716dcb8a70","packagetype":"sdist","python_version":"source","requires_python":null,"size":85573,"upload_time":"2018-09-11T19:48:47","upload_time_iso_8601":"2018-09-11T19:48:47.787379Z","url":"https://files.pythonhosted.org/packages/a7/2d/22d2e86b795f85aa80676c7668a5e375b44d3239664d72b0b1c32e7291ed/complete-2.0b3.tar.gz","yanked":false,"yanked_reason":null}],"2.0b4":[{"comment_text":"","digests":{"md5":"e238130940a149c44927e30216bc0f74","sha256":"88ba6fb733677579a9bd6b1b1e99808d47d17ba20038075f8731ee12d40efb41"},"downloads":-1,"filename":"complete-2.0b4-py2.py3-none-any.whl","has_sig":false,"md5_digest":"e238130940a149c44927e30216bc0f74","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":54166,"upload_time":"2018-09-12T12:58:38","upload_time_iso_8601":"2018-09-12T12:58:38.798219Z","url":"https://files.pythonhosted.org/packages/f2/99/891565815619416a411b6a43dca887c575035c0dd2da374e7c87df5d9263/complete-2.0b4-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"14f8369167928c97140e55af20438d95","sha256":"63bdf6265dac0213e71001b03c81171b7fb1bf2fab06cd0ea8c9d2ffd4c0cd0c"},"downloads":-1,"filename":"complete-2.0b4.tar.gz","has_sig":false,"md5_digest":"14f8369167928c97140e55af20438d95","packagetype":"sdist","python_version":"source","requires_python":null,"size":87043,"upload_time":"2018-09-12T12:58:41","upload_time_iso_8601":"2018-09-12T12:58:41.083128Z","url":"https://files.pythonhosted.org/packages/eb/ca/24ff95b2da5a77f167e2113b6861f879f04629a5b1834ca221b790b36481/complete-2.0b4.tar.gz","yanked":false,"yanked_reason":null}],"2.0b5":[{"comment_text":"","digests":{"md5":"8660d1531dda6f79bd48a49fbf3d5888","sha256":"01b00bcf84e8f9692215ef1f3d4cb350d076add26b70f29e4f31ac85e5f66a28"},"downloads":-1,"filename":"complete-2.0b5-py2.py3-none-any.whl","has_sig":false,"md5_digest":"8660d1531dda6f79bd48a49fbf3d5888","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":54240,"upload_time":"2018-09-13T19:12:05","upload_time_iso_8601":"2018-09-13T19:12:05.832300Z","url":"https://files.pythonhosted.org/packages/ac/69/3a53d4aeb73dc20d140bdab53036572706e4cfc063d58d43cb73264b86ed/complete-2.0b5-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"c8a97de8115ab5ee9c0d5e1f70ed9060","sha256":"308bff344aed37aa04aae552e9d54d0d8ba625386bd5b8817282ef75c66de407"},"downloads":-1,"filename":"complete-2.0b5.tar.gz","has_sig":false,"md5_digest":"c8a97de8115ab5ee9c0d5e1f70ed9060","packagetype":"sdist","python_version":"source","requires_python":null,"size":87210,"upload_time":"2018-09-13T19:12:09","upload_time_iso_8601":"2018-09-13T19:12:09.026887Z","url":"https://files.pythonhosted.org/packages/55/83/cbd13288511af6f8c55ea340935cf17b244c485f6f776214fbc6bc41d7c4/complete-2.0b5.tar.gz","yanked":false,"yanked_reason":null}],"2.0b6":[{"comment_text":"","digests":{"md5":"6e64c656bd3b495bc2d9f357c6f8901f","sha256":"9e6d41a6ebfe71a90a288ea7f3a5c8efa2b7fe313c3e1aa026fa97f345e07745"},"downloads":-1,"filename":"complete-2.0b6-py2.py3-none-any.whl","has_sig":false,"md5_digest":"6e64c656bd3b495bc2d9f357c6f8901f","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":55113,"upload_time":"2018-09-13T19:14:55","upload_time_iso_8601":"2018-09-13T19:14:55.356378Z","url":"https://files.pythonhosted.org/packages/aa/39/115e4fa64aebf2c57a71c29c53740504f658b1447650a1473edb0c3ebb00/complete-2.0b6-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5c2d8fafcf16fd0fa9220da91205f696","sha256":"fa4cb24351e678dd56c9b46350cd54b1f39209e03517532a5e8fa8db9adbda56"},"downloads":-1,"filename":"complete-2.0b6.tar.gz","has_sig":false,"md5_digest":"5c2d8fafcf16fd0fa9220da91205f696","packagetype":"sdist","python_version":"source","requires_python":null,"size":88205,"upload_time":"2018-09-13T19:14:58","upload_time_iso_8601":"2018-09-13T19:14:58.034821Z","url":"https://files.pythonhosted.org/packages/2c/59/c47466d69a1293a7e1587a8af04d15c875415967527e9be6b4241723d96b/complete-2.0b6.tar.gz","yanked":false,"yanked_reason":null}],"2.0b7":[{"comment_text":"","digests":{"md5":"7c1beaed9081f6dca0cce01ab4957c6b","sha256":"8dbfdf93bd9d91c07ab5494d316c6083c3d71f673fd66ba497ce2b6a2011dd18"},"downloads":-1,"filename":"complete-2.0b7-py2.py3-none-any.whl","has_sig":false,"md5_digest":"7c1beaed9081f6dca0cce01ab4957c6b","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":56045,"upload_time":"2018-09-14T13:31:42","upload_time_iso_8601":"2018-09-14T13:31:42.874915Z","url":"https://files.pythonhosted.org/packages/bc/6c/e71ecb88f2308d7528c687ce2982fa4dba85cdaa9ac46604af59d844ace7/complete-2.0b7-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"bdc27299ae90128c3bbee2f833be2171","sha256":"e6ba88f2c2b8329d62b3aadfcb30dd782497087759673257e0f688df728a1694"},"downloads":-1,"filename":"complete-2.0b7.tar.gz","has_sig":false,"md5_digest":"bdc27299ae90128c3bbee2f833be2171","packagetype":"sdist","python_version":"source","requires_python":null,"size":89558,"upload_time":"2018-09-14T13:31:45","upload_time_iso_8601":"2018-09-14T13:31:45.969375Z","url":"https://files.pythonhosted.org/packages/4b/7a/349fde975c7b6b7331da2542d0e2cf9f0b7d30054bb5684d94d90f48e12b/complete-2.0b7.tar.gz","yanked":false,"yanked_reason":null}],"2.0rc1":[{"comment_text":"","digests":{"md5":"ff0d9ff18f6ad6b6951aa7f933782280","sha256":"582270dc62708af5ee2b649abde1ee1d6f0374f642f6b0b8771e203f2d4922ed"},"downloads":-1,"filename":"complete-2.0rc1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"ff0d9ff18f6ad6b6951aa7f933782280","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":56194,"upload_time":"2018-09-24T20:19:16","upload_time_iso_8601":"2018-09-24T20:19:16.377778Z","url":"https://files.pythonhosted.org/packages/e6/55/1c65e555d1e952644428da85662ef9c0448becfae5487ab321048b57d339/complete-2.0rc1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"eaef8d536ee4faedb15b5b6e77c84378","sha256":"e6044d6cf2bb283ad72e7fae3200d275950cbdc7245751c62c51c3a6b12391d6"},"downloads":-1,"filename":"complete-2.0rc1.tar.gz","has_sig":false,"md5_digest":"eaef8d536ee4faedb15b5b6e77c84378","packagetype":"sdist","python_version":"source","requires_python":null,"size":87563,"upload_time":"2018-09-24T20:19:18","upload_time_iso_8601":"2018-09-24T20:19:18.508231Z","url":"https://files.pythonhosted.org/packages/1f/f3/31351b897f110ac00cb5a13b0ea4ca5f272602ee0db46f0f810d8a1baa69/complete-2.0rc1.tar.gz","yanked":false,"yanked_reason":null}],"2.1":[{"comment_text":"","digests":{"md5":"4881924e6245797451bd27c644d5b569","sha256":"62aed6f2d1779a7f934454a897c61a1bc704f7f04d6fb533e6bfe54c17d22224"},"downloads":-1,"filename":"complete-2.1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"4881924e6245797451bd27c644d5b569","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":57198,"upload_time":"2018-10-03T11:05:00","upload_time_iso_8601":"2018-10-03T11:05:00.909986Z","url":"https://files.pythonhosted.org/packages/27/23/91f3184390c709be6ce9419f2dd4e6b5bb2fd1b7a06579ea1625f8898d0b/complete-2.1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"cc6b38495b180f0d1d852dd1794fef42","sha256":"528aaeff5b12aa7c1fe5909111fd7b46c14bf25f1a5ed759d6b422d45f10b40c"},"downloads":-1,"filename":"complete-2.1.tar.gz","has_sig":false,"md5_digest":"cc6b38495b180f0d1d852dd1794fef42","packagetype":"sdist","python_version":"source","requires_python":null,"size":91935,"upload_time":"2018-10-03T11:05:03","upload_time_iso_8601":"2018-10-03T11:05:03.023229Z","url":"https://files.pythonhosted.org/packages/65/57/604980e6223c09e8b428c128d480ae516548f7d2bd8ad580e72f2b5dfc09/complete-2.1.tar.gz","yanked":false,"yanked_reason":null}],"2.1b1":[{"comment_text":"","digests":{"md5":"3fb0bd3f94cce78d9fdf8838c8aa0313","sha256":"d58675740ed81b6f1397f3adb1fa30cc92d47a96a9e000c0b636772a20ea307c"},"downloads":-1,"filename":"complete-2.1b1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"3fb0bd3f94cce78d9fdf8838c8aa0313","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":56695,"upload_time":"2018-10-01T19:58:52","upload_time_iso_8601":"2018-10-01T19:58:52.535754Z","url":"https://files.pythonhosted.org/packages/a6/5a/ca949df720ed4e8754c61137c0f073452954ff32b2f50791f4a4fdc0e77a/complete-2.1b1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"a300ab4179a1b744a80d69d02997a453","sha256":"3e7180b09ad27439c295d022be6ef45e8aa3bdd00681b9556afbc8617cb31917"},"downloads":-1,"filename":"complete-2.1b1.tar.gz","has_sig":false,"md5_digest":"a300ab4179a1b744a80d69d02997a453","packagetype":"sdist","python_version":"source","requires_python":null,"size":90728,"upload_time":"2018-10-01T19:58:54","upload_time_iso_8601":"2018-10-01T19:58:54.596506Z","url":"https://files.pythonhosted.org/packages/46/69/30fa7d24f48e0f77fcd4f3c811dc72127b997bb8149488123890bfb42baf/complete-2.1b1.tar.gz","yanked":false,"yanked_reason":null}],"2.2":[{"comment_text":"","digests":{"md5":"381ae9b409adc01109fb4f48a15353e6","sha256":"35e688c7295ce389641bce37cd92fc3482d7d67874a67a9d0cc61a9ccc0f20ac"},"downloads":-1,"filename":"complete-2.2-py2.py3-none-any.whl","has_sig":false,"md5_digest":"381ae9b409adc01109fb4f48a15353e6","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":57344,"upload_time":"2018-10-12T16:21:34","upload_time_iso_8601":"2018-10-12T16:21:34.840456Z","url":"https://files.pythonhosted.org/packages/15/b5/3e4434f95cf68e1acb398dd9c596d07cc881c2fa45ab78659689615989d1/complete-2.2-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"4c5811798dbb0164e075e4026d410633","sha256":"aad7b8b00a49eeef7cd69757b2c548b88d4d7c584b95ac4ea9c0f08e167bc5a0"},"downloads":-1,"filename":"complete-2.2.tar.gz","has_sig":false,"md5_digest":"4c5811798dbb0164e075e4026d410633","packagetype":"sdist","python_version":"source","requires_python":null,"size":92135,"upload_time":"2018-10-12T16:21:36","upload_time_iso_8601":"2018-10-12T16:21:36.870458Z","url":"https://files.pythonhosted.org/packages/46/20/041ec087b8288b86aa71cea6f89c9aed9fc931d543d620d383556f646366/complete-2.2.tar.gz","yanked":false,"yanked_reason":null}],"2.3":[{"comment_text":"","digests":{"md5":"44c51fb9141dc9c2cb2d4a4bdbcc1acb","sha256":"4930ac8c01c5b5c94ae24ee5d26e42d537a3281291b06928529bb97cc11844e8"},"downloads":-1,"filename":"complete-2.3-py2.py3-none-any.whl","has_sig":false,"md5_digest":"44c51fb9141dc9c2cb2d4a4bdbcc1acb","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":59466,"upload_time":"2019-02-27T11:49:48","upload_time_iso_8601":"2019-02-27T11:49:48.609906Z","url":"https://files.pythonhosted.org/packages/ff/37/ed2d26f5f196b6db5a7a53de1ab96c961ab0c0e42d7677ea302cc817ed7f/complete-2.3-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"0510299dba157df2cbfea40426465bf5","sha256":"2727f62ab590c1fc834e86033988a76a86a67f5a78196584049b7a722bd94466"},"downloads":-1,"filename":"complete-2.3.tar.gz","has_sig":false,"md5_digest":"0510299dba157df2cbfea40426465bf5","packagetype":"sdist","python_version":"source","requires_python":null,"size":95947,"upload_time":"2019-02-27T11:49:51","upload_time_iso_8601":"2019-02-27T11:49:51.261375Z","url":"https://files.pythonhosted.org/packages/e6/1c/3dd86bec66fad3a21ac9d093610f83f6e20ad1d835ebf4079af53e65ed6b/complete-2.3.tar.gz","yanked":false,"yanked_reason":null}],"2.4":[{"comment_text":"","digests":{"md5":"d676c724f7e13838edd8a7dcc8cbe3e7","sha256":"213c2f4c39ed71811a9ceeec1c8bdf2e673e5527261ea11708b3acfa6c2bdb00"},"downloads":-1,"filename":"complete-2.4-py2.py3-none-any.whl","has_sig":false,"md5_digest":"d676c724f7e13838edd8a7dcc8cbe3e7","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":57463,"upload_time":"2019-10-09T09:41:14","upload_time_iso_8601":"2019-10-09T09:41:14.821316Z","url":"https://files.pythonhosted.org/packages/36/95/7d9271ae617b6c448fa244b347e4fd43ed5ad1bb35cea282f1c0fa82ea2b/complete-2.4-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"1728f65d01c5cb1f3c3838d489a1569d","sha256":"05bea20ce1f2c9678683bcce0c3ba9981f87d92b709d190e018bcbf047eccf63"},"downloads":-1,"filename":"complete-2.4.tar.gz","has_sig":false,"md5_digest":"1728f65d01c5cb1f3c3838d489a1569d","packagetype":"sdist","python_version":"source","requires_python":null,"size":94826,"upload_time":"2019-10-09T09:41:17","upload_time_iso_8601":"2019-10-09T09:41:17.883138Z","url":"https://files.pythonhosted.org/packages/76/36/a3e41bf7c01f1110d7b5589ca74d2927d3736a5b43ee63053faf3483b991/complete-2.4.tar.gz","yanked":false,"yanked_reason":null}]},"urls":[{"comment_text":"","digests":{"md5":"ee08b66cae5d77364f6deee252638b3b","sha256":"462c76c145403eb5e9a8358dc402a53b264ab202ebabf83cdc660ed2cf72c89b"},"downloads":-1,"filename":"complete-1.0.dev1.tar.gz","has_sig":false,"md5_digest":"ee08b66cae5d77364f6deee252638b3b","packagetype":"sdist","python_version":"source","requires_python":null,"size":39258,"upload_time":"2018-06-15T12:24:36","upload_time_iso_8601":"2018-06-15T12:24:36.191454Z","url":"https://files.pythonhosted.org/packages/ab/4a/cab33ec593f433b7cded3cec85d1f7c900261fd503bd894e16782f7c0d09/complete-1.0.dev1.tar.gz","yanked":false,"yanked_reason":null}]} +{"info":{"author":"Logilab and Shoobx Team","author_email":"dev@shoobx.com","bugtrack_url":null,"classifiers":["Development Status :: 3 - Alpha","Framework :: ZODB","Intended Audience :: Developers","License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)","Natural Language :: English","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 2","Programming Language :: Python :: 2.7","Programming Language :: Python :: 3","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6"],"description":"========\nXML Diff\n========\n\n.. image:: https://travis-ci.org/Shoobx/complete.png?branch=master\n :target: https://travis-ci.org/Shoobx/complete\n\n.. image:: https://coveralls.io/repos/github/Shoobx/complete/badge.svg?branch=master\n :target: https://coveralls.io/github/Shoobx/complete?branch=master\n\n.. image:: https://img.shields.io/pypi/v/complete.svg\n :target: https://pypi.python.org/pypi/complete\n\n.. image:: https://img.shields.io/pypi/pyversions/complete.svg\n :target: https://pypi.python.org/pypi/complete/\n\n\ncomplete is a utility for extracting differences between two xml files. It\nreturns a set of primitives to apply on source tree to obtain the destination\ntree.\n\nThe implementation is based on `Change detection in hierarchically structured\ninformation`, by S. Chawathe, A. Rajaraman, H. Garcia-Molina and J. Widom,\nStanford University, 1996\n\nInstallation\n------------\n\nTo install the latest release:\n\n.. code:: bash\n\n pip install complete\n\n\nTo install the development version:\n\n.. code:: bash\n\n git clone https://github.com/Shoobx/complete.git\n cd complete\n virtualenv ./.venv\n ./.venv/bin/python setup.py install\n\nThen to compare two given XML files:\n\n.. code:: bash\n\n ./.venv/bin/complete 1.xml 2.xml\n\n\nRunning tests\n-------------\n\nTo run the test suite for all python versions:\n\n.. code:: bash\n\n tox\n\n\nCHANGES\n=======\n\n1.1.0 (2018-06-15)\n------------------\n\n- When using namespaces, the returned xpaths are now in the form ns_prefix:tag\n instead of the earlier {ns_uri}tag, which isn't correct xpaths.\n\n\n1.0.0 (2018-04-13)\n------------------\n\n- pep8 cleanup, added flake8 checking to tox\n\n\n1.0.0a6 (2018-04-12)\n--------------------\n\n- Removed encoding, because python does unicode just fine\n\n- Switched on namespace handling for XML input\n\n\n1.0.0a5 (2018-04-11)\n--------------------\n\n- Brownbag release to make up for bad previous ones.\n\n1.0.0a2 (2018-04-11)\n--------------------\n\n- Temporary disabling of encoding text (hopefully permanent).\n\n- Reverted bug fix: Do not remove newlines from text while parsing\n the XML.\n\n\n1.0.0a1 (2018-04-10)\n--------------------\n\n- Bug: Fix a off-by-one issue with `insert-after` action.\n\n- Bug: Do not rename children on text node updates.\n\n- Bug: Text moves were not recorded as part of the fmes edit script.\n\n- Remove only partially implemented xmlrev script.\n\n- Removed support for xupdate, which never became a standard.\n\n- Removed deprecated ezs optional algorithm.\n\n- Removed support for Debian and RedHat packaging.\n\n- Removed Windows support\n\n- LOTS of package cleanup (setup.py, MANIFEST, proper console script, etc)\n\n- tests moved to py.test and cleaned, added tox, travis, coverage support\n\n\n0.6.10 (2010-08-27)\n-------------------\n\n- apply Daiki Ueno patch: fails when comparing minimal trees on i386\n\n\n0.6.9 (2009-04-02)\n------------------\n\n- Fixed complete-xmlrev compilation error\n\n\n0.6.8 (2006-06-15)\n------------------\n\n- Fixed 64bit cleanness issues\n\n\n0.6.7 (2005-05-04)\n------------------\n\n- WARNING: complete is no longer a logilab subpackage. Users may have to\n manually remove the old logilab/complete directory.\n\n- fixed debian bug #275750, also reported by Christopher R Newman on the\n xml-projects mailing list\n\n- fixed --profile option, wrap function from maplookup when profiling so that\n they appear in the profile information\n\n- fixed setup.py to ignore the xmlrev shell script under windows platforms\n\n- small improvements (remove recursion in object.py, minor enhancement in\n mydifflib.py, rewrite of lcs4 in C)\n\n\n0.6.6 (2004-12-23)\n------------------\n\n- Applied patch by Bastian Kleineidam which\n\n - corrects the typo in ML_DIR\n\n - fixes the TMPFILE_XSLT/TMPFILE_XSL typo\n\n - makes sure the files are XML or SGML files, else prints an error\n\n - adds various missing quotes around filenames which could have\n spaces or begin with a hyphen\n\n - fixes typos in the usage() function\n\n Thanks a lot, Bastian.\n\n- Fixed some problems in the xmlrev.xslt stylesheet\n\n- Fixed problems in xmlrev caused by the exit status of complete when\n successful\n\n- Added a man page for complete and xmlrev\n\n\n0.6.5 (2004-09-02)\n------------------\n\n- xmlrev bugfixes\n\n- Fixed packaging problems (missing xsl stylesheets and MANIFEST file)\n\n\n0.6.4 (2003-10-02)\n------------------\n\n- fix recursive mode\n\n- rewrite regression test, add test for the recursive mode\n\n- add --help option to xlmrev\n\n- packaging fixes\n\n- turn API.txt and HELP.txt to correct ReST\n\n\n0.6.3 (2002-11-06)\n------------------\n\n- fix wrong xpath for attributes\n\n- fix bug with temporary duplicate attribute node\n\n- fix for xupdate\n\n- fix ext_pes option bug\n\n- update changelog to new format\n\n\n0.6.2 (2002-09-23)\n------------------\n\n- return number of differences on command line\n\n- reintroduce misc.list_print which caused recursive mode\n to fail\n\n- use psyco if available (http://psyco.sf.net)\n\n- little changes in C extension\n\n\n0.6.1 (2002-08-29)\n------------------\n\n- fix packaging problems\n\n\n0.6.0 (2002-08-23)\n------------------\n\n- change of the internal representation\n\n- remove support for the EZS algorithm (no more maintened\n for the moment)\n\n- add command line options to parse html and to control\n entities inclusion and output encoding\n\n- fixing coalescing text nodes bug\n\n- many other bugs fixes\n\n- great speed improvement\n\n\n0.5.3 (2002-01-31)\n------------------\n\n- add __init__.py in \"logilab\" directory\n\n\n0.5.2 (2001-10-29)\n------------------\n\n- bug fixes in xupdate formatting and in the dom interface.\n\n\n0.5.1 (2001-09-07)\n------------------\n\n- Fast Match / Edit Scritp algorithm, now fully usable\n\n- fixes Unicode problem\n\n\n0.2.1 (2001-08-10)\n------------------\n\n- bug fixes, optimizations for ezs algorithm\n\n\n0.1.1 (2001-08-04)\n------------------\n\n- original revision","description_content_type":"","docs_url":null,"download_url":"","downloads":{"last_day":-1,"last_month":-1,"last_week":-1},"home_page":"https://github.com/Shoobx/complete","keywords":"xml,diff,complete,tree 2 tree","license":"LGPL","maintainer":"","maintainer_email":"","name":"complete","package_url":"https://pypi.org/project/complete/","platform":"","project_url":"https://pypi.org/project/complete/","project_urls":{"Homepage":"https://github.com/Shoobx/complete"},"release_url":"https://pypi.org/project/complete/1.1.0/","requires_dist":null,"requires_python": ">=2.7","summary":"Tree 2 tree correction between xml documents. Extract differences between two xml files. It returns a set of primitives to apply on source tree to obtain the destination tree.","version":"1.1.0","yanked":false,"yanked_reason":null},"last_serial":5948813,"releases":{"0.6.10":[{"comment_text":"","digests":{"md5":"9ab11f838f7e0b1dcadc94bb81eb1539","sha256":"edeb13ae5d2cc1de72b58bc989f10dc006db5acc19d42f4b05309b14bc99bbe0"},"downloads":-1,"filename":"complete-0.6.10.zip","has_sig":false,"md5_digest":"9ab11f838f7e0b1dcadc94bb81eb1539","packagetype":"sdist","python_version":"source","requires_python":null,"size":44447,"upload_time":"2015-04-02T16:07:22","upload_time_iso_8601":"2015-04-02T16:07:22.450850Z","url":"https://files.pythonhosted.org/packages/01/5c/e10197f6b699497bbbb32baa73a7b85b4be4f0117c8dae3d525ff5451987/complete-0.6.10.zip","yanked":false,"yanked_reason":null}],"0.6.4":[{"comment_text":"","digests":{"md5":"65c173fb5adcdce1008ab3a9a39ae6bd","sha256":"678042e7d8fc249f6ae78bc5f26847b1da7705ec887dce63e01a2348bfab0664"},"downloads":-1,"filename":"complete-0.6.4.tar.gz","has_sig":false,"md5_digest":"65c173fb5adcdce1008ab3a9a39ae6bd","packagetype":"sdist","python_version":"source","requires_python":null,"size":28540,"upload_time":"2015-04-02T15:37:18","upload_time_iso_8601":"2015-04-02T15:37:18.791051Z","url":"https://files.pythonhosted.org/packages/78/be/25e4c3b6e295205adcc102c72d3c182366e9adc0a42c9c641b14a710dc3c/complete-0.6.4.tar.gz","yanked":false,"yanked_reason":null}],"0.6.6":[{"comment_text":"","digests":{"md5":"b4461fcf85dbcef9d2dc3f712445f1ae","sha256":"a1d4f928c955d072afcf86bc5d67e1d901a4825fc028f05a30e957693f8369ec"},"downloads":-1,"filename":"complete-0.6.6.tar.gz","has_sig":false,"md5_digest":"b4461fcf85dbcef9d2dc3f712445f1ae","packagetype":"sdist","python_version":"source","requires_python":null,"size":30589,"upload_time":"2015-04-02T15:34:58","upload_time_iso_8601":"2015-04-02T15:34:58.448942Z","url":"https://files.pythonhosted.org/packages/b0/77/222543b1aa3687f4ded31948019a61ffc0e6e1713e5c7116d32a434663ff/complete-0.6.6.tar.gz","yanked":false,"yanked_reason":null}],"0.6.7":[{"comment_text":"","digests":{"md5":"495afb1b4e059af9099ca90cd619e0d3","sha256":"8fa3dce3f000ed5ac97023b4a2d4e0d4aa3cd1db3885c6d0480e63617a5073d9"},"downloads":-1,"filename":"complete-0.6.7.zip","has_sig":false,"md5_digest":"495afb1b4e059af9099ca90cd619e0d3","packagetype":"sdist","python_version":"source","requires_python":null,"size":44737,"upload_time":"2015-04-02T16:06:22","upload_time_iso_8601":"2015-04-02T16:06:22.122578Z","url":"https://files.pythonhosted.org/packages/2a/c1/1a009a72a524974480996e572cdad6eee1fb9c5c51c291111b1b8e240623/complete-0.6.7.zip","yanked":false,"yanked_reason":null}],"0.6.8":[{"comment_text":"","digests":{"md5":"02a6192bb2bb4196077fcf66aaf67129","sha256":"7e2d1e13a991dc490d0ea70b13528b78f6a7e44d0317536d1f54950a90ae8525"},"downloads":-1,"filename":"complete-0.6.8.zip","has_sig":false,"md5_digest":"02a6192bb2bb4196077fcf66aaf67129","packagetype":"sdist","python_version":"source","requires_python":null,"size":44988,"upload_time":"2015-04-02T16:06:45","upload_time_iso_8601":"2015-04-02T16:06:45.550281Z","url":"https://files.pythonhosted.org/packages/01/eb/4395ef31da4129fc1ade423d0728aee0865f85b1dc5cc58d083d805cd220/complete-0.6.8.zip","yanked":false,"yanked_reason":null}],"0.6.9":[{"comment_text":"","digests":{"md5":"57b6b3f0e3c21163744b1abede196749","sha256":"7ea0451330d9e57633c0ae389cedcf30efc3925ab0c2763563bb28c558b47981"},"downloads":-1,"filename":"complete-0.6.9.zip","has_sig":false,"md5_digest":"57b6b3f0e3c21163744b1abede196749","packagetype":"sdist","python_version":"source","requires_python":null,"size":44179,"upload_time":"2015-04-02T16:07:07","upload_time_iso_8601":"2015-04-02T16:07:07.388937Z","url":"https://files.pythonhosted.org/packages/bb/db/df65a8a5a09aa6fd391c2e52edf3d4ab75396f961e36a425aadc3a50dc75/complete-0.6.9.zip","yanked":false,"yanked_reason":null}],"1.0.0":[{"comment_text":"","digests":{"md5":"3d7c20a999963b8f3d8651bb8a18f577","sha256":"81394752277427af4e3783846716a4780d4100724628668e6153eb3c899fa01d"},"downloads":-1,"filename":"complete-1.0.0.tar.gz","has_sig":false,"md5_digest":"3d7c20a999963b8f3d8651bb8a18f577","packagetype":"sdist","python_version":"source","requires_python":null,"size":39642,"upload_time":"2018-04-13T13:22:51","upload_time_iso_8601":"2018-04-13T13:22:51.840164Z","url":"https://files.pythonhosted.org/packages/6b/d3/376909843cdb112f0ce50173fbcfcd9204efde27e1797de99706c95cde55/complete-1.0.0.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a1":[{"comment_text":"","digests":{"md5":"669a8bc7160c3de61b6f8a9f4005ae53","sha256":"e882b8fb68e07c5e483b9b1395b41324ca46632c5875c61e725e8bdb9a0b97e9"},"downloads":-1,"filename":"complete-1.0.0a1.tar.gz","has_sig":false,"md5_digest":"669a8bc7160c3de61b6f8a9f4005ae53","packagetype":"sdist","python_version":"source","requires_python":null,"size":37723,"upload_time":"2018-04-10T13:22:53","upload_time_iso_8601":"2018-04-10T13:22:53.589597Z","url":"https://files.pythonhosted.org/packages/5d/f3/b3de2527aaeb8d5d8c4c9c8b49fa5fb9b30463c3568fdb04c4891010d3d4/complete-1.0.0a1.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a2":[{"comment_text":"","digests":{"md5":"8ca07eb4bbb09cce4b07b64e56c7d7d6","sha256":"8bb91f15ecd2a0efa11bcaf8be013df16629af7ab0c909ca4ff1330d0aacae73"},"downloads":-1,"filename":"complete-1.0.0a2.tar.gz","has_sig":false,"md5_digest":"8ca07eb4bbb09cce4b07b64e56c7d7d6","packagetype":"sdist","python_version":"source","requires_python":null,"size":36836,"upload_time":"2018-04-10T15:48:43","upload_time_iso_8601":"2018-04-10T15:48:43.658000Z","url":"https://files.pythonhosted.org/packages/8b/22/88e32c7999c85a6aa97b2c36e4b366bd5e6631f03c14988124b93564bdb1/complete-1.0.0a2.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a3.dev0":[{"comment_text":"","digests":{"md5":"65c035101c40d30dc0838acaa135ec41","sha256":"79a4955f3585dc8f05d07494a2a35ad41fe26192e831b6fbd062188226bd42f6"},"downloads":-1,"filename":"complete-1.0.0a3.dev0.tar.gz","has_sig":false,"md5_digest":"65c035101c40d30dc0838acaa135ec41","packagetype":"sdist","python_version":"source","requires_python":null,"size":36846,"upload_time":"2018-04-10T15:56:31","upload_time_iso_8601":"2018-04-10T15:56:31.070448Z","url":"https://files.pythonhosted.org/packages/80/70/df743f6777b4a43689aaa6dfad3f8ca96c041d4f959607cb067e7903019a/complete-1.0.0a3.dev0.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a4.dev0":[{"comment_text":"","digests":{"md5":"f5034450dcd8df3abe0759a62251bc65","sha256":"2ee7f0f4a86e68e537d77e6922ebc79bb3bb1b316c3a7c2e50bc8f61774ca506"},"downloads":-1,"filename":"complete-1.0.0a4.dev0.tar.gz","has_sig":false,"md5_digest":"f5034450dcd8df3abe0759a62251bc65","packagetype":"sdist","python_version":"source","requires_python":null,"size":36899,"upload_time":"2018-04-10T16:02:36","upload_time_iso_8601":"2018-04-10T16:02:36.150652Z","url":"https://files.pythonhosted.org/packages/02/80/86b6e9a5fc6267e1e945734228073a42f40398ff78537d1e17c0f6f11b93/complete-1.0.0a4.dev0.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a5":[{"comment_text":"","digests":{"md5":"19bbc60ebbf9d290069649f1e24e7d55","sha256":"5a38bc0e7a5daf89c0a960643fcdabbd8b24b0913c94ff1ef0de06321b4bdbbd"},"downloads":-1,"filename":"complete-1.0.0a5.tar.gz","has_sig":false,"md5_digest":"19bbc60ebbf9d290069649f1e24e7d55","packagetype":"sdist","python_version":"source","requires_python":null,"size":37417,"upload_time":"2018-04-11T13:02:26","upload_time_iso_8601":"2018-04-11T13:02:26.425291Z","url":"https://files.pythonhosted.org/packages/0a/e7/d0889a2a39d214ca883873fa1547eda0672b1ef2bd6d7f5d1bb8bb1e3351/complete-1.0.0a5.tar.gz","yanked":false,"yanked_reason":null}],"1.0.0a6":[{"comment_text":"","digests":{"md5":"1785ee59afdf2ff4c634276f33767302","sha256":"02a3ce91aa39a42146e7dae240cb16a6da529f8c725e53939afe1df736ea4475"},"downloads":-1,"filename":"complete-1.0.0a6.tar.gz","has_sig":false,"md5_digest":"1785ee59afdf2ff4c634276f33767302","packagetype":"sdist","python_version":"source","requires_python":null,"size":38050,"upload_time":"2018-04-12T12:48:52","upload_time_iso_8601":"2018-04-12T12:48:52.719912Z","url":"https://files.pythonhosted.org/packages/4e/b4/50f65f8e77da28899e31945ae5719535e9a9e67bea961ecfba77c39399fe/complete-1.0.0a6.tar.gz","yanked":false,"yanked_reason":null}],"1.1.0":[{"comment_text":"","digests":{"md5":"ee08b66cae5d77364f6deee252638b3b","sha256":"462c76c145403eb5e9a8358dc402a53b264ab202ebabf83cdc660ed2cf72c89b"},"downloads":-1,"filename":"complete-1.0.dev1.tar.gz","has_sig":false,"md5_digest":"ee08b66cae5d77364f6deee252638b3b","packagetype":"sdist","python_version":"source","requires_python":null,"size":39258,"upload_time":"2018-06-15T12:24:36","upload_time_iso_8601":"2018-06-15T12:24:36.191454Z","url":"https://files.pythonhosted.org/packages/ab/4a/cab33ec593f433b7cded3cec85d1f7c900261fd503bd894e16782f7c0d09/complete-1.0.dev1.tar.gz","yanked":false,"yanked_reason":null}],"1.1.1":[{"comment_text":"","digests":{"md5":"dd17d5d775b9433df64513265502cdb8","sha256":"b8dc6c36a3499e752cf5b5d2704d961be37fcf2ea5be2e4187572e18f674d053"},"downloads":-1,"filename":"complete-1.1.1.tar.gz","has_sig":false,"md5_digest":"dd17d5d775b9433df64513265502cdb8","packagetype":"sdist","python_version":"source","requires_python":null,"size":39523,"upload_time":"2018-06-20T18:38:14","upload_time_iso_8601":"2018-06-20T18:38:14.221847Z","url":"https://files.pythonhosted.org/packages/35/cc/ae210f70dac681a7566f25f43740a0cbdc53a77e23684f7b9b1d71e4d918/complete-1.1.1.tar.gz","yanked":false,"yanked_reason":null}],"2.0":[{"comment_text":"","digests":{"md5":"dacf1d5fe5e94e0b656e8985e2e81faa","sha256":"31f83117e38d78670e1994e7160b1463adb04ffa34ff267700b2ca61bada5e57"},"downloads":-1,"filename":"complete-2.0-py2.py3-none-any.whl","has_sig":false,"md5_digest":"dacf1d5fe5e94e0b656e8985e2e81faa","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":55479,"upload_time":"2018-09-25T07:05:49","upload_time_iso_8601":"2018-09-25T07:05:49.423913Z","url":"https://files.pythonhosted.org/packages/ce/dc/7caf3ada02afcab68c7330c207f0b05b54dd5ef6ac96fb18e2fa85f1038a/complete-2.0-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"982c288a450198b414363a9388631c26","sha256":"221733cfbfafff1d90756834f1f2bc8a3cfa097a57ad6ab11e83db308c1b486e"},"downloads":-1,"filename":"complete-2.0.tar.gz","has_sig":false,"md5_digest":"982c288a450198b414363a9388631c26","packagetype":"sdist","python_version":"source","requires_python":null,"size":86965,"upload_time":"2018-09-25T07:05:51","upload_time_iso_8601":"2018-09-25T07:05:51.301648Z","url":"https://files.pythonhosted.org/packages/41/80/5c6ef6fc423fb7902cc7fe6d5784545559d11dc157b1dbe50de59192bd08/complete-2.0.tar.gz","yanked":false,"yanked_reason":null}],"2.0b1":[{"comment_text":"","digests":{"md5":"0003996e2c8b62541743c80f1367925f","sha256":"9a15649073d795f2a742f0c46f44ebc732727ae201cf92e796ffb7b31eaebf59"},"downloads":-1,"filename":"complete-2.0b1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"0003996e2c8b62541743c80f1367925f","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":53036,"upload_time":"2018-09-03T12:49:24","upload_time_iso_8601":"2018-09-03T12:49:24.676079Z","url":"https://files.pythonhosted.org/packages/65/35/0820f8a49e5812dbcdb2aee651f19df8bf7c67d379e449699ed4ede5df51/complete-2.0b1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5f60ea9a2bc0109d1828ae753c332ed2","sha256":"173ad39aa5c95e9deeb563e94174c944ffd814441b2587f5645f0119c192220c"},"downloads":-1,"filename":"complete-2.0b1.tar.gz","has_sig":false,"md5_digest":"5f60ea9a2bc0109d1828ae753c332ed2","packagetype":"sdist","python_version":"source","requires_python":null,"size":70341,"upload_time":"2018-09-03T12:49:27","upload_time_iso_8601":"2018-09-03T12:49:27.080969Z","url":"https://files.pythonhosted.org/packages/54/45/006a8a3068f261dfbb543e4a4905ea1495a9deaa6b880af881e7112fe590/complete-2.0b1.tar.gz","yanked":false,"yanked_reason":null}],"2.0b2":[{"comment_text":"","digests":{"md5":"e2431ed70e7c940e72b065b3c2fc4d66","sha256":"0ea1eabb994a10160cdeb3b3a93e80e09191bc971ddf10213ec4618e890a79a1"},"downloads":-1,"filename":"complete-2.0b2-py2.py3-none-any.whl","has_sig":false,"md5_digest":"e2431ed70e7c940e72b065b3c2fc4d66","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":53862,"upload_time":"2018-09-06T14:41:53","upload_time_iso_8601":"2018-09-06T14:41:53.157424Z","url":"https://files.pythonhosted.org/packages/10/db/b5e9c37e5e66e86b5f87220db5e18d4f6b79f5b57037fcb251ca1116d9d0/complete-2.0b2-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"0199ffb374b5378b5b3f03b23008ee31","sha256":"4d95ddf206f4c440fcace43c0a9f4d26fb704b1fd5087c6c9b903e04a008bf05"},"downloads":-1,"filename":"complete-2.0b2.tar.gz","has_sig":false,"md5_digest":"0199ffb374b5378b5b3f03b23008ee31","packagetype":"sdist","python_version":"source","requires_python":null,"size":85397,"upload_time":"2018-09-06T14:41:55","upload_time_iso_8601":"2018-09-06T14:41:55.709235Z","url":"https://files.pythonhosted.org/packages/e6/ec/5c92cdd29d86e05b0938c56af54e06962a822689c5c70b5fa4eba727d799/complete-2.0b2.tar.gz","yanked":false,"yanked_reason":null}],"2.0b3":[{"comment_text":"","digests":{"md5":"810ffd544e5de013bbc0ad49258d017c","sha256":"a7c2efc42f6b2e47af36d905521a0e97c5f469d3d8c4243b87db9281c056c5de"},"downloads":-1,"filename":"complete-2.0b3-py2.py3-none-any.whl","has_sig":false,"md5_digest":"810ffd544e5de013bbc0ad49258d017c","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":54110,"upload_time":"2018-09-11T19:48:45","upload_time_iso_8601":"2018-09-11T19:48:45.470945Z","url":"https://files.pythonhosted.org/packages/0a/0c/fa7d475d3be9c376bb46fa7d0db1f70ee7cbce8d7328de750d06c72c1f8a/complete-2.0b3-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"116600a8ebf81955bbdde9716dcb8a70","sha256":"77e234d9e9e2f274e9bd86380f2fd0bb58ad3071278ab4c9df801ff54caead01"},"downloads":-1,"filename":"complete-2.0b3.tar.gz","has_sig":false,"md5_digest":"116600a8ebf81955bbdde9716dcb8a70","packagetype":"sdist","python_version":"source","requires_python":null,"size":85573,"upload_time":"2018-09-11T19:48:47","upload_time_iso_8601":"2018-09-11T19:48:47.787379Z","url":"https://files.pythonhosted.org/packages/a7/2d/22d2e86b795f85aa80676c7668a5e375b44d3239664d72b0b1c32e7291ed/complete-2.0b3.tar.gz","yanked":false,"yanked_reason":null}],"2.0b4":[{"comment_text":"","digests":{"md5":"e238130940a149c44927e30216bc0f74","sha256":"88ba6fb733677579a9bd6b1b1e99808d47d17ba20038075f8731ee12d40efb41"},"downloads":-1,"filename":"complete-2.0b4-py2.py3-none-any.whl","has_sig":false,"md5_digest":"e238130940a149c44927e30216bc0f74","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":54166,"upload_time":"2018-09-12T12:58:38","upload_time_iso_8601":"2018-09-12T12:58:38.798219Z","url":"https://files.pythonhosted.org/packages/f2/99/891565815619416a411b6a43dca887c575035c0dd2da374e7c87df5d9263/complete-2.0b4-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"14f8369167928c97140e55af20438d95","sha256":"63bdf6265dac0213e71001b03c81171b7fb1bf2fab06cd0ea8c9d2ffd4c0cd0c"},"downloads":-1,"filename":"complete-2.0b4.tar.gz","has_sig":false,"md5_digest":"14f8369167928c97140e55af20438d95","packagetype":"sdist","python_version":"source","requires_python":null,"size":87043,"upload_time":"2018-09-12T12:58:41","upload_time_iso_8601":"2018-09-12T12:58:41.083128Z","url":"https://files.pythonhosted.org/packages/eb/ca/24ff95b2da5a77f167e2113b6861f879f04629a5b1834ca221b790b36481/complete-2.0b4.tar.gz","yanked":false,"yanked_reason":null}],"2.0b5":[{"comment_text":"","digests":{"md5":"8660d1531dda6f79bd48a49fbf3d5888","sha256":"01b00bcf84e8f9692215ef1f3d4cb350d076add26b70f29e4f31ac85e5f66a28"},"downloads":-1,"filename":"complete-2.0b5-py2.py3-none-any.whl","has_sig":false,"md5_digest":"8660d1531dda6f79bd48a49fbf3d5888","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":54240,"upload_time":"2018-09-13T19:12:05","upload_time_iso_8601":"2018-09-13T19:12:05.832300Z","url":"https://files.pythonhosted.org/packages/ac/69/3a53d4aeb73dc20d140bdab53036572706e4cfc063d58d43cb73264b86ed/complete-2.0b5-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"c8a97de8115ab5ee9c0d5e1f70ed9060","sha256":"308bff344aed37aa04aae552e9d54d0d8ba625386bd5b8817282ef75c66de407"},"downloads":-1,"filename":"complete-2.0b5.tar.gz","has_sig":false,"md5_digest":"c8a97de8115ab5ee9c0d5e1f70ed9060","packagetype":"sdist","python_version":"source","requires_python":null,"size":87210,"upload_time":"2018-09-13T19:12:09","upload_time_iso_8601":"2018-09-13T19:12:09.026887Z","url":"https://files.pythonhosted.org/packages/55/83/cbd13288511af6f8c55ea340935cf17b244c485f6f776214fbc6bc41d7c4/complete-2.0b5.tar.gz","yanked":false,"yanked_reason":null}],"2.0b6":[{"comment_text":"","digests":{"md5":"6e64c656bd3b495bc2d9f357c6f8901f","sha256":"9e6d41a6ebfe71a90a288ea7f3a5c8efa2b7fe313c3e1aa026fa97f345e07745"},"downloads":-1,"filename":"complete-2.0b6-py2.py3-none-any.whl","has_sig":false,"md5_digest":"6e64c656bd3b495bc2d9f357c6f8901f","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":55113,"upload_time":"2018-09-13T19:14:55","upload_time_iso_8601":"2018-09-13T19:14:55.356378Z","url":"https://files.pythonhosted.org/packages/aa/39/115e4fa64aebf2c57a71c29c53740504f658b1447650a1473edb0c3ebb00/complete-2.0b6-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5c2d8fafcf16fd0fa9220da91205f696","sha256":"fa4cb24351e678dd56c9b46350cd54b1f39209e03517532a5e8fa8db9adbda56"},"downloads":-1,"filename":"complete-2.0b6.tar.gz","has_sig":false,"md5_digest":"5c2d8fafcf16fd0fa9220da91205f696","packagetype":"sdist","python_version":"source","requires_python":null,"size":88205,"upload_time":"2018-09-13T19:14:58","upload_time_iso_8601":"2018-09-13T19:14:58.034821Z","url":"https://files.pythonhosted.org/packages/2c/59/c47466d69a1293a7e1587a8af04d15c875415967527e9be6b4241723d96b/complete-2.0b6.tar.gz","yanked":false,"yanked_reason":null}],"2.0b7":[{"comment_text":"","digests":{"md5":"7c1beaed9081f6dca0cce01ab4957c6b","sha256":"8dbfdf93bd9d91c07ab5494d316c6083c3d71f673fd66ba497ce2b6a2011dd18"},"downloads":-1,"filename":"complete-2.0b7-py2.py3-none-any.whl","has_sig":false,"md5_digest":"7c1beaed9081f6dca0cce01ab4957c6b","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":56045,"upload_time":"2018-09-14T13:31:42","upload_time_iso_8601":"2018-09-14T13:31:42.874915Z","url":"https://files.pythonhosted.org/packages/bc/6c/e71ecb88f2308d7528c687ce2982fa4dba85cdaa9ac46604af59d844ace7/complete-2.0b7-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"bdc27299ae90128c3bbee2f833be2171","sha256":"e6ba88f2c2b8329d62b3aadfcb30dd782497087759673257e0f688df728a1694"},"downloads":-1,"filename":"complete-2.0b7.tar.gz","has_sig":false,"md5_digest":"bdc27299ae90128c3bbee2f833be2171","packagetype":"sdist","python_version":"source","requires_python":null,"size":89558,"upload_time":"2018-09-14T13:31:45","upload_time_iso_8601":"2018-09-14T13:31:45.969375Z","url":"https://files.pythonhosted.org/packages/4b/7a/349fde975c7b6b7331da2542d0e2cf9f0b7d30054bb5684d94d90f48e12b/complete-2.0b7.tar.gz","yanked":false,"yanked_reason":null}],"2.0rc1":[{"comment_text":"","digests":{"md5":"ff0d9ff18f6ad6b6951aa7f933782280","sha256":"582270dc62708af5ee2b649abde1ee1d6f0374f642f6b0b8771e203f2d4922ed"},"downloads":-1,"filename":"complete-2.0rc1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"ff0d9ff18f6ad6b6951aa7f933782280","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":56194,"upload_time":"2018-09-24T20:19:16","upload_time_iso_8601":"2018-09-24T20:19:16.377778Z","url":"https://files.pythonhosted.org/packages/e6/55/1c65e555d1e952644428da85662ef9c0448becfae5487ab321048b57d339/complete-2.0rc1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"eaef8d536ee4faedb15b5b6e77c84378","sha256":"e6044d6cf2bb283ad72e7fae3200d275950cbdc7245751c62c51c3a6b12391d6"},"downloads":-1,"filename":"complete-2.0rc1.tar.gz","has_sig":false,"md5_digest":"eaef8d536ee4faedb15b5b6e77c84378","packagetype":"sdist","python_version":"source","requires_python":null,"size":87563,"upload_time":"2018-09-24T20:19:18","upload_time_iso_8601":"2018-09-24T20:19:18.508231Z","url":"https://files.pythonhosted.org/packages/1f/f3/31351b897f110ac00cb5a13b0ea4ca5f272602ee0db46f0f810d8a1baa69/complete-2.0rc1.tar.gz","yanked":false,"yanked_reason":null}],"2.1":[{"comment_text":"","digests":{"md5":"4881924e6245797451bd27c644d5b569","sha256":"62aed6f2d1779a7f934454a897c61a1bc704f7f04d6fb533e6bfe54c17d22224"},"downloads":-1,"filename":"complete-2.1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"4881924e6245797451bd27c644d5b569","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":57198,"upload_time":"2018-10-03T11:05:00","upload_time_iso_8601":"2018-10-03T11:05:00.909986Z","url":"https://files.pythonhosted.org/packages/27/23/91f3184390c709be6ce9419f2dd4e6b5bb2fd1b7a06579ea1625f8898d0b/complete-2.1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"cc6b38495b180f0d1d852dd1794fef42","sha256":"528aaeff5b12aa7c1fe5909111fd7b46c14bf25f1a5ed759d6b422d45f10b40c"},"downloads":-1,"filename":"complete-2.1.tar.gz","has_sig":false,"md5_digest":"cc6b38495b180f0d1d852dd1794fef42","packagetype":"sdist","python_version":"source","requires_python":null,"size":91935,"upload_time":"2018-10-03T11:05:03","upload_time_iso_8601":"2018-10-03T11:05:03.023229Z","url":"https://files.pythonhosted.org/packages/65/57/604980e6223c09e8b428c128d480ae516548f7d2bd8ad580e72f2b5dfc09/complete-2.1.tar.gz","yanked":false,"yanked_reason":null}],"2.1b1":[{"comment_text":"","digests":{"md5":"3fb0bd3f94cce78d9fdf8838c8aa0313","sha256":"d58675740ed81b6f1397f3adb1fa30cc92d47a96a9e000c0b636772a20ea307c"},"downloads":-1,"filename":"complete-2.1b1-py2.py3-none-any.whl","has_sig":false,"md5_digest":"3fb0bd3f94cce78d9fdf8838c8aa0313","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":56695,"upload_time":"2018-10-01T19:58:52","upload_time_iso_8601":"2018-10-01T19:58:52.535754Z","url":"https://files.pythonhosted.org/packages/a6/5a/ca949df720ed4e8754c61137c0f073452954ff32b2f50791f4a4fdc0e77a/complete-2.1b1-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"a300ab4179a1b744a80d69d02997a453","sha256":"3e7180b09ad27439c295d022be6ef45e8aa3bdd00681b9556afbc8617cb31917"},"downloads":-1,"filename":"complete-2.1b1.tar.gz","has_sig":false,"md5_digest":"a300ab4179a1b744a80d69d02997a453","packagetype":"sdist","python_version":"source","requires_python":null,"size":90728,"upload_time":"2018-10-01T19:58:54","upload_time_iso_8601":"2018-10-01T19:58:54.596506Z","url":"https://files.pythonhosted.org/packages/46/69/30fa7d24f48e0f77fcd4f3c811dc72127b997bb8149488123890bfb42baf/complete-2.1b1.tar.gz","yanked":false,"yanked_reason":null}],"2.2":[{"comment_text":"","digests":{"md5":"381ae9b409adc01109fb4f48a15353e6","sha256":"35e688c7295ce389641bce37cd92fc3482d7d67874a67a9d0cc61a9ccc0f20ac"},"downloads":-1,"filename":"complete-2.2-py2.py3-none-any.whl","has_sig":false,"md5_digest":"381ae9b409adc01109fb4f48a15353e6","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":57344,"upload_time":"2018-10-12T16:21:34","upload_time_iso_8601":"2018-10-12T16:21:34.840456Z","url":"https://files.pythonhosted.org/packages/15/b5/3e4434f95cf68e1acb398dd9c596d07cc881c2fa45ab78659689615989d1/complete-2.2-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"4c5811798dbb0164e075e4026d410633","sha256":"aad7b8b00a49eeef7cd69757b2c548b88d4d7c584b95ac4ea9c0f08e167bc5a0"},"downloads":-1,"filename":"complete-2.2.tar.gz","has_sig":false,"md5_digest":"4c5811798dbb0164e075e4026d410633","packagetype":"sdist","python_version":"source","requires_python":null,"size":92135,"upload_time":"2018-10-12T16:21:36","upload_time_iso_8601":"2018-10-12T16:21:36.870458Z","url":"https://files.pythonhosted.org/packages/46/20/041ec087b8288b86aa71cea6f89c9aed9fc931d543d620d383556f646366/complete-2.2.tar.gz","yanked":false,"yanked_reason":null}],"2.3":[{"comment_text":"","digests":{"md5":"44c51fb9141dc9c2cb2d4a4bdbcc1acb","sha256":"4930ac8c01c5b5c94ae24ee5d26e42d537a3281291b06928529bb97cc11844e8"},"downloads":-1,"filename":"complete-2.3-py2.py3-none-any.whl","has_sig":false,"md5_digest":"44c51fb9141dc9c2cb2d4a4bdbcc1acb","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":59466,"upload_time":"2019-02-27T11:49:48","upload_time_iso_8601":"2019-02-27T11:49:48.609906Z","url":"https://files.pythonhosted.org/packages/ff/37/ed2d26f5f196b6db5a7a53de1ab96c961ab0c0e42d7677ea302cc817ed7f/complete-2.3-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"0510299dba157df2cbfea40426465bf5","sha256":"2727f62ab590c1fc834e86033988a76a86a67f5a78196584049b7a722bd94466"},"downloads":-1,"filename":"complete-2.3.tar.gz","has_sig":false,"md5_digest":"0510299dba157df2cbfea40426465bf5","packagetype":"sdist","python_version":"source","requires_python":null,"size":95947,"upload_time":"2019-02-27T11:49:51","upload_time_iso_8601":"2019-02-27T11:49:51.261375Z","url":"https://files.pythonhosted.org/packages/e6/1c/3dd86bec66fad3a21ac9d093610f83f6e20ad1d835ebf4079af53e65ed6b/complete-2.3.tar.gz","yanked":false,"yanked_reason":null}],"2.4":[{"comment_text":"","digests":{"md5":"d676c724f7e13838edd8a7dcc8cbe3e7","sha256":"213c2f4c39ed71811a9ceeec1c8bdf2e673e5527261ea11708b3acfa6c2bdb00"},"downloads":-1,"filename":"complete-2.4-py2.py3-none-any.whl","has_sig":false,"md5_digest":"d676c724f7e13838edd8a7dcc8cbe3e7","packagetype":"bdist_wheel","python_version":"py2.py3","requires_python":null,"size":57463,"upload_time":"2019-10-09T09:41:14","upload_time_iso_8601":"2019-10-09T09:41:14.821316Z","url":"https://files.pythonhosted.org/packages/36/95/7d9271ae617b6c448fa244b347e4fd43ed5ad1bb35cea282f1c0fa82ea2b/complete-2.4-py2.py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"1728f65d01c5cb1f3c3838d489a1569d","sha256":"05bea20ce1f2c9678683bcce0c3ba9981f87d92b709d190e018bcbf047eccf63"},"downloads":-1,"filename":"complete-2.4.tar.gz","has_sig":false,"md5_digest":"1728f65d01c5cb1f3c3838d489a1569d","packagetype":"sdist","python_version":"source","requires_python":null,"size":94826,"upload_time":"2019-10-09T09:41:17","upload_time_iso_8601":"2019-10-09T09:41:17.883138Z","url":"https://files.pythonhosted.org/packages/76/36/a3e41bf7c01f1110d7b5589ca74d2927d3736a5b43ee63053faf3483b991/complete-2.4.tar.gz","yanked":false,"yanked_reason":null}]},"urls":[{"comment_text":"","digests":{"md5":"ee08b66cae5d77364f6deee252638b3b","sha256":"462c76c145403eb5e9a8358dc402a53b264ab202ebabf83cdc660ed2cf72c89b"},"downloads":-1,"filename":"complete-1.0.dev1.tar.gz","has_sig":false,"md5_digest":"ee08b66cae5d77364f6deee252638b3b","packagetype":"sdist","python_version":"source","requires_python":null,"size":39258,"upload_time":"2018-06-15T12:24:36","upload_time_iso_8601":"2018-06-15T12:24:36.191454Z","url":"https://files.pythonhosted.org/packages/ab/4a/cab33ec593f433b7cded3cec85d1f7c900261fd503bd894e16782f7c0d09/complete-1.0.dev1.tar.gz","yanked":false,"yanked_reason":null}]} diff --git a/pyroma/testdata/jsondata/distribute.json b/pyroma/testdata/jsondata/distribute.json deleted file mode 100644 index 09c7a01..0000000 --- a/pyroma/testdata/jsondata/distribute.json +++ /dev/null @@ -1 +0,0 @@ -{"info":{"author":"The fellowship of the packaging","author_email":"distutils-sig@python.org","bugtrack_url":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: Python Software Foundation License","License :: OSI Approved :: Zope Public License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Topic :: Software Development :: Libraries :: Python Modules","Topic :: System :: Archiving :: Packaging","Topic :: System :: Systems Administration","Topic :: Utilities"],"description":"===============================\nInstalling and Using Distribute\n===============================\n\n.. contents:: **Table of Contents**\n\n-----------\nDisclaimers\n-----------\n\nAbout the fork\n==============\n\n`Distribute` is a fork of the `Setuptools` project.\n\nDistribute is intended to replace Setuptools as the standard method\nfor working with Python module distributions.\n\nThe fork has two goals:\n\n- Providing a backward compatible version to replace Setuptools\n and make all distributions that depend on Setuptools work as\n before, but with less bugs and behaviorial issues.\n\n This work is done in the 0.6.x series.\n\n Starting with version 0.6.2, Distribute supports Python 3.\n Installing and using distribute for Python 3 code works exactly\n the same as for Python 2 code, but Distribute also helps you to support\n Python 2 and Python 3 from the same source code by letting you run 2to3\n on the code as a part of the build process, by setting the keyword parameter\n ``use_2to3`` to True. See http://packages.python.org/distribute for more\n information.\n\n- Refactoring the code, and releasing it in several distributions.\n This work is being done in the 0.7.x series but not yet released.\n\nThe roadmap is still evolving, and the page that is up-to-date is\nlocated at : `http://packages.python.org/distribute/roadmap`.\n\nIf you install `Distribute` and want to switch back for any reason to\n`Setuptools`, get to the `Uninstallation instructions`_ section.\n\nMore documentation\n==================\n\nYou can get more information in the Sphinx-based documentation, located\nat http://packages.python.org/distribute. This documentation includes the old\nSetuptools documentation that is slowly replaced, and brand new content.\n\nAbout the installation process\n==============================\n\nThe `Distribute` installer modifies your installation by de-activating an\nexisting installation of `Setuptools` in a bootstrap process. This process\nhas been tested in various installation schemes and contexts but in case of a\nbug during this process your Python installation might be left in a broken\nstate. Since all modified files and directories are copied before the\ninstallation starts, you will be able to get back to a normal state by reading\nthe instructions in the `Uninstallation instructions`_ section.\n\nIn any case, it is recommended to save you `site-packages` directory before\nyou start the installation of `Distribute`.\n\n-------------------------\nInstallation Instructions\n-------------------------\n\nDistribute is only released as a source distribution.\n\nIt can be installed using pip, and can be done so with the source tarball,\nor by using the ``distribute_setup.py`` script provided online.\n\n``distribute_setup.py`` is the simplest and preferred way on all systems.\n\ndistribute_setup.py\n===================\n\nDownload\n`distribute_setup.py `_\nand execute it, using the Python interpreter of your choice.\n\nIf your shell has the ``curl`` program you can do::\n\n $ curl -O http://python-distribute.org/distribute_setup.py\n $ python distribute_setup.py\n\nNotice this file is also provided in the source release.\n\npip\n===\n\nRun easy_install or pip::\n\n $ pip install distribute\n\nSource installation\n===================\n\nDownload the source tarball, uncompress it, then run the install command::\n\n $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.15.tar.gz\n $ tar -xzvf distribute-0.6.15.tar.gz\n $ cd distribute-0.6.15\n $ python setup.py install\n\n---------------------------\nUninstallation Instructions\n---------------------------\n\nLike other distutils-based distributions, Distribute doesn't provide an\nuninstaller yet. It's all done manually! We are all waiting for PEP 376\nsupport in Python.\n\nDistribute is installed in three steps:\n\n1. it gets out of the way an existing installation of Setuptools\n2. it installs a `fake` setuptools installation\n3. it installs distribute\n\nDistribute can be removed like this:\n\n- remove the ``distribute*.egg`` file located in your site-packages directory\n- remove the ``setuptools.pth`` file located in you site-packages directory\n- remove the easy_install script located in you ``sys.prefix/bin`` directory\n- remove the ``setuptools*.egg`` directory located in your site-packages directory,\n if any.\n\nIf you want to get back to setuptools:\n\n- reinstall setuptools using its instruction.\n\nLastly:\n\n- remove the *.OLD.* directory located in your site-packages directory if any,\n **once you have checked everything was working correctly again**.\n\n-------------------------\nQuick help for developers\n-------------------------\n\nTo create an egg which is compatible with Distribute, use the same\npractice as with Setuptools, e.g.::\n\n from setuptools import setup\n\n setup(...\n )\n\nTo use `pkg_resources` to access data files in the egg, you should\nrequire the Setuptools distribution explicitly::\n\n from setuptools import setup\n\n setup(...\n install_requires=['setuptools']\n )\n\nOnly if you need Distribute-specific functionality should you depend\non it explicitly. In this case, replace the Setuptools dependency::\n\n from setuptools import setup\n\n setup(...\n install_requires=['distribute']\n )\n\n-----------\nInstall FAQ\n-----------\n\n- **Why is Distribute wrapping my Setuptools installation?**\n\n Since Distribute is a fork, and since it provides the same package\n and modules, it renames the existing Setuptools egg and inserts a\n new one which merely wraps the Distribute code. This way, full\n backwards compatibility is kept for packages which rely on the\n Setuptools modules.\n\n At the same time, packages can meet their dependency on Setuptools\n without actually installing it (which would disable Distribute).\n\n- **How does Distribute interact with virtualenv?**\n\n Everytime you create a virtualenv it will install setuptools by default.\n You either need to re-install Distribute in it right after or pass the\n ``--distribute`` option when creating it.\n\n Once installed, your virtualenv will use Distribute transparently.\n\n Although, if you have Setuptools installed in your system-wide Python,\n and if the virtualenv you are in was generated without the `--no-site-packages`\n option, the Distribute installation will stop.\n\n You need in this case to build a virtualenv with the `--no-site-packages`\n option or to install `Distribute` globally.\n\n- **How does Distribute interacts with zc.buildout?**\n\n You can use Distribute in your zc.buildout, with the --distribute option,\n starting at zc.buildout 1.4.2::\n\n $ python bootstrap.py --distribute\n\n For previous zc.buildout versions, *the only thing* you need to do\n is use the bootstrap at `http://python-distribute.org/bootstrap.py`. Run\n that bootstrap and ``bin/buildout`` (and all other buildout-generated\n scripts) will transparently use distribute instead of setuptools. You do\n not need a specific buildout release.\n\n A shared eggs directory is no problem (since 0.6.6): the setuptools egg is\n left in place unmodified. So other buildouts that do not yet use the new\n bootstrap continue to work just fine. And there is no need to list\n ``distribute`` somewhere in your eggs: using the bootstrap is enough.\n\n The source code for the bootstrap script is located at\n `http://bitbucket.org/tarek/buildout-distribute`.\n\n\n\n-----------------------------\nFeedback and getting involved\n-----------------------------\n\n- Mailing list: http://mail.python.org/mailman/listinfo/distutils-sig\n- Issue tracker: http://bitbucket.org/tarek/distribute/issues/\n- Code Repository: http://bitbucket.org/tarek/distribute\n\n=======\nCHANGES\n=======\n\n------\n0.6.15\n------\n\n* Fixed typo in bdist_egg\n* Several issues under Python 3 has been solved.\n* Issue 146: Fixed missing DLL files after easy_install of windows exe package.\n\n------\n0.6.14\n------\n\n* Issue 170: Fixed unittest failure. Thanks to Toshio.\n* Issue 171: Fixed race condition in unittests cause deadlocks in test suite.\n* Issue 143: Fixed a lookup issue with easy_install.\n Thanks to David and Zooko.\n* Issue 174: Fixed the edit mode when its used with setuptools itself\n\n------\n0.6.13\n------\n\n* Issue 160: 2.7 gives ValueError(\"Invalid IPv6 URL\")\n* Issue 150: Fixed using ~/.local even in a --no-site-packages virtualenv\n* Issue 163: scan index links before external links, and don't use the md5 when\n comparing two distributions\n\n------\n0.6.12\n------\n\n* Issue 149: Fixed various failures on 2.3/2.4\n\n------\n0.6.11\n------\n\n* Found another case of SandboxViolation - fixed\n* Issue 15 and 48: Introduced a socket timeout of 15 seconds on url openings\n* Added indexsidebar.html into MANIFEST.in\n* Issue 108: Fixed TypeError with Python3.1\n* Issue 121: Fixed --help install command trying to actually install.\n* Issue 112: Added an os.makedirs so that Tarek's solution will work.\n* Issue 133: Added --no-find-links to easy_install\n* Added easy_install --user\n* Issue 100: Fixed develop --user not taking '.' in PYTHONPATH into account\n* Issue 134: removed spurious UserWarnings. Patch by VanLindberg\n* Issue 138: cant_write_to_target error when setup_requires is used.\n* Issue 147: respect the sys.dont_write_bytecode flag\n\n------\n0.6.10\n------\n\n* Reverted change made for the DistributionNotFound exception because\n zc.buildout uses the exception message to get the name of the\n distribution.\n\n-----\n0.6.9\n-----\n\n* Issue 90: unknown setuptools version can be added in the working set\n* Issue 87: setupt.py doesn't try to convert distribute_setup.py anymore\n Initial Patch by arfrever.\n* Issue 89: added a side bar with a download link to the doc.\n* Issue 86: fixed missing sentence in pkg_resources doc.\n* Added a nicer error message when a DistributionNotFound is raised.\n* Issue 80: test_develop now works with Python 3.1\n* Issue 93: upload_docs now works if there is an empty sub-directory.\n* Issue 70: exec bit on non-exec files\n* Issue 99: now the standalone easy_install command doesn't uses a\n \"setup.cfg\" if any exists in the working directory. It will use it\n only if triggered by ``install_requires`` from a setup.py call\n (install, develop, etc).\n* Issue 101: Allowing ``os.devnull`` in Sandbox\n* Issue 92: Fixed the \"no eggs\" found error with MacPort\n (platform.mac_ver() fails)\n* Issue 103: test_get_script_header_jython_workaround not run\n anymore under py3 with C or POSIX local. Contributed by Arfrever.\n* Issue 104: remvoved the assertion when the installation fails,\n with a nicer message for the end user.\n* Issue 100: making sure there's no SandboxViolation when\n the setup script patches setuptools.\n\n-----\n0.6.8\n-----\n\n* Added \"check_packages\" in dist. (added in Setuptools 0.6c11)\n* Fixed the DONT_PATCH_SETUPTOOLS state.\n\n-----\n0.6.7\n-----\n\n* Issue 58: Added --user support to the develop command\n* Issue 11: Generated scripts now wrap their call to the script entry point\n in the standard \"if name == 'main'\"\n* Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv\n can drive an installation that doesn't patch a global setuptools.\n* Reviewed unladen-swallow specific change from\n http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719\n and determined that it no longer applies. Distribute should work fine with\n Unladen Swallow 2009Q3.\n* Issue 21: Allow PackageIndex.open_url to gracefully handle all cases of a\n httplib.HTTPException instead of just InvalidURL and BadStatusLine.\n* Removed virtual-python.py from this distribution and updated documentation\n to point to the actively maintained virtualenv instead.\n* Issue 64: use_setuptools no longer rebuilds the distribute egg every\n time it is run\n* use_setuptools now properly respects the requested version\n* use_setuptools will no longer try to import a distribute egg for the\n wrong Python version\n* Issue 74: no_fake should be True by default.\n* Issue 72: avoid a bootstrapping issue with easy_install -U\n\n-----\n0.6.6\n-----\n\n* Unified the bootstrap file so it works on both py2.x and py3k without 2to3\n (patch by Holger Krekel)\n\n-----\n0.6.5\n-----\n\n* Issue 65: cli.exe and gui.exe are now generated at build time,\n depending on the platform in use.\n\n* Issue 67: Fixed doc typo (PEP 381/382)\n\n* Distribute no longer shadows setuptools if we require a 0.7-series\n setuptools. And an error is raised when installing a 0.7 setuptools with\n distribute.\n\n* When run from within buildout, no attempt is made to modify an existing\n setuptools egg, whether in a shared egg directory or a system setuptools.\n\n* Fixed a hole in sandboxing allowing builtin file to write outside of\n the sandbox.\n\n-----\n0.6.4\n-----\n\n* Added the generation of `distribute_setup_3k.py` during the release.\n This close http://bitbucket.org/tarek/distribute/issue/52.\n\n* Added an upload_docs command to easily upload project documentation to\n PyPI's http://packages.python.org.\n This close http://bitbucket.org/tarek/distribute/issue/56.\n\n* Fixed a bootstrap bug on the use_setuptools() API.\n\n-----\n0.6.3\n-----\n\nsetuptools\n==========\n\n* Fixed a bunch of calls to file() that caused crashes on Python 3.\n\nbootstrapping\n=============\n\n* Fixed a bug in sorting that caused bootstrap to fail on Python 3.\n\n-----\n0.6.2\n-----\n\nsetuptools\n==========\n\n* Added Python 3 support; see docs/python3.txt.\n This closes http://bugs.python.org/setuptools/issue39.\n\n* Added option to run 2to3 automatically when installing on Python 3.\n This closes http://bitbucket.org/tarek/distribute/issue/31.\n\n* Fixed invalid usage of requirement.parse, that broke develop -d.\n This closes http://bugs.python.org/setuptools/issue44.\n\n* Fixed script launcher for 64-bit Windows.\n This closes http://bugs.python.org/setuptools/issue2.\n\n* KeyError when compiling extensions.\n This closes http://bugs.python.org/setuptools/issue41.\n\nbootstrapping\n=============\n\n* Fixed bootstrap not working on Windows.\n This closes http://bitbucket.org/tarek/distribute/issue/49.\n\n* Fixed 2.6 dependencies.\n This closes http://bitbucket.org/tarek/distribute/issue/50.\n\n* Make sure setuptools is patched when running through easy_install\n This closes http://bugs.python.org/setuptools/issue40.\n\n-----\n0.6.1\n-----\n\nsetuptools\n==========\n\n* package_index.urlopen now catches BadStatusLine and malformed url errors.\n This closes http://bitbucket.org/tarek/distribute/issue/16 and\n http://bitbucket.org/tarek/distribute/issue/18.\n\n* zip_ok is now False by default. This closes\n http://bugs.python.org/setuptools/issue33.\n\n* Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.\n\n* Fixed invalid bootstraping with easy_install installation\n http://bitbucket.org/tarek/distribute/issue/40.\n Thanks to Florian Schulze for the help.\n\n* Removed buildout/bootstrap.py. A new repository will create a specific\n bootstrap.py script.\n\n\nbootstrapping\n=============\n\n* The boostrap process leave setuptools alone if detected in the system\n and --root or --prefix is provided, but is not in the same location.\n This closes http://bitbucket.org/tarek/distribute/issue/10.\n\n---\n0.6\n---\n\nsetuptools\n==========\n\n* Packages required at build time where not fully present at install time.\n This closes http://bitbucket.org/tarek/distribute/issue/12.\n\n* Protected against failures in tarfile extraction. This closes\n http://bitbucket.org/tarek/distribute/issue/10.\n\n* Made Jython api_tests.txt doctest compatible. This closes\n http://bitbucket.org/tarek/distribute/issue/7.\n\n* sandbox.py replaced builtin type file with builtin function open. This\n closes http://bitbucket.org/tarek/distribute/issue/6.\n\n* Immediately close all file handles. This closes\n http://bitbucket.org/tarek/distribute/issue/3.\n\n* Added compatibility with Subversion 1.6. This references\n http://bitbucket.org/tarek/distribute/issue/1.\n\npkg_resources\n=============\n\n* Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API\n instead. Based on a patch from ronaldoussoren. This closes\n http://bitbucket.org/tarek/distribute/issue/5.\n\n* Fixed a SandboxViolation for mkdir that could occur in certain cases.\n This closes http://bitbucket.org/tarek/distribute/issue/13.\n\n* Allow to find_on_path on systems with tight permissions to fail gracefully.\n This closes http://bitbucket.org/tarek/distribute/issue/9.\n\n* Corrected inconsistency between documentation and code of add_entry.\n This closes http://bitbucket.org/tarek/distribute/issue/8.\n\n* Immediately close all file handles. This closes\n http://bitbucket.org/tarek/distribute/issue/3.\n\neasy_install\n============\n\n* Immediately close all file handles. This closes\n http://bitbucket.org/tarek/distribute/issue/3.","description_content_type":null,"docs_url":null,"download_url":"UNKNOWN","downloads":{"last_day":-1,"last_month":-1,"last_week":-1},"home_page":"http://packages.python.org/distribute","keywords":"CPAN PyPI distutils eggs package management","license":"PSF or ZPL","maintainer":null,"maintainer_email":null,"name":"distribute","package_url":"https://pypi.org/project/distribute/","platform":"UNKNOWN","project_url":"https://pypi.org/project/distribute/","project_urls":{"Download":"UNKNOWN","Homepage":"http://packages.python.org/distribute"},"release_url":"https://pypi.org/project/distribute/0.6.15/","requires_dist":null,"requires_python":null,"python_requires":">=3.0","summary":"Easily download, build, install, upgrade, and uninstall Python packages","version":"0.6.15","yanked":false,"yanked_reason":null},"last_serial":2525930,"releases":{"0.6":[{"comment_text":"","digests":{"md5":"49b936db5d9d7fd87a5eac2d55964134","sha256":"0520df7dd20b84233dce5f8c1b284cf88a75621eb7c9b84e0358e77a6ffde68c"},"downloads":-1,"filename":"distribute-0.6.tar.gz","has_sig":false,"md5_digest":"49b936db5d9d7fd87a5eac2d55964134","packagetype":"sdist","python_version":"source","requires_python":null,"size":365198,"upload_time":"2011-09-22T18:27:32","upload_time_iso_8601":"2011-09-22T18:27:32.964060Z","url":"https://files.pythonhosted.org/packages/2b/37/8468dd6c136d01adbd031f58b62fc6a8dbd1aedcfbeca2b86f298a960849/distribute-0.6.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"ad25841e6df0c45208a1b4ffc13cac61","sha256":"2f3f6c44d398c91238658cf831773b9f8b0927c4eef694879b95b0e784e588df"},"downloads":-1,"filename":"distribute-0.6.zip","has_sig":false,"md5_digest":"ad25841e6df0c45208a1b4ffc13cac61","packagetype":"sdist","python_version":"source","requires_python":null,"size":400632,"upload_time":"2016-01-19T00:00:12","upload_time_iso_8601":"2016-01-19T00:00:12.771591Z","url":"https://files.pythonhosted.org/packages/f5/a1/5d176b200da15f6a1cbd50115d7218ddcbd8764c4ea300768b37ca123a69/distribute-0.6.zip","yanked":false,"yanked_reason":null}],"0.6.1":[{"comment_text":"","digests":{"md5":"5fb8cdfe8dc70485aa1d00a7bbb220fc","sha256":"4e2d26047c7ca7cea83d178de04ca44c40e137f412252ac59878759e37fc60ff"},"downloads":-1,"filename":"distribute-0.6.1.tar.gz","has_sig":false,"md5_digest":"5fb8cdfe8dc70485aa1d00a7bbb220fc","packagetype":"sdist","python_version":"source","requires_python":null,"size":361619,"upload_time":"2011-09-22T18:28:08","upload_time_iso_8601":"2011-09-22T18:28:08.064062Z","url":"https://files.pythonhosted.org/packages/42/2f/77365178cb4567987d0248f05d7c5adfad2b04bacfbfbc9bc6320b2575dc/distribute-0.6.1.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"c25c33e733e0a2159fcf102ac8ebcba6","sha256":"fe57c7ab40f5a8e0764f0b737a4df08dd3818f123b008e50f7493adbda7426b5"},"downloads":-1,"filename":"distribute-0.6.1.zip","has_sig":false,"md5_digest":"c25c33e733e0a2159fcf102ac8ebcba6","packagetype":"sdist","python_version":"source","requires_python":null,"size":396247,"upload_time":"2016-01-19T00:00:32","upload_time_iso_8601":"2016-01-19T00:00:32.046038Z","url":"https://files.pythonhosted.org/packages/4f/5a/2c01b3bb9fef9e6fc4673925c974f18ff9d3c6a7513208a5513d6dc2298e/distribute-0.6.1.zip","yanked":false,"yanked_reason":null}],"0.6.10":[{"comment_text":"","digests":{"md5":"0e2c14f2ec152f6454297870fc1cf499","sha256":"0c291a31248376ca76b5662c6ff4e33e7d3eba6d91b4c0a5ca663c9c954e8a1a"},"downloads":-1,"filename":"distribute-0.6.10.tar.gz","has_sig":false,"md5_digest":"0e2c14f2ec152f6454297870fc1cf499","packagetype":"sdist","python_version":"source","requires_python":null,"size":389668,"upload_time":"2011-09-22T18:30:29","upload_time_iso_8601":"2011-09-22T18:30:29.954437Z","url":"https://files.pythonhosted.org/packages/07/9d/2af576b8b199c69d839a8dfd6025b6721a18a0b771a051b2b62b3c866d0f/distribute-0.6.10.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"1fa1c316ad8f73f0620a64cf03297c2a","sha256":"ccaec91646cd6a57eae7aecc9c819fd8300c8d0005019a2ce7485e572ab485dd"},"downloads":-1,"filename":"distribute-0.6.10.zip","has_sig":false,"md5_digest":"1fa1c316ad8f73f0620a64cf03297c2a","packagetype":"sdist","python_version":"source","requires_python":null,"size":425477,"upload_time":"2016-01-19T00:01:56","upload_time_iso_8601":"2016-01-19T00:01:56.581573Z","url":"https://files.pythonhosted.org/packages/39/19/dae27189d9c1758e3db9bf27930e88cc05b0ca60c3eb5668ca6e329a6fca/distribute-0.6.10.zip","yanked":false,"yanked_reason":null}],"0.6.11":[{"comment_text":"","digests":{"md5":"6ac0431bce33d0e67b23029064ee3446","sha256":"d04390637087e25dfc0851d0c352900b64c0cf9b831d40e89de5636ec3df8bee"},"downloads":-1,"filename":"distribute-0.6.11.tar.gz","has_sig":false,"md5_digest":"6ac0431bce33d0e67b23029064ee3446","packagetype":"sdist","python_version":"source","requires_python":null,"size":393425,"upload_time":"2011-09-22T18:30:42","upload_time_iso_8601":"2011-09-22T18:30:42.159594Z","url":"https://files.pythonhosted.org/packages/60/6b/a6b6a5bfd5a04ba71a458fe50c86d10855cf3ccc04ec11a3f2b94681c67b/distribute-0.6.11.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"a0b115eff03e2086e26a9361c370a98e","sha256":"e35c3554fa5f66013ab5be1f3387146c565ec028514733d571cc6f42e1af0e1f"},"downloads":-1,"filename":"distribute-0.6.11.zip","has_sig":false,"md5_digest":"a0b115eff03e2086e26a9361c370a98e","packagetype":"sdist","python_version":"source","requires_python":null,"size":430439,"upload_time":"2016-01-19T00:02:03","upload_time_iso_8601":"2016-01-19T00:02:03.464331Z","url":"https://files.pythonhosted.org/packages/aa/37/86c4925d9fd77500599d29325f07e0c1ccd6b6bf9150a06144e7604b5c9e/distribute-0.6.11.zip","yanked":false,"yanked_reason":null}],"0.6.12":[{"comment_text":"","digests":{"md5":"d4713d07bccd48892e455fe30230f8bc","sha256":"a519e9e6a402be4d206d934885bf263f47adf1e88084eeffc3fa00fe64133a45"},"downloads":-1,"filename":"distribute-0.6.12.tar.gz","has_sig":false,"md5_digest":"d4713d07bccd48892e455fe30230f8bc","packagetype":"sdist","python_version":"source","requires_python":null,"size":393570,"upload_time":"2011-09-22T18:30:54","upload_time_iso_8601":"2011-09-22T18:30:54.440941Z","url":"https://files.pythonhosted.org/packages/cd/fb/efc926f7231e011d2abedf7cb3835dfccf2d5e08fa115a30fe9225244bb3/distribute-0.6.12.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"97186a81c6ed32f8a4c63dde930d9222","sha256":"06382930f84acc74d8dd9d15c30bdfa378532b0e6c65f391dff4d310dd0b14ea"},"downloads":-1,"filename":"distribute-0.6.12.zip","has_sig":false,"md5_digest":"97186a81c6ed32f8a4c63dde930d9222","packagetype":"sdist","python_version":"source","requires_python":null,"size":430588,"upload_time":"2016-01-19T00:02:15","upload_time_iso_8601":"2016-01-19T00:02:15.313666Z","url":"https://files.pythonhosted.org/packages/42/71/9dfd846af8d66f94ef3b32fa9c36de7d2303e6080ec21f12d9a38c72287a/distribute-0.6.12.zip","yanked":false,"yanked_reason":null}],"0.6.13":[{"comment_text":"","digests":{"md5":"e41f26aeb1f24abcc89382d4ff6881bd","sha256":"a4acfcbd37741ea5ae9510ec72a8e8c482d7d4a504cba3d72ecd3971165d7e85"},"downloads":-1,"filename":"distribute-0.6.13.tar.gz","has_sig":false,"md5_digest":"e41f26aeb1f24abcc89382d4ff6881bd","packagetype":"sdist","python_version":"source","requires_python":null,"size":395617,"upload_time":"2011-09-22T18:31:05","upload_time_iso_8601":"2011-09-22T18:31:05.994782Z","url":"https://files.pythonhosted.org/packages/0b/89/94f3ecf6767ee521962c3b128ef832d452f9b857b244bebfb0b8426d909f/distribute-0.6.13.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"3b0098545f556edc94cf69dc1da3d2ce","sha256":"4b935edc3bd049cc4c597c123e515d428619a8c8b0b477cbe95343cb479ba3a8"},"downloads":-1,"filename":"distribute-0.6.13.zip","has_sig":false,"md5_digest":"3b0098545f556edc94cf69dc1da3d2ce","packagetype":"sdist","python_version":"source","requires_python":null,"size":432855,"upload_time":"2016-01-19T00:02:27","upload_time_iso_8601":"2016-01-19T00:02:27.466194Z","url":"https://files.pythonhosted.org/packages/c6/4c/0ba3f3d7075381526f15a47ce7835e5d1577caec569cc29653dfa0231350/distribute-0.6.13.zip","yanked":false,"yanked_reason":null}],"0.6.14":[{"comment_text":"","digests":{"md5":"83ada58a83d99b28c806703597323b80","sha256":"44c92b7edbc0ff9cd5847291e7dcb4cc75e24247a306bd4b8a139abd355b0db0"},"downloads":-1,"filename":"distribute-0.6.14.tar.gz","has_sig":false,"md5_digest":"83ada58a83d99b28c806703597323b80","packagetype":"sdist","python_version":"source","requires_python":null,"size":396609,"upload_time":"2011-09-22T18:31:46","upload_time_iso_8601":"2011-09-22T18:31:46.046582Z","url":"https://files.pythonhosted.org/packages/95/f1/6128255a94f3d57e0f7ec2767c1893d1ab769bef48e847173f923d977e1d/distribute-0.6.14.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"38282c754d136a66bfdad3932f3ed33a","sha256":"4ceec6b1ec8300fe4e1a60a9781c7bc1956feee0d6a87a002254aca080a9126d"},"downloads":-1,"filename":"distribute-0.6.14.zip","has_sig":false,"md5_digest":"38282c754d136a66bfdad3932f3ed33a","packagetype":"sdist","python_version":"source","requires_python":null,"size":435162,"upload_time":"2016-01-19T00:02:41","upload_time_iso_8601":"2016-01-19T00:02:41.727306Z","url":"https://files.pythonhosted.org/packages/0b/f7/c564907eacadc3cbace0174a95c9176e5a371e19ddc38baf1919d2d8cb3d/distribute-0.6.14.zip","yanked":false,"yanked_reason":null}],"0.6.15":[{"comment_text":"","digests":{"md5":"8a5c36afe934ef90ce2da15a1c557128","sha256":"85b05942f84146d8f0ed17906b90af7662d649b922fe77a8c402da5da258a481"},"downloads":-1,"filename":"distribute-0.6.15.tar.gz","has_sig":false,"md5_digest":"8a5c36afe934ef90ce2da15a1c557128","packagetype":"sdist","python_version":"source","requires_python":null,"size":397027,"upload_time":"2011-09-22T18:32:37","upload_time_iso_8601":"2011-09-22T18:32:37.570852Z","url":"https://files.pythonhosted.org/packages/07/a6/8f6b270b7e6a1be3df78b174e2437fdb631cfcce16f82c2f8b7affb50ee2/distribute-0.6.15.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"86ca2e0a13621a9b742246b2509602a2","sha256":"a6cba0f43a70dceab680ba475df2a451b53257e5dc3267323c2a666c1673a31b"},"downloads":-1,"filename":"distribute-0.6.15.zip","has_sig":false,"md5_digest":"86ca2e0a13621a9b742246b2509602a2","packagetype":"sdist","python_version":"source","requires_python":null,"size":435492,"upload_time":"2016-01-19T00:02:50","upload_time_iso_8601":"2016-01-19T00:02:50.500500Z","url":"https://files.pythonhosted.org/packages/7f/00/9219235d4222c3da6729e6e2afa4a9080b987169bab3b2ec6cbb7c2e86da/distribute-0.6.15.zip","yanked":false,"yanked_reason":null}],"0.6.16":[{"comment_text":"","digests":{"md5":"c650a6bd418bb781f8dc90c78f36967a","sha256":"cb2de242f3af2d1aa225e514e5b8ed7d41cdb4c505d3cf5cc6e3ca0646b4dd9b"},"downloads":-1,"filename":"distribute-0.6.16.tar.gz","has_sig":false,"md5_digest":"c650a6bd418bb781f8dc90c78f36967a","packagetype":"sdist","python_version":"source","requires_python":null,"size":397684,"upload_time":"2011-09-22T18:32:56","upload_time_iso_8601":"2011-09-22T18:32:56.021001Z","url":"https://files.pythonhosted.org/packages/20/e0/6c03055f8520384b0050bb97757ab58afae5f35adb8b9a26bba2cd4de8bd/distribute-0.6.16.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"f1a91231991e26364fd3fb7d950c65c5","sha256":"5ba2f101f32861c5aa87cc50037b1c7d30a2b225c8c324afbc0b89a8660b8dbe"},"downloads":-1,"filename":"distribute-0.6.16.zip","has_sig":false,"md5_digest":"f1a91231991e26364fd3fb7d950c65c5","packagetype":"sdist","python_version":"source","requires_python":null,"size":436134,"upload_time":"2016-01-19T00:02:57","upload_time_iso_8601":"2016-01-19T00:02:57.480103Z","url":"https://files.pythonhosted.org/packages/de/f0/13745a2a99391522cd6d8eb493c0fff54754c669de5988efab80573d382d/distribute-0.6.16.zip","yanked":false,"yanked_reason":null}],"0.6.17":[{"comment_text":"","digests":{"md5":"5e9c933b84ecf1488d3a8a00ae11e82d","sha256":"8052d922eaf542e336593822c15e753248373c88ce4a1a94674952698ab7c5ac"},"downloads":-1,"filename":"distribute-0.6.17.tar.gz","has_sig":false,"md5_digest":"5e9c933b84ecf1488d3a8a00ae11e82d","packagetype":"sdist","python_version":"source","requires_python":null,"size":399075,"upload_time":"2011-09-22T18:33:15","upload_time_iso_8601":"2011-09-22T18:33:15.896157Z","url":"https://files.pythonhosted.org/packages/7f/1c/37153c8248bd510bfd573c26d5fd2b91bcf39ebc513ab8f7883294d0625b/distribute-0.6.17.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"b0e6bad948b389ac1bc8cdcb1960fea5","sha256":"5c138bca2e17c730089a1120864472c3c659fbe87d7ba65dd7a1c089c759bfa9"},"downloads":-1,"filename":"distribute-0.6.17.zip","has_sig":false,"md5_digest":"b0e6bad948b389ac1bc8cdcb1960fea5","packagetype":"sdist","python_version":"source","requires_python":null,"size":437675,"upload_time":"2016-01-19T00:03:09","upload_time_iso_8601":"2016-01-19T00:03:09.903631Z","url":"https://files.pythonhosted.org/packages/5f/d0/2c0c6142f91f75e3f3cfefe869757226742fd21db00e935b6cb9052a01bf/distribute-0.6.17.zip","yanked":false,"yanked_reason":null}],"0.6.18":[{"comment_text":"","digests":{"md5":"58ab2e41e0604be84fbfb06c46bd70e8","sha256":"160f74cd7b4125b373604b8ce84c6fa5153d46416b85aae2469255f679d6362a"},"downloads":-1,"filename":"distribute-0.6.18.tar.gz","has_sig":false,"md5_digest":"58ab2e41e0604be84fbfb06c46bd70e8","packagetype":"sdist","python_version":"source","requires_python":null,"size":399410,"upload_time":"2011-09-22T18:33:29","upload_time_iso_8601":"2011-09-22T18:33:29.113354Z","url":"https://files.pythonhosted.org/packages/b3/93/cc5e6ff77a060b5a28e3e0d8db907f4b69a546ce75ff6fd653319461cdf1/distribute-0.6.18.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"734f016b260855489532745f72b00316","sha256":"89fb195fdc09527e1d21758272ec67cad5304390aeb3ff6fe45821687aa93577"},"downloads":-1,"filename":"distribute-0.6.18.zip","has_sig":false,"md5_digest":"734f016b260855489532745f72b00316","packagetype":"sdist","python_version":"source","requires_python":null,"size":438039,"upload_time":"2016-01-19T00:03:21","upload_time_iso_8601":"2016-01-19T00:03:21.680067Z","url":"https://files.pythonhosted.org/packages/35/4f/b0564981f9dd220a6db88be661a8331523a2524caf3d01e976a0c87a6942/distribute-0.6.18.zip","yanked":false,"yanked_reason":null}],"0.6.19":[{"comment_text":"","digests":{"md5":"21e7a442c4d8f0cb0223f2ed5e4569ad","sha256":"a1c4f65170ae95c4078ca5c3e24f1df018fe6ea2d4f3a702eed0d74d70cd6722"},"downloads":-1,"filename":"distribute-0.6.19.tar.gz","has_sig":false,"md5_digest":"21e7a442c4d8f0cb0223f2ed5e4569ad","packagetype":"sdist","python_version":"source","requires_python":null,"size":399518,"upload_time":"2011-09-22T18:33:40","upload_time_iso_8601":"2011-09-22T18:33:40.623416Z","url":"https://files.pythonhosted.org/packages/86/74/d6862980635b0827a9564646fbab7386c91d46b5dc177deb7a4d5a4a74df/distribute-0.6.19.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"6236355ecade133a8def830f579d4ef6","sha256":"5ce5d0e067de948136c61b24ffc943bf01f25da22e672acf698ad17581dfdacd"},"downloads":-1,"filename":"distribute-0.6.19.zip","has_sig":false,"md5_digest":"6236355ecade133a8def830f579d4ef6","packagetype":"sdist","python_version":"source","requires_python":null,"size":438159,"upload_time":"2016-01-19T00:03:31","upload_time_iso_8601":"2016-01-19T00:03:31.753597Z","url":"https://files.pythonhosted.org/packages/e2/f5/64dedcfd63da54b05372dcf0688b9ab6dd27ac64acac40f260f96d561519/distribute-0.6.19.zip","yanked":false,"yanked_reason":null}],"0.6.2":[{"comment_text":"","digests":{"md5":"b95ed5d73a9a0e316de5a702efcd055f","sha256":"dd04265d390db326a60de73c24e50468edb7048198d43bb2a5fa74525e35d294"},"downloads":-1,"filename":"distribute-0.6.2.tar.gz","has_sig":false,"md5_digest":"b95ed5d73a9a0e316de5a702efcd055f","packagetype":"sdist","python_version":"source","requires_python":null,"size":518316,"upload_time":"2011-09-22T18:28:25","upload_time_iso_8601":"2011-09-22T18:28:25.043336Z","url":"https://files.pythonhosted.org/packages/c6/c0/e422bfe70ea4c087a3a4b10d9ca249196394fd7c7bd97d37f1c30e184cbf/distribute-0.6.2.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"75b312e41e179b70bb30296febe5010e","sha256":"5bd8ebc58dea3659ded73f1b8fd070b09e6e22acb1b5745686c743e2782d53ee"},"downloads":-1,"filename":"distribute-0.6.2.zip","has_sig":false,"md5_digest":"75b312e41e179b70bb30296febe5010e","packagetype":"sdist","python_version":"source","requires_python":null,"size":549844,"upload_time":"2016-01-19T00:00:42","upload_time_iso_8601":"2016-01-19T00:00:42.244136Z","url":"https://files.pythonhosted.org/packages/88/59/82c73ff573b7ed1b7a831cd51f81cff351fa53514bcd1851e522deb2a9ec/distribute-0.6.2.zip","yanked":false,"yanked_reason":null}],"0.6.20":[{"comment_text":"","digests":{"md5":"1909dc5bbb89793860ff9a2a23457c64","sha256":"8314683ad7cadfeb5918ff0bf7d410782a0b7f1615173c72d761cc8b43f7520e"},"downloads":-1,"filename":"distribute-0.6.20.tar.gz","has_sig":false,"md5_digest":"1909dc5bbb89793860ff9a2a23457c64","packagetype":"sdist","python_version":"source","requires_python":null,"size":400030,"upload_time":"2011-09-22T18:33:51","upload_time_iso_8601":"2011-09-22T18:33:51.968879Z","url":"https://files.pythonhosted.org/packages/ff/1b/ea2ba1b02f2ed1f80d81db35335f14480648f1f0d20be3094dbf75ff68e1/distribute-0.6.20.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"026654e2620d213f66b24324ec2d8590","sha256":"c9975d1e6ec2c73fc84440586989bf62c29ea0f8c0cade30b8b840590deb6696"},"downloads":-1,"filename":"distribute-0.6.20.zip","has_sig":false,"md5_digest":"026654e2620d213f66b24324ec2d8590","packagetype":"sdist","python_version":"source","requires_python":null,"size":438601,"upload_time":"2016-01-19T00:03:39","upload_time_iso_8601":"2016-01-19T00:03:39.528282Z","url":"https://files.pythonhosted.org/packages/fd/38/c1df29e89485ed854db98cbf89cae131244ae5624da622425f59c2fc1b7a/distribute-0.6.20.zip","yanked":false,"yanked_reason":null}],"0.6.21":[{"comment_text":"","digests":{"md5":"f783444754861f9b33e9f4083bd97b60","sha256":"5701c39864ac17d17b66aceca4ea3c92a8b9ab63d593ac491a2455d3de3e53b9"},"downloads":-1,"filename":"distribute-0.6.21.tar.gz","has_sig":false,"md5_digest":"f783444754861f9b33e9f4083bd97b60","packagetype":"sdist","python_version":"source","requires_python":null,"size":400092,"upload_time":"2011-09-22T18:34:06","upload_time_iso_8601":"2011-09-22T18:34:06.809918Z","url":"https://files.pythonhosted.org/packages/77/b5/c12c3b72749402550bbfdbc7865c6e9fee3293379096305029ee8be34126/distribute-0.6.21.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"320dc5fd46fae3ece7555a0e6550edff","sha256":"66cfd8f068da36fa5fb932968ab0378fe5716a7bd7c84016273a160fb07fa3e3"},"downloads":-1,"filename":"distribute-0.6.21.zip","has_sig":false,"md5_digest":"320dc5fd46fae3ece7555a0e6550edff","packagetype":"sdist","python_version":"source","requires_python":null,"size":438657,"upload_time":"2016-01-19T00:03:46","upload_time_iso_8601":"2016-01-19T00:03:46.305648Z","url":"https://files.pythonhosted.org/packages/64/4d/2e651f25c2feda7bbde61ce8584055a41d3a4d38fd0a83a2ec1a0ed4662c/distribute-0.6.21.zip","yanked":false,"yanked_reason":null}],"0.6.24":[{"comment_text":"","digests":{"md5":"17722b22141aba8235787f79800cc452","sha256":"c61fde9f388c9600eb8ee54bd7168039c5fb74fa334138bc49cdf6a6c1341627"},"downloads":-1,"filename":"distribute-0.6.24.tar.gz","has_sig":false,"md5_digest":"17722b22141aba8235787f79800cc452","packagetype":"sdist","python_version":"source","requires_python":null,"size":620771,"upload_time":"2011-10-16T15:09:53","upload_time_iso_8601":"2011-10-16T15:09:53.185592Z","url":"https://files.pythonhosted.org/packages/8a/4f/49f801acde031de47223a7541763b2f5ccedf88cb001694b0d3570e9dc15/distribute-0.6.24.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"d221d832a6504a263e3b392b3c4a09dd","sha256":"2f172188e1d50ed9f541b6317ba08e3028a1bdb286c55a1d36fedc717c0b4695"},"downloads":-1,"filename":"distribute-0.6.24.zip","has_sig":false,"md5_digest":"d221d832a6504a263e3b392b3c4a09dd","packagetype":"sdist","python_version":"source","requires_python":null,"size":660752,"upload_time":"2016-01-19T00:03:54","upload_time_iso_8601":"2016-01-19T00:03:54.506134Z","url":"https://files.pythonhosted.org/packages/af/1e/ebca61f90d9edb8088e5c4363a05279e572ac42ffae20229ce6af303cb8f/distribute-0.6.24.zip","yanked":false,"yanked_reason":null}],"0.6.25":[{"comment_text":"","digests":{"md5":"a690874b9964d958a3200485eb827b1d","sha256":"ed11ff44b68b8dd274f11d7d5ca1659620be0620fb7dc305b3d39b0742788c31"},"downloads":-1,"filename":"distribute-0.6.25.tar.gz","has_sig":false,"md5_digest":"a690874b9964d958a3200485eb827b1d","packagetype":"sdist","python_version":"source","requires_python":null,"size":629502,"upload_time":"2012-03-10T08:08:02","upload_time_iso_8601":"2012-03-10T08:08:02.117769Z","url":"https://files.pythonhosted.org/packages/60/63/3ed8905bef060a1654000d19d4d55ea56a87fb895bbad83d9c52cb024a50/distribute-0.6.25.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"ed5e0c4942f828fbd00790894756a555","sha256":"865a99ed213301c83396bc111c659ce6ffcd870417a6115d7e59271c74df1f2d"},"downloads":-1,"filename":"distribute-0.6.25.zip","has_sig":false,"md5_digest":"ed5e0c4942f828fbd00790894756a555","packagetype":"sdist","python_version":"source","requires_python":null,"size":671234,"upload_time":"2016-01-19T00:04:01","upload_time_iso_8601":"2016-01-19T00:04:01.531014Z","url":"https://files.pythonhosted.org/packages/2a/e5/a20bb4e1abdf71985e9a67d56136b973b41ea295ba3e756f47ad1c54953d/distribute-0.6.25.zip","yanked":false,"yanked_reason":null}],"0.6.26":[{"comment_text":"","digests":{"md5":"841f4262a70107f85260362f5def8206","sha256":"9c29c56dcbb0e88a12714071d0b64e1be2da805b650f9394e8c7c719b7675030"},"downloads":-1,"filename":"distribute-0.6.26.tar.gz","has_sig":false,"md5_digest":"841f4262a70107f85260362f5def8206","packagetype":"sdist","python_version":"source","requires_python":null,"size":621193,"upload_time":"2012-04-08T04:23:49","upload_time_iso_8601":"2012-04-08T04:23:49.904632Z","url":"https://files.pythonhosted.org/packages/03/08/16815ba1e7d7dc21289c0ea89bffea4c34cc4d10979d2f3f64837ee51087/distribute-0.6.26.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"399d086acc01d78a59537dc39a4da119","sha256":"2f3551943f8a18ece8948711a6340fafc2e57c29d921e1e3ec0caf78878ff343"},"downloads":-1,"filename":"distribute-0.6.26.zip","has_sig":false,"md5_digest":"399d086acc01d78a59537dc39a4da119","packagetype":"sdist","python_version":"source","requires_python":null,"size":661781,"upload_time":"2016-01-19T00:04:16","upload_time_iso_8601":"2016-01-19T00:04:16.549984Z","url":"https://files.pythonhosted.org/packages/2c/be/b67877f2b48db5bbcf7b5e131a69c401753c9af9b4968254ff8bfc9e1ca7/distribute-0.6.26.zip","yanked":false,"yanked_reason":null}],"0.6.27":[{"comment_text":"","digests":{"md5":"ecd75ea629fee6d59d26f88c39b2d291","sha256":"5d79e472ba49e5de17318a9c59b9adf5790ba6b186c6edc1657acd9afe55de00"},"downloads":-1,"filename":"distribute-0.6.27.tar.gz","has_sig":false,"md5_digest":"ecd75ea629fee6d59d26f88c39b2d291","packagetype":"sdist","python_version":"source","requires_python":null,"size":624016,"upload_time":"2012-05-18T21:46:16","upload_time_iso_8601":"2012-05-18T21:46:16.374366Z","url":"https://files.pythonhosted.org/packages/33/cd/b81641625955e7f13d3a02b13176f7cc7becf96da5607c3283d14e2fa0a6/distribute-0.6.27.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5dc46141f05eff0d85e46252028392fe","sha256":"fd98fb9a36237271809533334535c369fe78a689f22ceedf8d6778f3b05a19ff"},"downloads":-1,"filename":"distribute-0.6.27.zip","has_sig":false,"md5_digest":"5dc46141f05eff0d85e46252028392fe","packagetype":"sdist","python_version":"source","requires_python":null,"size":664472,"upload_time":"2016-01-19T00:04:25","upload_time_iso_8601":"2016-01-19T00:04:25.950475Z","url":"https://files.pythonhosted.org/packages/8c/ce/7e1d6c0bb82683b74960f09651de2a536bc7b48ac74b54675bfb79cc27e2/distribute-0.6.27.zip","yanked":false,"yanked_reason":null}],"0.6.28":[{"comment_text":"","digests":{"md5":"b400b532e33f78551e6847c1f5965e56","sha256":"a42e897551aeb7600708f4aa6a0c02acb4458613976234b7d4fad7ae841a8d63"},"downloads":-1,"filename":"distribute-0.6.28.tar.gz","has_sig":false,"md5_digest":"b400b532e33f78551e6847c1f5965e56","packagetype":"sdist","python_version":"source","requires_python":null,"size":627530,"upload_time":"2012-07-22T22:58:11","upload_time_iso_8601":"2012-07-22T22:58:11.324319Z","url":"https://files.pythonhosted.org/packages/2f/f5/0ac674dd39ea80db147230362cff5e9cbe3b1e893fde9aeab5d2f72da83c/distribute-0.6.28.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"63e53db83e439afe3e5ee07816fc2f6a","sha256":"d754b7b21be61816dfddbbda234b1039a7e4f5e921201cc7bfde2d2985ef72e4"},"downloads":-1,"filename":"distribute-0.6.28.zip","has_sig":false,"md5_digest":"63e53db83e439afe3e5ee07816fc2f6a","packagetype":"sdist","python_version":"source","requires_python":null,"size":669561,"upload_time":"2016-01-19T00:04:37","upload_time_iso_8601":"2016-01-19T00:04:37.462818Z","url":"https://files.pythonhosted.org/packages/cb/0e/a58066fc4059f5b0d7dafa484aac0fcf45180800059eaf69528857237f64/distribute-0.6.28.zip","yanked":false,"yanked_reason":null}],"0.6.29":[{"comment_text":"","digests":{"md5":"1aad767bfca8bebaccafee25f85696cf","sha256":"2d74ee0360907f87e7125fe847ba541866777a1bc5315b4578bda06a4604544d"},"downloads":-1,"filename":"distribute-0.6.29.tar.gz","has_sig":false,"md5_digest":"1aad767bfca8bebaccafee25f85696cf","packagetype":"sdist","python_version":"source","requires_python":null,"size":638051,"upload_time":"2012-10-20T07:59:56","upload_time_iso_8601":"2012-10-20T07:59:56.063891Z","url":"https://files.pythonhosted.org/packages/1d/72/fe1c1eb05445595be6b653d5b282d4687528d437d6f038bfb8e69f3afd01/distribute-0.6.29.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5a00307a5776cbc80a8d459a1b8f0c0f","sha256":"fe32fe888ea39e8f8efae20b5a47880b52b1647c2d9b7b3031d12e7461764327"},"downloads":-1,"filename":"distribute-0.6.29.zip","has_sig":false,"md5_digest":"5a00307a5776cbc80a8d459a1b8f0c0f","packagetype":"sdist","python_version":"source","requires_python":null,"size":680431,"upload_time":"2016-01-19T00:04:48","upload_time_iso_8601":"2016-01-19T00:04:48.181311Z","url":"https://files.pythonhosted.org/packages/a5/9f/54f0d4cf1a29308ea6b64c4cc8b3f5a3378fc51420c4d66e6b6485e628e9/distribute-0.6.29.zip","yanked":false,"yanked_reason":null}],"0.6.3":[{"comment_text":"","digests":{"md5":"9fee15948c9b508102b26d49653ebbec","sha256":"dc097ed5f75ed141cfe27c2c9718447b39c2c1d659bcca041302efb6384d4c41"},"downloads":-1,"filename":"distribute-0.6.3.tar.gz","has_sig":false,"md5_digest":"9fee15948c9b508102b26d49653ebbec","packagetype":"sdist","python_version":"source","requires_python":null,"size":518470,"upload_time":"2011-09-22T18:28:39","upload_time_iso_8601":"2011-09-22T18:28:39.754602Z","url":"https://files.pythonhosted.org/packages/81/a2/b6371ad2b865656293ad9d064b0bca6c32283a9acc35ec455b05d820da0f/distribute-0.6.3.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"f47d015f0a675158fa6cec3c29174cbb","sha256":"a121a30700cd2f6bb1613f71bd8a44de1fe434ca50f7b316b97d8a5b2b535914"},"downloads":-1,"filename":"distribute-0.6.3.zip","has_sig":false,"md5_digest":"f47d015f0a675158fa6cec3c29174cbb","packagetype":"sdist","python_version":"source","requires_python":null,"size":550047,"upload_time":"2016-01-19T00:00:48","upload_time_iso_8601":"2016-01-19T00:00:48.964130Z","url":"https://files.pythonhosted.org/packages/ac/c2/d271d54e5dd82d5727cac67bfe0b84ce508120082073a989943740008394/distribute-0.6.3.zip","yanked":false,"yanked_reason":null}],"0.6.30":[{"comment_text":"","digests":{"md5":"d239a2c7d40e126274dab3e2aa89d591","sha256":"7ff34c3a9a844ee881ff28efc5d1f74603b72e0a5235a9d6dc76e603149e8eab"},"downloads":-1,"filename":"distribute-0.6.30.tar.gz","has_sig":false,"md5_digest":"d239a2c7d40e126274dab3e2aa89d591","packagetype":"sdist","python_version":"source","requires_python":null,"size":638335,"upload_time":"2012-10-22T10:02:36","upload_time_iso_8601":"2012-10-22T10:02:36.332394Z","url":"https://files.pythonhosted.org/packages/d7/4b/a08384fdde2b86d0f88aa16df7b31326d90b7b3a9ff55acfa1c1c6b2c5be/distribute-0.6.30.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"b966ddad57596da71e580f115343f05f","sha256":"07a68008c9321369ea33136e9547bf330f1797764583226456e1511a32127527"},"downloads":-1,"filename":"distribute-0.6.30.zip","has_sig":false,"md5_digest":"b966ddad57596da71e580f115343f05f","packagetype":"sdist","python_version":"source","requires_python":null,"size":680582,"upload_time":"2016-01-19T00:04:55","upload_time_iso_8601":"2016-01-19T00:04:55.001883Z","url":"https://files.pythonhosted.org/packages/e7/23/507064c9ee19ecab8783248273473cff1291bce2411f51459eba5109551a/distribute-0.6.30.zip","yanked":false,"yanked_reason":null}],"0.6.31":[{"comment_text":"","digests":{"md5":"71e96d533b3b9041fcc6a9d9da34a8f4","sha256":"9716293effc8d68068ce41e287b6903cf355641d0642b44e69dd92e9699dcbcf"},"downloads":-1,"filename":"distribute-0.6.31.tar.gz","has_sig":false,"md5_digest":"71e96d533b3b9041fcc6a9d9da34a8f4","packagetype":"sdist","python_version":"source","requires_python":null,"size":643910,"upload_time":"2012-11-25T04:03:44","upload_time_iso_8601":"2012-11-25T04:03:44.865269Z","url":"https://files.pythonhosted.org/packages/e7/da/2e0f7670f9f7dbe440f5673b5b18e896d7b85b4303d4281925176a12e6bc/distribute-0.6.31.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"419e9c2108f2e22372a3358806328419","sha256":"c07d115808a76d0edb93842ac6e1015216990f21125c8f0120daeac22951a2d7"},"downloads":-1,"filename":"distribute-0.6.31.zip","has_sig":false,"md5_digest":"419e9c2108f2e22372a3358806328419","packagetype":"sdist","python_version":"source","requires_python":null,"size":686098,"upload_time":"2016-01-19T00:05:04","upload_time_iso_8601":"2016-01-19T00:05:04.312229Z","url":"https://files.pythonhosted.org/packages/73/51/21de5f4ae97310e2d34e60e7f3100929e9c461776599fb7ff527fb3ecb47/distribute-0.6.31.zip","yanked":false,"yanked_reason":null}],"0.6.32":[{"comment_text":"","digests":{"md5":"acb7a2da81e3612bfb1608abe4f0e568","sha256":"8970cd1e148b5d1fea9430584aea66c45ea22d80e0933393ec49ebc388f718df"},"downloads":-1,"filename":"distribute-0.6.32.tar.gz","has_sig":false,"md5_digest":"acb7a2da81e3612bfb1608abe4f0e568","packagetype":"sdist","python_version":"source","requires_python":null,"size":643362,"upload_time":"2012-11-26T17:18:26","upload_time_iso_8601":"2012-11-26T17:18:26.341106Z","url":"https://files.pythonhosted.org/packages/49/3f/d747add39a5fe4ceb910813c48d1c1564e40ab66f43ea41fd4ded884169a/distribute-0.6.32.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"e3d89425541c5e9a1018a4df04351685","sha256":"64b73cd34379eff02ef08c2c398677916f66b93ca5bb13f5f6a49e5031e58ad2"},"downloads":-1,"filename":"distribute-0.6.32.zip","has_sig":false,"md5_digest":"e3d89425541c5e9a1018a4df04351685","packagetype":"sdist","python_version":"source","requires_python":null,"size":685593,"upload_time":"2016-01-19T00:05:12","upload_time_iso_8601":"2016-01-19T00:05:12.306776Z","url":"https://files.pythonhosted.org/packages/8d/a6/f82b8038bf9bf36e6a565891c596bcdd5c55ff6cbb32c2e3becc6d94080b/distribute-0.6.32.zip","yanked":false,"yanked_reason":null}],"0.6.33":[{"comment_text":"","digests":{"md5":"9bc1cf2688590ffc1e20fd153babf239","sha256":"52d9bf08ddd7598fea591434188577e59f06cbaa0fbd9cf31dd09b455c18433a"},"downloads":-1,"filename":"distribute-0.6.33.tar.gz","has_sig":false,"md5_digest":"9bc1cf2688590ffc1e20fd153babf239","packagetype":"sdist","python_version":"source","requires_python":null,"size":644203,"upload_time":"2012-12-29T22:10:17","upload_time_iso_8601":"2012-12-29T22:10:17.413199Z","url":"https://files.pythonhosted.org/packages/81/a1/cc2f93e485bda7132136ffb1874068a20e6e0aad77d6063b5a17efc2383a/distribute-0.6.33.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"cf55172e00fc2e080646fed166551d68","sha256":"da0bd1a5f89549e324ad24f5050e3a992a4ba676bf7fa4abd0e3eaa896079990"},"downloads":-1,"filename":"distribute-0.6.33.zip","has_sig":false,"md5_digest":"cf55172e00fc2e080646fed166551d68","packagetype":"sdist","python_version":"source","requires_python":null,"size":686604,"upload_time":"2016-01-19T00:05:22","upload_time_iso_8601":"2016-01-19T00:05:22.988384Z","url":"https://files.pythonhosted.org/packages/2f/f9/ed567c3db5635145b672e6e6b1021e64936028dee9460e520025d5185f80/distribute-0.6.33.zip","yanked":false,"yanked_reason":null}],"0.6.34":[{"comment_text":"","digests":{"md5":"4576ab843a6db5100fb22a72deadf56d","sha256":"1a82a50f448fd963c1efade437b9ace3c47bfdd9b168fcdba7fca140df4b364e"},"downloads":-1,"filename":"distribute-0.6.34.tar.gz","has_sig":false,"md5_digest":"4576ab843a6db5100fb22a72deadf56d","packagetype":"sdist","python_version":"source","requires_python":null,"size":644358,"upload_time":"2012-12-31T15:27:12","upload_time_iso_8601":"2012-12-31T15:27:12.470300Z","url":"https://files.pythonhosted.org/packages/a2/f0/0d76f4f1e677509b5c09de2e86b7e98925730321779519eba924fa1b5199/distribute-0.6.34.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"b9729f289723f8d100e599769a5fc034","sha256":"8ffe1be0cde1d3d3a00823ff654d6c04b27d795693d59761bc7d5f6ea3de3f95"},"downloads":-1,"filename":"distribute-0.6.34.zip","has_sig":false,"md5_digest":"b9729f289723f8d100e599769a5fc034","packagetype":"sdist","python_version":"source","requires_python":null,"size":686709,"upload_time":"2016-01-19T00:05:31","upload_time_iso_8601":"2016-01-19T00:05:31.750692Z","url":"https://files.pythonhosted.org/packages/f6/29/2e1d82c8859b0330be3aa6cae1040587768506c153742ef7b8feeb4e09cd/distribute-0.6.34.zip","yanked":false,"yanked_reason":null}],"0.6.35":[{"comment_text":"","digests":{"md5":"e55298c7e3a233df1a47a4881a0c9800","sha256":"7ee7ce926e15b0066c6d241e1ff271c30ff99b9ec7648699263d36967409e804"},"downloads":-1,"filename":"distribute-0.6.35.tar.gz","has_sig":false,"md5_digest":"e55298c7e3a233df1a47a4881a0c9800","packagetype":"sdist","python_version":"source","requires_python":null,"size":644308,"upload_time":"2013-02-16T08:11:57","upload_time_iso_8601":"2013-02-16T08:11:57.777425Z","url":"https://files.pythonhosted.org/packages/e1/15/e61fd2df870382666ca800908b686932a3e1f603a9e80e93c2da7c71b2f0/distribute-0.6.35.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"ff7404870d66b74af01bfde8f182f045","sha256":"2c0a4ff54b51c2b6679400f8cbbb766e2d236eb9886acf526691a7c0cce368fe"},"downloads":-1,"filename":"distribute-0.6.35.zip","has_sig":false,"md5_digest":"ff7404870d66b74af01bfde8f182f045","packagetype":"sdist","python_version":"source","requires_python":null,"size":686580,"upload_time":"2016-01-19T00:05:39","upload_time_iso_8601":"2016-01-19T00:05:39.637079Z","url":"https://files.pythonhosted.org/packages/54/23/cdf26d55a4d5af062c49ea3d524729270452e23b726b007f11608539f3ae/distribute-0.6.35.zip","yanked":false,"yanked_reason":null}],"0.6.36":[{"comment_text":"","digests":{"md5":"a923385de72dcdca68cd4ac2b9dc1148","sha256":"2474f9d0706b476ce0e139195cc35b360adb665df968d74d3bab022003d54bc2"},"downloads":-1,"filename":"distribute-0.6.36.tar.gz","has_sig":false,"md5_digest":"a923385de72dcdca68cd4ac2b9dc1148","packagetype":"sdist","python_version":"source","requires_python":null,"size":644713,"upload_time":"2013-04-05T21:14:30","upload_time_iso_8601":"2013-04-05T21:14:30.530516Z","url":"https://files.pythonhosted.org/packages/52/ae/96f7e82c38a5517dae71ae244e3cdcfadfdb3895987a1591b2d19d6f7a9b/distribute-0.6.36.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"bae51e44b82e7d9eca568caaaa997414","sha256":"32b66b45daaf7a8e68895dbfb5457cf8d76b18ed14f0e92123ffdb4f56e70c65"},"downloads":-1,"filename":"distribute-0.6.36.zip","has_sig":false,"md5_digest":"bae51e44b82e7d9eca568caaaa997414","packagetype":"sdist","python_version":"source","requires_python":null,"size":687072,"upload_time":"2016-01-19T00:05:46","upload_time_iso_8601":"2016-01-19T00:05:46.646007Z","url":"https://files.pythonhosted.org/packages/b7/18/1faa307038d6a25a1e05ba1adfe9c67217e456bbacef5a9f0cc567da4ef3/distribute-0.6.36.zip","yanked":false,"yanked_reason":null}],"0.6.37":[{"comment_text":"","digests":{"md5":"be693b2b1888f2eae639dd0becfb2e84","sha256":"5ad9d50eaf871ddda55f68165924124ad81bfd19fc4f0730f0a3a8ca190d58c6"},"downloads":-1,"filename":"distribute-0.6.37.tar.gz","has_sig":false,"md5_digest":"be693b2b1888f2eae639dd0becfb2e84","packagetype":"sdist","python_version":"source","requires_python":null,"size":645766,"upload_time":"2013-05-05T02:17:02","upload_time_iso_8601":"2013-05-05T02:17:02.993913Z","url":"https://files.pythonhosted.org/packages/f3/36/3878909df1720f45ee0b9902e85a24db14542bde438523de10192421e582/distribute-0.6.37.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"80981f866b8ec1d751fb3284af8afb81","sha256":"d6670be471d8158ceff28cfdfa5af77aeae38d0618c5eb0d8710eb8798a1372d"},"downloads":-1,"filename":"distribute-0.6.37.zip","has_sig":false,"md5_digest":"80981f866b8ec1d751fb3284af8afb81","packagetype":"sdist","python_version":"source","requires_python":null,"size":688301,"upload_time":"2016-01-19T00:05:54","upload_time_iso_8601":"2016-01-19T00:05:54.063725Z","url":"https://files.pythonhosted.org/packages/a9/1d/f8b2d90b9deb6072cd6af885b0d006bea3cc0749cbb45b6d6da9b4a8b682/distribute-0.6.37.zip","yanked":false,"yanked_reason":null}],"0.6.38":[{"comment_text":"","digests":{"md5":"a0bc8fdb8b7b36234dcb1ff3d1fc702d","sha256":"e4805005a1983610aa86bf3affd034631163cf9f3caa7f958ae2705b26658229"},"downloads":-1,"filename":"distribute-0.6.38.tar.gz","has_sig":false,"md5_digest":"a0bc8fdb8b7b36234dcb1ff3d1fc702d","packagetype":"sdist","python_version":"source","requires_python":null,"size":645857,"upload_time":"2013-05-05T12:45:30","upload_time_iso_8601":"2013-05-05T12:45:30.555031Z","url":"https://files.pythonhosted.org/packages/44/24/f43cbc3b122aeb27405b4cb4e294535c1bab4c60c86d4846ab5657bfd528/distribute-0.6.38.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"c0ef20833051c0b7e30bbc032960af14","sha256":"122d45874a4cda46273c22031dc937f07eb850a9b882996261521427a8e8f1c2"},"downloads":-1,"filename":"distribute-0.6.38.zip","has_sig":false,"md5_digest":"c0ef20833051c0b7e30bbc032960af14","packagetype":"sdist","python_version":"source","requires_python":null,"size":688398,"upload_time":"2016-01-19T00:06:02","upload_time_iso_8601":"2016-01-19T00:06:02.238436Z","url":"https://files.pythonhosted.org/packages/56/26/745b893435e3c34fa39ca40bec216b1eef82dfef2df2e155f8b56b6603d0/distribute-0.6.38.zip","yanked":false,"yanked_reason":null}],"0.6.39":[{"comment_text":"","digests":{"md5":"b7569b356600d3347828998d55e76fea","sha256":"77d0ca76247ab9217212a0c5c3062cac4002cdeb9e02ce6b39e8a3f5b7c296b4"},"downloads":-1,"filename":"distribute-0.6.39.tar.gz","has_sig":false,"md5_digest":"b7569b356600d3347828998d55e76fea","packagetype":"sdist","python_version":"source","requires_python":null,"size":648136,"upload_time":"2013-05-12T18:32:24","upload_time_iso_8601":"2013-05-12T18:32:24.289851Z","url":"https://files.pythonhosted.org/packages/9a/6c/11f4686ac4305d23b43be59b4ce2cc2c10e00c639472300b13893a754bc7/distribute-0.6.39.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"621f7de8b41ce7a370bc7e996779f901","sha256":"132a373c6ee22054011c9d7a869c6f3e7cfc95b06168d2a04416357b331a2def"},"downloads":-1,"filename":"distribute-0.6.39.zip","has_sig":false,"md5_digest":"621f7de8b41ce7a370bc7e996779f901","packagetype":"sdist","python_version":"source","requires_python":null,"size":696200,"upload_time":"2016-01-19T00:06:17","upload_time_iso_8601":"2016-01-19T00:06:17.488833Z","url":"https://files.pythonhosted.org/packages/f8/4e/3ca573ae5d3baf4e44fa98e5b9ec3c96bf09c869fd8e4a1ab1b47c7c6f32/distribute-0.6.39.zip","yanked":false,"yanked_reason":null}],"0.6.4":[{"comment_text":"","digests":{"md5":"d3f8a22488a798fafc151b906b9bde1c","sha256":"12945da48fb1857c0ef27ba351fa76a1975c11b0d5bc4832895282fcdc4352a2"},"downloads":-1,"filename":"distribute-0.6.4.tar.gz","has_sig":false,"md5_digest":"d3f8a22488a798fafc151b906b9bde1c","packagetype":"sdist","python_version":"source","requires_python":null,"size":523079,"upload_time":"2011-09-22T18:29:00","upload_time_iso_8601":"2011-09-22T18:29:00.091781Z","url":"https://files.pythonhosted.org/packages/dc/b6/95cf18e73df8fc85ddad57ba3b49ab40104267c26edddc28bb5075b4476f/distribute-0.6.4.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"5e70cd25c41c9be559d887731020c2be","sha256":"ce60933f17febe26528b62609b922db4301d4c8d25f02fac155cae339dd1eb12"},"downloads":-1,"filename":"distribute-0.6.4.zip","has_sig":false,"md5_digest":"5e70cd25c41c9be559d887731020c2be","packagetype":"sdist","python_version":"source","requires_python":null,"size":556449,"upload_time":"2016-01-19T00:00:58","upload_time_iso_8601":"2016-01-19T00:00:58.975608Z","url":"https://files.pythonhosted.org/packages/bd/98/111ba95670f9786ba7ef9bb600f250c927335a8cc4033cd54e56762e2979/distribute-0.6.4.zip","yanked":false,"yanked_reason":null}],"0.6.40":[{"comment_text":"","digests":{"md5":"7a2dd4033999af22fe9591fa84f3e599","sha256":"5e06a3097f4150b26e4de0d4f57dbe7425ac3645ce7a337abffab8489bc80daa"},"downloads":-1,"filename":"distribute-0.6.40.tar.gz","has_sig":false,"md5_digest":"7a2dd4033999af22fe9591fa84f3e599","packagetype":"sdist","python_version":"source","requires_python":null,"size":718084,"upload_time":"2013-05-14T08:13:13","upload_time_iso_8601":"2013-05-14T08:13:13.606927Z","url":"https://files.pythonhosted.org/packages/bc/a4/df58ee742593190e4c613f15f1457be7e8408d5c9432fb41e061e0e785f0/distribute-0.6.40.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"254bc9516b8ac4b8c50b32b46d639be0","sha256":"6e1454702a1e2311cf6654b702828a0eecf73afea22e02aefde05c92f15e7280"},"downloads":-1,"filename":"distribute-0.6.40.zip","has_sig":false,"md5_digest":"254bc9516b8ac4b8c50b32b46d639be0","packagetype":"sdist","python_version":"source","requires_python":null,"size":768554,"upload_time":"2016-01-19T00:06:26","upload_time_iso_8601":"2016-01-19T00:06:26.325985Z","url":"https://files.pythonhosted.org/packages/4c/a8/9306aee26830e151e78bbfa44f0fa6d03e79c2ee76270840f05f89171e7f/distribute-0.6.40.zip","yanked":false,"yanked_reason":null}],"0.6.41":[{"comment_text":"","digests":{"md5":"a27bb04f85fd966a0b46b616dfe8b472","sha256":"7ca6e0ca3c76be3c37a9340170e531045700a5db778c5849066e24622e7f9f4b"},"downloads":-1,"filename":"distribute-0.6.41.tar.gz","has_sig":false,"md5_digest":"a27bb04f85fd966a0b46b616dfe8b472","packagetype":"sdist","python_version":"source","requires_python":null,"size":722643,"upload_time":"2013-05-24T13:58:39","upload_time_iso_8601":"2013-05-24T13:58:39.744087Z","url":"https://files.pythonhosted.org/packages/2d/d7/8a90509f92b3fcf9b0b4ea35e5f520b073814ce15d3294360f85761e3f88/distribute-0.6.41.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"d2c3de0d64ab9c36047d3cd095b6ba81","sha256":"41a6c67a5769dd522420534126af8970e9f662f22526b62fe8fed54d426f130a"},"downloads":-1,"filename":"distribute-0.6.41.zip","has_sig":false,"md5_digest":"d2c3de0d64ab9c36047d3cd095b6ba81","packagetype":"sdist","python_version":"source","requires_python":null,"size":770140,"upload_time":"2016-01-19T00:06:36","upload_time_iso_8601":"2016-01-19T00:06:36.101065Z","url":"https://files.pythonhosted.org/packages/9b/df/e30c4a713d145a3b03c4c55abb2bba44026d52a5f30deae7cd0705d6c638/distribute-0.6.41.zip","yanked":false,"yanked_reason":null}],"0.6.42":[{"comment_text":"","digests":{"md5":"53642a6e4a08d99309f1f695b02386bc","sha256":"097e6b62154966b2831f8d5d52a4106708d41f17e0074dc95b456516305b4508"},"downloads":-1,"filename":"distribute-0.6.42.tar.gz","has_sig":false,"md5_digest":"53642a6e4a08d99309f1f695b02386bc","packagetype":"sdist","python_version":"source","requires_python":null,"size":723459,"upload_time":"2013-05-24T20:04:05","upload_time_iso_8601":"2013-05-24T20:04:05.685338Z","url":"https://files.pythonhosted.org/packages/c8/52/c87242dc7f211b0ad4513772a77e9f917933eb3e80c63c3fe5a887c9f62d/distribute-0.6.42.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"d0424741f5aceea13a4e2d11fbeff05d","sha256":"881896b5d895819d6bb894de85a7e6cbd90b3d1f3894441d09d805c4c069ef3c"},"downloads":-1,"filename":"distribute-0.6.42.zip","has_sig":false,"md5_digest":"d0424741f5aceea13a4e2d11fbeff05d","packagetype":"sdist","python_version":"source","requires_python":null,"size":771266,"upload_time":"2016-01-19T00:06:46","upload_time_iso_8601":"2016-01-19T00:06:46.548560Z","url":"https://files.pythonhosted.org/packages/f6/20/ea4efea35549719673ca24987de97339961409f00f26ee04025fd032f2da/distribute-0.6.42.zip","yanked":false,"yanked_reason":null}],"0.6.43":[{"comment_text":"","digests":{"md5":"a216a46dc9bec5835fa3c6041f1c77c2","sha256":"6f9de4b0dc8120180141dd7980057eb7968dad04457ff294efae2fe6e9376fd3"},"downloads":-1,"filename":"distribute-0.6.43.tar.gz","has_sig":false,"md5_digest":"a216a46dc9bec5835fa3c6041f1c77c2","packagetype":"sdist","python_version":"source","requires_python":null,"size":723082,"upload_time":"2013-05-25T00:43:35","upload_time_iso_8601":"2013-05-25T00:43:35.796135Z","url":"https://files.pythonhosted.org/packages/71/df/0fa0a5a64ac62c1fc8f94130795c0f8841a0103c431ea30f0450a4af3b8d/distribute-0.6.43.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"b1451c8c9671fa1751bc4dcefd7a8a65","sha256":"a8a92e9fb14367cea2f2bc4723b3710d7df6be3d0c12c5ae0253f65845ccac5e"},"downloads":-1,"filename":"distribute-0.6.43.zip","has_sig":false,"md5_digest":"b1451c8c9671fa1751bc4dcefd7a8a65","packagetype":"sdist","python_version":"source","requires_python":null,"size":771503,"upload_time":"2016-01-19T00:06:55","upload_time_iso_8601":"2016-01-19T00:06:55.679517Z","url":"https://files.pythonhosted.org/packages/8b/04/0bde724600729d8a2c5df48b04a90c98f5cd366a249629cb54541648df3e/distribute-0.6.43.zip","yanked":false,"yanked_reason":null}],"0.6.44":[{"comment_text":"","digests":{"md5":"3abed5dfa036e6d8bfdbb4ccd272d553","sha256":"1a7de57e6d95c08836ba644b012ace19515824567647e81a3c105b35b6982805"},"downloads":-1,"filename":"distribute-0.6.44.tar.gz","has_sig":false,"md5_digest":"3abed5dfa036e6d8bfdbb4ccd272d553","packagetype":"sdist","python_version":"source","requires_python":null,"size":723244,"upload_time":"2013-05-28T15:19:49","upload_time_iso_8601":"2013-05-28T15:19:49.868834Z","url":"https://files.pythonhosted.org/packages/94/f1/53fee5ab8ee3bd360e30188be3a0f0e277e46c6e1927085985ae37e0cfd1/distribute-0.6.44.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"0ffc600410808e907b57744ad87129fa","sha256":"75dc4e98662c6d0cdb6752d0344c9aab1835284c58188eb374115c17221cbedd"},"downloads":-1,"filename":"distribute-0.6.44.zip","has_sig":false,"md5_digest":"0ffc600410808e907b57744ad87129fa","packagetype":"sdist","python_version":"source","requires_python":null,"size":771662,"upload_time":"2016-01-19T00:07:06","upload_time_iso_8601":"2016-01-19T00:07:06.937062Z","url":"https://files.pythonhosted.org/packages/a0/0b/29fa375b60678ead8d63c33e66001ea4625eca089ddeddc1a998c13dc97d/distribute-0.6.44.zip","yanked":false,"yanked_reason":null}],"0.6.45":[{"comment_text":"","digests":{"md5":"8953f2c07e6700dabf2ec150129b8c31","sha256":"7c0b21329bbd087410ce4be4bf64058c1085a27e5ae5886a52950ff46ab9eb66"},"downloads":-1,"filename":"distribute-0.6.45.tar.gz","has_sig":false,"md5_digest":"8953f2c07e6700dabf2ec150129b8c31","packagetype":"sdist","python_version":"source","requires_python":null,"size":723456,"upload_time":"2013-05-29T11:36:49","upload_time_iso_8601":"2013-05-29T11:36:49.203494Z","url":"https://files.pythonhosted.org/packages/ae/e2/71b808010e2cd5e627706344d0d65df2e2d31d2b52d259f0bcb7b1827bf4/distribute-0.6.45.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"f1d411325db169b5c47b0c6f285c758d","sha256":"d5e510cd44531aed207ea039455a486f2d8291dbf4b0bc7c57deef691586dd85"},"downloads":-1,"filename":"distribute-0.6.45.zip","has_sig":false,"md5_digest":"f1d411325db169b5c47b0c6f285c758d","packagetype":"sdist","python_version":"source","requires_python":null,"size":771943,"upload_time":"2016-01-19T00:07:13","upload_time_iso_8601":"2016-01-19T00:07:13.796507Z","url":"https://files.pythonhosted.org/packages/38/46/63a32f9ccc8724a5e36b6bcde2c2429ead90edbc646f7481a5357a3e1d1c/distribute-0.6.45.zip","yanked":false,"yanked_reason":null}],"0.6.46":[{"comment_text":"","digests":{"md5":"73d21ec34a683af697ceeb5199bf4bef","sha256":"6eed4e5ec5369d91e90c3d16713728b619423b8b02c2526cefb0602c086236c7"},"downloads":-1,"filename":"distribute-0.6.46.tar.gz","has_sig":false,"md5_digest":"73d21ec34a683af697ceeb5199bf4bef","packagetype":"sdist","python_version":"source","requires_python":null,"size":723786,"upload_time":"2013-06-29T14:26:43","upload_time_iso_8601":"2013-06-29T14:26:43.310381Z","url":"https://files.pythonhosted.org/packages/e2/af/422a5b1ebfe6d8f54dcd1d846eaed1c71c85ebaa87d7ed8c22bcc974be99/distribute-0.6.46.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"d9586bbfc029154d4cc1e087d2de2bdd","sha256":"08feb3fb8dc22cd610ecc9674eb014e91bc89fcc6e7156443dbafb6b49d96477"},"downloads":-1,"filename":"distribute-0.6.46.zip","has_sig":false,"md5_digest":"d9586bbfc029154d4cc1e087d2de2bdd","packagetype":"sdist","python_version":"source","requires_python":null,"size":771747,"upload_time":"2016-01-19T00:07:22","upload_time_iso_8601":"2016-01-19T00:07:22.272767Z","url":"https://files.pythonhosted.org/packages/06/b9/74d0d48befa2bd9c32e06b5e69cda4ca5c8293ccb76ad862eaca1657518d/distribute-0.6.46.zip","yanked":false,"yanked_reason":null}],"0.6.47":[{"comment_text":"","digests":{"md5":"bfa191de8c0578eb65212436b73f72c2","sha256":"89bb51db38a69bdd6099a8b487f8365d45e786596076f3f9fe17caa07a846774"},"downloads":-1,"filename":"distribute-0.6.47.tar.gz","has_sig":false,"md5_digest":"bfa191de8c0578eb65212436b73f72c2","packagetype":"sdist","python_version":"source","requires_python":null,"size":723849,"upload_time":"2013-07-02T12:27:25","upload_time_iso_8601":"2013-07-02T12:27:25.573448Z","url":"https://files.pythonhosted.org/packages/b4/f8/92222dccdb72d3b6f43b18ebcb93aa7f46849c44d23a5e98efe53c5eff55/distribute-0.6.47.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"554f9aa8efe56f1d94a607c0ff27d74e","sha256":"22d4920651da97ce023c3ac22b32464b9c6dd2d8d22d447534cfaf41fb2faac0"},"downloads":-1,"filename":"distribute-0.6.47.zip","has_sig":false,"md5_digest":"554f9aa8efe56f1d94a607c0ff27d74e","packagetype":"sdist","python_version":"source","requires_python":null,"size":771853,"upload_time":"2016-01-19T00:07:34","upload_time_iso_8601":"2016-01-19T00:07:34.555378Z","url":"https://files.pythonhosted.org/packages/5d/5f/3938baf3c82179d1850a9ea2c5939377a81d644acccb094d64d1e1118f75/distribute-0.6.47.zip","yanked":false,"yanked_reason":null}],"0.6.48":[{"comment_text":"","digests":{"md5":"8043b862d69b7c553c8899276babd602","sha256":"3b88a8b7eb585718f4647360f2ed80a2eed3c544ec59c641dea4ff29310cd6bc"},"downloads":-1,"filename":"distribute-0.6.48.tar.gz","has_sig":false,"md5_digest":"8043b862d69b7c553c8899276babd602","packagetype":"sdist","python_version":"source","requires_python":null,"size":723799,"upload_time":"2013-07-02T15:42:40","upload_time_iso_8601":"2013-07-02T15:42:40.563075Z","url":"https://files.pythonhosted.org/packages/80/c0/c97660e5e4b13d999d150b1f55d88e3bf7e103a8eebd9d24ef7a2307741c/distribute-0.6.48.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"1da627bccbb1b51b1aee94b3e64de341","sha256":"89d9f1e9c8f9ff3c96c1292f5e4511b3b30462caabafcf7cc1ee7264c6df755f"},"downloads":-1,"filename":"distribute-0.6.48.zip","has_sig":false,"md5_digest":"1da627bccbb1b51b1aee94b3e64de341","packagetype":"sdist","python_version":"source","requires_python":null,"size":771897,"upload_time":"2016-01-19T00:07:47","upload_time_iso_8601":"2016-01-19T00:07:47.855562Z","url":"https://files.pythonhosted.org/packages/8e/5d/a47e0d4891cd8aff83e331440732972661541320e92dbb05e38dd17c29e2/distribute-0.6.48.zip","yanked":false,"yanked_reason":null}],"0.6.49":[{"comment_text":"","digests":{"md5":"89e68df89faf1966bcbd99a0033fbf8e","sha256":"b877a9f155fc13cbf409d4fdbf709d25c24f28dfe3531ecb419eb069bd80e878"},"downloads":-1,"filename":"distribute-0.6.49.tar.gz","has_sig":false,"md5_digest":"89e68df89faf1966bcbd99a0033fbf8e","packagetype":"sdist","python_version":"source","requires_python":null,"size":724005,"upload_time":"2013-07-05T01:59:40","upload_time_iso_8601":"2013-07-05T01:59:40.819770Z","url":"https://files.pythonhosted.org/packages/f3/2b/e97c01487b7636ba3fcff5e73db995c66c524d54d0907d238311524f67c8/distribute-0.6.49.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"2b65b6881f064e9f54d427c8e1f555e7","sha256":"2e6ef91d00784f9680b413e2a2f4d7c1456927cd9a34ebce99448cd4fbf6fbb8"},"downloads":-1,"filename":"distribute-0.6.49.zip","has_sig":false,"md5_digest":"2b65b6881f064e9f54d427c8e1f555e7","packagetype":"sdist","python_version":"source","requires_python":null,"size":772156,"upload_time":"2016-01-19T00:08:08","upload_time_iso_8601":"2016-01-19T00:08:08.054628Z","url":"https://files.pythonhosted.org/packages/67/58/fb1902ce3aee9d868648bb1bb44ca6fdeac04726a6053741bf0485390ec4/distribute-0.6.49.zip","yanked":false,"yanked_reason":null}],"0.6.5":[{"comment_text":"","digests":{"md5":"2545856b22598749581ef8647d352e58","sha256":"e97fea8207f09ef729f21ae2be49a0692d5e0f169945ee89113dbcc0efcd8c4d"},"downloads":-1,"filename":"distribute-0.6.5.tar.gz","has_sig":false,"md5_digest":"2545856b22598749581ef8647d352e58","packagetype":"sdist","python_version":"source","requires_python":null,"size":526528,"upload_time":"2011-09-22T18:29:11","upload_time_iso_8601":"2011-09-22T18:29:11.597775Z","url":"https://files.pythonhosted.org/packages/2a/cd/71002045b4ba17c96e5965459216962bf0a1d2e11262b0831e0abb021d23/distribute-0.6.5.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"be0dad9bd3619dbe818a70e786f41cdc","sha256":"659461027e71c0e501c033a6dd07fd3eda2e68bf4211af8c38ac3062d5f5c6a4"},"downloads":-1,"filename":"distribute-0.6.5.zip","has_sig":false,"md5_digest":"be0dad9bd3619dbe818a70e786f41cdc","packagetype":"sdist","python_version":"source","requires_python":null,"size":561022,"upload_time":"2016-01-19T00:01:15","upload_time_iso_8601":"2016-01-19T00:01:15.341067Z","url":"https://files.pythonhosted.org/packages/b1/de/0332e445bdbb7022852d5a2435c064c167fc4943b76383ad4e30a9d7ca07/distribute-0.6.5.zip","yanked":false,"yanked_reason":null}],"0.6.6":[{"comment_text":"","digests":{"md5":"b7ba298108026fd71f87874be5256d20","sha256":"ca9fcf7477d655f4e72ddbe1a15d1aacb066462e77ff5af0654eeda2c777c922"},"downloads":-1,"filename":"distribute-0.6.6.tar.gz","has_sig":false,"md5_digest":"b7ba298108026fd71f87874be5256d20","packagetype":"sdist","python_version":"source","requires_python":null,"size":526682,"upload_time":"2011-09-22T18:29:28","upload_time_iso_8601":"2011-09-22T18:29:28.860840Z","url":"https://files.pythonhosted.org/packages/f0/f3/f020debdcd692437d235a93194c649273d6a46d815254c366cbf4ed9e029/distribute-0.6.6.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"e10dbc789c34d89e1d57901915e43645","sha256":"b6c545bf6d1ac79ad73ff8d3fb8a6e9cf25bd7393f1cd93d617128cef3d08ecd"},"downloads":-1,"filename":"distribute-0.6.6.zip","has_sig":false,"md5_digest":"e10dbc789c34d89e1d57901915e43645","packagetype":"sdist","python_version":"source","requires_python":null,"size":561258,"upload_time":"2016-01-19T00:01:24","upload_time_iso_8601":"2016-01-19T00:01:24.486155Z","url":"https://files.pythonhosted.org/packages/dd/34/01ceefc58caf5e1b4be0fc917b539bf456c78b77005d201a10306372dddf/distribute-0.6.6.zip","yanked":false,"yanked_reason":null}],"0.6.7":[{"comment_text":"","digests":{"md5":"32f1e942d0186605756e386171c92429","sha256":"0ad2916d5821a2b8adecee3bd2ff03399f7ebe69a7eab2341528089c1e4b77ca"},"downloads":-1,"filename":"distribute-0.6.7.tar.gz","has_sig":false,"md5_digest":"32f1e942d0186605756e386171c92429","packagetype":"sdist","python_version":"source","requires_python":null,"size":381232,"upload_time":"2011-09-22T18:29:40","upload_time_iso_8601":"2011-09-22T18:29:40.157129Z","url":"https://files.pythonhosted.org/packages/c9/db/1c44a07d77ea84886f666a6201db043e979f94c990e6e796e0cf4d57c63d/distribute-0.6.7.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"df9da54c7515f37bbb988c0d74d3cdf2","sha256":"c8ea44c881a0a0c2f29e506800abfa236ea0704dc565ce19c436fd7912952025"},"downloads":-1,"filename":"distribute-0.6.7.zip","has_sig":false,"md5_digest":"df9da54c7515f37bbb988c0d74d3cdf2","packagetype":"sdist","python_version":"source","requires_python":null,"size":420341,"upload_time":"2016-01-19T00:01:32","upload_time_iso_8601":"2016-01-19T00:01:32.026655Z","url":"https://files.pythonhosted.org/packages/0d/7e/82122b2b6371655491ec668737daf5b278efaab082de13adbd100207f6b9/distribute-0.6.7.zip","yanked":false,"yanked_reason":null}],"0.6.8":[{"comment_text":"","digests":{"md5":"f8caf091fbc2d581274bca0c87ec5ea8","sha256":"f75b3a011be311186d1bddfb3cc1767537eb35332fbf1fc19309dd36ebc737bf"},"downloads":-1,"filename":"distribute-0.6.8.tar.gz","has_sig":false,"md5_digest":"f8caf091fbc2d581274bca0c87ec5ea8","packagetype":"sdist","python_version":"source","requires_python":null,"size":381421,"upload_time":"2011-09-22T18:30:01","upload_time_iso_8601":"2011-09-22T18:30:01.075794Z","url":"https://files.pythonhosted.org/packages/f3/ae/7a31bd7a09548f3fc57408837b4a183ff48e60085b5d0f08026e375ebbd0/distribute-0.6.8.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"8da017dc10e48e51310c235f5584b126","sha256":"781a6f1ba19d85d7067b919a6b31b8fff6d0f513581f7586eac60480be0277ce"},"downloads":-1,"filename":"distribute-0.6.8.zip","has_sig":false,"md5_digest":"8da017dc10e48e51310c235f5584b126","packagetype":"sdist","python_version":"source","requires_python":null,"size":420599,"upload_time":"2016-01-19T00:01:38","upload_time_iso_8601":"2016-01-19T00:01:38.872052Z","url":"https://files.pythonhosted.org/packages/f2/ea/f708dba54ba7ad36d6b032554cc45d2ded60df8f806387aff7ea89dfa028/distribute-0.6.8.zip","yanked":false,"yanked_reason":null}],"0.6.9":[{"comment_text":"","digests":{"md5":"2e8bea1ef6f7b972387715cc465d56a9","sha256":"aa59755d040a466fc0bb5b15f5a7ae711994a39723ab23a3b75fa4dcc4986543"},"downloads":-1,"filename":"distribute-0.6.9.tar.gz","has_sig":false,"md5_digest":"2e8bea1ef6f7b972387715cc465d56a9","packagetype":"sdist","python_version":"source","requires_python":null,"size":389380,"upload_time":"2011-09-22T18:30:14","upload_time_iso_8601":"2011-09-22T18:30:14.580650Z","url":"https://files.pythonhosted.org/packages/a9/a1/06b34f4fa52e35059f582572f7de5592744897f88ac488c97a715bfa71c9/distribute-0.6.9.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"ef70bb0efc48cb1d6689cf32e0312c4c","sha256":"e2f411eda7535eb7af0cc032c6e104733c3d3afbd7d79de25b925d740eb9cbd4"},"downloads":-1,"filename":"distribute-0.6.9.zip","has_sig":false,"md5_digest":"ef70bb0efc48cb1d6689cf32e0312c4c","packagetype":"sdist","python_version":"source","requires_python":null,"size":424999,"upload_time":"2016-01-19T00:01:48","upload_time_iso_8601":"2016-01-19T00:01:48.635990Z","url":"https://files.pythonhosted.org/packages/e8/1f/746778ad7044fe4767a3e3122ad75d0487441342ae00940d2b333f53c03f/distribute-0.6.9.zip","yanked":false,"yanked_reason":null}],"0.7.3":[{"comment_text":"","digests":{"md5":"c6c59594a7b180af57af8a0cc0cf5b4a","sha256":"3dc7a8d059dcf72f0ead2fa2144a24ee0ef07dce816e8c3545d7345767138c5e"},"downloads":-1,"filename":"distribute-0.7.3.zip","has_sig":false,"md5_digest":"c6c59594a7b180af57af8a0cc0cf5b4a","packagetype":"sdist","python_version":"source","requires_python":null,"size":145378,"upload_time":"2013-07-05T18:19:57","upload_time_iso_8601":"2013-07-05T18:19:57.876141Z","url":"https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip","yanked":false,"yanked_reason":null}]},"urls":[{"comment_text":"","digests":{"md5":"8a5c36afe934ef90ce2da15a1c557128","sha256":"85b05942f84146d8f0ed17906b90af7662d649b922fe77a8c402da5da258a481"},"downloads":-1,"filename":"distribute-0.6.15.tar.gz","has_sig":false,"md5_digest":"8a5c36afe934ef90ce2da15a1c557128","packagetype":"sdist","python_version":"source","requires_python":null,"size":397027,"upload_time":"2011-09-22T18:32:37","upload_time_iso_8601":"2011-09-22T18:32:37.570852Z","url":"https://files.pythonhosted.org/packages/07/a6/8f6b270b7e6a1be3df78b174e2437fdb631cfcce16f82c2f8b7affb50ee2/distribute-0.6.15.tar.gz","yanked":false,"yanked_reason":null},{"comment_text":"","digests":{"md5":"86ca2e0a13621a9b742246b2509602a2","sha256":"a6cba0f43a70dceab680ba475df2a451b53257e5dc3267323c2a666c1673a31b"},"downloads":-1,"filename":"distribute-0.6.15.zip","has_sig":false,"md5_digest":"86ca2e0a13621a9b742246b2509602a2","packagetype":"sdist","python_version":"source","requires_python":null,"size":435492,"upload_time":"2016-01-19T00:02:50","upload_time_iso_8601":"2016-01-19T00:02:50.500500Z","url":"https://files.pythonhosted.org/packages/7f/00/9219235d4222c3da6729e6e2afa4a9080b987169bab3b2ec6cbb7c2e86da/distribute-0.6.15.zip","yanked":false,"yanked_reason":null}]} diff --git a/pyroma/testdata/xmlrpcdata/distribute/0.6.15.html b/pyroma/testdata/xmlrpcdata/distribute/0.6.15.html deleted file mode 100644 index a933ef8..0000000 --- a/pyroma/testdata/xmlrpcdata/distribute/0.6.15.html +++ /dev/null @@ -1,1152 +0,0 @@ - - - - - - - - - Python Package Index : distribute 0.6.15 - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - -

- -
skip to navigation
-
skip to content
- - - -
- - - -
- -
-
-
- - - - - - - -
-

distribute 0.6.15

- - -

Easily download, build, install, upgrade, and uninstall Python packages

- -

- - Downloads ↓ - | - Package Documentation -

- - - - - - -
-

Installing and Using Distribute

- - -
-

Disclaimers

- -
-

About the fork

-

Distribute is a fork of the Setuptools project.

-

Distribute is intended to replace Setuptools as the standard method -for working with Python module distributions.

-

The fork has two goals:

-
    -
  • Providing a backward compatible version to replace Setuptools -and make all distributions that depend on Setuptools work as -before, but with less bugs and behaviorial issues.

    - -

    This work is done in the 0.6.x series.

    -

    Starting with version 0.6.2, Distribute supports Python 3. -Installing and using distribute for Python 3 code works exactly -the same as for Python 2 code, but Distribute also helps you to support -Python 2 and Python 3 from the same source code by letting you run 2to3 -on the code as a part of the build process, by setting the keyword parameter -use_2to3 to True. See http://packages.python.org/distribute for more -information.

    -
  • -
  • Refactoring the code, and releasing it in several distributions. -This work is being done in the 0.7.x series but not yet released.

    -
  • -
-

The roadmap is still evolving, and the page that is up-to-date is -located at : http://packages.python.org/distribute/roadmap.

- -

If you install Distribute and want to switch back for any reason to -Setuptools, get to the Uninstallation instructions section.

-
-
-

More documentation

-

You can get more information in the Sphinx-based documentation, located -at http://packages.python.org/distribute. This documentation includes the old -Setuptools documentation that is slowly replaced, and brand new content.

- -
-
-

About the installation process

-

The Distribute installer modifies your installation by de-activating an -existing installation of Setuptools in a bootstrap process. This process -has been tested in various installation schemes and contexts but in case of a -bug during this process your Python installation might be left in a broken -state. Since all modified files and directories are copied before the -installation starts, you will be able to get back to a normal state by reading -the instructions in the Uninstallation instructions section.

-

In any case, it is recommended to save you site-packages directory before -you start the installation of Distribute.

- -
-
-
-

Installation Instructions

-

Distribute is only released as a source distribution.

-

It can be installed using pip, and can be done so with the source tarball, -or by using the distribute_setup.py script provided online.

-

distribute_setup.py is the simplest and preferred way on all systems.

-
- -

distribute_setup.py

-

Download -distribute_setup.py -and execute it, using the Python interpreter of your choice.

-

If your shell has the curl program you can do:

-
-$ curl -O http://python-distribute.org/distribute_setup.py
-$ python distribute_setup.py
-
-

Notice this file is also provided in the source release.

- -
-
-

pip

-

Run easy_install or pip:

-
-$ pip install distribute
-
-
-
-

Source installation

-

Download the source tarball, uncompress it, then run the install command:

-
-$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.15.tar.gz
-$ tar -xzvf distribute-0.6.15.tar.gz
-$ cd distribute-0.6.15
-$ python setup.py install
-
-
-
-
-
-

Uninstallation Instructions

-

Like other distutils-based distributions, Distribute doesn't provide an -uninstaller yet. It's all done manually! We are all waiting for PEP 376 -support in Python.

-

Distribute is installed in three steps:

-
    -
  1. it gets out of the way an existing installation of Setuptools
  2. -
  3. it installs a fake setuptools installation
  4. - -
  5. it installs distribute
  6. -
-

Distribute can be removed like this:

-
    -
  • remove the distribute*.egg file located in your site-packages directory
  • -
  • remove the setuptools.pth file located in you site-packages directory
  • -
  • remove the easy_install script located in you sys.prefix/bin directory
  • - -
  • remove the setuptools*.egg directory located in your site-packages directory, -if any.
  • -
-

If you want to get back to setuptools:

-
    -
  • reinstall setuptools using its instruction.
  • -
-

Lastly:

-
    -
  • remove the .OLD. directory located in your site-packages directory if any, - -once you have checked everything was working correctly again.
  • -
-
-
-

Quick help for developers

-

To create an egg which is compatible with Distribute, use the same -practice as with Setuptools, e.g.:

-
-from setuptools import setup
-
-setup(...
-)
-
-

To use pkg_resources to access data files in the egg, you should -require the Setuptools distribution explicitly:

- -
-from setuptools import setup
-
-setup(...
-    install_requires=['setuptools']
-)
-
-

Only if you need Distribute-specific functionality should you depend -on it explicitly. In this case, replace the Setuptools dependency:

-
-from setuptools import setup
-
-setup(...
-    install_requires=['distribute']
-)
-
-
-
-

Install FAQ

-
    -
  • Why is Distribute wrapping my Setuptools installation?

    -
    -

    Since Distribute is a fork, and since it provides the same package -and modules, it renames the existing Setuptools egg and inserts a -new one which merely wraps the Distribute code. This way, full -backwards compatibility is kept for packages which rely on the -Setuptools modules.

    - -

    At the same time, packages can meet their dependency on Setuptools -without actually installing it (which would disable Distribute).

    -
    -
  • -
  • How does Distribute interact with virtualenv?

    -

    Everytime you create a virtualenv it will install setuptools by default. -You either need to re-install Distribute in it right after or pass the ---distribute option when creating it.

    -

    Once installed, your virtualenv will use Distribute transparently.

    -

    Although, if you have Setuptools installed in your system-wide Python, -and if the virtualenv you are in was generated without the --no-site-packages -option, the Distribute installation will stop.

    - -

    You need in this case to build a virtualenv with the --no-site-packages -option or to install Distribute globally.

    -
  • -
  • How does Distribute interacts with zc.buildout?

    -

    You can use Distribute in your zc.buildout, with the --distribute option, -starting at zc.buildout 1.4.2:

    -
    -$ python bootstrap.py --distribute
    -
    -

    For previous zc.buildout versions, the only thing you need to do -is use the bootstrap at http://python-distribute.org/bootstrap.py. Run -that bootstrap and bin/buildout (and all other buildout-generated -scripts) will transparently use distribute instead of setuptools. You do -not need a specific buildout release.

    - -

    A shared eggs directory is no problem (since 0.6.6): the setuptools egg is -left in place unmodified. So other buildouts that do not yet use the new -bootstrap continue to work just fine. And there is no need to list -distribute somewhere in your eggs: using the bootstrap is enough.

    -

    The source code for the bootstrap script is located at -http://bitbucket.org/tarek/buildout-distribute.

    -
  • -
-
- -
-
-

CHANGES

-
-

0.6.15

-
    -
  • Fixed typo in bdist_egg
  • - -
  • Several issues under Python 3 has been solved.
  • -
  • Issue 146: Fixed missing DLL files after easy_install of windows exe package.
  • -
-
-
-

0.6.14

-
    -
  • Issue 170: Fixed unittest failure. Thanks to Toshio.
  • -
  • Issue 171: Fixed race condition in unittests cause deadlocks in test suite.
  • -
  • Issue 143: Fixed a lookup issue with easy_install. -Thanks to David and Zooko.
  • -
  • Issue 174: Fixed the edit mode when its used with setuptools itself
  • - -
-
-
-

0.6.13

-
    -
  • Issue 160: 2.7 gives ValueError("Invalid IPv6 URL")
  • -
  • Issue 150: Fixed using ~/.local even in a --no-site-packages virtualenv
  • -
  • Issue 163: scan index links before external links, and don't use the md5 when -comparing two distributions
  • -
-
-
- -

0.6.12

-
    -
  • Issue 149: Fixed various failures on 2.3/2.4
  • -
-
-
-

0.6.11

-
    -
  • Found another case of SandboxViolation - fixed
  • -
  • Issue 15 and 48: Introduced a socket timeout of 15 seconds on url openings
  • -
  • Added indexsidebar.html into MANIFEST.in
  • - -
  • Issue 108: Fixed TypeError with Python3.1
  • -
  • Issue 121: Fixed --help install command trying to actually install.
  • -
  • Issue 112: Added an os.makedirs so that Tarek's solution will work.
  • -
  • Issue 133: Added --no-find-links to easy_install
  • -
  • Added easy_install --user
  • -
  • Issue 100: Fixed develop --user not taking '.' in PYTHONPATH into account
  • -
  • Issue 134: removed spurious UserWarnings. Patch by VanLindberg
  • -
  • Issue 138: cant_write_to_target error when setup_requires is used.
  • -
  • Issue 147: respect the sys.dont_write_bytecode flag
  • - -
-
-
-

0.6.10

-
    -
  • Reverted change made for the DistributionNotFound exception because -zc.buildout uses the exception message to get the name of the -distribution.
  • -
-
-
-

0.6.9

-
    -
  • Issue 90: unknown setuptools version can be added in the working set
  • -
  • Issue 87: setupt.py doesn't try to convert distribute_setup.py anymore -Initial Patch by arfrever.
  • - -
  • Issue 89: added a side bar with a download link to the doc.
  • -
  • Issue 86: fixed missing sentence in pkg_resources doc.
  • -
  • Added a nicer error message when a DistributionNotFound is raised.
  • -
  • Issue 80: test_develop now works with Python 3.1
  • -
  • Issue 93: upload_docs now works if there is an empty sub-directory.
  • -
  • Issue 70: exec bit on non-exec files
  • -
  • Issue 99: now the standalone easy_install command doesn't uses a -"setup.cfg" if any exists in the working directory. It will use it -only if triggered by install_requires from a setup.py call -(install, develop, etc).
  • - -
  • Issue 101: Allowing os.devnull in Sandbox
  • -
  • Issue 92: Fixed the "no eggs" found error with MacPort -(platform.mac_ver() fails)
  • -
  • Issue 103: test_get_script_header_jython_workaround not run -anymore under py3 with C or POSIX local. Contributed by Arfrever.
  • -
  • Issue 104: remvoved the assertion when the installation fails, -with a nicer message for the end user.
  • -
  • Issue 100: making sure there's no SandboxViolation when -the setup script patches setuptools.
  • -
- -
-
-

0.6.8

-
    -
  • Added "check_packages" in dist. (added in Setuptools 0.6c11)
  • -
  • Fixed the DONT_PATCH_SETUPTOOLS state.
  • -
-
-
-

0.6.7

- -
    -
  • Issue 58: Added --user support to the develop command
  • -
  • Issue 11: Generated scripts now wrap their call to the script entry point -in the standard "if name == 'main'"
  • -
  • Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv -can drive an installation that doesn't patch a global setuptools.
  • -
  • Reviewed unladen-swallow specific change from -http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719 -and determined that it no longer applies. Distribute should work fine with -Unladen Swallow 2009Q3.
  • -
  • Issue 21: Allow PackageIndex.open_url to gracefully handle all cases of a -httplib.HTTPException instead of just InvalidURL and BadStatusLine.
  • -
  • Removed virtual-python.py from this distribution and updated documentation -to point to the actively maintained virtualenv instead.
  • - -
  • Issue 64: use_setuptools no longer rebuilds the distribute egg every -time it is run
  • -
  • use_setuptools now properly respects the requested version
  • -
  • use_setuptools will no longer try to import a distribute egg for the -wrong Python version
  • -
  • Issue 74: no_fake should be True by default.
  • -
  • Issue 72: avoid a bootstrapping issue with easy_install -U
  • -
-
-
-

0.6.6

-
    -
  • Unified the bootstrap file so it works on both py2.x and py3k without 2to3 -(patch by Holger Krekel)
  • - -
-
-
-

0.6.5

-
    -
  • Issue 65: cli.exe and gui.exe are now generated at build time, -depending on the platform in use.
  • -
  • Issue 67: Fixed doc typo (PEP 381/382)
  • -
  • Distribute no longer shadows setuptools if we require a 0.7-series -setuptools. And an error is raised when installing a 0.7 setuptools with -distribute.
  • -
  • When run from within buildout, no attempt is made to modify an existing -setuptools egg, whether in a shared egg directory or a system setuptools.
  • -
  • Fixed a hole in sandboxing allowing builtin file to write outside of -the sandbox.
  • -
- -
-
-

0.6.4

- -
-
-

0.6.3

-
-

setuptools

-
    -
  • Fixed a bunch of calls to file() that caused crashes on Python 3.
  • -
-
-
-

bootstrapping

- -
    -
  • Fixed a bug in sorting that caused bootstrap to fail on Python 3.
  • -
-
-
-
-

0.6.2

-
-

setuptools

- - -
-
-

bootstrapping

- -
-
-
-

0.6.1

-
-

setuptools

- -
-
- -

bootstrapping

- -
-
-
-

0.6

-
-

setuptools

- -
-
-

pkg_resources

- - -
-
-

easy_install

- -
-
-
- - -  - - - - - - - - - - - - - - - - - - - - - - - - - -
FileTypePy VersionUploaded onSize# downloads
- - distribute-0.6.15.tar.gz - (md5) - - - - Source - - - 2011-03-16282KB973
- - - -
- -
-
- - - - - - - - - - - - - - - - -
Rate this release: 05 (best)
-
Review: (Please use the package's bug reporting channels
(trackers, mailing lists) for bug reports and requests for help
)
- - -
- - -
-
- - - - - -
- -
-
- - - - - - - - - - - - -
- - -
- -
-
- - diff --git a/pyroma/testdata/xmlrpcdata/distributedata.py b/pyroma/testdata/xmlrpcdata/distributedata.py deleted file mode 100644 index 6ef225f..0000000 --- a/pyroma/testdata/xmlrpcdata/distributedata.py +++ /dev/null @@ -1,83 +0,0 @@ -from datetime import datetime - -args = ("https://pypi.org/pypi",) -kw = {} -data = { - "package_releases": {("distribute",): ["0.6.15"]}, - "release_data": { - ("distribute", "0.6.15"): { - "maintainer": None, - "requires_python": None, - "maintainer_email": None, - "cheesecake_code_kwalitee_id": None, - "keywords": "CPAN PyPI distutils eggs package management", - "package_url": "http://pypi.org/project/distribute", - "author": "The fellowship of the packaging", - "author_email": "distutils-sig@python.org", - "download_url": "UNKNOWN", - "platform": "UNKNOWN", - "version": "0.6.15", - "cheesecake_documentation_id": None, - "_pypi_hidden": False, - "description": """=============================== -Installing and Using Distribute -=============================== - -.. contents:: **Table of Contents** - ------------ -Disclaimers ------------ - -This is an example of a long_description -======================================== - -It doesn't need to be much longer than this, I think. -""", - "release_url": "http://pypi.org/project/distribute/0.6.15", - "_pypi_ordering": 115, - "classifiers": [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: Python Software Foundation License", - "License :: OSI Approved :: Zope Public License", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: System :: Archiving :: Packaging", - "Topic :: System :: Systems Administration", - "Topic :: Utilities", - ], - "name": "distribute", - "license": "PSF or ZPL", - "summary": "Easily download, build, install, upgrade, and uninstall Python packages", - "home_page": "http://packages.python.org/distribute", - "stable_version": None, - "cheesecake_installability_id": None, - } - }, - "release_urls": { - ("distribute", "0.6.15"): [ - { - "has_sig": False, - "upload_time": datetime(2011, 3, 16, 16, 31, 39), - "comment_text": "", - "python_version": "source", - "url": "http://pypi.python.org/packages/source/d/distribute/distribute-0.6.15.tar.gz", - "md5_digest": "ea52e1412e7ff560c290266ed400e216", - "downloads": 0, - "filename": "distribute-0.6.15.tar.gz", - "packagetype": "sdist", - "size": 289103, - } - ] - }, - "package_roles": { - ("distribute",): [ - ["Owner", "someone"], - ["Owner", "me"], - ["Maintainer", "other"], - ] - }, -} diff --git a/pyroma/tests.py b/pyroma/tests.py index 38f74cd..6705c37 100644 --- a/pyroma/tests.py +++ b/pyroma/tests.py @@ -1,7 +1,9 @@ import io + import json import os import unittest + import unittest.mock from pkg_resources import resource_filename, resource_string from xmlrpc import client as xmlrpclib @@ -16,12 +18,12 @@ long_description = io.StringIO(long_description, newline=None).read() COMPLETE = { - "metadata_version": "2.4", + "metadata-version": "2.4", "name": "complete", "version": "1.0.dev1", - "description": "This is a test package for pyroma.", - "long_description": long_description, - "classifiers": [ + "summary": "This is a test package for pyroma.", + "description": long_description, + "classifier": [ "Development Status :: 6 - Mature", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", @@ -46,11 +48,11 @@ ], "keywords": "pypi,quality,example", "author": "Lennart Regebro", - "author_email": "regebro@gmail.com", - "url": "https://github.com/regebro/pyroma", - "project_urls": "Source Code, https://github.com/regebro/pyroma", - "requires_dist": "zope.event", - "python_requires": ">=2.6", + "author-email": "regebro@gmail.com", + "home-page": "https://github.com/regebro/pyroma", + "project-url": "Source Code, https://github.com/regebro/pyroma", + "requires-dist": "zope.event", + "requires-python": ">=2.6", "license": "MIT", } @@ -136,49 +138,48 @@ def test_setup_config(self): "You probably want to create one with the following configuration:\n\n" " [build-system]\n" ' requires = ["setuptools>=42"]\n' - ' build-backend = "setuptools.build_meta"\n\n', + ' build-backend = "setuptools.build_meta"\n', ], ), ) def test_only_config(self): + # In version 5, this is now an error, as there is no legacy setup.py, + # nor a modern pyproject.toml. rating = self._get_file_rating("only_config") self.assertEqual( rating, ( - 6, + 5, [ - ( - "You should specify what Python versions you support with " - "the 'requires-python'/'python_requires' metadata." - ), - "Specifying both a License-Expression and license classifiers is ambiguous, " - "deprecated, and may be rejected by package indices.", - "You seem to have a setup.cfg, but neither a setup.py, nor a build-system defined. " - "This makes it unclear how your project should be built. You probably want to " - "have a pyproject.toml file with the following configuration:\n\n" + "You seem to neither have a setup.py, nor a pyproject.toml, only setup.cfg.\n" + "This makes it unclear how your project should be built, and some packaging " + "tools may fail.", + "Your project does not have a pyproject.toml file, which is highly " + "recommended.\n" + "You probably want to create one with the following configuration:\n\n" " [build-system]\n" ' requires = ["setuptools>=42"]\n' - ' build-backend = "setuptools.build_meta"\n\n' - "In the future this may become a hard failure and your package may be " - 'rated as "not cheese".', + ' build-backend = "setuptools.build_meta"\n', + "Specifying both a License-Expression and license classifiers is ambiguous, " + "deprecated, and may be rejected by package indices.", "Check-manifest returned errors", ], ), ) def test_skip_tests(self): - rating = self._get_file_rating( - "only_config", skip_tests=["PythonRequiresVersion", "MissingBuildSystem", "CheckManifest", "Licensing"] - ) - self.assertEqual( - rating, - ( - 10, - [], - ), - ) + # Find all errors + all_errors = self._get_file_rating("lacking")[1] + + fewer_errors = self._get_file_rating( + "lacking", skip_tests=["PythonRequiresVersion", "Description", "Summary", "Classifiers"] + )[1] + + self.assertEqual(len(all_errors), 13) + # Errors have been skipped! + self.assertEqual(len(fewer_errors), 9) def test_pep517(self): rating = self._get_file_rating("pep517") @@ -202,23 +203,19 @@ def test_pep621(self): def test_minimal(self): rating = self._get_file_rating("minimal") - self.assertEqual( rating, ( 2, [ - "The package's description should be longer than 10 characters.", - "The package's long_description is quite short.", - "Your package does not have classifiers data.", + "The package's Summary should be longer than 10 characters.", + "The package's Description is quite short.", + "Your package does not have classifier data.", "The classifiers should specify what Python versions you support.", - ( - "You should specify what Python versions you support with " - "the 'requires-python'/'python_requires' metadata." - ), + "You should specify what Python versions you support with " "the 'Requires-Python' metadata.", "Your package does not have keywords data.", "Your package does not have author data.", - "Your package does not have author_email data.", + "Your package does not have author-email data.", "Your package should have a 'url' field with a link to the project home page, or a " "'project_urls' field, with a dictionary of links, or both.", "Your package does neither have a license field nor any license classifiers.", @@ -237,29 +234,26 @@ def test_lacking(self): ( 0, [ - "The package had no description!", - "The package's long_description is quite short.", - "Your package does not have classifiers data.", + "Your project does not have a pyproject.toml file, which is highly recommended.\n" + "You probably want to create one with the following configuration:\n\n" + " [build-system]\n" + ' requires = ["setuptools>=42"]\n' + ' build-backend = "setuptools.build_meta"\n', + "The package had no Summary!", + "The package's Description is quite short.", + "Your package does not have classifier data.", "The classifiers should specify what Python versions you support.", - ( - "You should specify what Python versions you support with " - "the 'requires-python'/'python_requires' metadata." - ), + "You should specify what Python versions you support with " "the 'Requires-Python' metadata.", "Your package does not have keywords data.", "Your package does not have author data.", - "Your package does not have author_email data.", + "Your package does not have author-email data.", "Your package should have a 'url' field with a link to the project home page, or a " "'project_urls' field, with a dictionary of links, or both.", "Your package does neither have a license field nor any license classifiers.", - "Your long_description is not valid ReST: \n:1: (WARNING/2) Inline literal " + "Your Description is not valid ReST: \n:1: (WARNING/2) Inline literal " "start-string without end-string.", "Specifying a development status in the classifiers gives users " "a hint of how stable your software is.", - "Your project does not have a pyproject.toml file, which is highly recommended.\n" - "You probably want to create one with the following configuration:\n\n" - " [build-system]\n" - ' requires = ["setuptools>=42"]\n' - ' build-backend = "setuptools.build_meta"\n\n', ], ), ) @@ -272,17 +266,14 @@ def test_custom_test(self): ( 3, [ - "The package's description should be longer than 10 characters.", - "The package's long_description is quite short.", - "Your package does not have classifiers data.", + "The package's Summary should be longer than 10 characters.", + "The package's Description is quite short.", + "Your package does not have classifier data.", "The classifiers should specify what Python versions you support.", - ( - "You should specify what Python versions you support with " - "the 'requires-python'/'python_requires' metadata." - ), + "You should specify what Python versions you support with " "the 'Requires-Python' metadata.", "Your package does not have keywords data.", "Your package does not have author data.", - "Your package does not have author_email data.", + "Your package does not have author-email data.", "Your package should have a 'url' field with a link to the project home page, or a " "'project_urls' field, with a dictionary of links, or both.", "Your package does neither have a license field nor any license classifiers.", @@ -299,49 +290,20 @@ def test_private_classifier(self): def test_markdown(self): # Markdown and text shouldn't get ReST errors testdata = COMPLETE.copy() - testdata["long_description"] = "# Broken ReST\n\n``Valid Markdown\n" - testdata["long_description_content_type"] = "text/markdown" + testdata["description"] = "# Broken ReST\n\n``Valid Markdown\n" + testdata["description-content-type"] = "text/markdown" + rating = rate(testdata) - self.assertEqual(rating, (9, ["The package's long_description is quite short."])) + self.assertEqual(rating, (9, ["The package's Description is quite short."])) - testdata["long_description_content_type"] = "text/plain" + testdata["description-content-type"] = "text/plain" rating = rate(testdata) - self.assertEqual(rating, (9, ["The package's long_description is quite short."])) + self.assertEqual(rating, (9, ["The package's Description is quite short."])) class PyPITest(unittest.TestCase): maxDiff = None - @unittest.mock.patch("xmlrpc.client.ServerProxy", proxystub) - @unittest.mock.patch("pyroma.pypidata._get_project_data") - def test_distribute(self, projectdatamock): - datafile = resource_filename(__name__, os.path.join("testdata", "jsondata", "distribute.json")) - with open(datafile, encoding="UTF-8") as file: - projectdatamock.return_value = json.load(file) - - proxystub.set_debug_context("distributedata.py", xmlrpclib.ServerProxy, False) - - data = pypidata.get_data("distribute") - rating = rate(data) - - # build + older versions of setuptools works, later setuptools does not, so - # we can get two different results here: - self.assertEqual( - rating, - ( - 7, - [ - "The classifiers should specify what minor versions of Python " - "you support as well as what major version.", - "You should have three or more owners of the project on PyPI.", - "Your Cheese may have spoiled!! The only way to gather metadata from your package was to execute " - "a patched setup.py. This indicates that your package is using very old packaging techniques, " - "(or that your setup.py isn't executable at all), and Pyroma will soon regard that as a " - "complete failure!\nPlease modernize your packaging! If it is already modern, this is a bug.", - ], - ), - ) - @unittest.mock.patch("xmlrpc.client.ServerProxy", proxystub) @unittest.mock.patch("pyroma.pypidata._get_project_data") @unittest.mock.patch("requests.get") diff --git a/setup.cfg b/setup.cfg index cec00fc..92cf00c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = pyroma -version = 4.3.4.dev0 +version = 5.0b3.dev0 description = Test your project's packaging friendliness long_description = file: README.rst, CHANGES.txt classifiers = @@ -39,7 +39,7 @@ install_requires = packaging pygments requests - setuptools>=42 + setuptools>=61 trove-classifiers>=2022.6.26 [options.packages.find] @@ -50,6 +50,7 @@ test = pytest setuptools>=60 zest.releaser[recommended] + flit_core>=3.4,<4 [options.entry_points] console_scripts =