Coder Social home page Coder Social logo

pypi / stdlib-list Goto Github PK

View Code? Open in Web Editor NEW
126.0 126.0 32.0 171 KB

A list of Python Standard Libraries (2.6-7, 3.2-12).

Home Page: https://pypi.org/project/stdlib-list/

License: MIT License

Python 78.35% Makefile 21.65%
python python-standard-library python2 python3

stdlib-list's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stdlib-list's Issues

Some extra (mostly tests?) modules included

From a spot-check, there are some extra modules that don't end up in site-packages on a standard install.

ctypes.test.test_cfuncs
distutils.tests.test_build_scripts
test.badsyntax_pep3120
test.test_asyncio.test_futures
test.test_subprocess
json.re (on 2.7)

Most of these aren't going to pose a big problem for me, but considering top-level names only test.* will. Would you accept a pull request that filters these (just test.* for now) in fetch?

New release - 0.11.0

Last release (v0.10.0) was from 18th Nov 2023.

At the time of writing, 19 commits have been contributed since (link).

It would be great to create a new release that contains these changes.

Motivation, for context: stdlib-lists are used in Bazel's python rules and are currently referring to a commit specific "raw" Github link (referring to individual git tree source files), which is not ideal. I would like to make a contribution to refer to an official release of the project instead.

list all standard libraries in a project

This project is really cool. I came across it when I was trying to answer the following question. What are the standard libraries that my project is using?

If you had to answer such a question, how would you use this package to do so?

Py 3.10+ support

There have been several suggestions to do something similar to:

if python-version >= 3.10:
    return sys.stdlib_module_names
else:
    return old-algorithm 

Please don't do this, as the first half of the branch only returns the roots of the tree, while the else branch returns nested modules as well.

Something more like a recursive version of:

import sys


def find_names(roots, depth=2):
    res = list(roots)
    for root in roots:
        try:
            m = __import__(root)
            res.extend([f"{root}.{attr}" for attr in dir(m)])
        except (ModuleNotFoundError, ImportError):
            print(f"Module {root} not found")

    return res


if __name__ == '__main__':
    print(find_names(sys.stdlib_module_names))

(you may want to filter out the antigravity module...)

0.8.0: sphinx 4.0.2 warnings

+ /usr/bin/python3 setup.py build_sphinx -b man --build-dir build/sphinx
/usr/lib/python3.8/site-packages/setuptools/dist.py:454: UserWarning: Normalizing 'v0.8.0' to '0.8.0'
  warnings.warn(tmpl.format(**locals()))
running build_sphinx
Running Sphinx v4.0.2
making output directory... done
WARNING: html_static_path entry '_static' does not exist
building [mo]: targets for 0 po files that are out of date
building [man]: all manpages
updating environment: [new config] 4 added, 0 changed, 0 removed
reading sources... [100%] usage
WARNING: autodoc: failed to import module 'fetch' from module 'stdlib_list'; the following exception was raised:
cannot import name 'base_dir' from 'stdlib_list' (/home/tkloczko/rpmbuild/BUILD/python-stdlib-list-0.8.0/stdlib_list/__init__.py)
/home/tkloczko/rpmbuild/BUILD/python-stdlib-list-0.8.0/stdlib_list/__init__.py:docstring of stdlib_list.base.in_stdlib:14: WARNING: Field list ends without a blank line; unexpected unindent.
/home/tkloczko/rpmbuild/BUILD/python-stdlib-list-0.8.0/stdlib_list/__init__.py:docstring of stdlib_list.base.in_stdlib:18: WARNING: Field list ends without a blank line; unexpected unindent.
/home/tkloczko/rpmbuild/BUILD/python-stdlib-list-0.8.0/stdlib_list/__init__.py:docstring of stdlib_list.base.stdlib_list:6: WARNING: Field list ends without a blank line; unexpected unindent.
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
writing... python-stdlib-list.3 { install usage fetch } done
build succeeded, 5 warnings.

`typing.{io,re}` missing in `3.10`

The modules typing.io and typing.re are missing in 3.10. They are present only in 3.8 and nowhere else, even though they exist at least in 3.10, albeit created in an awkward way.

Rocky project maintenance transition

I want to start by apologizing to @ocefpaf and @ericdill for the way that this all unfolded. It was certainly not the intention of anyone involved to impact you in this way, and I understand why you may be feeling dismissed or cast-aside as a result.

What happened

My understanding (as one of four PyPI admins) is as follows:

  1. An issue was filed on pypi/warehouse regarding how to handle the fact that stdlib-list hadn't seen a release in multiple years and was recently archived: pypi/warehouse#13886
  2. PyPI admins and a contributor considered the state of the project, our need for what it provides as part of running PyPI, and what could be done, selecting to consider adopting the project if the current owner was interested
  3. As the repo was archived and issues could not be filed or responded to, it was decided to reach out directly to @jackmaney. This outreach included @woodruffw and 2/4 PyPI admins @di and @dstufft
  4. @jackmaney successfully transferred the project to the pypi GitHub org via @dstufft
  5. @jackmaney gave affirmative permission for @dstufft to transfer the project to the pypi PyPI org
  6. @dstufft aligned the permissions on the GitHub and PyPI project with our standard permissions, in the process removing @ocefpaf and @ericdill from both places without notice

How did it happen

This isn't how this should have gone and its clear that there were oversights in this process:

  • Incomplete visibility among PyPI admins to what was occurring by only including 2/4 of the PyPI admins on the outreach in 3)
  • A lack of follow up with the remaining maintainers @ocefpaf and @ericdill before proceeding to drop their roles on the GitHub repository and PyPI project

What now?

@ocefpaf and @ericdill, we want to invite you back to your role as a maintainer of this project

Beyond that, I'm going to discuss with the PyPI administrators internally about what we can do to ensure that this kind of thing doesn't move at such a pace with such little internal visibility in the future.


Note, the previous project owner @jackmaney has been omitted from mention on this issue, as they are no longer interested in this project.

New API: `in_stdlib_namespace`

Following discussion in #119: we should add a new API, in_stdlib_namespace, that behaves like in_stdlib except that it (1) does not check that the identifier actually exists, and (2) therefore does not require the identifier to be a "true" module. This API will be useful to consumers who just need to answer questions like "does this path fall under a stdlib namespace?" without knowing whether their path's "leaf" is a module or not.

As part of this, we should also update the in_stdlib docstring to emphasize that it checks whether the given path is importable.

CC @miketheman

Suggestion: Add methods or parameters to filter the list

Specifically there are a lot of test. members to the standard library that people probably don't need most of the time, (e.g. when deciding which libraries to include in an executable). I think that it also might be handy to be able to get a list of just the top level libraries.

Taking python 3.8-64 as a test case:

from stdlib_list import stdlib_list
sl = stdlib_list('3.8')
print(len(sl))  # 1766
no_test = [l for l in sl if not l.startswith('test.') and not l == 'test']
print(len(no_test))  # 1062
top_level = {l.split('.')[0] for l in sl}
print(len(top_level))  # 310

I think that it would be great to either have functions or flags on stdlib_list to return the no_test & top_level filtered lists above, (which could possibly be produced more efficiently).

0.8.0: pytest is failing

Just normal build, install and test cycle used on building package from non-root account:

  • "setup.py build"
  • "setup.py install --root </install/prefix>"
  • "pytest with PYTHONPATH pointing to setearch and sitelib inside </install/prefix>
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-stdlib-list-0.8.0-3.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-stdlib-list-0.8.0-3.fc35.x86_64/usr/lib/python3.8/site-packages
+ PYTHONDONTWRITEBYTECODE=1
+ /usr/bin/pytest -ra
=========================================================================== test session starts ============================================================================
platform linux -- Python 3.8.9, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /home/tkloczko/rpmbuild/BUILD/python-stdlib-list-0.8.0
plugins: forked-1.3.0, shutil-1.7.0, virtualenv-1.7.0, expect-1.1.0, httpbin-1.0.0, flake8-1.0.7, timeout-1.4.2, betamax-0.8.1, freezegun-0.4.2, case-1.5.3, isort-1.3.0, aspectlib-1.5.2, asyncio-0.15.1, toolbox-0.5, xprocess-0.17.1, aiohttp-0.3.0, checkdocs-2.7.0, mock-3.6.1, rerunfailures-9.1.1, requests-mock-1.9.3, cov-2.12.1, pyfakefs-4.5.0, cases-3.6.1, flaky-3.7.0, hypothesis-6.14.0, benchmark-3.4.1, xdist-2.3.0, Faker-8.8.1
collected 10 items

. .                                                                                                                                                                  [ 11%]
tests/test_basic.py ...FF                                                                                                                                            [ 66%]
tests/test_platform.py ...                                                                                                                                           [100%]

================================================================================= FAILURES =================================================================================
__________________________________________________________________ TestSysModules.test_preloaded_modules ___________________________________________________________________

self = <tests.test_basic.TestSysModules testMethod=test_preloaded_modules>

    def test_preloaded_modules(self):
        """Check all stdlib modules are recognised."""
        not_stdlib = set()
        for module_name in sys.modules:
            pkg, _, module = module_name.partition(".")

            # https://github.com/jackmaney/python-stdlib-list/issues/29
            if pkg.startswith("_sysconfigdata_"):
                continue

            if pkg in self.ignore_list:
                continue

            # Avoid duplicating errors covered by other tests
            if module_name in sys.builtin_module_names:
                continue

            if PY2:
                # Python 2.7 creates sub-modules for imports
                if pkg in self.list and module in self.list:
                    continue

                # Python 2.7 deprecation solution for old names
                if pkg == "email":
                    mod = sys.modules[module_name]
                    if mod.__class__.__name__ == "LazyImporter":
                        continue

            if module_name not in self.list:
                not_stdlib.add(module_name)

>       self.assertFalse(sorted(not_stdlib))
E       AssertionError: ['OpenSSL', 'OpenSSL.SSL', 'OpenSSL._util', 'OpenSSL.crypto', 'OpenSSL.version', '__mp_main__', '_bcrypt', '_bcrypt.lib', '_brotli', '_cffi_backend', '_cython_0_29_15', '_cython_0_29_22', '_openssl', '_openssl.lib', '_pytest', '_pytest._argcomplete', '_pytest._code', '_pytest._code.code', '_pytest._code.source', '_pytest._io', '_pytest._io.saferepr', '_pytest._io.terminalwriter', '_pytest._io.wcwidth', '_pytest._version', '_pytest.assertion', '_pytest.assertion.rewrite', '_pytest.assertion.truncate', '_pytest.assertion.util', '_pytest.cacheprovider', '_pytest.capture', '_pytest.compat', '_pytest.config', '_pytest.config.argparsing', '_pytest.config.exceptions', '_pytest.config.findpaths', '_pytest.debugging', '_pytest.deprecated', '_pytest.doctest', '_pytest.faulthandler', '_pytest.fixtures', '_pytest.freeze_support', '_pytest.helpconfig', '_pytest.hookspec', '_pytest.junitxml', '_pytest.logging', '_pytest.main', '_pytest.mark', '_pytest.mark.expression', '_pytest.mark.structures', '_pytest.monkeypatch', '_pytest.nodes', '_pytest.nose', '_pytest.outcomes', '_pytest.pastebin', '_pytest.pathlib', '_pytest.pytester', '_pytest.python', '_pytest.python_api', '_pytest.recwarn', '_pytest.reports', '_pytest.runner', '_pytest.setuponly', '_pytest.setupplan', '_pytest.skipping', '_pytest.stepwise', '_pytest.store', '_pytest.terminal', '_pytest.threadexception', '_pytest.timing', '_pytest.tmpdir', '_pytest.unittest', '_pytest.unraisableexception', '_pytest.warning_types', '_pytest.warnings', 'aiohttp', 'aiohttp.abc', 'aiohttp.base_protocol', 'aiohttp.client', 'aiohttp.client_exceptions', 'aiohttp.client_proto', 'aiohttp.client_reqrep', 'aiohttp.client_ws', 'aiohttp.connector', 'aiohttp.cookiejar', 'aiohttp.formdata', 'aiohttp.frozenlist', 'aiohttp.hdrs', 'aiohttp.helpers', 'aiohttp.http', 'aiohttp.http_exceptions', 'aiohttp.http_parser', 'aiohttp.http_websocket', 'aiohttp.http_writer', 'aiohttp.locks', 'aiohttp.log', 'aiohttp.multipart', 'aiohttp.payload', 'aiohttp.payload_streamer', 'aiohttp.pytest_plugin', 'aiohttp.resolver', 'aiohttp.signals', 'aiohttp.streams', 'aiohttp.tcp_helpers', 'aiohttp.test_utils', 'aiohttp.tracing', 'aiohttp.typedefs', 'aiohttp.web', 'aiohttp.web_app', 'aiohttp.web_exceptions', 'aiohttp.web_fileresponse', 'aiohttp.web_log', 'aiohttp.web_middlewares', 'aiohttp.web_protocol', 'aiohttp.web_request', 'aiohttp.web_response', 'aiohttp.web_routedef', 'aiohttp.web_runner', 'aiohttp.web_server', 'aiohttp.web_urldispatcher', 'aiohttp.web_ws', 'aspectlib', 'aspectlib.pytestsupport', 'aspectlib.utils', 'async_timeout', 'attr', 'attr._cmp', 'attr._compat', 'attr._config', 'attr._funcs', 'attr._make', 'attr._next_gen', 'attr._version_info', 'attr.converters', 'attr.exceptions', 'attr.filters', 'attr.setters', 'attr.validators', 'bcrypt', 'bcrypt.__about__', 'bcrypt._bcrypt', 'betamax', 'betamax.adapter', 'betamax.cassette', 'betamax.cassette.cassette', 'betamax.cassette.interaction', 'betamax.configure', 'betamax.decorator', 'betamax.exceptions', 'betamax.fixtures', 'betamax.fixtures.pytest', 'betamax.matchers', 'betamax.matchers.base', 'betamax.matchers.body', 'betamax.matchers.digest_auth', 'betamax.matchers.headers', 'betamax.matchers.host', 'betamax.matchers.method', 'betamax.matchers.path', 'betamax.matchers.query', 'betamax.matchers.uri', 'betamax.mock_response', 'betamax.options', 'betamax.recorder', 'betamax.serializers', 'betamax.serializers.base', 'betamax.serializers.json_serializer', 'betamax.serializers.proxy', 'betamax.util', 'blinker', 'blinker._saferef', 'blinker._utilities', 'blinker.base', 'brotli', 'case', 'case.case', 'case.mock', 'case.pytest', 'case.skip', 'case.utils', 'certifi', 'certifi.core', 'chardet', 'chardet.big5freq', 'chardet.big5prober', 'chardet.chardistribution', 'chardet.charsetgroupprober', 'chardet.charsetprober', 'chardet.codingstatemachine', 'chardet.cp949prober', 'chardet.enums', 'chardet.escprober', 'chardet.escsm', 'chardet.eucjpprober', 'chardet.euckrfreq', 'chardet.euckrprober', 'chardet.euctwfreq', 'chardet.euctwprober', 'chardet.gb2312freq', 'chardet.gb2312prober', 'chardet.hebrewprober', 'chardet.jisfreq', 'chardet.johabfreq', 'chardet.johabprober', 'chardet.jpcntx', 'chardet.langbulgarianmodel', 'chardet.langgreekmodel', 'chardet.langhebrewmodel', 'chardet.langrussianmodel', 'chardet.langthaimodel', 'chardet.langturkishmodel', 'chardet.latin1prober', 'chardet.mbcharsetprober', 'chardet.mbcsgroupprober', 'chardet.mbcssm', 'chardet.sbcharsetprober', 'chardet.sbcsgroupprober', 'chardet.sjisprober', 'chardet.universaldetector', 'chardet.utf8prober', 'chardet.version', 'click', 'click._compat', 'click._unicodefun', 'click.core', 'click.decorators', 'click.exceptions', 'click.formatting', 'click.globals', 'click.parser', 'click.termui', 'click.types', 'click.utils', 'colorama', 'colorama.ansi', 'colorama.ansitowin32', 'colorama.initialise', 'colorama.win32', 'colorama.winterm', 'constantly', 'constantly._constants', 'constantly._version', 'coverage', 'coverage.annotate', 'coverage.backward', 'coverage.bytecode', 'coverage.collector', 'coverage.config', 'coverage.context', 'coverage.control', 'coverage.data', 'coverage.debug', 'coverage.disposition', 'coverage.env', 'coverage.files', 'coverage.html', 'coverage.inorout', 'coverage.jsonreport', 'coverage.misc', 'coverage.multiproc', 'coverage.numbits', 'coverage.parser', 'coverage.phystokens', 'coverage.plugin', 'coverage.plugin_support', 'coverage.python', 'coverage.pytracer', 'coverage.report', 'coverage.results', 'coverage.sqldata', 'coverage.summary', 'coverage.templite', 'coverage.tomlconfig', 'coverage.tracer', 'coverage.version', 'coverage.xmlreport', 'cryptography', 'cryptography.__about__', 'cryptography.exceptions', 'cryptography.hazmat', 'cryptography.hazmat._der', 'cryptography.hazmat._oid', 'cryptography.hazmat.backends', 'cryptography.hazmat.backends.interfaces', 'cryptography.hazmat.bindings', 'cryptography.hazmat.bindings._openssl', 'cryptography.hazmat.bindings.openssl', 'cryptography.hazmat.bindings.openssl._conditional', 'cryptography.hazmat.bindings.openssl.binding', 'cryptography.hazmat.primitives', 'cryptography.hazmat.primitives.asymmetric', 'cryptography.hazmat.primitives.asymmetric.dsa', 'cryptography.hazmat.primitives.asymmetric.ec', 'cryptography.hazmat.primitives.asymmetric.ed25519', 'cryptography.hazmat.primitives.asymmetric.ed448', 'cryptography.hazmat.primitives.asymmetric.rsa', 'cryptography.hazmat.primitives.ciphers', 'cryptography.hazmat.primitives.ciphers.algorithms', 'cryptography.hazmat.primitives.ciphers.base', 'cryptography.hazmat.primitives.ciphers.modes', 'cryptography.hazmat.primitives.constant_time', 'cryptography.hazmat.primitives.hashes', 'cryptography.hazmat.primitives.serialization', 'cryptography.hazmat.primitives.serialization.base', 'cryptography.hazmat.primitives.serialization.ssh', 'cryptography.utils', 'cryptography.x509', 'cryptography.x509.base', 'cryptography.x509.certificate_transparency', 'cryptography.x509.extensions', 'cryptography.x509.general_name', 'cryptography.x509.name', 'cryptography.x509.oid', 'cython_runtime', 'dateutil', 'dateutil._common', 'dateutil._version', 'dateutil.easter', 'dateutil.parser', 'dateutil.parser._parser', 'dateutil.parser.isoparser', 'dateutil.relativedelta', 'dateutil.tz', 'dateutil.tz._common', 'dateutil.tz._factories', 'dateutil.tz.tz', 'decopatch', 'decopatch._version', 'decopatch.main', 'decopatch.utils_calls', 'decopatch.utils_disambiguation', 'decopatch.utils_modes', 'decorator', 'django', 'django.core', 'django.core.exceptions', 'django.core.files', 'django.core.files.base', 'django.core.files.locks', 'django.core.files.utils', 'django.utils', 'django.utils.functional', 'django.utils.hashable', 'django.utils.itercompat', 'django.utils.version', 'docutils', 'docutils.core', 'docutils.frontend', 'docutils.io', 'docutils.languages', 'docutils.nodes', 'docutils.parsers', 'docutils.readers', 'docutils.readers.doctree', 'docutils.transforms', 'docutils.transforms.universal', 'docutils.utils', 'docutils.utils.error_reporting', 'docutils.utils.smartquotes', 'docutils.writers', 'execnet', 'execnet._version', 'execnet.deprecated', 'execnet.gateway', 'execnet.gateway_base', 'execnet.gateway_bootstrap', 'execnet.gateway_io', 'execnet.multi', 'execnet.rsync', 'execnet.rsync_remote', 'execnet.xspec', 'faker', 'faker.config', 'faker.contrib', 'faker.contrib.pytest', 'faker.contrib.pytest.plugin', 'faker.exceptions', 'faker.factory', 'faker.generator', 'faker.providers', 'faker.providers.address', 'faker.providers.address.en', 'faker.providers.address.en_US', 'faker.providers.automotive', 'faker.providers.automotive.en_US', 'faker.providers.bank', 'faker.providers.bank.en_GB', 'faker.providers.barcode', 'faker.providers.barcode.en_US', 'faker.providers.color', 'faker.providers.color.color', 'faker.providers.color.en_US', 'faker.providers.company', 'faker.providers.company.en_US', 'faker.providers.credit_card', 'faker.providers.credit_card.en_US', 'faker.providers.currency', 'faker.providers.currency.en_US', 'faker.providers.date_time', 'faker.providers.date_time.en_US', 'faker.providers.file', 'faker.providers.geo', 'faker.providers.geo.en_US', 'faker.providers.internet', 'faker.providers.internet.en_US', 'faker.providers.isbn', 'faker.providers.isbn.isbn', 'faker.providers.isbn.rules', 'faker.providers.job', 'faker.providers.job.en_US', 'faker.providers.lorem', 'faker.providers.lorem.en_US', 'faker.providers.misc', 'faker.providers.misc.en_US', 'faker.providers.person', 'faker.providers.person.en_US', 'faker.providers.phone_number', 'faker.providers.phone_number.en_US', 'faker.providers.profile', 'faker.providers.python', 'faker.providers.ssn', 'faker.providers.ssn.en_US', 'faker.providers.user_agent', 'faker.proxy', 'faker.utils', 'faker.utils.decorators', 'faker.utils.distribution', 'faker.utils.loading', 'faker.utils.text', 'flake8', 'flake8._compat', 'flake8.checker', 'flake8.defaults', 'flake8.exceptions', 'flake8.formatting', 'flake8.formatting.base', 'flake8.main', 'flake8.main.application', 'flake8.main.debug', 'flake8.main.git', 'flake8.main.mercurial', 'flake8.main.options', 'flake8.main.vcs', 'flake8.options', 'flake8.options.aggregator', 'flake8.options.config', 'flake8.options.manager', 'flake8.plugins', 'flake8.plugins.manager', 'flake8.processor', 'flake8.statistics', 'flake8.style_guide', 'flake8.utils', 'flaky', 'flaky._flaky_plugin', 'flaky.defaults', 'flaky.flaky_decorator', 'flaky.flaky_pytest_plugin', 'flaky.names', 'flaky.utils', 'flask', 'flask._compat', 'flask.app', 'flask.blueprints', 'flask.cli', 'flask.config', 'flask.ctx', 'flask.globals', 'flask.helpers', 'flask.json', 'flask.json.tag', 'flask.logging', 'flask.sessions', 'flask.signals', 'flask.templating', 'flask.wrappers', 'freezegun', 'freezegun._async', 'freezegun.api', 'freezegun.config', 'gevent', 'gevent._abstract_linkable', 'gevent._compat', 'gevent._config', 'gevent._gevent_c_abstract_linkable', 'gevent._gevent_c_greenlet_primitives', 'gevent._gevent_c_hub_local', 'gevent._gevent_c_hub_primitives', 'gevent._gevent_c_ident', 'gevent._gevent_c_semaphore', 'gevent._gevent_c_waiter', 'gevent._gevent_cgreenlet', 'gevent._greenlet_primitives', 'gevent._hub_local', 'gevent._hub_primitives', 'gevent._ident', 'gevent._interfaces', 'gevent._semaphore', 'gevent._tblib', 'gevent._util', 'gevent._waiter', 'gevent.exceptions', 'gevent.greenlet', 'gevent.hub', 'gevent.libev', 'gevent.libev.corecext', 'gevent.lock', 'gevent.monkey', 'gevent.os', 'gevent.timeout', 'greenlet', 'greenlet._greenlet', 'h2', 'h2.config', 'httpbin', 'httpbin.core', 'httpbin.filters', 'httpbin.helpers', 'httpbin.structures', 'httpbin.utils', 'hyperframe', 'hyperframe.exceptions', 'hyperframe.flags', 'hyperframe.frame', 'hypothesis', 'hypothesis._error_if_old', 'hypothesis._settings', 'hypothesis.configuration', 'hypothesis.control', 'hypothesis.core', 'hypothesis.entry_points', 'hypothesis.errors', 'hypothesis.executors', 'hypothesis.extra', 'hypothesis.extra.numpy', 'hypothesis.extra.pytestplugin', 'hypothesis.internal', 'hypothesis.internal.cache', 'hypothesis.internal.cathetus', 'hypothesis.internal.charmap', 'hypothesis.internal.compat', 'hypothesis.internal.conjecture', 'hypothesis.internal.conjecture.choicetree', 'hypothesis.internal.conjecture.data', 'hypothesis.internal.conjecture.datatree', 'hypothesis.internal.conjecture.dfa', 'hypothesis.internal.conjecture.engine', 'hypothesis.internal.conjecture.floats', 'hypothesis.internal.conjecture.junkdrawer', 'hypothesis.internal.conjecture.pareto', 'hypothesis.internal.conjecture.shrinker', 'hypothesis.internal.conjecture.shrinking', 'hypothesis.internal.conjecture.shrinking.common', 'hypothesis.internal.conjecture.shrinking.floats', 'hypothesis.internal.conjecture.shrinking.integer', 'hypothesis.internal.conjecture.shrinking.learned_dfas', 'hypothesis.internal.conjecture.shrinking.lexical', 'hypothesis.internal.conjecture.shrinking.ordering', 'hypothesis.internal.conjecture.utils', 'hypothesis.internal.coverage', 'hypothesis.internal.detection', 'hypothesis.internal.entropy', 'hypothesis.internal.escalation', 'hypothesis.internal.filtering', 'hypothesis.internal.floats', 'hypothesis.internal.healthcheck', 'hypothesis.internal.intervalsets', 'hypothesis.internal.lazyformat', 'hypothesis.internal.reflection', 'hypothesis.internal.scrutineer', 'hypothesis.internal.validation', 'hypothesis.reporting', 'hypothesis.statistics', 'hypothesis.strategies', 'hypothesis.strategies._internal', 'hypothesis.strategies._internal.collections', 'hypothesis.strategies._internal.core', 'hypothesis.strategies._internal.datetime', 'hypothesis.strategies._internal.deferred', 'hypothesis.strategies._internal.flatmapped', 'hypothesis.strategies._internal.functions', 'hypothesis.strategies._internal.ipaddress', 'hypothesis.strategies._internal.lazy', 'hypothesis.strategies._internal.misc', 'hypothesis.strategies._internal.numbers', 'hypothesis.strategies._internal.recursive', 'hypothesis.strategies._internal.regex', 'hypothesis.strategies._internal.shared', 'hypothesis.strategies._internal.strategies', 'hypothesis.strategies._internal.strings', 'hypothesis.strategies._internal.types', 'hypothesis.strategies._internal.utils', 'hypothesis.utils', 'hypothesis.utils.conventions', 'hypothesis.utils.dynamicvariables', 'hypothesis.vendor', 'hypothesis.vendor.pretty', 'hypothesis.version', 'idna', 'idna.core', 'idna.idnadata', 'idna.intranges', 'idna.package_data', 'importlib_metadata', 'importlib_metadata._adapters', 'importlib_metadata._collections', 'importlib_metadata._compat', 'importlib_metadata._functools', 'importlib_metadata._itertools', 'importlib_metadata._meta', 'importlib_metadata._text', 'incremental', 'incremental._version', 'iniconfig', 'isort', 'isort._future', 'isort._vendored', 'isort._vendored.toml', 'isort._vendored.toml.decoder', 'isort._vendored.toml.encoder', 'isort._vendored.toml.tz', 'isort._version', 'isort.api', 'isort.comments', 'isort.core', 'isort.deprecated', 'isort.deprecated.finders', 'isort.exceptions', 'isort.files', 'isort.format', 'isort.identify', 'isort.io', 'isort.literal', 'isort.output', 'isort.parse', 'isort.place', 'isort.profiles', 'isort.sections', 'isort.settings', 'isort.sorting', 'isort.stdlibs', 'isort.stdlibs.all', 'isort.stdlibs.py2', 'isort.stdlibs.py27', 'isort.stdlibs.py3', 'isort.stdlibs.py35', 'isort.stdlibs.py36', 'isort.stdlibs.py37', 'isort.stdlibs.py38', 'isort.stdlibs.py39', 'isort.utils', 'isort.wrap', 'isort.wrap_modes', 'itsdangerous', 'itsdangerous._json', 'itsdangerous.encoding', 'itsdangerous.exc', 'itsdangerous.jws', 'itsdangerous.serializer', 'itsdangerous.signer', 'itsdangerous.timed', 'itsdangerous.url_safe', 'jinja2', 'jinja2._identifier', 'jinja2.async_utils', 'jinja2.bccache', 'jinja2.compiler', 'jinja2.defaults', 'jinja2.environment', 'jinja2.exceptions', 'jinja2.ext', 'jinja2.filters', 'jinja2.idtracking', 'jinja2.lexer', 'jinja2.loaders', 'jinja2.nodes', 'jinja2.optimizer', 'jinja2.parser', 'jinja2.runtime', 'jinja2.tests', 'jinja2.utils', 'jinja2.visitor', 'makefun', 'makefun._version', 'makefun.main', 'markupsafe', 'markupsafe._speedups', 'mock', 'mock.backports', 'mock.mock', 'multidict', 'multidict._abc', 'multidict._compat', 'multidict._multidict', 'multidict._multidict_base', 'nose', 'nose.case', 'nose.config', 'nose.core', 'nose.exc', 'nose.failure', 'nose.importer', 'nose.loader', 'nose.plugins', 'nose.plugins.base', 'nose.plugins.deprecated', 'nose.plugins.errorclass', 'nose.plugins.manager', 'nose.plugins.plugintest', 'nose.plugins.skip', 'nose.proxy', 'nose.pyversion', 'nose.result', 'nose.selector', 'nose.suite', 'nose.tools', 'nose.tools.nontrivial', 'nose.tools.trivial', 'nose.util', 'numpy', 'numpy.__config__', 'numpy._distributor_init', 'numpy._globals', 'numpy._pytesttester', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'numpy.core', 'numpy.core._add_newdocs', 'numpy.core._asarray', 'numpy.core._dtype', 'numpy.core._dtype_ctypes', 'numpy.core._exceptions', 'numpy.core._internal', 'numpy.core._methods', 'numpy.core._multiarray_tests', 'numpy.core._multiarray_umath', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._ufunc_config', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.einsumfunc', 'numpy.core.fromnumeric', 'numpy.core.function_base', 'numpy.core.getlimits', 'numpy.core.machar', 'numpy.core.memmap', 'numpy.core.multiarray', 'numpy.core.numeric', 'numpy.core.numerictypes', 'numpy.core.overrides', 'numpy.core.records', 'numpy.core.shape_base', 'numpy.core.umath', 'numpy.ctypeslib', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.lib', 'numpy.lib._datasource', 'numpy.lib._iotools', 'numpy.lib._version', 'numpy.lib.arraypad', 'numpy.lib.arraysetops', 'numpy.lib.arrayterator', 'numpy.lib.financial', 'numpy.lib.format', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.index_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.npyio', 'numpy.lib.polynomial', 'numpy.lib.scimath', 'numpy.lib.shape_base', 'numpy.lib.stride_tricks', 'numpy.lib.twodim_base', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.utils', 'numpy.linalg', 'numpy.linalg._umath_linalg', 'numpy.linalg.lapack_lite', 'numpy.linalg.linalg', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'numpy.polynomial', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.polynomial.legendre', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.random', 'numpy.random._bit_generator', 'numpy.random._bounded_integers', 'numpy.random._common', 'numpy.random._generator', 'numpy.random._mt19937', 'numpy.random._pcg64', 'numpy.random._philox', 'numpy.random._pickle', 'numpy.random._sfc64', 'numpy.random.mtrand', 'numpy.version', 'pandas', 'pandas._config', 'pandas._config.config', 'pandas._config.dates', 'pandas._config.display', 'pandas._config.localization', 'pandas._libs', 'pandas._libs.algos', 'pandas._libs.groupby', 'pandas._libs.hashing', 'pandas._libs.hashtable', 'pandas._libs.index', 'pandas._libs.indexing', 'pandas._libs.internals', 'pandas._libs.interval', 'pandas._libs.join', 'pandas._libs.json', 'pandas._libs.lib', 'pandas._libs.missing', 'pandas._libs.ops', 'pandas._libs.ops_dispatch', 'pandas._libs.parsers', 'pandas._libs.properties', 'pandas._libs.reduction', 'pandas._libs.reshape', 'pandas._libs.sparse', 'pandas._libs.testing', 'pandas._libs.tslib', 'pandas._libs.tslibs', 'pandas._libs.tslibs.base', 'pandas._libs.tslibs.ccalendar', 'pandas._libs.tslibs.conversion', 'pandas._libs.tslibs.dtypes', 'pandas._libs.tslibs.fields', 'pandas._libs.tslibs.nattype', 'pandas._libs.tslibs.np_datetime', 'pandas._libs.tslibs.offsets', 'pandas._libs.tslibs.parsing', 'pandas._libs.tslibs.period', 'pandas._libs.tslibs.strptime', 'pandas._libs.tslibs.timedeltas', 'pandas._libs.tslibs.timestamps', 'pandas._libs.tslibs.timezones', 'pandas._libs.tslibs.tzconversion', 'pandas._libs.tslibs.vectorized', 'pandas._libs.window', 'pandas._libs.window.aggregations', 'pandas._libs.window.indexers', 'pandas._libs.writers', 'pandas._testing', 'pandas._typing', 'pandas._version', 'pandas.api', 'pandas.api.extensions', 'pandas.api.indexers', 'pandas.api.types', 'pandas.arrays', 'pandas.compat', 'pandas.compat._optional', 'pandas.compat.chainmap', 'pandas.compat.numpy', 'pandas.compat.numpy.function', 'pandas.compat.pickle_compat', 'pandas.core', 'pandas.core.accessor', 'pandas.core.aggregation', 'pandas.core.algorithms', 'pandas.core.api', 'pandas.core.array_algos', 'pandas.core.array_algos.masked_reductions', 'pandas.core.array_algos.replace', 'pandas.core.array_algos.transforms', 'pandas.core.arraylike', 'pandas.core.arrays', 'pandas.core.arrays._mixins', 'pandas.core.arrays._ranges', 'pandas.core.arrays.base', 'pandas.core.arrays.boolean', 'pandas.core.arrays.categorical', 'pandas.core.arrays.datetimelike', 'pandas.core.arrays.datetimes', 'pandas.core.arrays.floating', 'pandas.core.arrays.integer', 'pandas.core.arrays.interval', 'pandas.core.arrays.masked', 'pandas.core.arrays.numeric', 'pandas.core.arrays.numpy_', 'pandas.core.arrays.period', 'pandas.core.arrays.sparse', 'pandas.core.arrays.sparse.accessor', 'pandas.core.arrays.sparse.array', 'pandas.core.arrays.sparse.dtype', 'pandas.core.arrays.string_', 'pandas.core.arrays.timedeltas', 'pandas.core.base', 'pandas.core.common', 'pandas.core.computation', 'pandas.core.computation.align', 'pandas.core.computation.api', 'pandas.core.computation.common', 'pandas.core.computation.engines', 'pandas.core.computation.eval', 'pandas.core.computation.expr', 'pandas.core.computation.ops', 'pandas.core.computation.parsing', 'pandas.core.computation.pytables', 'pandas.core.computation.scope', 'pandas.core.config_init', 'pandas.core.construction', 'pandas.core.dtypes', 'pandas.core.dtypes.api', 'pandas.core.dtypes.base', 'pandas.core.dtypes.cast', 'pandas.core.dtypes.common', 'pandas.core.dtypes.concat', 'pandas.core.dtypes.dtypes', 'pandas.core.dtypes.generic', 'pandas.core.dtypes.inference', 'pandas.core.dtypes.missing', 'pandas.core.flags', 'pandas.core.frame', 'pandas.core.generic', 'pandas.core.groupby', 'pandas.core.groupby.base', 'pandas.core.groupby.categorical', 'pandas.core.groupby.generic', 'pandas.core.groupby.groupby', 'pandas.core.groupby.grouper', 'pandas.core.groupby.numba_', 'pandas.core.groupby.ops', 'pandas.core.indexers', 'pandas.core.indexes', 'pandas.core.indexes.accessors', 'pandas.core.indexes.api', 'pandas.core.indexes.base', 'pandas.core.indexes.category', 'pandas.core.indexes.datetimelike', 'pandas.core.indexes.datetimes', 'pandas.core.indexes.extension', 'pandas.core.indexes.frozen', 'pandas.core.indexes.interval', 'pandas.core.indexes.multi', 'pandas.core.indexes.numeric', 'pandas.core.indexes.period', 'pandas.core.indexes.range', 'pandas.core.indexes.timedeltas', 'pandas.core.indexing', 'pandas.core.internals', 'pandas.core.internals.blocks', 'pandas.core.internals.concat', 'pandas.core.internals.construction', 'pandas.core.internals.managers', 'pandas.core.internals.ops', 'pandas.core.missing', 'pandas.core.nanops', 'pandas.core.ops', 'pandas.core.ops.array_ops', 'pandas.core.ops.common', 'pandas.core.ops.dispatch', 'pandas.core.ops.docstrings', 'pandas.core.ops.invalid', 'pandas.core.ops.mask_ops', 'pandas.core.ops.methods', 'pandas.core.ops.missing', 'pandas.core.ops.roperator', 'pandas.core.reshape', 'pandas.core.reshape.api', 'pandas.core.reshape.concat', 'pandas.core.reshape.melt', 'pandas.core.reshape.merge', 'pandas.core.reshape.pivot', 'pandas.core.reshape.reshape', 'pandas.core.reshape.tile', 'pandas.core.reshape.util', 'pandas.core.series', 'pandas.core.shared_docs', 'pandas.core.sorting', 'pandas.core.strings', 'pandas.core.strings.accessor', 'pandas.core.strings.base', 'pandas.core.strings.object_array', 'pandas.core.tools', 'pandas.core.tools.datetimes', 'pandas.core.tools.numeric', 'pandas.core.tools.timedeltas', 'pandas.core.tools.times', 'pandas.core.util', 'pandas.core.util.hashing', 'pandas.core.util.numba_', 'pandas.core.window', 'pandas.core.window.common', 'pandas.core.window.ewm', 'pandas.core.window.expanding', 'pandas.core.window.indexers', 'pandas.core.window.numba_', 'pandas.core.window.rolling', 'pandas.errors', 'pandas.io', 'pandas.io.api', 'pandas.io.clipboards', 'pandas.io.common', 'pandas.io.date_converters', 'pandas.io.excel', 'pandas.io.excel._base', 'pandas.io.excel._odfreader', 'pandas.io.excel._odswriter', 'pandas.io.excel._openpyxl', 'pandas.io.excel._pyxlsb', 'pandas.io.excel._util', 'pandas.io.excel._xlrd', 'pandas.io.excel._xlsxwriter', 'pandas.io.excel._xlwt', 'pandas.io.feather_format', 'pandas.io.formats', 'pandas.io.formats._color_data', 'pandas.io.formats.console', 'pandas.io.formats.css', 'pandas.io.formats.excel', 'pandas.io.formats.format', 'pandas.io.formats.info', 'pandas.io.formats.printing', 'pandas.io.gbq', 'pandas.io.html', 'pandas.io.json', 'pandas.io.json._json', 'pandas.io.json._normalize', 'pandas.io.json._table_schema', 'pandas.io.orc', 'pandas.io.parquet', 'pandas.io.parsers', 'pandas.io.pickle', 'pandas.io.pytables', 'pandas.io.sas', 'pandas.io.sas.sasreader', 'pandas.io.spss', 'pandas.io.sql', 'pandas.io.stata', 'pandas.plotting', 'pandas.plotting._core', 'pandas.plotting._misc', 'pandas.testing', 'pandas.tseries', 'pandas.tseries.api', 'pandas.tseries.frequencies', 'pandas.tseries.offsets', 'pandas.util', 'pandas.util._decorators', 'pandas.util._exceptions', 'pandas.util._print_versions', 'pandas.util._tester', 'pandas.util._validators', 'paste', 'path', 'path.matchers', 'path.py37compat', 'pep517', 'pep517.build', 'pep517.compat', 'pep517.dirtools', 'pep517.envbuild', 'pep517.in_process', 'pep517.meta', 'pep517.wrappers', 'pkg_resources', 'pkg_resources._vendor', 'pkg_resources._vendor.appdirs', 'pkg_resources._vendor.packaging', 'pkg_resources._vendor.packaging.__about__', 'pkg_resources._vendor.pyparsing', 'pkg_resources._vendor.six', 'pkg_resources._vendor.six.moves', 'pkg_resources._vendor.six.moves.urllib', 'pkg_resources.extern', 'pkg_resources.extern.appdirs', 'pkg_resources.extern.packaging', 'pkg_resources.extern.packaging._compat', 'pkg_resources.extern.packaging._structures', 'pkg_resources.extern.packaging.markers', 'pkg_resources.extern.packaging.requirements', 'pkg_resources.extern.packaging.specifiers', 'pkg_resources.extern.packaging.version', 'pkg_resources.extern.pyparsing', 'pkg_resources.extern.six', 'pkg_resources.extern.six.moves', 'pkg_resources.extern.six.moves.urllib', 'pkg_resources.py2_warn', 'pkg_resources.py31compat', 'pluggy', 'pluggy._tracing', 'pluggy._version', 'pluggy.callers', 'pluggy.hooks', 'pluggy.manager', 'priority', 'priority.priority', 'psutil', 'psutil._common', 'psutil._compat', 'psutil._pslinux', 'psutil._psposix', 'psutil._psutil_linux', 'psutil._psutil_posix', 'purl', 'purl.template', 'purl.url', 'py', 'py._builtin', 'py._code', 'py._code.code', 'py._error', 'py._io', 'py._io.terminalwriter', 'py._path', 'py._path.common', 'py._path.local', 'py._std', 'py._vendored_packages', 'py._vendored_packages.apipkg', 'py._vendored_packages.apipkg.version', 'py._version', 'py.apipkg', 'py.builtin', 'py.code', 'py.error', 'py.iniconfig', 'py.io', 'py.log', 'py.path', 'py.process', 'py.test', 'py.xml', 'pyasn1', 'pyasn1.codec', 'pyasn1.codec.ber', 'pyasn1.codec.ber.decoder', 'pyasn1.codec.ber.eoo', 'pyasn1.codec.cer', 'pyasn1.codec.cer.decoder', 'pyasn1.codec.der', 'pyasn1.codec.der.decoder', 'pyasn1.compat', 'pyasn1.compat.binary', 'pyasn1.compat.calling', 'pyasn1.compat.dateandtime', 'pyasn1.compat.integer', 'pyasn1.compat.octets', 'pyasn1.compat.string', 'pyasn1.debug', 'pyasn1.error', 'pyasn1.type', 'pyasn1.type.base', 'pyasn1.type.char', 'pyasn1.type.constraint', 'pyasn1.type.error', 'pyasn1.type.namedtype', 'pyasn1.type.namedval', 'pyasn1.type.opentype', 'pyasn1.type.tag', 'pyasn1.type.tagmap', 'pyasn1.type.univ', 'pyasn1.type.useful', 'pyasn1_modules', 'pyasn1_modules.rfc2459', 'pydantic', 'pydantic._hypothesis_plugin', 'pydantic.annotated_types', 'pydantic.class_validators', 'pydantic.color', 'pydantic.dataclasses', 'pydantic.datetime_parse', 'pydantic.decorator', 'pydantic.env_settings', 'pydantic.error_wrappers', 'pydantic.errors', 'pydantic.fields', 'pydantic.json', 'pydantic.main', 'pydantic.networks', 'pydantic.parse', 'pydantic.schema', 'pydantic.tools', 'pydantic.types', 'pydantic.typing', 'pydantic.utils', 'pydantic.validators', 'pydantic.version', 'pyexpat.errors', 'pyexpat.model', 'pyfakefs', 'pyfakefs._version', 'pyfakefs.deprecator', 'pyfakefs.extra_packages', 'pyfakefs.fake_filesystem', 'pyfakefs.fake_filesystem_shutil', 'pyfakefs.fake_filesystem_unittest', 'pyfakefs.fake_pathlib', 'pyfakefs.fake_scandir', 'pyfakefs.helpers', 'pyfakefs.mox3_stubout', 'pyfakefs.patched_packages', 'pyfakefs.pytest_plugin', 'pytest', 'pytest.collect', 'pytest_aiohttp', 'pytest_asyncio', 'pytest_asyncio.plugin', 'pytest_benchmark', 'pytest_benchmark.compat', 'pytest_benchmark.fixture', 'pytest_benchmark.hookspec', 'pytest_benchmark.logger', 'pytest_benchmark.plugin', 'pytest_benchmark.session', 'pytest_benchmark.stats', 'pytest_benchmark.storage', 'pytest_benchmark.storage.file', 'pytest_benchmark.table', 'pytest_benchmark.timers', 'pytest_benchmark.utils', 'pytest_cases', 'pytest_cases._version', 'pytest_cases.case_funcs', 'pytest_cases.case_parametrizer_new', 'pytest_cases.common_mini_six', 'pytest_cases.common_others', 'pytest_cases.common_pytest', 'pytest_cases.common_pytest_lazy_values', 'pytest_cases.common_pytest_marks', 'pytest_cases.fixture__creation', 'pytest_cases.fixture_core1_unions', 'pytest_cases.fixture_core2', 'pytest_cases.fixture_parametrize_plus', 'pytest_cases.plugin', 'pytest_checkdocs', 'pytest_cov', 'pytest_cov.compat', 'pytest_cov.embed', 'pytest_cov.plugin', 'pytest_expect', 'pytest_expect.expect', 'pytest_fixture_config', 'pytest_flake8', 'pytest_forked', 'pytest_freezegun', 'pytest_httpbin', 'pytest_httpbin.certs', 'pytest_httpbin.plugin', 'pytest_httpbin.serve', 'pytest_isort', 'pytest_mock', 'pytest_mock._util', 'pytest_mock.plugin', 'pytest_rerunfailures', 'pytest_shutil', 'pytest_shutil.cmdline', 'pytest_shutil.run', 'pytest_shutil.workspace', 'pytest_timeout', 'pytest_toolbox', 'pytest_toolbox.main', 'pytest_toolbox.version', 'pytest_virtualenv', 'pytest_xprocess', 'pytz', 'pytz.exceptions', 'pytz.lazy', 'pytz.tzfile', 'pytz.tzinfo', 'raven', 'raven.base', 'raven.conf', 'raven.conf.defaults', 'raven.conf.remote', 'raven.contrib', 'raven.contrib.flask', 'raven.events', 'raven.exceptions', 'raven.handlers', 'raven.handlers.logging', 'raven.middleware', 'raven.transport', 'raven.transport.base', 'raven.transport.eventlet', 'raven.transport.exceptions', 'raven.transport.gevent', 'raven.transport.http', 'raven.transport.registry', 'raven.transport.requests', 'raven.transport.threaded', 'raven.transport.threaded_requests', 'raven.transport.tornado', 'raven.transport.twisted', 'raven.utils', 'raven.utils.basic', 'raven.utils.compat', 'raven.utils.conf', 'raven.utils.encoding', 'raven.utils.http', 'raven.utils.imports', 'raven.utils.json', 'raven.utils.serializer', 'raven.utils.serializer.base', 'raven.utils.serializer.manager', 'raven.utils.ssl_match_hostname', 'raven.utils.stacks', 'raven.utils.transaction', 'raven.utils.urlparse', 'raven.utils.wsgi', 'raven.versioning', 'repoze', 'repoze.sphinx', 'repoze.who', 'repoze.who.plugins', 'requests', 'requests.__version__', 'requests._internal_utils', 'requests.adapters', 'requests.api', 'requests.auth', 'requests.certs', 'requests.compat', 'requests.cookies', 'requests.exceptions', 'requests.hooks', 'requests.models', 'requests.packages', 'requests.packages.chardet', 'requests.packages.chardet.big5freq', 'requests.packages.chardet.big5prober', 'requests.packages.chardet.chardistribution', 'requests.packages.chardet.charsetgroupprober', 'requests.packages.chardet.charsetprober', 'requests.packages.chardet.codingstatemachine', 'requests.packages.chardet.cp949prober', 'requests.packages.chardet.enums', 'requests.packages.chardet.escprober', 'requests.packages.chardet.escsm', 'requests.packages.chardet.eucjpprober', 'requests.packages.chardet.euckrfreq', 'requests.packages.chardet.euckrprober', 'requests.packages.chardet.euctwfreq', 'requests.packages.chardet.euctwprober', 'requests.packages.chardet.gb2312freq', 'requests.packages.chardet.gb2312prober', 'requests.packages.chardet.hebrewprober', 'requests.packages.chardet.jisfreq', 'requests.packages.chardet.johabfreq', 'requests.packages.chardet.johabprober', 'requests.packages.chardet.jpcntx', 'requests.packages.chardet.langbulgarianmodel', 'requests.packages.chardet.langgreekmodel', 'requests.packages.chardet.langhebrewmodel', 'requests.packages.chardet.langrussianmodel', 'requests.packages.chardet.langthaimodel', 'requests.packages.chardet.langturkishmodel', 'requests.packages.chardet.latin1prober', 'requests.packages.chardet.mbcharsetprober', 'requests.packages.chardet.mbcsgroupprober', 'requests.packages.chardet.mbcssm', 'requests.packages.chardet.sbcharsetprober', 'requests.packages.chardet.sbcsgroupprober', 'requests.packages.chardet.sjisprober', 'requests.packages.chardet.universaldetector', 'requests.packages.chardet.utf8prober', 'requests.packages.chardet.version', 'requests.packages.idna', 'requests.packages.idna.core', 'requests.packages.idna.idnadata', 'requests.packages.idna.intranges', 'requests.packages.idna.package_data', 'requests.packages.urllib3', 'requests.packages.urllib3._collections', 'requests.packages.urllib3._version', 'requests.packages.urllib3.connection', 'requests.packages.urllib3.connectionpool', 'requests.packages.urllib3.contrib', 'requests.packages.urllib3.contrib._appengine_environ', 'requests.packages.urllib3.exceptions', 'requests.packages.urllib3.fields', 'requests.packages.urllib3.filepost', 'requests.packages.urllib3.packages', 'requests.packages.urllib3.packages.six', 'requests.packages.urllib3.packages.six.moves', 'requests.packages.urllib3.packages.six.moves.http_client', 'requests.packages.urllib3.packages.six.moves.urllib', 'requests.packages.urllib3.packages.six.moves.urllib.parse', 'requests.packages.urllib3.packages.ssl_match_hostname', 'requests.packages.urllib3.poolmanager', 'requests.packages.urllib3.request', 'requests.packages.urllib3.response', 'requests.packages.urllib3.util', 'requests.packages.urllib3.util.connection', 'requests.packages.urllib3.util.proxy', 'requests.packages.urllib3.util.queue', 'requests.packages.urllib3.util.request', 'requests.packages.urllib3.util.response', 'requests.packages.urllib3.util.retry', 'requests.packages.urllib3.util.ssl_', 'requests.packages.urllib3.util.ssltransport', 'requests.packages.urllib3.util.timeout', 'requests.packages.urllib3.util.url', 'requests.packages.urllib3.util.wait', 'requests.sessions', 'requests.status_codes', 'requests.structures', 'requests.utils', 'requests_mock', 'requests_mock.adapter', 'requests_mock.compat', 'requests_mock.contrib', 'requests_mock.contrib._pytest_plugin', 'requests_mock.exceptions', 'requests_mock.mocker', 'requests_mock.request', 'requests_mock.response', 'service_identity', 'service_identity._common', 'service_identity._compat', 'service_identity.cryptography', 'service_identity.exceptions', 'service_identity.pyopenssl', 'simplejson', 'simplejson._speedups', 'simplejson.compat', 'simplejson.decoder', 'simplejson.encoder', 'simplejson.errors', 'simplejson.raw_json', 'simplejson.scanner', 'six', 'six.moves', 'six.moves.urllib', 'six.moves.urllib.parse', 'socks', 'sortedcontainers', 'sortedcontainers.sorteddict', 'sortedcontainers.sortedlist', 'sortedcontainers.sortedset', 'sphinxcontrib', 'text_unidecode', 'toml', 'toml.decoder', 'toml.encoder', 'toml.tz', 'tornado', 'tornado.concurrent', 'tornado.escape', 'tornado.gen', 'tornado.httpclient', 'tornado.httputil', 'tornado.ioloop', 'tornado.log', 'tornado.speedups', 'tornado.util', 'twisted', 'twisted._threads', 'twisted._threads._convenience', 'twisted._threads._ithreads', 'twisted._threads._memory', 'twisted._threads._pool', 'twisted._threads._team', 'twisted._threads._threadworker', 'twisted._version', 'twisted.cred', 'twisted.cred._digest', 'twisted.cred.credentials', 'twisted.cred.error', 'twisted.internet', 'twisted.internet._baseprocess', 'twisted.internet._idna', 'twisted.internet._newtls', 'twisted.internet._posixstdio', 'twisted.internet._producer_helpers', 'twisted.internet._resolver', 'twisted.internet._sslverify', 'twisted.internet.abstract', 'twisted.internet.address', 'twisted.internet.base', 'twisted.internet.defer', 'twisted.internet.endpoints', 'twisted.internet.error', 'twisted.internet.fdesc', 'twisted.internet.interfaces', 'twisted.internet.main', 'twisted.internet.process', 'twisted.internet.protocol', 'twisted.internet.ssl', 'twisted.internet.stdio', 'twisted.internet.task', 'twisted.internet.tcp', 'twisted.internet.threads', 'twisted.logger', 'twisted.logger._buffer', 'twisted.logger._capture', 'twisted.logger._file', 'twisted.logger._filter', 'twisted.logger._flatten', 'twisted.logger._format', 'twisted.logger._global', 'twisted.logger._interfaces', 'twisted.logger._io', 'twisted.logger._json', 'twisted.logger._legacy', 'twisted.logger._levels', 'twisted.logger._logger', 'twisted.logger._observer', 'twisted.logger._stdlib', 'twisted.plugin', 'twisted.protocols', 'twisted.protocols.basic', 'twisted.protocols.policies', 'twisted.protocols.tls', 'twisted.python', 'twisted.python._tzhelper', 'twisted.python.compat', 'twisted.python.components', 'twisted.python.context', 'twisted.python.deprecate', 'twisted.python.failure', 'twisted.python.filepath', 'twisted.python.lockfile', 'twisted.python.log', 'twisted.python.modules', 'twisted.python.randbytes', 'twisted.python.reflect', 'twisted.python.runtime', 'twisted.python.systemd', 'twisted.python.threadable', 'twisted.python.threadpool', 'twisted.python.util', 'twisted.python.versions', 'twisted.python.win32', 'twisted.python.zippath', 'twisted.web', 'twisted.web._newclient', 'twisted.web._responses', 'twisted.web.client', 'twisted.web.error', 'twisted.web.http', 'twisted.web.http_headers', 'twisted.web.iweb', 'typing_extensions', 'umsgpack', 'urllib3', 'urllib3._collections', 'urllib3._version', 'urllib3.connection', 'urllib3.connectionpool', 'urllib3.contrib', 'urllib3.contrib._appengine_environ', 'urllib3.contrib.socks', 'urllib3.exceptions', 'urllib3.fields', 'urllib3.filepost', 'urllib3.packages', 'urllib3.packages.six', 'urllib3.packages.six.moves', 'urllib3.packages.six.moves.http_client', 'urllib3.packages.six.moves.urllib', 'urllib3.packages.six.moves.urllib.parse', 'urllib3.packages.ssl_match_hostname', 'urllib3.poolmanager', 'urllib3.request', 'urllib3.response', 'urllib3.util', 'urllib3.util.connection', 'urllib3.util.proxy', 'urllib3.util.queue', 'urllib3.util.request', 'urllib3.util.response', 'urllib3.util.retry', 'urllib3.util.ssl_', 'urllib3.util.ssltransport', 'urllib3.util.timeout', 'urllib3.util.url', 'urllib3.util.wait', 'werkzeug', 'werkzeug._internal', 'werkzeug.datastructures', 'werkzeug.exceptions', 'werkzeug.filesystem', 'werkzeug.formparser', 'werkzeug.http', 'werkzeug.local', 'werkzeug.routing', 'werkzeug.sansio', 'werkzeug.sansio.multipart', 'werkzeug.sansio.request', 'werkzeug.sansio.response', 'werkzeug.sansio.utils', 'werkzeug.security', 'werkzeug.serving', 'werkzeug.test', 'werkzeug.urls', 'werkzeug.user_agent', 'werkzeug.useragents', 'werkzeug.utils', 'werkzeug.wrappers', 'werkzeug.wrappers.accept', 'werkzeug.wrappers.auth', 'werkzeug.wrappers.base_request', 'werkzeug.wrappers.base_response', 'werkzeug.wrappers.common_descriptors', 'werkzeug.wrappers.etag', 'werkzeug.wrappers.json', 'werkzeug.wrappers.request', 'werkzeug.wrappers.response', 'werkzeug.wrappers.user_agent', 'werkzeug.wsgi', 'xdist', 'xdist._version', 'xdist.looponfail', 'xdist.newhooks', 'xdist.plugin', 'xprocess', 'yarl', 'yarl._quoting', 'yarl._quoting_c', 'yarl._url', 'zipp', 'zope', 'zope.interface', 'zope.interface._compat', 'zope.interface._zope_interface_coptimizations', 'zope.interface.adapter', 'zope.interface.advice', 'zope.interface.declarations', 'zope.interface.exceptions', 'zope.interface.interface', 'zope.interface.interfaces', 'zope.interface.ro'] is not false

tests/test_basic.py:95: AssertionError
__________________________________________________________________ TestSysModules.test_preloaded_packages __________________________________________________________________

self = <tests.test_basic.TestSysModules testMethod=test_preloaded_packages>

    def test_preloaded_packages(self):
        """Check all top level stdlib packages are recognised."""
        not_stdlib = set()
        for module_name in sys.modules:
            pkg, _, module = module_name.partition(".")

            # https://github.com/jackmaney/python-stdlib-list/issues/29
            if pkg.startswith("_sysconfigdata_"):
                continue

            if pkg in self.ignore_list:
                continue

            # Avoid duplicating errors covered by other tests
            if pkg in sys.builtin_module_names:
                continue

            if pkg not in self.list:
                not_stdlib.add(pkg)

>       self.assertFalse(sorted(not_stdlib))
E       AssertionError: ['OpenSSL', '__mp_main__', '_bcrypt', '_brotli', '_cffi_backend', '_cython_0_29_15', '_cython_0_29_22', '_openssl', '_pytest', 'aiohttp', 'aspectlib', 'async_timeout', 'attr', 'bcrypt', 'betamax', 'blinker', 'brotli', 'case', 'certifi', 'chardet', 'click', 'colorama', 'constantly', 'coverage', 'cryptography', 'cython_runtime', 'dateutil', 'decopatch', 'decorator', 'django', 'docutils', 'execnet', 'faker', 'flake8', 'flaky', 'flask', 'freezegun', 'gevent', 'greenlet', 'h2', 'httpbin', 'hyperframe', 'hypothesis', 'idna', 'importlib_metadata', 'incremental', 'iniconfig', 'isort', 'itsdangerous', 'jinja2', 'makefun', 'markupsafe', 'mock', 'multidict', 'nose', 'numpy', 'pandas', 'paste', 'path', 'pep517', 'pkg_resources', 'pluggy', 'priority', 'psutil', 'purl', 'py', 'pyasn1', 'pyasn1_modules', 'pydantic', 'pyfakefs', 'pytest', 'pytest_aiohttp', 'pytest_asyncio', 'pytest_benchmark', 'pytest_cases', 'pytest_checkdocs', 'pytest_cov', 'pytest_expect', 'pytest_fixture_config', 'pytest_flake8', 'pytest_forked', 'pytest_freezegun', 'pytest_httpbin', 'pytest_isort', 'pytest_mock', 'pytest_rerunfailures', 'pytest_shutil', 'pytest_timeout', 'pytest_toolbox', 'pytest_virtualenv', 'pytest_xprocess', 'pytz', 'raven', 'repoze', 'requests', 'requests_mock', 'service_identity', 'simplejson', 'six', 'socks', 'sortedcontainers', 'sphinxcontrib', 'text_unidecode', 'toml', 'tornado', 'twisted', 'typing_extensions', 'umsgpack', 'urllib3', 'werkzeug', 'xdist', 'xprocess', 'yarl', 'zipp', 'zope'] is not false

tests/test_basic.py:62: AssertionError
========================================================================= short test summary info ==========================================================================
FAILED tests/test_basic.py::TestSysModules::test_preloaded_modules - AssertionError: ['OpenSSL', 'OpenSSL.SSL', 'OpenSSL._util', 'OpenSSL.crypto', 'OpenSSL.version', '__...
FAILED tests/test_basic.py::TestSysModules::test_preloaded_packages - AssertionError: ['OpenSSL', '__mp_main__', '_bcrypt', '_brotli', '_cffi_backend', '_cython_0_29_15'...
======================================================================= 2 failed, 7 passed in 6.91s ========================================================================

There seems to be packages that are missing in Python Module Index

Hello, great package!

I refrain from naming any module the same as python standard module. So I scraped from Python Module Index site
and I recently found your module so I check my result with your result.

I scraped from
https://docs.python.org/3.8/py-modindex.html

and see the difference from what the this package has.

Here is whole bunch of modules that are missing in Python Module Index(v3.8) but exist in what I got from stdlib_list("3.8")

{'_abc',
'_ast',
'_asyncio',
'_bisect',
'_blake2',
'_bootlocale',
'_bz2',
'_codecs',
'_codecs_cn',
'_codecs_hk',
'_codecs_iso2022',
'_codecs_jp',
'_codecs_kr',
'_codecs_tw',
'_collections',
'_collections_abc',
'_compat_pickle',
'_compression',
'_contextvars',
'_crypt',
'_csv',
'_ctypes',
'_ctypes_test',
'_curses',
'_curses_panel',
'_datetime',
'_dbm',
'_decimal',
'_elementtree',
'_frozen_importlib',
'_frozen_importlib_external',
'_functools',
'_gdbm',
'_hashlib',
'_heapq',
'_imp',
'_io',
'_json',
'_locale',
'_lsprof',
'_lzma',
'_markupbase',
'_md5',
'_multibytecodec',
'_multiprocessing',
'_opcode',
'_operator',
'_osx_support',
'_pickle',
'_posixshmem',
'_posixsubprocess',
'_py_abc',
'_pydecimal',
'_pyio',
'_queue',
'_random',
'_sha1',
'_sha256',
'_sha3',
'_sha512',
'_signal',
'_sitebuiltins',
'_socket',
'_sqlite3',
'_sre',
'_ssl',
'_stat',
'_statistics',
'_string',
'_strptime',
'_struct',
'_symtable',
'_testbuffer',
'_testcapi',
'_testimportmultiple',
'_testinternalcapi',
'_testmultiphase',
'_threading_local',
'_tkinter',
'_tracemalloc',
'_uuid',
'_warnings',
'_weakref',
'_weakrefset',
'_xxsubinterpreters',
'_xxtestfuzz',
'antigravity',
'genericpath',
'idlelib',
'ntpath',
'nturl2path',
'opcode',
'posixpath',
'pydoc_data',
'pyexpat',
'sre_compile',
'sre_constants',
'sre_parse',
'this',
'xxlimited',
'xxsubtype'}

It might be that python has upgraded in 3.8.

Avoid failing if __file__ doesnt exist / PyOxidizer support

PyOxidizer breaks on stdlib-list as it doesnt provide __file__ See indygreg/PyOxidizer#69 for more info about why, but the tl;dr version is __file__ is an optional attribute and should not be relied upon.

e.g. at the moment this is what it looks like

>>> import depfinder
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "depfinder", line 34, in <module>
  File "depfinder.main", line 41, in <module>
  File "stdlib_list", line 6, in <module>
  File "stdlib_list.base", line 6, in <module>
NameError: name '__file__' is not defined

Document a module inclusion policy

The automated module list generation (e.g. #77, #78, #79) works, but it reveals some weaknesses:

  1. For older Python versions it uses the Sphinx inventory, meaning that modules that are no longer listed (or are listed in subtly different ways) appear to "disappear" when the list is updated;
  2. For all Python versions it uses the latest minor version, which may have its own (intentional) variations;
  3. It's fundamentally tied to the Python build itself, meaning that (currently) it won't correctly detect modules that are only defined on non-Linux hosts.

I'm not sure if there's a good way to solve all of these, but one thing we can do: rather than replacing the old list on each update, we can instead merge it, resulting in a list for each Python version that effectively represents the "superset" of everything seen so far.

The upside to this is that our lists will appear more complete; the downside is that it means that some modules will be "inaccurately" listed for a particular Python version, since the end user's host or minor version may not have those modules. On the other hand, it was never guaranteed that these names could be imported to begin with, so maybe that downside isn't so serious.

CC @miketheman for thoughts ๐Ÿ™‚

Why are some versions not included?

Any reason why 3.1.5, 3.0.1, and pre-2.6 aren't included? Also why no 3.9? I'd be happy to add these myself, I just want to make sure that there's not some reason that they aren't being included.

Also any reason that 2.6 is not checked in .travis.yml?

Cannot install on Python 3.6

Hi Team:

I'm getting the following error when I try to install stdlib-list package on Python 3.6

# pip3.6 install stdlib-list
Requirement already satisfied: stdlib-list in /usr/local/lib/python3.6/dist-packages (0.6.0)
Collecting functools32
  Using cached https://files.pythonhosted.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3.6 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-rgle_cwv/functools32/setup.py'"'"'; __file__='"'"'/tmp/pip-install-rgle_cwv/functools32/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-rgle_cwv/functools32/pip-egg-info
         cwd: /tmp/pip-install-rgle_cwv/functools32/
    Complete output (1 lines):
    This backport is for Python 2.7 only.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Did you drop python 3.6 support?

Support for Python 3.10

Can we get release for python 3.10?

This is a great tool! I am using it to include entire standard library to a single executable file since pyinstaller doesn't have this functionality. So far only this package keeps me from updating to the latest python version.

Related issue and pull request:
#44
#49

Broken permission in released stdlib-list-0.3.1.tar.gz

The tar.gz uploaded to pypi has very restrictive permission settings that make it unusable when installed as root as pip doesn't add group and other read permissions.

$ tar -tvf stdlib-list-0.3.1.tar.gz 
drwx------  0 dt203199 staff       0 24 Aug  2015 stdlib-list-0.3.1/
-rw-r--r--  0 dt203199 staff    1077 24 Aug  2015 stdlib-list-0.3.1/LICENSE
-rw-r--r--  0 dt203199 staff      77 24 Aug  2015 stdlib-list-0.3.1/MANIFEST.in
-rw-------  0 dt203199 staff    2496 24 Aug  2015 stdlib-list-0.3.1/PKG-INFO
-rw-r--r--  0 dt203199 staff    2023 24 Aug  2015 stdlib-list-0.3.1/README.rst
-rw-------  0 dt203199 staff      59 24 Aug  2015 stdlib-list-0.3.1/setup.cfg
-rw-r--r--  0 dt203199 staff     610 24 Aug  2015 stdlib-list-0.3.1/setup.py
drwx------  0 dt203199 staff       0 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/
-rw-------  0 dt203199 staff     564 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/__init__.py
-rw-------  0 dt203199 staff      22 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/_version.py
-rw-------  0 dt203199 staff     877 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/base.py
-rw-------  0 dt203199 staff    1845 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/fetch.py
drwx------  0 dt203199 staff       0 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/
-rw-r--r--  0 dt203199 staff    4720 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/2.6.txt
-rw-r--r--  0 dt203199 staff    4778 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/2.7.txt
-rw-r--r--  0 dt203199 staff    3486 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/3.2.txt
-rw-r--r--  0 dt203199 staff    3590 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/3.3.txt
-rw-r--r--  0 dt203199 staff    3663 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/3.4.txt
-rw-------  0 dt203199 staff    3692 24 Aug  2015 stdlib-list-0.3.1/stdlib_list/lists/3.5.txt
drwx------  0 dt203199 staff       0 24 Aug  2015 stdlib-list-0.3.1/stdlib_list.egg-info/
-rw-------  0 dt203199 staff       1 24 Aug  2015 stdlib-list-0.3.1/stdlib_list.egg-info/dependency_links.txt
-rw-------  0 dt203199 staff    2496 24 Aug  2015 stdlib-list-0.3.1/stdlib_list.egg-info/PKG-INFO
-rw-------  0 dt203199 staff       7 24 Aug  2015 stdlib-list-0.3.1/stdlib_list.egg-info/requires.txt
-rw-------  0 dt203199 staff     458 24 Aug  2015 stdlib-list-0.3.1/stdlib_list.egg-info/SOURCES.txt
-rw-------  0 dt203199 staff      12 24 Aug  2015 stdlib-list-0.3.1/stdlib_list.egg-info/top_level.txt

Please upload a release with group and other read permission for all files. Thanks.

Is the project abandoned?

There is a PR adding py37 support in #9 and some issues opened for it but there is no activity in the past months.

@jackmaney I'm willing to help if you still have in this project and I would like to avoid a fork. Would you be willing to add more contributors with merge rights here?

Get this into Python

There's a (rather inactive right now) PEP that would need to get a list like this into Python itself: PEP 534

Do you want to help incorporate a list of modules into Python 3.9+? This would mean either building it automatically, or at least automatically checking if it is still valid (on all platforms)?

cc @torsava

Suggestion: extract the module list from the Sphinx object inventory

This is a neat project, but rather than scraping the ToC HTML (which offers no backwards compatibility guarantees, and hence may break your page scanning in future versions), you may want to read the full module details from the automatically generated Sphinx object inventory ("objects.inv") instead. That's a standard Sphinx feature that allows intersphinx to link between projects based on object references rather than direct URLs.

The following script provides an example of reading a Sphinx inventory file directly and printing out all the contents: https://gist.github.com/epc/4118456

It may also be worth filing an RFE with the intersphinx project to either break the inventory reading out to an independent module, or at least to provide a public API that encapsulates the task of retrieving and parsing an object inventory independently of Sphinx itself.

/cc @birkenfeld

Some modules missing

Thanks, this is a really useful project. However, I've just tried classifying a list of loaded modules, and there are a number of standard library modules which weren't picked up. I think these are ones which aren't listed in the docs.

A few selected examples (there are others):

_hashlib
email.feedparser
encodings
encodings.utf_8
importlib._bootstrap
json.decoder
posixpath
sqlite3.dbapi2
sre_compile
typing.io  # Not a real module, but in sys.modules
xml.parsers

Maybe the answer is that the undocumented modules are out of scope for this project. I don't know of a good way to get a list including the undocumented ones. But it would be useful for my purposes to have such a list, so I'd be interested if we can figure out a way.

update pip install line to use 'stdlib-list' instead

Clearly not a huge deal, but trying to remove a little confusion.
From the docs
I got "pip install stdlib_list".
But if one searches for it like this:

pip search stdlib_list

It yields nothing. That got me confused.

If instead you search for 'stdlib-list', you can see it:

pip search stdlib-list

Add fetching plugins?

The current fetching code is great for when you don't have a particular Python version installed, but with Travis and Appveyor it should be possible to use the real interpreter. E.g. the following code gets a number of new modules, including undocumented and C-modules that the current fetching code doesn't find:

>>> import sys, os
>>> for module in {os.path.splitext(f)[0] for f in os.listdir('.') if f != 'antigravity'}:
...     try:
...         __import__(module)
...     except:
...         pass
...
<module 'abc' from 'C:\Python27\lib\abc.pyc'>
<module 'aifc' from 'aifc.py'>
<module 'anydbm' from 'anydbm.py'>
...
>>> sys.modules.keys()
['filecmp', 'heapq', 'code', 'curses.sys', 'distutils', 'ensurepip.sys', 'functools', 'random',
'_bisect', ...]

_bisect being such a module.

This method doesn't find other stdlib modules, e.g. new, so it can't be the only method. Perhaps a list of fetching plugins could create an initial list?

There are also a few other projects that have created lists of stdlib modules (e.g. https://github.com/timothycrosley/isort/blob/develop/isort/settings.py) -- we should incorporate these liberally ;-)

Can `stdlib_list(version)` default to the current version?

I think it would be convenient if this would work (on a python 2.7 installation):

from stdlib_list import stdlib_list
stdlib_list() == stdlib_list("2.7")

ie. that the version parameter defaults to the Python version you're running on, since creating that parameter is tedious and non-obvious:

stdlib_list('.'.join(str(x) for x in sys.version_info[:2]))

Generated module _sysconfigdata_...

Stdlib module sysconfig generates a cache called _sysconfigdata_... with an arch & build flags specific suffix.

This should be recognised as a stdlib package, but the flat file lists currently used dont lend themselves to this dynamic module name very well. Listing all possible suffixes seems like a bad approach.

possible missing packages for python 3.9 stdlib

Hi! Sorry if I'm missing something obvious, but I'm looking at the lists of python 3.X stdlib packages and they all keep incrementing with each version released, except for version 3.9 where it plummets to 886 lines compared to the 1766 lines in version 3.8

Are there any packages missing from the list of version 3.9? Or was there some sort of change in version 3.9 with how the stdlib works?

PS: thank you so much for your work on this project and on keeping it up to date!
I'm the new maintainer of pipreqs and I need to update our list of stdlib packages, this is saving so much of my time haha

Room in this project for Indexing Pypi too?

I know in in theory possible to index packages in pypi too. Would this project be open to work to index and store packages. In theory we could parse their api, and grab the packages variable out of setup.py

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.