pypi / stdlib-list Goto Github PK
View Code? Open in Web Editor NEWA list of Python Standard Libraries (2.6-7, 3.2-12).
Home Page: https://pypi.org/project/stdlib-list/
License: MIT License
A list of Python Standard Libraries (2.6-7, 3.2-12).
Home Page: https://pypi.org/project/stdlib-list/
License: MIT License
Right now installing stdlib-list just to access the list brings in a huge batch of dependencies that are only needed if you want to update the list.
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.
@jackmaney Thanks for this package! We are using it at https://github.com/reinout/z3c.dependencychecker and it is great! ๐ฏ
It would be nice if there could be a new release with support for 3.10 and 3.11 ๐คฉ
I could try to help if given instructions or permissions on pypi.
Are there any blockers that prevent such a release? Or is mostly available time? ๐
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.
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...)
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
Tracking for myself.
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?
HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/
PyPI upload failed.
failed to deploy
full log: https://travis-ci.com/jackmaney/python-stdlib-list/jobs/158283383
I'm looking into this and I'll make a manually upload for now.
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.
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?
Thanks for this great package, it was a relief to find it: indeed in my package getversion
I needed a reliable way to detect if a module is built-in so as to return the system version in that case. I ended up creating a method for this: https://github.com/smarie/python-getversion/blob/master/getversion/plugin_builtins.py
However it would seem much more natural that it is in stdlib-list
, dont you think?
Tracking task for myself: the Travis-based CI should be rewritten.
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.
https://www.pypy.org/ has a slightly different set of builtins.
Other interpreters/implementations will also have differences.
Will this project allow lists for other implementations?
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
This will be a codegen task.
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
Just normal build, install and test cycle used on building package from non-root account:
+ 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 ========================================================================
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).
+ /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.
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?
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 ;-)
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.
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
?
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
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?
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
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.
My understanding (as one of four PyPI admins) is as follows:
stdlib-list
hadn't seen a release in multiple years and was recently archived: pypi/warehouse#13886@jackmaney
. This outreach included @woodruffw and 2/4 PyPI admins @di and @dstufft@jackmaney
successfully transferred the project to the pypi GitHub org via @dstufft@jackmaney
gave affirmative permission for @dstufft to transfer the project to the pypi PyPI orgThis isn't how this should have gone and its clear that there were oversights in this process:
@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.
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
>>> stdlib_list.stdlib_list('3.7')
ValueError: No such version: 3.7
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]))
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
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.
3.8 is out and I really miss it's support in this library. :)
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.
This was reported in https://bugzilla.redhat.com/show_bug.cgi?id=1897245 . It seems 3.10
is missing from long_versions variable as I can see from previous PR that added 3.9 : eec6d91
The automated module list generation (e.g. #77, #78, #79) works, but it reveals some weaknesses:
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 ๐
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.