{
"info": {
"author": "Explosion",
"author_email": "contact@explosion.ai",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Topic :: Scientific/Engineering"
],
"description": "
\n\n# catalogue: Super lightweight function registries for your library\n\n`catalogue` is a tiny, zero-dependencies library that makes it easy to **add\nfunction (or object) registries** to your code. Function registries are helpful\nwhen you have objects that need to be both easily serializable and fully\ncustomizable. Instead of passing a function into your object, you pass in an\nidentifier name, which the object can use to lookup the function from the\nregistry. This makes the object easy to serialize, because the name is a simple\nstring. If you instead saved the function, you'd have to use Pickle for\nserialization, which has many drawbacks.\n\n[](https://dev.azure.com/explosion-ai/public/_build?definitionId=14)\n[](https://github.com/explosion/catalogue/releases)\n[](https://pypi.org/project/catalogue/)\n[](https://anaconda.org/conda-forge/catalogue)\n[](https://github.com/ambv/black)\n\n## \u23f3 Installation\n\n```bash\npip install catalogue\n```\n\n```bash\nconda install -c conda-forge catalogue\n```\n\n> \u26a0\ufe0f **Important note:** `catalogue` v2.0+ is only compatible with Python 3.6+.\n> For Python 2.7+ compatibility, use `catalogue` v1.x.\n\n## \ud83d\udc69\u200d\ud83d\udcbb Usage\n\nLet's imagine you're developing a Python package that needs to load data\nsomewhere. You've already implemented some loader functions for the most common\ndata types, but you want to allow the user to easily add their own. Using\n`catalogue.create` you can create a new registry under the namespace\n`your_package` → `loaders`.\n\n```python\n# YOUR PACKAGE\nimport catalogue\n\nloaders = catalogue.create(\"your_package\", \"loaders\")\n```\n\nThis gives you a `loaders.register` decorator that your users can import and\ndecorate their custom loader functions with.\n\n```python\n# USER CODE\nfrom your_package import loaders\n\n@loaders.register(\"custom_loader\")\ndef custom_loader(data):\n # Load something here...\n return data\n```\n\nThe decorated function will be registered automatically and in your package,\nyou'll be able to access all loaders by calling `loaders.get_all`.\n\n```python\n# YOUR PACKAGE\ndef load_data(data, loader_id):\n print(\"All loaders:\", loaders.get_all()) # {\"custom_loader\": }\n loader = loaders.get(loader_id)\n return loader(data)\n```\n\nThe user can now refer to their custom loader using only its string name\n(`\"custom_loader\"`) and your application will know what to do and will use their\ncustom function.\n\n```python\n# USER CODE\nfrom your_package import load_data\n\nload_data(data, loader_id=\"custom_loader\")\n```\n\n## \u2753 FAQ\n\n#### But can't the user just pass in the `custom_loader` function directly?\n\nSure, that's the more classic callback approach. Instead of a string ID,\n`load_data` could also take a function, in which case you wouldn't need a\npackage like this. `catalogue` helps you when you need to produce a serializable\nrecord of which functions were passed in. For instance, you might want to write\na log message, or save a config to load back your object later. With\n`catalogue`, your functions can be parameterized by strings, so logging and\nserialization remains easy \u2013 while still giving you full extensibility.\n\n#### How do I make sure all of the registration decorators have run?\n\nDecorators normally run when modules are imported. Relying on this side-effect\ncan sometimes lead to confusion, especially if there's no other reason the\nmodule would be imported. One solution is to use\n[entry points](https://packaging.python.org/specifications/entry-points/).\n\nFor instance, in [spaCy](https://spacy.io) we're starting to use function\nregistries to make the pipeline components much more customizable. Let's say one\nuser, Jo, develops a better tagging model using new machine learning research.\nEnd-users of Jo's package should be able to write\n`spacy.load(\"jo_tagging_model\")`. They shouldn't need to remember to write\n`import jos_tagged_model` first, just to run the function registries as a\nside-effect. With entry points, the registration happens at install time \u2013 so\nyou don't need to rely on the import side-effects.\n\n## \ud83c\udf9b API\n\n### function `catalogue.create`\n\nCreate a new registry for a given namespace. Returns a setter function that can\nbe used as a decorator or called with a name and `func` keyword argument. If\n`entry_points=True` is set, the registry will check for\n[Python entry points](https://packaging.python.org/tutorials/packaging-projects/#entry-points)\nadvertised for the given namespace, e.g. the entry point group\n`spacy_architectures` for the namespace `\"spacy\", \"architectures\"`, in\n`Registry.get` and `Registry.get_all`. This allows other packages to\nauto-register functions.\n\n| Argument | Type | Description |\n| -------------- | ---------- | ---------------------------------------------------------------------------------------------- |\n| `*namespace` | str | The namespace, e.g. `\"spacy\"` or `\"spacy\", \"architectures\"`. |\n| `entry_points` | bool | Whether to check for entry points of the given namespace and pre-populate the global registry. |\n| **RETURNS** | `Registry` | The `Registry` object with methods to register and retrieve functions. |\n\n```python\narchitectures = catalogue.create(\"spacy\", \"architectures\")\n\n# Use as decorator\n@architectures.register(\"custom_architecture\")\ndef custom_architecture():\n pass\n\n# Use as regular function\narchitectures.register(\"custom_architecture\", func=custom_architecture)\n```\n\n### class `Registry`\n\nThe registry object that can be used to register and retrieve functions. It's\nusually created internally when you call `catalogue.create`.\n\n#### method `Registry.__init__`\n\nInitialize a new registry. If `entry_points=True` is set, the registry will\ncheck for\n[Python entry points](https://packaging.python.org/tutorials/packaging-projects/#entry-points)\nadvertised for the given namespace, e.g. the entry point group\n`spacy_architectures` for the namespace `\"spacy\", \"architectures\"`, in\n`Registry.get` and `Registry.get_all`.\n\n| Argument | Type | Description |\n| -------------- | ---------- | -------------------------------------------------------------------------------- |\n| `namespace` | Tuple[str] | The namespace, e.g. `\"spacy\"` or `\"spacy\", \"architectures\"`. |\n| `entry_points` | bool | Whether to check for entry points of the given namespace in `get` and `get_all`. |\n| **RETURNS** | `Registry` | The newly created object. |\n\n```python\n# User-facing API\narchitectures = catalogue.create(\"spacy\", \"architectures\")\n# Internal API\narchitectures = Registry((\"spacy\", \"architectures\"))\n```\n\n#### method `Registry.__contains__`\n\nCheck whether a name is in the registry.\n\n| Argument | Type | Description |\n| ----------- | ---- | ------------------------------------ |\n| `name` | str | The name to check. |\n| **RETURNS** | bool | Whether the name is in the registry. |\n\n```python\narchitectures = catalogue.create(\"spacy\", \"architectures\")\n\n@architectures.register(\"custom_architecture\")\ndef custom_architecture():\n pass\n\nassert \"custom_architecture\" in architectures\n```\n\n#### method `Registry.__call__`\n\nRegister a function in the registry's namespace. Can be used as a decorator or\ncalled as a function with the `func` keyword argument supplying the function to\nregister. Delegates to `Registry.register`.\n\n#### method `Registry.register`\n\nRegister a function in the registry's namespace. Can be used as a decorator or\ncalled as a function with the `func` keyword argument supplying the function to\nregister.\n\n| Argument | Type | Description |\n| ----------- | -------- | --------------------------------------------------------- |\n| `name` | str | The name to register under the namespace. |\n| `func` | Any | Optional function to register (if not used as decorator). |\n| **RETURNS** | Callable | The decorator that takes one argument, the name. |\n\n```python\narchitectures = catalogue.create(\"spacy\", \"architectures\")\n\n# Use as decorator\n@architectures.register(\"custom_architecture\")\ndef custom_architecture():\n pass\n\n# Use as regular function\narchitectures.register(\"custom_architecture\", func=custom_architecture)\n```\n\n#### method `Registry.get`\n\nGet a function registered in the namespace.\n\n| Argument | Type | Description |\n| ----------- | ---- | ------------------------ |\n| `name` | str | The name. |\n| **RETURNS** | Any | The registered function. |\n\n```python\ncustom_architecture = architectures.get(\"custom_architecture\")\n```\n\n#### method `Registry.get_all`\n\nGet all functions in the registry's namespace.\n\n| Argument | Type | Description |\n| ----------- | -------------- | ---------------------------------------- |\n| **RETURNS** | Dict[str, Any] | The registered functions, keyed by name. |\n\n```python\nall_architectures = architectures.get_all()\n# {\"custom_architecture\": }\n```\n\n#### method `Registry.get_entry_points`\n\nGet registered entry points from other packages for this namespace. The name of\nthe entry point group is the namespace joined by `_`.\n\n| Argument | Type | Description |\n| ----------- | -------------- | --------------------------------------- |\n| **RETURNS** | Dict[str, Any] | The loaded entry points, keyed by name. |\n\n```python\narchitectures = catalogue.create(\"spacy\", \"architectures\", entry_points=True)\n# Will get all entry points of the group \"spacy_architectures\"\nall_entry_points = architectures.get_entry_points()\n```\n\n#### method `Registry.get_entry_point`\n\nCheck if registered entry point is available for a given name in the namespace\nand load it. Otherwise, return the default value.\n\n| Argument | Type | Description |\n| ----------- | ---- | ------------------------------------------------ |\n| `name` | str | Name of entry point to load. |\n| `default` | Any | The default value to return. Defaults to `None`. |\n| **RETURNS** | Any | The loaded entry point or the default value. |\n\n```python\narchitectures = catalogue.create(\"spacy\", \"architectures\", entry_points=True)\n# Will get entry point \"custom_architecture\" of the group \"spacy_architectures\"\ncustom_architecture = architectures.get_entry_point(\"custom_architecture\")\n```\n\n#### method `Registry.find`\n\nFind the information about a registered function, including the\nmodule and path to the file it's defined in, the line number and the\ndocstring, if available.\n\n| Argument | Type | Description |\n| ----------- | ---- | ------------------------------------------------ |\n| `name` | str | Name of the registered function. |\n| **RETURNS** | Dict[str, Union[str, int]] | The information about the function. |\n\n```python\nimport catalogue\n\narchitectures = catalogue.create(\"spacy\", \"architectures\", entry_points=True)\n\n@architectures(\"my_architecture\")\ndef my_architecture():\n \"\"\"This is an architecture\"\"\"\n pass\n\ninfo = architectures.find(\"my_architecture\")\n# {'module': 'your_package.architectures',\n# 'file': '/path/to/your_package/architectures.py',\n# 'line_no': 5,\n# 'docstring': 'This is an architecture'}\n```\n\n### function `catalogue.check_exists`\n\nCheck if a namespace exists.\n\n| Argument | Type | Description |\n| ------------ | ---- | ------------------------------------------------------------ |\n| `*namespace` | str | The namespace, e.g. `\"spacy\"` or `\"spacy\", \"architectures\"`. |\n| **RETURNS** | bool | Whether the namespace exists. |\n\n\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/explosion/catalogue",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "catalogue",
"package_url": "https://pypi.org/project/catalogue/",
"platform": null,
"project_url": "https://pypi.org/project/catalogue/",
"project_urls": {
"Homepage": "https://github.com/explosion/catalogue"
},
"release_url": "https://pypi.org/project/catalogue/2.0.7/",
"requires_dist": [
"zipp (>=0.5) ; python_version < \"3.8\"",
"typing-extensions (>=3.6.4) ; python_version < \"3.8\""
],
"requires_python": ">=3.6",
"summary": "Super lightweight function registries for your library",
"version": "2.0.7",
"yanked": false,
"yanked_reason": null
},
"last_serial": 13247581,
"releases": {
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "b5563b0d14799bfb6937f3046abd5c56",
"sha256": "058dc9b2a1c90cf9b4e9dec5f1c058a2e16be7f4a41a3c069e50dfce01a829bb"
},
"downloads": -1,
"filename": "catalogue-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "b5563b0d14799bfb6937f3046abd5c56",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 5654,
"upload_time": "2019-11-01T21:50:17",
"upload_time_iso_8601": "2019-11-01T21:50:17.520782Z",
"url": "https://files.pythonhosted.org/packages/30/48/7b800521442437f91b50d06b536ba6ce47e71a17fa7e87367cac2555f309/catalogue-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "4e6fab346ba3656a4535bc005e755225",
"sha256": "3bd5fc54ed3e33d877efe0afcb8abc7c80b980ce64241d531301d235000427d6"
},
"downloads": -1,
"filename": "catalogue-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "4e6fab346ba3656a4535bc005e755225",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 5865,
"upload_time": "2019-11-01T23:22:28",
"upload_time_iso_8601": "2019-11-01T23:22:28.690991Z",
"url": "https://files.pythonhosted.org/packages/ac/98/79b80fb3b6daebfc3ab9b7044dc024de2359f72e242632b433cf46351f1d/catalogue-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "b4d2ca31c0e052a45e400250544acf30",
"sha256": "bc3bad78b133ab03a440724075a1e087dadfe2cc2542ccc82fd4f09a1ad27781"
},
"downloads": -1,
"filename": "catalogue-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "b4d2ca31c0e052a45e400250544acf30",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 5917,
"upload_time": "2019-11-02T14:52:25",
"upload_time_iso_8601": "2019-11-02T14:52:25.449153Z",
"url": "https://files.pythonhosted.org/packages/e6/8b/247d4ae11660bf1b9cd0527b096ac08a5eb64aaf84c38e713dbd74df3a7c/catalogue-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "8b52d3d44da62046624b6c5b0a3b8b08",
"sha256": "3288ed7edfede9904ac4100e7356a1b1159e2b92f04f6303000b1a384101fe63"
},
"downloads": -1,
"filename": "catalogue-0.0.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8b52d3d44da62046624b6c5b0a3b8b08",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7325,
"upload_time": "2019-11-04T00:54:42",
"upload_time_iso_8601": "2019-11-04T00:54:42.687685Z",
"url": "https://files.pythonhosted.org/packages/f1/55/c72c01d8cf74d3ba06bb1de2759f56234ff95ebf4c16bd0020221b81677e/catalogue-0.0.5-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "b837ab9dc6c65a287718d2d17ebb957d",
"sha256": "3bbb236ae84ba18dcdec08ebd4098b25a655e276e696239dae447a40b4da87be"
},
"downloads": -1,
"filename": "catalogue-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "b837ab9dc6c65a287718d2d17ebb957d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 6842,
"upload_time": "2019-11-04T00:54:30",
"upload_time_iso_8601": "2019-11-04T00:54:30.396312Z",
"url": "https://files.pythonhosted.org/packages/a1/cb/aaaa2ed6b901d995a21a932663a0582580a854d93dfc5a878f344f863051/catalogue-0.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "b50f8d678e8773f236255b450d2b6853",
"sha256": "d702dc8279bc73f1d52a756085ba129e548e2a12d629c834717c50e41e0164e9"
},
"downloads": -1,
"filename": "catalogue-0.0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "b50f8d678e8773f236255b450d2b6853",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7462,
"upload_time": "2019-11-04T01:34:25",
"upload_time_iso_8601": "2019-11-04T01:34:25.063159Z",
"url": "https://files.pythonhosted.org/packages/44/fc/1d0ab312d0d07886772dfbad9c6c483b4705730c042d089c102ab7e7adeb/catalogue-0.0.6-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "c09bc0c4fb06e609b934004d6c51811a",
"sha256": "a3b7d0a028859bc628daf02d7647b7fc828b8e17492ca77d9b369dffb0cde20c"
},
"downloads": -1,
"filename": "catalogue-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "c09bc0c4fb06e609b934004d6c51811a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 6988,
"upload_time": "2019-11-04T01:34:12",
"upload_time_iso_8601": "2019-11-04T01:34:12.770472Z",
"url": "https://files.pythonhosted.org/packages/d4/5b/9af30b85e3fa92113f190f1b349ea56f545c682ba45856e077c82d858187/catalogue-0.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "8d423de96d9448312a307822e6fbc308",
"sha256": "a84b6f86ede2a427561f58f6a26d509149a8ac9763cf5d1703e99c776e7ed72d"
},
"downloads": -1,
"filename": "catalogue-0.0.7-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d423de96d9448312a307822e6fbc308",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7577,
"upload_time": "2019-11-04T16:27:07",
"upload_time_iso_8601": "2019-11-04T16:27:07.895457Z",
"url": "https://files.pythonhosted.org/packages/b5/89/69a392cf6901e41319a13293cb21a7020225cb29bb04c55366817fe000ac/catalogue-0.0.7-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "645081257bd2cd6e3f1c0c535b0decc7",
"sha256": "5b0e4a74cb3b7d02161d4337c69c5d6537b4c01458b71d6888fc94e70abafd54"
},
"downloads": -1,
"filename": "catalogue-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "645081257bd2cd6e3f1c0c535b0decc7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7134,
"upload_time": "2019-11-04T16:26:53",
"upload_time_iso_8601": "2019-11-04T16:26:53.867901Z",
"url": "https://files.pythonhosted.org/packages/2c/81/0eeea21d518dba450c1124ed11c80e051bfce960d959daaacf5c2dc3e5b3/catalogue-0.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.8": [
{
"comment_text": "",
"digests": {
"md5": "758a053db4f7b7a4494710b920d1122a",
"sha256": "98a71a99cc65eb26914fd8a3cc3027354337b870c80e9d3dc32e2c95a34e7df0"
},
"downloads": -1,
"filename": "catalogue-0.0.8-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "758a053db4f7b7a4494710b920d1122a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7631,
"upload_time": "2019-11-04T17:00:42",
"upload_time_iso_8601": "2019-11-04T17:00:42.471273Z",
"url": "https://files.pythonhosted.org/packages/4f/d5/46ff975f0d7d055cf95557b944fd5d29d9dfb37a4341038e070f212b24fe/catalogue-0.0.8-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "2b6a78ac3267e0a292cf5ed375c2d174",
"sha256": "c407a51c22f51b0f938104b6396c489145bae234386e68eb1d56326c3b3e128e"
},
"downloads": -1,
"filename": "catalogue-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "2b6a78ac3267e0a292cf5ed375c2d174",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7239,
"upload_time": "2019-11-04T17:00:33",
"upload_time_iso_8601": "2019-11-04T17:00:33.411735Z",
"url": "https://files.pythonhosted.org/packages/4d/5d/ae500d4517798d4493754ee8590cbe40e29f53cf6b8c7bda6f013b4d1322/catalogue-0.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "7116765247a074e88f81185cf24fb005",
"sha256": "998329046e952f2e07d606b96e7b2505b40aca1962345398385863781449a69d"
},
"downloads": -1,
"filename": "catalogue-0.2.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7116765247a074e88f81185cf24fb005",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7683,
"upload_time": "2019-12-26T21:09:11",
"upload_time_iso_8601": "2019-12-26T21:09:11.064460Z",
"url": "https://files.pythonhosted.org/packages/4b/4c/0e0fa8b1e193c1e09a6b72807ff4ca17c78f68f0c0f4459bc8043c66d649/catalogue-0.2.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "1d543344f117569307602553868b1303",
"sha256": "430ff0e1478ef6d97f81a1bd093d8c4038f88af6d233a05a625f4d87ff030a7e"
},
"downloads": -1,
"filename": "catalogue-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "1d543344f117569307602553868b1303",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7299,
"upload_time": "2019-12-26T21:08:57",
"upload_time_iso_8601": "2019-12-26T21:08:57.119559Z",
"url": "https://files.pythonhosted.org/packages/46/2e/1267a968bf2e82ab262d9081cc75c2783c5193eb996038d4d91bf246db3e/catalogue-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "21bc5ef1470664c3c7f56699da30c76f",
"sha256": "25b51f74187ed04f4c327b8c1c3c74d542f30d81ed4bbbd1a4c60893e2b6e916"
},
"downloads": -1,
"filename": "catalogue-0.2.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "21bc5ef1470664c3c7f56699da30c76f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7681,
"upload_time": "2020-01-08T22:41:51",
"upload_time_iso_8601": "2020-01-08T22:41:51.305797Z",
"url": "https://files.pythonhosted.org/packages/d0/9f/6e3588d65274ff2aa157b4781b3d467ae46e581568d93ab03d395e4a1bac/catalogue-0.2.1-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "fb73ca9634456aee2144b27e90ec9691",
"sha256": "1720242b2d0c11e666f9ceed39f0611236815b06af5421f7d8cbca48a4cff3af"
},
"downloads": -1,
"filename": "catalogue-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "fb73ca9634456aee2144b27e90ec9691",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7300,
"upload_time": "2020-01-08T22:41:42",
"upload_time_iso_8601": "2020-01-08T22:41:42.734691Z",
"url": "https://files.pythonhosted.org/packages/0f/e5/ddbacc5708ca7dedfff4b05360e3f52a6a7c494b082dfe233536c82a50aa/catalogue-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "7080e03b5bf006c6799c51592006f3f6",
"sha256": "584d78e7f4c3c6e2fd498eb56dfc8ef1f4ff738480237de2ccd26cbe2cf47172"
},
"downloads": -1,
"filename": "catalogue-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7080e03b5bf006c6799c51592006f3f6",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7735,
"upload_time": "2020-01-09T22:32:00",
"upload_time_iso_8601": "2020-01-09T22:32:00.134189Z",
"url": "https://files.pythonhosted.org/packages/6c/f9/9a5658e2f56932e41eb264941f9a2cb7f3ce41a80cb36b2af6ab78e2f8af/catalogue-1.0.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "ce48f4d857d14a8975819bbb70da09ac",
"sha256": "d74d1d856c6b36a37bf14aa6dbbc27d0582667b7ab979a6108e61a575e8723f5"
},
"downloads": -1,
"filename": "catalogue-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "ce48f4d857d14a8975819bbb70da09ac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7",
"size": 7364,
"upload_time": "2020-01-09T22:31:40",
"upload_time_iso_8601": "2020-01-09T22:31:40.377337Z",
"url": "https://files.pythonhosted.org/packages/29/e1/8b30b339619d974406282cb0f0b00142967fbf10f993a2f675a47df16c45/catalogue-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.0": [
{
"comment_text": "",
"digests": {
"md5": "21ecf608b368a645ee42e08e04de9d70",
"sha256": "218103923efff9120e4082712015464ef2a594bca18e0a2111c8c038332da502"
},
"downloads": -1,
"filename": "catalogue-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "21ecf608b368a645ee42e08e04de9d70",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 7713,
"upload_time": "2020-01-10T12:37:23",
"upload_time_iso_8601": "2020-01-10T12:37:23.805601Z",
"url": "https://files.pythonhosted.org/packages/e3/8e/9391f722c58dc202cb7980a3a1f0e2499cc91e1fbda2c17632dad1b6e299/catalogue-2.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "804ed8558a39b59e35eda9737962613e",
"sha256": "34f8416ec5e7ed08e55c10414416e67c3f4d66edf83bc67320c3290775293816"
},
"downloads": -1,
"filename": "catalogue-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "804ed8558a39b59e35eda9737962613e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 7359,
"upload_time": "2020-01-10T12:37:04",
"upload_time_iso_8601": "2020-01-10T12:37:04.748029Z",
"url": "https://files.pythonhosted.org/packages/c8/6e/067c2963303f4f069878f443c11d6b4f515370e50009f7d5a81b33d879d6/catalogue-2.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.0.dev0": [
{
"comment_text": "",
"digests": {
"md5": "2e64aedccc8d156aa0a428da2507419f",
"sha256": "60ea1519a7529c0f677ba1cc79d0e3f8e328975aa057fc475bcc2096bf666c63"
},
"downloads": -1,
"filename": "catalogue-2.0.0.dev0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "2e64aedccc8d156aa0a428da2507419f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 7737,
"upload_time": "2020-01-09T22:32:59",
"upload_time_iso_8601": "2020-01-09T22:32:59.805345Z",
"url": "https://files.pythonhosted.org/packages/f5/ba/6987417033af56b960f41435b2fcd7f59a7c38b96c659a0ea1272f737615/catalogue-2.0.0.dev0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "30cb5aadc026cec0b3d6592ec87e03b8",
"sha256": "a809c303b1a86ab4c58f775018a64281f9ad7db41cdca16ad0f026b788e6c4d4"
},
"downloads": -1,
"filename": "catalogue-2.0.0.dev0.tar.gz",
"has_sig": false,
"md5_digest": "30cb5aadc026cec0b3d6592ec87e03b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 7300,
"upload_time": "2020-01-09T22:32:46",
"upload_time_iso_8601": "2020-01-09T22:32:46.784080Z",
"url": "https://files.pythonhosted.org/packages/54/cd/57bdcf585ca50de4976cc394ebdbeb485340e78fa3b01eafc4e1dd417434/catalogue-2.0.0.dev0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.1": [
{
"comment_text": "",
"digests": {
"md5": "deb49b7dd2e9a527bc3785d839b8beaf",
"sha256": "8919341b5ed6ac922f4512925e4eadf36b7ece22f94d56691de658ec0dc61e52"
},
"downloads": -1,
"filename": "catalogue-2.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "deb49b7dd2e9a527bc3785d839b8beaf",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 9587,
"upload_time": "2020-08-27T14:38:56",
"upload_time_iso_8601": "2020-08-27T14:38:56.497507Z",
"url": "https://files.pythonhosted.org/packages/48/5c/493a2f3bb0eac17b1d48129ecfd251f0520b6c89493e9fd0522f534a9e4a/catalogue-2.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "4a30f54174b42b82cbee2f04c198e6e8",
"sha256": "0d01077dbfca7aa53f3ef4adecccce636bce4f82e5b52237703ab2f56478e56e"
},
"downloads": -1,
"filename": "catalogue-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "4a30f54174b42b82cbee2f04c198e6e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 13188,
"upload_time": "2020-08-27T14:38:57",
"upload_time_iso_8601": "2020-08-27T14:38:57.798955Z",
"url": "https://files.pythonhosted.org/packages/28/e2/fe570c613202e193ab92ad2725949bdf6c3979c5e2e84f02ef2c9af1aaec/catalogue-2.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.2": [
{
"comment_text": "",
"digests": {
"md5": "6956661709b42d91798039f7225ca178",
"sha256": "55535d7ff2c151505fda5ae6618c7bcf2975b62c7eabe2e5ec00f104df159d5f"
},
"downloads": -1,
"filename": "catalogue-2.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6956661709b42d91798039f7225ca178",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 9611,
"upload_time": "2021-04-13T13:39:15",
"upload_time_iso_8601": "2021-04-13T13:39:15.119086Z",
"url": "https://files.pythonhosted.org/packages/de/68/027c9f70a58fa4d76521d94237e305247fca196d374635b339401ebed5d8/catalogue-2.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "e2f7f8957e05e705a4feabfda51cf4a9",
"sha256": "ead4e8ad26898ff2f2e666d7a815abc55923a33b26b0b651dcc46a87dc5a6a47"
},
"downloads": -1,
"filename": "catalogue-2.0.2.tar.gz",
"has_sig": false,
"md5_digest": "e2f7f8957e05e705a4feabfda51cf4a9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 13229,
"upload_time": "2021-04-13T13:39:16",
"upload_time_iso_8601": "2021-04-13T13:39:16.666316Z",
"url": "https://files.pythonhosted.org/packages/5b/89/4087655ec3567159759402f2e31810ede160f17d6b91374c1431202538e2/catalogue-2.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.3": [
{
"comment_text": "",
"digests": {
"md5": "c7c45b5f05582bb6dde0d896c8a2b874",
"sha256": "ea9626fe3dffe2c17c2e8dad9edf689acb08b980babfa96f698687305cc0a194"
},
"downloads": -1,
"filename": "catalogue-2.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c7c45b5f05582bb6dde0d896c8a2b874",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 16794,
"upload_time": "2021-04-15T09:00:10",
"upload_time_iso_8601": "2021-04-15T09:00:10.398106Z",
"url": "https://files.pythonhosted.org/packages/82/a5/b5021c74c04cac35a27d34cbf3146d86eb8e173b4491888bc4908c4c8b3b/catalogue-2.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "32c2faf62ea7681fd941b854168707aa",
"sha256": "887d8a579f7e9e7a6ec424212931ad367a5e6c09e01dfa3eb398ac3b3a2765ba"
},
"downloads": -1,
"filename": "catalogue-2.0.3.tar.gz",
"has_sig": false,
"md5_digest": "32c2faf62ea7681fd941b854168707aa",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 19866,
"upload_time": "2021-04-15T09:00:11",
"upload_time_iso_8601": "2021-04-15T09:00:11.958311Z",
"url": "https://files.pythonhosted.org/packages/7e/a5/2166ea4e78e2ec012346d842114c8f950e4da176bc1414e1e3c4a9d9af38/catalogue-2.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.4": [
{
"comment_text": "",
"digests": {
"md5": "7215975fa9c55f9ac43ddf592db9e499",
"sha256": "62572ad1a641face0eb1436921ee4e03169162879bdc25ab8d535219b5f65b48"
},
"downloads": -1,
"filename": "catalogue-2.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7215975fa9c55f9ac43ddf592db9e499",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 16815,
"upload_time": "2021-04-29T14:58:37",
"upload_time_iso_8601": "2021-04-29T14:58:37.123893Z",
"url": "https://files.pythonhosted.org/packages/9c/10/dbc1203a4b1367c7b02fddf08cb2981d9aa3e688d398f587cea0ab9e3bec/catalogue-2.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "431332d52097e1a4eb07c596180c4922",
"sha256": "9ed345d12855af315f1715583612b26b8621a2b0a2e3bef974dc5d712f7983aa"
},
"downloads": -1,
"filename": "catalogue-2.0.4.tar.gz",
"has_sig": false,
"md5_digest": "431332d52097e1a4eb07c596180c4922",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 19869,
"upload_time": "2021-04-29T14:58:38",
"upload_time_iso_8601": "2021-04-29T14:58:38.808246Z",
"url": "https://files.pythonhosted.org/packages/1e/22/11bc9c77399db9130bb8671e8cb3b89c661dab0539b09d6ffde8a4bc3f9d/catalogue-2.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.5": [
{
"comment_text": "",
"digests": {
"md5": "75607f041e92535195cbc74ac19290be",
"sha256": "fdc6ce61590d5002c9aa4c7eb15e9a17a64adc51654151a197c658619e5b6857"
},
"downloads": -1,
"filename": "catalogue-2.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "75607f041e92535195cbc74ac19290be",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 17004,
"upload_time": "2021-08-13T02:25:59",
"upload_time_iso_8601": "2021-08-13T02:25:59.441126Z",
"url": "https://files.pythonhosted.org/packages/2b/11/1c6f5ad206d18a9ca4e1b8b4acb8b84d2b3cab5b119b2c5e1d2245bc85a3/catalogue-2.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "f8c2b047074a603771ce4222aaeab083",
"sha256": "6ce41a082512c6e42916a2f31d1d9df72e506f35f84e045800bfe93d4fcbb22d"
},
"downloads": -1,
"filename": "catalogue-2.0.5.tar.gz",
"has_sig": false,
"md5_digest": "f8c2b047074a603771ce4222aaeab083",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 19261,
"upload_time": "2021-08-13T02:26:23",
"upload_time_iso_8601": "2021-08-13T02:26:23.144265Z",
"url": "https://files.pythonhosted.org/packages/72/3d/b2ae7704227ab15a25940bb07e69b3f4c48cada504af44617985afd14ab6/catalogue-2.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.6": [
{
"comment_text": "",
"digests": {
"md5": "9b7ccf775fc6693292d6911303c8c2df",
"sha256": "34ebb5cd2b98f7fa7421fa0eead3b84e577243532509b3fa8cd04abcc9f61d3c"
},
"downloads": -1,
"filename": "catalogue-2.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9b7ccf775fc6693292d6911303c8c2df",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 17083,
"upload_time": "2021-08-21T02:47:29",
"upload_time_iso_8601": "2021-08-21T02:47:29.439658Z",
"url": "https://files.pythonhosted.org/packages/1f/8b/273bf7d3863570302401991839e1b2c68ae544cc5b02367f58089db872cb/catalogue-2.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "008510b2b7405108358f1db5857eb8a7",
"sha256": "336a35603f447167042ef504114d6befa46688f03f4c14dabdc633a44587b245"
},
"downloads": -1,
"filename": "catalogue-2.0.6.tar.gz",
"has_sig": false,
"md5_digest": "008510b2b7405108358f1db5857eb8a7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 19317,
"upload_time": "2021-08-21T02:47:31",
"upload_time_iso_8601": "2021-08-21T02:47:31.076479Z",
"url": "https://files.pythonhosted.org/packages/66/2a/5f81b0d2cad05f52b55e788a0f6be7f514b1ef3adeaefdff6ba94f49017b/catalogue-2.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"2.0.7": [
{
"comment_text": "",
"digests": {
"md5": "810c123bf160a88efb24e61b00ce56ae",
"sha256": "cab4feda641fe05da1e6a1a9d123b0869d5ca324dcd93d4a5c384408ab62e7fb"
},
"downloads": -1,
"filename": "catalogue-2.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "810c123bf160a88efb24e61b00ce56ae",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 17166,
"upload_time": "2022-03-22T08:30:26",
"upload_time_iso_8601": "2022-03-22T08:30:26.655213Z",
"url": "https://files.pythonhosted.org/packages/6e/0f/bc9518492efc23f6a36ce6d0c41bebc93e70c198ef40885f24394b6a6c61/catalogue-2.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "7e4054bdc913a97a011dbcc5791dc74d",
"sha256": "535d33ae79ebd21ca298551d85da186ae8b8e1df36b0fb0246da774163ec2d6b"
},
"downloads": -1,
"filename": "catalogue-2.0.7.tar.gz",
"has_sig": false,
"md5_digest": "7e4054bdc913a97a011dbcc5791dc74d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 19402,
"upload_time": "2022-03-22T08:30:28",
"upload_time_iso_8601": "2022-03-22T08:30:28.270845Z",
"url": "https://files.pythonhosted.org/packages/e3/9b/ec6b4eecf62023a37683e97904683f0f2e40e8bdb73c197205cbc302f50c/catalogue-2.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "810c123bf160a88efb24e61b00ce56ae",
"sha256": "cab4feda641fe05da1e6a1a9d123b0869d5ca324dcd93d4a5c384408ab62e7fb"
},
"downloads": -1,
"filename": "catalogue-2.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "810c123bf160a88efb24e61b00ce56ae",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 17166,
"upload_time": "2022-03-22T08:30:26",
"upload_time_iso_8601": "2022-03-22T08:30:26.655213Z",
"url": "https://files.pythonhosted.org/packages/6e/0f/bc9518492efc23f6a36ce6d0c41bebc93e70c198ef40885f24394b6a6c61/catalogue-2.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "7e4054bdc913a97a011dbcc5791dc74d",
"sha256": "535d33ae79ebd21ca298551d85da186ae8b8e1df36b0fb0246da774163ec2d6b"
},
"downloads": -1,
"filename": "catalogue-2.0.7.tar.gz",
"has_sig": false,
"md5_digest": "7e4054bdc913a97a011dbcc5791dc74d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 19402,
"upload_time": "2022-03-22T08:30:28",
"upload_time_iso_8601": "2022-03-22T08:30:28.270845Z",
"url": "https://files.pythonhosted.org/packages/e3/9b/ec6b4eecf62023a37683e97904683f0f2e40e8bdb73c197205cbc302f50c/catalogue-2.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}