{ "info": { "author": "Brennan Fieck", "author_email": "Brennan_WilliamFieck@comcast.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Telecommunications Industry", "License :: Other/Proprietary License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet", "Topic :: Internet :: Log Analysis", "Topic :: Internet :: WWW/HTTP", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: System :: Logging", "Topic :: Utilities" ], "description": "SCAN\n====\n\n| |License|\n| |Build Status|\n\nSuperior Cache ANalyzer\n\nF.A.Q\n-----\n\n- Q: *Scan says it can't find my cache file, but I know it's there.\n What do?*\n\n A: Sometimes, ATS installs point to cache files that are installed\n *relative to the ATS root directory*. This is pretty common in test\n setups right after a basic install. There's not really any way for\n SCAN to 'detect' when this is happening (though it will try), so the\n best solution is often just to try running ``scan`` *from that ATS\n root directory*. For example, if you have a directory\n ``/opt/trafficserver`` that holds all of the trafficserver files, try\n going to that directory before running ``scan``.\n\n- Q: *Scan is giving me an error, and I don't know what it means/how to\n fix it. How fix?*\n\n A: Congratulations, you've just been drafted! Try running scan like\n this:\n ``scan --debug 2>scan.err``\n (you may not see the error message this time) and then create a\n `github\n issue `__\n and upload/pastebin/^C^V the scan.err file that should've been\n created and link/paste it into the box, along with a description of\n what you were trying to do and what went wrong. I'll fix it as soon\n as I can.\n\n- Q: *Why can't Scan see the thing that I KNOW is in the cache?*\n\n A: It's possible that you ``scan``\\ ed for 'thing' before it was\n written. The Apache Traffic ServerTM will only sync directories every\n 60 seconds by default (effectively, this means ``scan`` can only see\n cache changes at that frequency). You could either wait a bit, or set\n the ATS configuration parameter\n ``proxy.config.cache.dir.sync_frequency`` to a lower value (in\n seconds). If that doesn't work, check out the above question.\n\nUser Guide\n----------\n\nSCAN's primary use is as a library for inspecting Apache Traffic\nServerTM (ATS) caches. SCAN also provides a command-line utility\n(``scan``), which is described here.\n\nInstallation\n~~~~~~~~~~~~\n\nPrerequisites\n^^^^^^^^^^^^^\n\n``scan`` requires the following dependencies:\n\n- ``numpy`` - A highly-performant library for working with vectorized\n functions on huge data structures (used for reading/manipulating\n cache directories) `link `__.\n- ``psutil`` - A cross-platform process and system interface library\n (used for ionice setting)\n `link `__.\n- ``setuptools`` - \"Easily download, build, install, upgrade, and\n uninstall Python packages\"\n `link `__.\n- ``typing`` - Provides a backport of type-hinting for old versions of\n Python (< v3.5) `link `__.\n\nIf you have Python version 3.5 or greater, you already have ``typing``.\nIf you have ``pip3`` (for any Python version > 3.4.0), you likely\nalready have ``setuptools``. To install a dependency \"``DEP``\" on Python\nversions < 3.5, simply run ``sudo -H pip3 install DEP``. If you don't\nhave ``pip3``, then to install either dependency on CentOS/Fedora/RHEL\ndistros, do ``sudo yum install -y python34-DEP``, on Ubuntu/Mint/Debian\ndistros do ``sudo apt-get install python3-DEP``, and on\nArch/Manjaro/Gentoo(?) do ``sudo pacman -S python3-DEP``. If you need\nthe dependencies and you're on MacOS/BSD/Windows, then gods help you - I\ncan't.\n\nInstalling 'scan'\n^^^^^^^^^^^^^^^^^\n\nVia ``pip``\n'''''''''''\n\n By far the easiest way to install SCAN is to simply use ``pip`` like\n so:\n\n::\n\n pip install Superior-Cache-ANalyzer\n\n Note that you'll probably need to run that command as an\n administrator (Windows), with ``sudo`` (Everything Else), or with\n the ``--user`` option (Everything Including Windows)\n\nFrom a Release\n''''''''''''''\n\n On the `Releases\n page `__\n you can download the wheel (the ``.whl`` file) and install that\n manually with\n\n.. code:: bash\n\n sudo -H python3 -m pip install -y /path/to/Superior-Cache-ANalyzer..whl\n\n Note that this may require you to upgrade/install the ``pip``\n module, so if you get an error like ``No module named 'pip'`` try\n installing the ``python3-pip`` package (``python34-pip`` on\n RedHat/CentOS/Fedora) or running ``sudo -H python3 -m ensurepip``.\n Other errors could possibly be fixed by running\n ``sudo -H python3 -m pip install -yU pip`` and then trying the\n install again. If all else fails, then you can probably install from\n source.\n\nFrom Source\n'''''''''''\n\n To install from source, you'll first want to download the source\n from `the Comcast\n Github `__.\n Once you've done that, go to the downloaded folder and run\n\n.. code:: bash\n\n sudo -H pip3 install .\n\n ... or, if you don't have ``pip3``:\n\n.. code:: bash\n\n sudo python3 setup.py install\n\n | Note that SCAN is only guaranteed to work for Python versions\n 3.4.1 and greater.\n | If you want to run the tests see 'Tests' below.\n\nUsage\n~~~~~\n\nThe basic usage of ``scan`` is pretty simple at the moment; to start the\nutility simply run:\n\n.. code:: bash\n\n scan [ --debug ] [ -f --fips ] [ -d --dump [ SPAN ] ] [ -c --config-dir DIR ]\n scan [ --debug ] [ -f --fips ] [ -D --dump-breakdown [ SPAN ] ] [ -c --config-dir DIR ]\n\nwhere the options have the following meanings:\n\n- ``-c`` or ``--config-dir`` ``DIR``\n\n This option allows you to directly specify the config dir of your ATS\n install. This allows you to skip the prompt when ``scan`` first\n starts where you must input your configuration directory. In\n non-interactive mode (``-d``/``--dump`` given), this option must be\n used if ATS is not installed under ``/opt/trafficserver``.\n\n- ``--debug``\n\n When provided, this flag causes ``scan`` to output some verbose\n debugging information and exception stack traces. It also causes it\n to be run *without optimization*, which - depending on your Python\n interpreter - can have a serious impact on performance.\n\n- ``-d`` or ``--dump`` ``[SPAN]``\n\n Dumps the contents of the cache in Tabular YAML format to ``stdout``,\n then exits. This will cause any ``-D``/``--dupm-breakdown`` flags\n given to be ignored. If specified, ``SPAN`` should be the path to a\n cache span to dump as specified in ``storage.config`` e.g.\n ``/dev/sdk``. WARNING: As of the time of this writing, ``scan``'s\n \"ionice\" value is being set to the lowest possible value on startup,\n which means that this operation could take several hours to complete\n if you do not specify a single span. Currently, if you do not use the\n ``-l`` or ``--loadavg`` option, it takes about 400-500 seconds to\n dump a 1TB hard disk cache and about 3-7 seconds to dump an 8GB RAM\n cache. Use of this option with ``-l`` or ``--loadavg`` is not\n recommended at this time, as it will radically increase the time it\n takes to complete.\n\n- ``-D`` or ``--dump-breakdown`` ``[SPAN]``\n\n Dumps the usage of the cache to ``stdout`` in Tabular YAML format,\n broken down by host, then exits. If ``-d``/``--dump`` was given on\n the command line, this flag will be ignored if present. If specified,\n ``SPAN`` should be the path to a cache span to dump as specified in\n ``storage.config`` e.g. ``/dev/sdk``. WARNING: As of the time of this\n writing, ``scan``'s \"ionice\" value is being set to the lowest\n possible value on startup, which means that this operation could take\n several hours to complete if you do not specify a single span.\n Currently, if you do not use the ``-l`` or ``--loadavg`` option, it\n takes about 400-500 seconds to dump a 1TB hard disk cache and about\n 3-7 seconds to dump an 8GB RAM cache. Use of this option with ``-l``\n or ``--loadavg`` is not recommended at this time, as it will\n radically increase the time it takes to complete.\n\n- ``-f`` or ``--fips``\n\n You **must** use this option if the ATS running on your system was\n compiled with ``ENABLE_FIPS`` enabled. If you don't, everything will\n be messed up. Actually, some things will still be messed up even if\n you do.\n\n- ``-l`` or ``--loadavg`` ``LOADAVG``\n\n This flag allows the specification of a maximum system load average\n to be respected by the program. This is expected to be a\n comma-separated list of floating-point numbers (see\n ```man uptime`` `__). For\n example: ``scan -l \"25.0, 25.0, 25.0\"`` ensures that no more than 25\n processes will be waiting for CPU time or disk I/O on average ever 1,\n 5 or 15 minutes. Note that this option assumes that the system's\n loadavg at the time ``scan`` starts is representative of the system's\n loadavg for the entirety of its execution; if you start a very long\n scan job on e.g. a 1TB span, and then decide to play Crisis 1 on\n Medium settings using integrated graphics, your system may very well\n exceed a specified maximum loadavg, through no fault of ``scan``\n itself. Note that if your system is already at or above the\n ``LOADAVG`` specified, ``scan`` will immediately exit as it cannot\n possibly run. (Implementation note: effectively this controls the\n number of sub-processes that can be used to scan a stripe at once,\n since each sub-process is potentially another process that will wait\n for CPU time or Disk I/O.) Note that this is only available on\n POSIX-compliant systems. Usage of this flag alongside ``-d`` or\n ``--dump`` is discouraged.\n\n- ``-V`` or ``--version``\n\n Prints the version information and exits. This will print both\n ``scan``'s version and then on the next line the version and\n implementation of the Python interpreter used to run it. This second\n line would - for example - usually look like the follow on CentOS7.x\n systems: ``Running on CPython v3.4.5``.\n\nOnce the utility is started (provided the ``-d``/``--dump`` or\n``-c``/``--config`` flags are not given) you'll be faced with a pretty\nbasic prompt. At first, your only option will be\n``[1] Read Storage Config``. After you select this option, you'll be\nprompted to enter the location of your ATS configuration files.\n\"Tab-completion\" is supported for most interactive prompts, including\nthe ATS configuration file prompt. SCAN will expect all of them to be in\nthe same directory, and will guess that they are in\n``/opt/trafficserver/etc/trafficserver/`` by default. **Note that the\nuse of FIPS at compilation time cannot be determined from the config\nfiles, and MUST be given on the command line.** Once the configuration\nhas been read, all menu options will be unlocked. They are as follows:\n\n``[1] Show Cache Setup``\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis option will print out the spans and volumes declared in the\nconfiguration. Output will look like:\n\n::\n\n Cache files:\n /path/to/a/span Span of stripes XXX.XB\n\n Volumes:\n #1 XXX.XB\n\nwhere ```` is the number of stripes in the span on that line, and\nXXX.XB is the size of a span/volume (but it will be displayed in\nhuman-readable approximations in units of B, kB, MB, or GB as\nappropriate). Volumes defined as a percent of total storage will have\ntheir size calculated at runtime, and displayed in absolute terms.\n```` will be the type of volume declared. In nearly all cases,\nthis will be ``http``, but certain plugins could define other volume\ntypes. Finally, it should be noted that while this example shows one\nvolume on one span, this menu option will display *all* volumes and\n*all* spans, in no particular order and with no distinction between\ncache spans on files, block devices, or ram devices.\n\n``[2] List Settings``\n^^^^^^^^^^^^^^^^^^^^^\n\nThis option will list the settings declared in ``records.config``, in\nproper ATS syntax. An example:\n\n::\n\n proxy.config.log.collation_host STRING NULL\n proxy.config.ssl.compression INT 1\n\nOnly one or two of these settings actually has any impact on the\nfunction of ``scan``, but all values are read in to facilitate future\nextension.\n\n``[3] Search for Setting``\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis option will bring up a prompt to type a search string for a\nspecific setting from ``records.config``. Python-syntax regex is\nsupported and enabled by default (meaning searching for 'proxy.config'\nwill match 'proxyZconfig' as well as the exact string typed).\n\n``[4] List Stripes in a Span``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis option will prompt you to enter a span (which is the **full** path\nto the span file) and then list all stripes within it. The output is in\nthe format:\n\n::\n\n XXX.XB stripe, created Www Mmm D hh:mm:ss (version XX.X)\n\nwhere XXX.XB is the size of a stripe (but it will be displayed in\nhuman-readable approximations in units of B, kB, MB, or GB as\nappropriate), ``Www Mmm D hh:mm:ss`` is the date of the stripe's\ncreation (in the system's ``ctime(3)`` format) and XX.X is the\ndecimal-separated major and minor version numbers of the cache system\nthat created it. Note that this version is **not** the same as the\nversion of ATS using the cache. Also note that as of this time **only\nversion 24.0+ is supported by** ``scan``, and using lower versions with\n``scan`` **will cause to crash and/or give incorrect output**.\n\n``[5] View URLs of objects in a Span``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWhen selected, this option will first prompt you for a span. It will\nthen search all of the stripes on that span for stored objects, and\ncatalog their URLs, printing them to the screen as they are found. Each\nURL is printed in the format:\n\n::\n\n protocol://[[user]:password@]host/path/to/content - XXX.XB - x\n\nwhere ``protocol`` is the protocol used to retrieve the content (nearly\nalways ``http`` or ``https``), ``[[user]:password@]`` is the username\n(if used, usually not) 'colon' password (if used, usually not) used to\naccess the content 'at' the ``host`` - which is the fully-qualified\ndomain name of the content host, and ``path/to/content`` is the location\non that host of the content stored in the cache. A typical example of a\npath is ``images/test/testquest.png``. XXX.XB is the size of this\ncontent (but it will be displayed in human-readable approximations in\nunits of B, kB, MB, or GB as appropriate). Finally, ```` will be the\nnumber of times this same URL is stored in the cache (typically in\n'alternate' forms). For example, if a given item is stored only once in\nthe cache span, its line will end in ``x1``, and if it is encountered 42\ntimes, then it will end in ``x42``. Note that the size of a given object\nis reported as the size of *one* instance of this item, regardless of\nthe number actually stored.\n\n**Warning:** When tested on a span of a single, roughly 830GB stripe,\nthis operation took between 39 and 44 seconds to complete. Be aware that\nthe time this takes is directly proportional to the size of the spans,\nand the number of spans that it is searching. However, results are\ncached so that subsequent searches (or uses of menu option 6) on the\nsame span should be significantly quicker. To help recognize that the\nprogram has not frozen, findings are printed to the screen as they are\nfound, and the main menu will display upon completion.\n\n``[6] View Usage of a Span broken down by host``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis option will first prompt for a span, then it will list the hosts\nthat have content stored in that span, as well as the total storage size\nused, the storage size as a percent of the total available storage, and\nthe storage size as a percent of the storage currently in use. The\noutput format for each host is as follows:\n\n::\n\n - XXX.XB - YY.YY% of available space - ZZ.ZZ% of used space\n\nwhere ```` is the fully-qualified domain name of the host, XXX.XB\nis the total size of that host's content on disk (but it will be\ndisplayed in human-readable approximations in units of B, kB, MB, or GB\nas appropriate), YY.YY is the percent of available space taken up by\nthis host's content, and ZZ.ZZ is the percent of space currently being\nused to store objects that is taken up by this host's content.\n\n**Warning:** When tested on a span of a single, roughly 830GB stripe,\nthis operation took between 39 and 44 seconds to complete. Be aware that\nthe time this takes is directly proportional to the size of the spans,\nand the number of spans that it is searching. However, results are\ncached so that subsequent searches (or uses of menu option 5) on the\nsame span should be significantly quicker. To help recognize that the\nprogram has not frozen, findings are printed to the screen as they are\nfound, and the main menu will display upon completion.\n\n``[7] Dump cache usage stats to file (Tabular YAML format)``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis option will ask you to first name a file for output (relative or\nabsolute paths - doesn't matter which), then it will dump the output of\na call to the 'View URLs of objects in a Span' for **ALL** spans in the\ncache system to the named file in Tabular YAML (TYAML) format (which is\njust YAML but indented with tabs instead of spaces and accepts ``None``\nas a null value.)\n\nTests\n~~~~~\n\nIf you want to run the tests, be sure you're in the project's root\ndirectory and run the ``test.sh`` script. Note that the unit tests will\n*download and attempt to build Apache Traffic Server from source* and as\nsuch will also require all of the dependencies of Apache Traffic Server.\nA minimal linting test (Good for auditing your contribution at a glance)\ncan be run with ``pylint`` by just running\n``pylint --rcfile=./.pylintrc scan/`` from the project's root directory.\nA ``pylint`` score above 9.5 and with no erros (e.g. E001: SyntaxError)\nis considered \"passing\".\n\nTabular YAML Format\n-------------------\n\nThe output of the interactive mode's 7th option and the ``-d`` or\n``--dump`` option are given in what's been referred to as \"Tabular YAML\nFormat\". As the name implies, this is similar to YAML. In fact, it\nshould be considered syntactically identical to YAML but for one\nexception: indentation is *always done via the tab character, **never\nwith spaces***. This was done because without harming its human\nreadability, it allows for much easier pipelining of output e.g. via\n``cut``.\n\n.. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n :target: https://opensource.org/licenses/Apache-2.0\n.. |Build Status| image:: https://travis-ci.org/Comcast/Superior-Cache-ANalyzer.svg?branch=master\n :target: https://travis-ci.org/Comcast/Superior-Cache-ANalyzer\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/comcast/Superior-Cache-ANalyzer", "keywords": "Apache traffic server ats cache analysis", "license": "", "maintainer": "", "maintainer_email": "", "name": "Superior-Cache-ANalyzer", "package_url": "https://pypi.org/project/Superior-Cache-ANalyzer/", "platform": "", "project_url": "https://pypi.org/project/Superior-Cache-ANalyzer/", "project_urls": { "Homepage": "https://github.com/comcast/Superior-Cache-ANalyzer" }, "release_url": "https://pypi.org/project/Superior-Cache-ANalyzer/3.3.7.post3/", "requires_dist": [ "setuptools", "typing", "readline", "numpy", "psutil" ], "requires_python": "~=3.4", "summary": "An analysis tool for Apache Traffic Server caches.", "version": "3.3.7.post3" }, "last_serial": 5857334, "releases": { "2.2.1": [ { "comment_text": "", "digests": { "md5": "8e746143879592282aba61207ae9c8a2", "sha256": "92860dbba275d154e2027f3bb7336bbc30bd78155d6a1760b15fccfe1686e4ac" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8e746143879592282aba61207ae9c8a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 42229, "upload_time": "2018-06-01T15:33:53", "url": "https://files.pythonhosted.org/packages/fd/b1/8b3c39aad94841bd9b41017b4e0fc9bb2272deb1d8b7c09a28b22ec99a2d/Superior_Cache_ANalyzer-2.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "10ad4558bf3c1f192f3bf0e4a7dc196c", "sha256": "7f4ab1161a797f75042fefa7906b9d17721da187a33668c4cc383905a480d03a" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.1.tar.gz", "has_sig": false, "md5_digest": "10ad4558bf3c1f192f3bf0e4a7dc196c", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 45139, "upload_time": "2018-06-01T15:33:55", "url": "https://files.pythonhosted.org/packages/e2/a5/fd62fc5cbaa96a9f20d10067aeb77bf8e863784a75e4e591cff179b418e6/Superior-Cache-ANalyzer-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "97db03b9cbea4d9ec337bc0ec536cc9e", "sha256": "a23102e2a2c1ddf38e6106dc0a6f5b88d60176a5e259131dfafdb629b413066d" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "97db03b9cbea4d9ec337bc0ec536cc9e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 45321, "upload_time": "2018-06-04T15:58:30", "url": "https://files.pythonhosted.org/packages/04/cd/d24a97e112de31c23fd9fc977833d6019dbf6e501b945890e60b6d0d8b43/Superior_Cache_ANalyzer-2.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59cc96b8adca90389e3294c1889edc2b", "sha256": "bcbe6368a1c4eda78aee9058ea7aa67982dc6e4dc5801cee81e5ab1a42597d1c" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.2.tar.gz", "has_sig": false, "md5_digest": "59cc96b8adca90389e3294c1889edc2b", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 45057, "upload_time": "2018-06-04T15:58:31", "url": "https://files.pythonhosted.org/packages/92/42/27a4e4d77e84e14f9ce43a53a2d25b147eb2d252ab2edd70b7892f342318/Superior-Cache-ANalyzer-2.2.2.tar.gz" } ], "2.2.3": [ { "comment_text": "", "digests": { "md5": "27e9feb09bc330351ab9cb59e8056b21", "sha256": "811cdd62e9d612a9eab613dd691cc2e72b50820fe90f6b1ba24ee3986b97fede" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "27e9feb09bc330351ab9cb59e8056b21", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 45474, "upload_time": "2018-06-04T20:34:48", "url": "https://files.pythonhosted.org/packages/28/3a/442924d404492e33cdaf4251fe785317ce48ea24cdbae8f03820abc61054/Superior_Cache_ANalyzer-2.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6f2d076bbdd8dede462110cc157803d", "sha256": "0600a84ec2fbe3a1fc5e880e171d40f05c2cb98c3bfe95fb6f3bbf2747c225ce" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.3.tar.gz", "has_sig": false, "md5_digest": "f6f2d076bbdd8dede462110cc157803d", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 45215, "upload_time": "2018-06-04T20:34:49", "url": "https://files.pythonhosted.org/packages/06/09/b36dcf72b1d792c758498b74b4138bac49d20bce462ed8ed50f83aa086e1/Superior-Cache-ANalyzer-2.2.3.tar.gz" } ], "2.2.4": [ { "comment_text": "", "digests": { "md5": "8bc248693b6e592543170ea88705960c", "sha256": "b406a7bc4dd9cb62ed43299a03fa102b0b415b8ce269f0387b436701694e80b3" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8bc248693b6e592543170ea88705960c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 45498, "upload_time": "2018-06-05T13:38:12", "url": "https://files.pythonhosted.org/packages/a0/92/2462a498571d1e4d37df1d91d6b6c4da0aa415b9a598bd3d0ac32af7051d/Superior_Cache_ANalyzer-2.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9039db4dc6ee94f8258a70210b08950d", "sha256": "9b4b4e50385d2bfddcee10aee64d8fcbf429e0501f2fc3ac79e269fb23f3ab2b" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.4.tar.gz", "has_sig": false, "md5_digest": "9039db4dc6ee94f8258a70210b08950d", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 45266, "upload_time": "2018-06-05T13:38:13", "url": "https://files.pythonhosted.org/packages/3c/33/a34a37dc886768597a7cd7a00b94abfe0f600556d295e83108e3edf953e8/Superior-Cache-ANalyzer-2.2.4.tar.gz" } ], "2.2.5": [ { "comment_text": "", "digests": { "md5": "95225645abdbde80102afbfdeda13283", "sha256": "9eb20e85b50f985a3edf67c111df9a1c63025e5508ad052f181113a955eb931e" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "95225645abdbde80102afbfdeda13283", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 46866, "upload_time": "2018-06-08T21:42:37", "url": "https://files.pythonhosted.org/packages/1c/99/feb5e033f05f3271edd036f290b5a0bc5e1ad3d9069b720a3109ee1f36e7/Superior_Cache_ANalyzer-2.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "25ba2dfbd86a6737ba5884d8c15adeb4", "sha256": "324499566cebd69f5c574179898fcf61b3c8a7cb39f8105bd8f1b150cd22fc2f" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.5.tar.gz", "has_sig": false, "md5_digest": "25ba2dfbd86a6737ba5884d8c15adeb4", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 46407, "upload_time": "2018-06-08T21:42:39", "url": "https://files.pythonhosted.org/packages/cd/a5/e40cbb1e93c21f63bcb10d9565612449508712512d81412d17f8c86b5116/Superior-Cache-ANalyzer-2.2.5.tar.gz" } ], "2.2.6": [ { "comment_text": "", "digests": { "md5": "d6e2d2e8fc5018da28aa3aa960b4b41a", "sha256": "6318a1bf005eb63d84b6255c7e8661131411be31de4154581de84ed0082a2590" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "d6e2d2e8fc5018da28aa3aa960b4b41a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 47636, "upload_time": "2018-06-12T20:16:55", "url": "https://files.pythonhosted.org/packages/48/c2/8569daa53692a019f068f2d092f258c63025a727c655dfed7125510beabf/Superior_Cache_ANalyzer-2.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d468f6701d2d701edfe5c5439f14578", "sha256": "e1c28a63c671d7f474f14e2be369fe1aeae3e035213f7c95cebf3054d79bf9c8" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.6.tar.gz", "has_sig": false, "md5_digest": "6d468f6701d2d701edfe5c5439f14578", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 47078, "upload_time": "2018-06-12T20:16:56", "url": "https://files.pythonhosted.org/packages/a1/3b/2d524abe7e187f7466d1f4b1dfaf02ed03a9886363aa40f683d950f26a65/Superior-Cache-ANalyzer-2.2.6.tar.gz" } ], "2.2.6.post1": [ { "comment_text": "", "digests": { "md5": "82e90c6c9d90a6ee0f4389085f3d59e9", "sha256": "0a8c8ddedaf739145699e641f633bae0576f9c3a7f3539ed902de65372f0d91b" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.2.6.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "82e90c6c9d90a6ee0f4389085f3d59e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 48760, "upload_time": "2018-06-13T13:52:30", "url": "https://files.pythonhosted.org/packages/12/2e/a2081bafcb127d3475334a96b5ac2234cd4474d1c940443462478aae9776/Superior_Cache_ANalyzer-2.2.6.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62f761f61f064060dc53fc1b1408d669", "sha256": "28fde83da6a6263377c80d37342a86ceee36a9511565ccf17e3f0f987d7520cc" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.2.6.post1.tar.gz", "has_sig": false, "md5_digest": "62f761f61f064060dc53fc1b1408d669", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 48607, "upload_time": "2018-06-13T13:52:31", "url": "https://files.pythonhosted.org/packages/c6/dd/1a8b4a20975755173abc4d9eb7653593d020841ce7edcb3ac3d12b424275/Superior-Cache-ANalyzer-2.2.6.post1.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "287dfeab8e8cfcf3a0ebef0d039a134e", "sha256": "73f4389bf9b6a3aee54528a3587254d1bf2480afdf8cf22547bb0eeb76b404d6" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-2.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "287dfeab8e8cfcf3a0ebef0d039a134e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49386, "upload_time": "2018-06-13T16:11:22", "url": "https://files.pythonhosted.org/packages/8b/8e/34f6e29cf307f319490b649329abd688d134c58c9a363779c5c86994151e/Superior_Cache_ANalyzer-2.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41bfa92d9c8f0b3cede6316042156a26", "sha256": "77d96b4bf5058925211351a3b1a4321bae997d1d6c396db816bd08ef5e805b26" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-2.3.0.tar.gz", "has_sig": false, "md5_digest": "41bfa92d9c8f0b3cede6316042156a26", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 49211, "upload_time": "2018-06-13T16:11:24", "url": "https://files.pythonhosted.org/packages/24/80/bade689b8a20f663d2b31de8e2b13c5503c23c1277b4af0f5bc9396c5041/Superior-Cache-ANalyzer-2.3.0.tar.gz" } ], "3.3.1": [ { "comment_text": "", "digests": { "md5": "4cf8d405377e08634797395968de87fa", "sha256": "902ac43b51dd4b7ed610828b1741c21032d63dd21ac73d206166c42dcef96e41" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4cf8d405377e08634797395968de87fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49096, "upload_time": "2018-06-13T19:23:14", "url": "https://files.pythonhosted.org/packages/fd/41/8683705f527d7392f6107eafda1175dd33bec082975f2e3156f586c2f840/Superior_Cache_ANalyzer-3.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4a77e79f4714419dfa1ba62fceb20fb", "sha256": "5b226e6012b00c738d8c8caf09b913c00f0180b814da311e6917c84888f1cd33" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.1.tar.gz", "has_sig": false, "md5_digest": "a4a77e79f4714419dfa1ba62fceb20fb", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 49123, "upload_time": "2018-06-13T19:23:15", "url": "https://files.pythonhosted.org/packages/77/5c/0b196bf39bf4e5f1562377e3e88b4a9335812c06fb6fca0b77b540ac1803/Superior-Cache-ANalyzer-3.3.1.tar.gz" } ], "3.3.3": [ { "comment_text": "", "digests": { "md5": "1364759e836b9235c024f4b6df0e127a", "sha256": "2a232eecf2ef98f43c116d79d037443a4b5caa9cdd9fbddd99edd9c1a1a72844" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.3-py3.6.egg", "has_sig": false, "md5_digest": "1364759e836b9235c024f4b6df0e127a", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": "~=3.4", "size": 94496, "upload_time": "2018-06-14T15:08:11", "url": "https://files.pythonhosted.org/packages/d5/8e/d9e30661624959db73e9ec3520b2857012dfc0f0d7793c4cc6e597ade45c/Superior_Cache_ANalyzer-3.3.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "0c4d51b3ca812658418333480c15ef6c", "sha256": "ac1f22f3b57c38d829a81ccd3122227411bf253bd8376f3f518e9650587575dc" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "0c4d51b3ca812658418333480c15ef6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49452, "upload_time": "2018-06-14T15:08:10", "url": "https://files.pythonhosted.org/packages/40/1d/428e7935596e2b7b50b49c343928a3a9141647c0bfd74a027678ff5753c1/Superior_Cache_ANalyzer-3.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24fe9e12e8d564896fa8831b1038b1b5", "sha256": "edfba06c4cbcf492faf88d1f6514f9c0876f882635dc7385c0dc458e6bcd7ca9" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.3.tar.gz", "has_sig": false, "md5_digest": "24fe9e12e8d564896fa8831b1038b1b5", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 49598, "upload_time": "2018-06-14T15:08:13", "url": "https://files.pythonhosted.org/packages/5a/d9/4269c4504f4b8d258ac0f7bc7054d0f9ca3458cc473165b89ef2eb864378/Superior-Cache-ANalyzer-3.3.3.tar.gz" } ], "3.3.4": [ { "comment_text": "", "digests": { "md5": "e31fac48e665c474bfde8cced24ae1aa", "sha256": "f71849cf16cc3ba9a025a9b0506726029b6fdeb27dc4b423deb71ce56853d2d7" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e31fac48e665c474bfde8cced24ae1aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49444, "upload_time": "2018-08-07T20:38:19", "url": "https://files.pythonhosted.org/packages/27/4b/0e4ae616758fb23ee48db0e7499028954ddb5ac9b386f8389d982e651c6a/Superior_Cache_ANalyzer-3.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bad9e797e8c32c5c39e7c6e9aa6a2234", "sha256": "757f98aee1650df119c21d7cdd374c0a14d7f0d5c5524bcbb516a52b7a2705dd" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.4.tar.gz", "has_sig": false, "md5_digest": "bad9e797e8c32c5c39e7c6e9aa6a2234", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 49780, "upload_time": "2018-08-07T20:38:21", "url": "https://files.pythonhosted.org/packages/8c/d5/083bfe4784f95dd1a5badd80e671318352cbcaa75a7e583bfa671e84317d/Superior-Cache-ANalyzer-3.3.4.tar.gz" } ], "3.3.5": [ { "comment_text": "", "digests": { "md5": "6c2be4654d27c280f9689cf6973945b3", "sha256": "dc2076935d4c1a35c4aa91f4ff8b636d69bae74951c0cf909bd7deb09935c535" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "6c2be4654d27c280f9689cf6973945b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49680, "upload_time": "2018-08-15T20:21:24", "url": "https://files.pythonhosted.org/packages/69/a4/ad6cf7c5e8decbfe988f8291dde5b70fa1a7b3067c443e17c3457699c629/Superior_Cache_ANalyzer-3.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bd8a4059c3e8ee2b018728abff1cd27", "sha256": "89f42f00ef8d17b7a86cf7458e772b0049a7f861c71af9270f12286b8db0a3ad" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.5.tar.gz", "has_sig": false, "md5_digest": "0bd8a4059c3e8ee2b018728abff1cd27", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50085, "upload_time": "2018-08-15T20:21:26", "url": "https://files.pythonhosted.org/packages/52/77/dc096024ee0764b0c2771ff6b31aa0dc43f36af8dc138ba388da8fddb252/Superior-Cache-ANalyzer-3.3.5.tar.gz" } ], "3.3.6": [ { "comment_text": "", "digests": { "md5": "afd9c39da68708f59311e104aad0e7cd", "sha256": "1fdf080ca2b9778a1b1f71aee14f365a9e4358091bcfbff61a09fad1137f166b" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "afd9c39da68708f59311e104aad0e7cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49709, "upload_time": "2018-08-29T13:42:28", "url": "https://files.pythonhosted.org/packages/a0/47/4acf36d1cad1c7ecab0629a0920697663cf1fc7dbeeb0aee755fd5d11ba2/Superior_Cache_ANalyzer-3.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "564b444d4be3c571b4d0b520de20273d", "sha256": "d6d1522dadbff78cee389d3fb4425abb8c61a61baeee23022fbd29bb2b84f0df" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.6.tar.gz", "has_sig": false, "md5_digest": "564b444d4be3c571b4d0b520de20273d", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50157, "upload_time": "2018-08-29T13:42:30", "url": "https://files.pythonhosted.org/packages/ff/7c/18d472eca2a9a153329211adfd2791e25964930a14ed1e1c0cf2ab26c806/Superior-Cache-ANalyzer-3.3.6.tar.gz" } ], "3.3.7": [ { "comment_text": "", "digests": { "md5": "8c59d8b66db8b34d6f423312ba40affb", "sha256": "7f7b77e811aa8e92d18311e48909649914994ace679fbd0b36496aec0bf43202" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "8c59d8b66db8b34d6f423312ba40affb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 49641, "upload_time": "2018-10-23T13:20:49", "url": "https://files.pythonhosted.org/packages/99/f4/ec4094bc424471bfed8d897ec86c88fbcb936fa0bdede7d8041a070ceaac/Superior_Cache_ANalyzer-3.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8de11bb8ddfad8c046ff4d6acbae52d8", "sha256": "a1ca7ba6d3ec83a7ac85f9a41bd804bf69988575b393d320993e4e7a630e9137" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.7.tar.gz", "has_sig": false, "md5_digest": "8de11bb8ddfad8c046ff4d6acbae52d8", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50039, "upload_time": "2018-10-23T13:20:51", "url": "https://files.pythonhosted.org/packages/41/99/4741fb7e3100a95c3807eab2c50b1a8fc360a8a80a2b983d237882044378/Superior-Cache-ANalyzer-3.3.7.tar.gz" } ], "3.3.7.post1": [ { "comment_text": "", "digests": { "md5": "c7ba34df6ab6d358c76bf162e07f59e2", "sha256": "10340d64bec2167bca0316937206055f162c2672fb2463a752eef5dcf6aca9a7" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.7.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "c7ba34df6ab6d358c76bf162e07f59e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 54659, "upload_time": "2019-02-14T18:30:07", "url": "https://files.pythonhosted.org/packages/a1/8e/7da11d3d3305cd94923839647d6609f415223eb7662a26f6293359c37726/Superior_Cache_ANalyzer-3.3.7.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f373748ab535176a8edb7074f8767bb", "sha256": "186494f558721e327eaf85aa29df145b146f5e108b6844b39cf977886925b194" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.7.post1.tar.gz", "has_sig": false, "md5_digest": "6f373748ab535176a8edb7074f8767bb", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50173, "upload_time": "2019-02-14T18:30:09", "url": "https://files.pythonhosted.org/packages/0c/4b/fcf58d854a7321f9aef355f68a66e26440e28c2d9b06b302ff4ca6402526/Superior-Cache-ANalyzer-3.3.7.post1.tar.gz" } ], "3.3.7.post2": [ { "comment_text": "", "digests": { "md5": "c615b80a9604708fb5bcd9f4da5bc1bc", "sha256": "216acd77231fb7a6be7b55d2f2a06d4c065cdf1979d3283748568f4872fe6b89" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.7.post2-py3-none-any.whl", "has_sig": false, "md5_digest": "c615b80a9604708fb5bcd9f4da5bc1bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 54653, "upload_time": "2019-02-14T19:09:49", "url": "https://files.pythonhosted.org/packages/1d/e1/533bf058f52ccaf5768768c4c6f21c5246ddb3b87592bc1bbc6c14604d17/Superior_Cache_ANalyzer-3.3.7.post2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4db416fe9adc67aa4f98b5c21c60663", "sha256": "a2056e9042b78f2c8ffd863f3fceefbe6f3f40a9c906575c137cbdf1f0a44876" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.7.post2.tar.gz", "has_sig": false, "md5_digest": "d4db416fe9adc67aa4f98b5c21c60663", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50172, "upload_time": "2019-02-14T19:09:50", "url": "https://files.pythonhosted.org/packages/47/cc/2f9bcb24609c9a34af77a4d0b4edd0d4b34cf9ca52ef119a459f6644f54f/Superior-Cache-ANalyzer-3.3.7.post2.tar.gz" } ], "3.3.7.post3": [ { "comment_text": "", "digests": { "md5": "dca8b54700b281e36e9da3131a7dffce", "sha256": "a5cb33018541ada4f6d95f7e212251f53c9fd3bf5510c9172fcd3d9f12af3a4b" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.7.post3-py3-none-any.whl", "has_sig": false, "md5_digest": "dca8b54700b281e36e9da3131a7dffce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 54654, "upload_time": "2019-09-19T15:56:35", "url": "https://files.pythonhosted.org/packages/09/7c/aef5980b6ce7afaf1be3ec72fcf14a53b2e592883afbff1c6268efc2353e/Superior_Cache_ANalyzer-3.3.7.post3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b5845ffba511e7b88a6a98abbfc76b1", "sha256": "6952ac302e52fb875cd9e280a47cb41aa7789d60bb9f29642d0fc4b347cd75fe" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.7.post3.tar.gz", "has_sig": false, "md5_digest": "0b5845ffba511e7b88a6a98abbfc76b1", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50175, "upload_time": "2019-09-19T15:56:39", "url": "https://files.pythonhosted.org/packages/ac/de/1c477771ae5c839f940f0083e606256098e1451f433e5c76252a645e2849/Superior-Cache-ANalyzer-3.3.7.post3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dca8b54700b281e36e9da3131a7dffce", "sha256": "a5cb33018541ada4f6d95f7e212251f53c9fd3bf5510c9172fcd3d9f12af3a4b" }, "downloads": -1, "filename": "Superior_Cache_ANalyzer-3.3.7.post3-py3-none-any.whl", "has_sig": false, "md5_digest": "dca8b54700b281e36e9da3131a7dffce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 54654, "upload_time": "2019-09-19T15:56:35", "url": "https://files.pythonhosted.org/packages/09/7c/aef5980b6ce7afaf1be3ec72fcf14a53b2e592883afbff1c6268efc2353e/Superior_Cache_ANalyzer-3.3.7.post3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b5845ffba511e7b88a6a98abbfc76b1", "sha256": "6952ac302e52fb875cd9e280a47cb41aa7789d60bb9f29642d0fc4b347cd75fe" }, "downloads": -1, "filename": "Superior-Cache-ANalyzer-3.3.7.post3.tar.gz", "has_sig": false, "md5_digest": "0b5845ffba511e7b88a6a98abbfc76b1", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 50175, "upload_time": "2019-09-19T15:56:39", "url": "https://files.pythonhosted.org/packages/ac/de/1c477771ae5c839f940f0083e606256098e1451f433e5c76252a645e2849/Superior-Cache-ANalyzer-3.3.7.post3.tar.gz" } ] }