commit
541f7c3247
@ -1,4 +1,4 @@
|
||||
<p>
|
||||
<br>
|
||||
<a class="github-button" href="https://github.com/dw/mitogen/" data-size="large" data-show-count="true" aria-label="Star dw/mitogen on GitHub">Star</a>
|
||||
<a class="github-button" href="https://github.com/mitogen-hq/mitogen/" data-size="large" data-show-count="true" aria-label="Star mitogen on GitHub">Star</a>
|
||||
</p>
|
||||
|
@ -1,3 +1,6 @@
|
||||
docutils<0.18
|
||||
Jinja2<3
|
||||
MarkupSafe<2.1
|
||||
Sphinx==2.1.2; python_version > '3.0'
|
||||
sphinxcontrib-programoutput==0.14; python_version > '3.0'
|
||||
alabaster==0.7.10; python_version > '3.0'
|
||||
|
@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Show permissions and identities that impact the current working directory.
|
||||
# On macOS libc cwd() can return EACCES after su or sudo.
|
||||
# See also
|
||||
# - https://github.com/ansible/ansible/pull/7078
|
||||
# - https://github.com/python/cpython/issues/115911
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
whoami
|
||||
groups
|
||||
pwd
|
||||
|
||||
d=$(pwd)
|
||||
while [[ "$d" != "/" && -n "$d" ]]; do
|
||||
ls -ld "$d"
|
||||
d=$(dirname "$d")
|
||||
done
|
||||
ls -ld /
|
@ -1,9 +1,12 @@
|
||||
# code: language=ini
|
||||
# vim: syntax=dosini
|
||||
|
||||
# When running the tests outside CI, make a single 'target' host which is the
|
||||
# local machine. The ansible_user override is necessary since some tests want a
|
||||
# fixed ansible.cfg remote_user setting to test against.
|
||||
target ansible_host=localhost ansible_user="{{lookup('env', 'USER')}}"
|
||||
# FIXME Hardcoded by replacement in some CI runs https://github.com/mitogen-hq/mitogen/issues/1022
|
||||
# and os.environ['USER'] is not populated on Azure macOS runners.
|
||||
target ansible_host=localhost ansible_user="{{ lookup('pipe', 'whoami') }}"
|
||||
|
||||
[test-targets]
|
||||
target
|
||||
|
@ -0,0 +1,12 @@
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import ansible.module_utils.external1
|
||||
|
||||
from ansible.module_utils.externalpkg.extmod import path as epem_path
|
||||
|
||||
def main():
|
||||
pass
|
@ -1 +1,2 @@
|
||||
- import_playbook: report.yml
|
||||
- import_playbook: report_controller.yml
|
||||
- import_playbook: report_targets.yml
|
||||
|
@ -0,0 +1,17 @@
|
||||
- name: Report controller parameters
|
||||
hosts: localhost
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- debug:
|
||||
msg:
|
||||
- ${ANSIBLE_STRATEGY}: "{{ lookup('env', 'ANSIBLE_STRATEGY') | default('<unset>') }}"
|
||||
- ${USER}: "{{ lookup('env', 'USER') | default('<unset>') }}"
|
||||
- $(groups): "{{ lookup('pipe', 'groups') }}"
|
||||
- $(pwd): "{{ lookup('pipe', 'pwd') }}"
|
||||
- $(whoami): "{{ lookup('pipe', 'whoami') }}"
|
||||
- ansible_run_tags: "{{ ansible_run_tags | default('<unset>') }}"
|
||||
- ansible_playbook_python: "{{ ansible_playbook_python | default('<unset>') }}"
|
||||
- ansible_skip_tags: "{{ ansible_skip_tags | default('<unset>') }}"
|
||||
- ansible_version.full: "{{ ansible_version.full | default('<unset>') }}"
|
||||
- is_mitogen: "{{ is_mitogen | default('<unset>') }}"
|
||||
- playbook_dir: "{{ playbook_dir | default('<unset>') }}"
|
@ -0,0 +1,80 @@
|
||||
import os.path
|
||||
import sys
|
||||
import textwrap
|
||||
import unittest
|
||||
|
||||
import ansible_mitogen.module_finder
|
||||
|
||||
import testlib
|
||||
|
||||
|
||||
class ScanFromListTest(testlib.TestCase):
|
||||
def test_absolute_imports(self):
|
||||
source = textwrap.dedent('''\
|
||||
from __future__ import absolute_import
|
||||
import a; import b.c; from d.e import f; from g import h, i
|
||||
''')
|
||||
code = compile(source, '<str>', 'exec')
|
||||
self.assertEqual(
|
||||
list(ansible_mitogen.module_finder.scan_fromlist(code)),
|
||||
[(0, '__future__.absolute_import'), (0, 'a'), (0, 'b.c'), (0, 'd.e.f'), (0, 'g.h'), (0, 'g.i')],
|
||||
)
|
||||
|
||||
|
||||
class WalkImportsTest(testlib.TestCase):
|
||||
def test_absolute_imports(self):
|
||||
source = textwrap.dedent('''\
|
||||
from __future__ import absolute_import
|
||||
import a; import b; import b.c; from b.d import e, f
|
||||
''')
|
||||
code = compile(source, '<str>', 'exec')
|
||||
|
||||
self.assertEqual(
|
||||
list(ansible_mitogen.module_finder.walk_imports(code)),
|
||||
['__future__', '__future__.absolute_import', 'a', 'b', 'b', 'b.c', 'b', 'b.d', 'b.d.e', 'b.d.f'],
|
||||
)
|
||||
self.assertEqual(
|
||||
list(ansible_mitogen.module_finder.walk_imports(code, prefix='b')),
|
||||
['b.c', 'b.d', 'b.d.e', 'b.d.f'],
|
||||
)
|
||||
|
||||
|
||||
class ScanTest(testlib.TestCase):
|
||||
module_name = 'ansible_module_module_finder_test__this_should_not_matter'
|
||||
module_path = os.path.join(testlib.ANSIBLE_MODULES_DIR, 'module_finder_test.py')
|
||||
search_path = (
|
||||
'does_not_exist/module_utils',
|
||||
testlib.ANSIBLE_MODULE_UTILS_DIR,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def relpath(path):
|
||||
return os.path.relpath(path, testlib.ANSIBLE_MODULE_UTILS_DIR)
|
||||
|
||||
@unittest.skipIf(sys.version_info < (3, 4), 'find spec() unavailable')
|
||||
def test_importlib_find_spec(self):
|
||||
scan = ansible_mitogen.module_finder._scan_importlib_find_spec
|
||||
actual = scan(self.module_name, self.module_path, self.search_path)
|
||||
self.assertEqual(
|
||||
[(name, self.relpath(path), is_pkg) for name, path, is_pkg in actual],
|
||||
[
|
||||
('ansible.module_utils.external1', 'external1.py', False),
|
||||
('ansible.module_utils.external2', 'external2.py', False),
|
||||
('ansible.module_utils.externalpkg', 'externalpkg/__init__.py', True),
|
||||
('ansible.module_utils.externalpkg.extmod', 'externalpkg/extmod.py',False),
|
||||
],
|
||||
)
|
||||
|
||||
@unittest.skipIf(sys.version_info >= (3, 4), 'find spec() preferred')
|
||||
def test_imp_find_module(self):
|
||||
scan = ansible_mitogen.module_finder._scan_imp_find_module
|
||||
actual = scan(self.module_name, self.module_path, self.search_path)
|
||||
self.assertEqual(
|
||||
[(name, self.relpath(path), is_pkg) for name, path, is_pkg in actual],
|
||||
[
|
||||
('ansible.module_utils.external1', 'external1.py', False),
|
||||
('ansible.module_utils.external2', 'external2.py', False),
|
||||
('ansible.module_utils.externalpkg', 'externalpkg/__init__.py', True),
|
||||
('ansible.module_utils.externalpkg.extmod', 'externalpkg/extmod.py',False),
|
||||
],
|
||||
)
|
@ -0,0 +1,186 @@
|
||||
{
|
||||
"find_related_imports": {
|
||||
"django.db": [
|
||||
"django",
|
||||
"django.core",
|
||||
"django.core.signals",
|
||||
"django.db.utils"
|
||||
],
|
||||
"django.db.models": [
|
||||
"django",
|
||||
"django.core.exceptions",
|
||||
"django.db",
|
||||
"django.db.models",
|
||||
"django.db.models.aggregates",
|
||||
"django.db.models.base",
|
||||
"django.db.models.deletion",
|
||||
"django.db.models.expressions",
|
||||
"django.db.models.fields",
|
||||
"django.db.models.fields.files",
|
||||
"django.db.models.fields.proxy",
|
||||
"django.db.models.fields.related",
|
||||
"django.db.models.indexes",
|
||||
"django.db.models.lookups",
|
||||
"django.db.models.manager",
|
||||
"django.db.models.query",
|
||||
"django.db.models.signals"
|
||||
]
|
||||
},
|
||||
"find_related": {
|
||||
"django.db": [
|
||||
"django",
|
||||
"django.conf",
|
||||
"django.conf.global_settings",
|
||||
"django.core",
|
||||
"django.core.exceptions",
|
||||
"django.core.signals",
|
||||
"django.db.utils",
|
||||
"django.dispatch",
|
||||
"django.dispatch.dispatcher",
|
||||
"django.dispatch.weakref_backports",
|
||||
"django.utils",
|
||||
"django.utils._os",
|
||||
"django.utils.deprecation",
|
||||
"django.utils.encoding",
|
||||
"django.utils.functional",
|
||||
"django.utils.inspect",
|
||||
"django.utils.lru_cache",
|
||||
"django.utils.module_loading",
|
||||
"django.utils.six",
|
||||
"django.utils.version"
|
||||
],
|
||||
"django.db.models": [
|
||||
"django",
|
||||
"django.apps",
|
||||
"django.apps.config",
|
||||
"django.apps.registry",
|
||||
"django.conf",
|
||||
"django.conf.global_settings",
|
||||
"django.core",
|
||||
"django.core.cache",
|
||||
"django.core.cache.backends",
|
||||
"django.core.cache.backends.base",
|
||||
"django.core.checks",
|
||||
"django.core.checks.caches",
|
||||
"django.core.checks.compatibility",
|
||||
"django.core.checks.compatibility.django_1_10",
|
||||
"django.core.checks.compatibility.django_1_8_0",
|
||||
"django.core.checks.database",
|
||||
"django.core.checks.messages",
|
||||
"django.core.checks.model_checks",
|
||||
"django.core.checks.registry",
|
||||
"django.core.checks.security",
|
||||
"django.core.checks.security.base",
|
||||
"django.core.checks.security.csrf",
|
||||
"django.core.checks.security.sessions",
|
||||
"django.core.checks.templates",
|
||||
"django.core.checks.urls",
|
||||
"django.core.checks.utils",
|
||||
"django.core.exceptions",
|
||||
"django.core.files",
|
||||
"django.core.files.base",
|
||||
"django.core.files.images",
|
||||
"django.core.files.locks",
|
||||
"django.core.files.move",
|
||||
"django.core.files.storage",
|
||||
"django.core.files.utils",
|
||||
"django.core.signals",
|
||||
"django.core.validators",
|
||||
"django.db",
|
||||
"django.db.backends",
|
||||
"django.db.backends.utils",
|
||||
"django.db.models.aggregates",
|
||||
"django.db.models.base",
|
||||
"django.db.models.constants",
|
||||
"django.db.models.deletion",
|
||||
"django.db.models.expressions",
|
||||
"django.db.models.fields",
|
||||
"django.db.models.fields.files",
|
||||
"django.db.models.fields.proxy",
|
||||
"django.db.models.fields.related",
|
||||
"django.db.models.fields.related_descriptors",
|
||||
"django.db.models.fields.related_lookups",
|
||||
"django.db.models.fields.reverse_related",
|
||||
"django.db.models.functions",
|
||||
"django.db.models.functions.base",
|
||||
"django.db.models.functions.datetime",
|
||||
"django.db.models.indexes",
|
||||
"django.db.models.lookups",
|
||||
"django.db.models.manager",
|
||||
"django.db.models.options",
|
||||
"django.db.models.query",
|
||||
"django.db.models.query_utils",
|
||||
"django.db.models.signals",
|
||||
"django.db.models.sql",
|
||||
"django.db.models.sql.constants",
|
||||
"django.db.models.sql.datastructures",
|
||||
"django.db.models.sql.query",
|
||||
"django.db.models.sql.subqueries",
|
||||
"django.db.models.sql.where",
|
||||
"django.db.models.utils",
|
||||
"django.db.transaction",
|
||||
"django.db.utils",
|
||||
"django.dispatch",
|
||||
"django.dispatch.dispatcher",
|
||||
"django.dispatch.weakref_backports",
|
||||
"django.forms",
|
||||
"django.forms.boundfield",
|
||||
"django.forms.fields",
|
||||
"django.forms.forms",
|
||||
"django.forms.formsets",
|
||||
"django.forms.models",
|
||||
"django.forms.renderers",
|
||||
"django.forms.utils",
|
||||
"django.forms.widgets",
|
||||
"django.template",
|
||||
"django.template.backends",
|
||||
"django.template.backends.base",
|
||||
"django.template.backends.django",
|
||||
"django.template.base",
|
||||
"django.template.context",
|
||||
"django.template.engine",
|
||||
"django.template.exceptions",
|
||||
"django.template.library",
|
||||
"django.template.loader",
|
||||
"django.template.utils",
|
||||
"django.templatetags",
|
||||
"django.templatetags.static",
|
||||
"django.utils",
|
||||
"django.utils._os",
|
||||
"django.utils.crypto",
|
||||
"django.utils.datastructures",
|
||||
"django.utils.dateformat",
|
||||
"django.utils.dateparse",
|
||||
"django.utils.dates",
|
||||
"django.utils.datetime_safe",
|
||||
"django.utils.deconstruct",
|
||||
"django.utils.decorators",
|
||||
"django.utils.deprecation",
|
||||
"django.utils.duration",
|
||||
"django.utils.encoding",
|
||||
"django.utils.formats",
|
||||
"django.utils.functional",
|
||||
"django.utils.html",
|
||||
"django.utils.html_parser",
|
||||
"django.utils.http",
|
||||
"django.utils.inspect",
|
||||
"django.utils.ipv6",
|
||||
"django.utils.itercompat",
|
||||
"django.utils.lru_cache",
|
||||
"django.utils.module_loading",
|
||||
"django.utils.numberformat",
|
||||
"django.utils.safestring",
|
||||
"django.utils.six",
|
||||
"django.utils.text",
|
||||
"django.utils.timezone",
|
||||
"django.utils.translation",
|
||||
"django.utils.tree",
|
||||
"django.utils.version",
|
||||
"pytz",
|
||||
"pytz.exceptions",
|
||||
"pytz.lazy",
|
||||
"pytz.tzfile",
|
||||
"pytz.tzinfo"
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,209 @@
|
||||
{
|
||||
"find_related_imports": {
|
||||
"django.db": [
|
||||
"django",
|
||||
"django.core",
|
||||
"django.core.signals",
|
||||
"django.db.utils",
|
||||
"django.utils.connection"
|
||||
],
|
||||
"django.db.models": [
|
||||
"django",
|
||||
"django.core.exceptions",
|
||||
"django.db",
|
||||
"django.db.models",
|
||||
"django.db.models.aggregates",
|
||||
"django.db.models.base",
|
||||
"django.db.models.constraints",
|
||||
"django.db.models.deletion",
|
||||
"django.db.models.enums",
|
||||
"django.db.models.expressions",
|
||||
"django.db.models.fields",
|
||||
"django.db.models.fields.files",
|
||||
"django.db.models.fields.json",
|
||||
"django.db.models.fields.proxy",
|
||||
"django.db.models.fields.related",
|
||||
"django.db.models.indexes",
|
||||
"django.db.models.lookups",
|
||||
"django.db.models.manager",
|
||||
"django.db.models.query",
|
||||
"django.db.models.query_utils",
|
||||
"django.db.models.signals"
|
||||
]
|
||||
},
|
||||
"find_related": {
|
||||
"django.db": [
|
||||
"asgiref",
|
||||
"asgiref.compatibility",
|
||||
"asgiref.current_thread_executor",
|
||||
"asgiref.local",
|
||||
"asgiref.sync",
|
||||
"django",
|
||||
"django.conf",
|
||||
"django.conf.global_settings",
|
||||
"django.core",
|
||||
"django.core.exceptions",
|
||||
"django.core.signals",
|
||||
"django.db.utils",
|
||||
"django.dispatch",
|
||||
"django.dispatch.dispatcher",
|
||||
"django.utils",
|
||||
"django.utils.connection",
|
||||
"django.utils.deprecation",
|
||||
"django.utils.functional",
|
||||
"django.utils.hashable",
|
||||
"django.utils.inspect",
|
||||
"django.utils.itercompat",
|
||||
"django.utils.module_loading",
|
||||
"django.utils.regex_helper",
|
||||
"django.utils.version"
|
||||
],
|
||||
"django.db.models": [
|
||||
"asgiref",
|
||||
"asgiref.compatibility",
|
||||
"asgiref.current_thread_executor",
|
||||
"asgiref.local",
|
||||
"asgiref.sync",
|
||||
"django",
|
||||
"django.apps",
|
||||
"django.apps.config",
|
||||
"django.apps.registry",
|
||||
"django.conf",
|
||||
"django.conf.global_settings",
|
||||
"django.conf.locale",
|
||||
"django.core",
|
||||
"django.core.cache",
|
||||
"django.core.cache.backends",
|
||||
"django.core.cache.backends.base",
|
||||
"django.core.cache.backends.filebased",
|
||||
"django.core.checks",
|
||||
"django.core.checks.async_checks",
|
||||
"django.core.checks.caches",
|
||||
"django.core.checks.database",
|
||||
"django.core.checks.messages",
|
||||
"django.core.checks.model_checks",
|
||||
"django.core.checks.registry",
|
||||
"django.core.checks.security",
|
||||
"django.core.checks.security.base",
|
||||
"django.core.checks.security.csrf",
|
||||
"django.core.checks.security.sessions",
|
||||
"django.core.checks.templates",
|
||||
"django.core.checks.translation",
|
||||
"django.core.checks.urls",
|
||||
"django.core.exceptions",
|
||||
"django.core.files",
|
||||
"django.core.files.base",
|
||||
"django.core.files.images",
|
||||
"django.core.files.locks",
|
||||
"django.core.files.move",
|
||||
"django.core.files.storage",
|
||||
"django.core.files.utils",
|
||||
"django.core.signals",
|
||||
"django.core.validators",
|
||||
"django.db",
|
||||
"django.db.backends",
|
||||
"django.db.backends.utils",
|
||||
"django.db.models.aggregates",
|
||||
"django.db.models.base",
|
||||
"django.db.models.constants",
|
||||
"django.db.models.constraints",
|
||||
"django.db.models.deletion",
|
||||
"django.db.models.enums",
|
||||
"django.db.models.expressions",
|
||||
"django.db.models.fields",
|
||||
"django.db.models.fields.files",
|
||||
"django.db.models.fields.json",
|
||||
"django.db.models.fields.mixins",
|
||||
"django.db.models.fields.proxy",
|
||||
"django.db.models.fields.related",
|
||||
"django.db.models.fields.related_descriptors",
|
||||
"django.db.models.fields.related_lookups",
|
||||
"django.db.models.fields.reverse_related",
|
||||
"django.db.models.functions",
|
||||
"django.db.models.functions.comparison",
|
||||
"django.db.models.functions.datetime",
|
||||
"django.db.models.functions.math",
|
||||
"django.db.models.functions.mixins",
|
||||
"django.db.models.functions.text",
|
||||
"django.db.models.functions.window",
|
||||
"django.db.models.indexes",
|
||||
"django.db.models.lookups",
|
||||
"django.db.models.manager",
|
||||
"django.db.models.options",
|
||||
"django.db.models.query",
|
||||
"django.db.models.query_utils",
|
||||
"django.db.models.signals",
|
||||
"django.db.models.sql",
|
||||
"django.db.models.sql.constants",
|
||||
"django.db.models.sql.datastructures",
|
||||
"django.db.models.sql.query",
|
||||
"django.db.models.sql.subqueries",
|
||||
"django.db.models.sql.where",
|
||||
"django.db.models.utils",
|
||||
"django.db.transaction",
|
||||
"django.db.utils",
|
||||
"django.dispatch",
|
||||
"django.dispatch.dispatcher",
|
||||
"django.forms",
|
||||
"django.forms.boundfield",
|
||||
"django.forms.fields",
|
||||
"django.forms.forms",
|
||||
"django.forms.formsets",
|
||||
"django.forms.models",
|
||||
"django.forms.renderers",
|
||||
"django.forms.utils",
|
||||
"django.forms.widgets",
|
||||
"django.template",
|
||||
"django.template.backends",
|
||||
"django.template.backends.base",
|
||||
"django.template.backends.django",
|
||||
"django.template.base",
|
||||
"django.template.context",
|
||||
"django.template.engine",
|
||||
"django.template.exceptions",
|
||||
"django.template.library",
|
||||
"django.template.loader",
|
||||
"django.template.utils",
|
||||
"django.templatetags",
|
||||
"django.templatetags.static",
|
||||
"django.utils",
|
||||
"django.utils._os",
|
||||
"django.utils.autoreload",
|
||||
"django.utils.connection",
|
||||
"django.utils.crypto",
|
||||
"django.utils.datastructures",
|
||||
"django.utils.dateformat",
|
||||
"django.utils.dateparse",
|
||||
"django.utils.dates",
|
||||
"django.utils.datetime_safe",
|
||||
"django.utils.deconstruct",
|
||||
"django.utils.deprecation",
|
||||
"django.utils.duration",
|
||||
"django.utils.encoding",
|
||||
"django.utils.formats",
|
||||
"django.utils.functional",
|
||||
"django.utils.hashable",
|
||||
"django.utils.html",
|
||||
"django.utils.http",
|
||||
"django.utils.inspect",
|
||||
"django.utils.ipv6",
|
||||
"django.utils.itercompat",
|
||||
"django.utils.module_loading",
|
||||
"django.utils.numberformat",
|
||||
"django.utils.regex_helper",
|
||||
"django.utils.safestring",
|
||||
"django.utils.text",
|
||||
"django.utils.timezone",
|
||||
"django.utils.topological_sort",
|
||||
"django.utils.translation",
|
||||
"django.utils.translation.trans_real",
|
||||
"django.utils.tree",
|
||||
"django.utils.version",
|
||||
"pytz",
|
||||
"pytz.exceptions",
|
||||
"pytz.lazy",
|
||||
"pytz.tzfile",
|
||||
"pytz.tzinfo"
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,208 @@
|
||||
{
|
||||
"find_related_imports": {
|
||||
"django.db": [
|
||||
"django",
|
||||
"django.core",
|
||||
"django.core.signals",
|
||||
"django.db.utils",
|
||||
"django.utils.connection"
|
||||
],
|
||||
"django.db.models": [
|
||||
"django",
|
||||
"django.core.exceptions",
|
||||
"django.db",
|
||||
"django.db.models",
|
||||
"django.db.models.aggregates",
|
||||
"django.db.models.base",
|
||||
"django.db.models.constraints",
|
||||
"django.db.models.deletion",
|
||||
"django.db.models.enums",
|
||||
"django.db.models.expressions",
|
||||
"django.db.models.fields",
|
||||
"django.db.models.fields.files",
|
||||
"django.db.models.fields.json",
|
||||
"django.db.models.fields.proxy",
|
||||
"django.db.models.fields.related",
|
||||
"django.db.models.indexes",
|
||||
"django.db.models.lookups",
|
||||
"django.db.models.manager",
|
||||
"django.db.models.query",
|
||||
"django.db.models.query_utils",
|
||||
"django.db.models.signals"
|
||||
]
|
||||
},
|
||||
"find_related": {
|
||||
"django.db": [
|
||||
"asgiref",
|
||||
"asgiref.current_thread_executor",
|
||||
"asgiref.local",
|
||||
"asgiref.sync",
|
||||
"django",
|
||||
"django.conf",
|
||||
"django.conf.global_settings",
|
||||
"django.core",
|
||||
"django.core.exceptions",
|
||||
"django.core.signals",
|
||||
"django.db.utils",
|
||||
"django.dispatch",
|
||||
"django.dispatch.dispatcher",
|
||||
"django.utils",
|
||||
"django.utils.connection",
|
||||
"django.utils.deprecation",
|
||||
"django.utils.functional",
|
||||
"django.utils.hashable",
|
||||
"django.utils.inspect",
|
||||
"django.utils.itercompat",
|
||||
"django.utils.module_loading",
|
||||
"django.utils.regex_helper",
|
||||
"django.utils.version"
|
||||
],
|
||||
"django.db.models": [
|
||||
"asgiref",
|
||||
"asgiref.current_thread_executor",
|
||||
"asgiref.local",
|
||||
"asgiref.sync",
|
||||
"django",
|
||||
"django.apps",
|
||||
"django.apps.config",
|
||||
"django.apps.registry",
|
||||
"django.conf",
|
||||
"django.conf.global_settings",
|
||||
"django.conf.locale",
|
||||
"django.core",
|
||||
"django.core.cache",
|
||||
"django.core.cache.backends",
|
||||
"django.core.cache.backends.base",
|
||||
"django.core.cache.backends.filebased",
|
||||
"django.core.checks",
|
||||
"django.core.checks.async_checks",
|
||||
"django.core.checks.caches",
|
||||
"django.core.checks.database",
|
||||
"django.core.checks.messages",
|
||||
"django.core.checks.model_checks",
|
||||
"django.core.checks.registry",
|
||||
"django.core.checks.security",
|
||||
"django.core.checks.security.base",
|
||||
"django.core.checks.security.csrf",
|
||||
"django.core.checks.security.sessions",
|
||||
"django.core.checks.templates",
|
||||
"django.core.checks.translation",
|
||||
"django.core.checks.urls",
|
||||
"django.core.exceptions",
|
||||
"django.core.files",
|
||||
"django.core.files.base",
|
||||
"django.core.files.images",
|
||||
"django.core.files.locks",
|
||||
"django.core.files.move",
|
||||
"django.core.files.storage",
|
||||
"django.core.files.utils",
|
||||
"django.core.signals",
|
||||
"django.core.validators",
|
||||
"django.db",
|
||||
"django.db.backends",
|
||||
"django.db.backends.utils",
|
||||
"django.db.models.aggregates",
|
||||
"django.db.models.base",
|
||||
"django.db.models.constants",
|
||||
"django.db.models.constraints",
|
||||
"django.db.models.deletion",
|
||||
"django.db.models.enums",
|
||||
"django.db.models.expressions",
|
||||
"django.db.models.fields",
|
||||
"django.db.models.fields.files",
|
||||
"django.db.models.fields.json",
|
||||
"django.db.models.fields.mixins",
|
||||
"django.db.models.fields.proxy",
|
||||
"django.db.models.fields.related",
|
||||
"django.db.models.fields.related_descriptors",
|
||||
"django.db.models.fields.related_lookups",
|
||||
"django.db.models.fields.reverse_related",
|
||||
"django.db.models.functions",
|
||||
"django.db.models.functions.comparison",
|
||||
"django.db.models.functions.datetime",
|
||||
"django.db.models.functions.math",
|
||||
"django.db.models.functions.mixins",
|
||||
"django.db.models.functions.text",
|
||||
"django.db.models.functions.window",
|
||||
"django.db.models.indexes",
|
||||
"django.db.models.lookups",
|
||||
"django.db.models.manager",
|
||||
"django.db.models.options",
|
||||
"django.db.models.query",
|
||||
"django.db.models.query_utils",
|
||||
"django.db.models.signals",
|
||||
"django.db.models.sql",
|
||||
"django.db.models.sql.constants",
|
||||
"django.db.models.sql.datastructures",
|
||||
"django.db.models.sql.query",
|
||||
"django.db.models.sql.subqueries",
|
||||
"django.db.models.sql.where",
|
||||
"django.db.models.utils",
|
||||
"django.db.transaction",
|
||||
"django.db.utils",
|
||||
"django.dispatch",
|
||||
"django.dispatch.dispatcher",
|
||||
"django.forms",
|
||||
"django.forms.boundfield",
|
||||
"django.forms.fields",
|
||||
"django.forms.forms",
|
||||
"django.forms.formsets",
|
||||
"django.forms.models",
|
||||
"django.forms.renderers",
|
||||
"django.forms.utils",
|
||||
"django.forms.widgets",
|
||||
"django.template",
|
||||
"django.template.backends",
|
||||
"django.template.backends.base",
|
||||
"django.template.backends.django",
|
||||
"django.template.base",
|
||||
"django.template.context",
|
||||
"django.template.engine",
|
||||
"django.template.exceptions",
|
||||
"django.template.library",
|
||||
"django.template.loader",
|
||||
"django.template.utils",
|
||||
"django.templatetags",
|
||||
"django.templatetags.static",
|
||||
"django.utils",
|
||||
"django.utils._os",
|
||||
"django.utils.autoreload",
|
||||
"django.utils.connection",
|
||||
"django.utils.crypto",
|
||||
"django.utils.datastructures",
|
||||
"django.utils.dateformat",
|
||||
"django.utils.dateparse",
|
||||
"django.utils.dates",
|
||||
"django.utils.datetime_safe",
|
||||
"django.utils.deconstruct",
|
||||
"django.utils.deprecation",
|
||||
"django.utils.duration",
|
||||
"django.utils.encoding",
|
||||
"django.utils.formats",
|
||||
"django.utils.functional",
|
||||
"django.utils.hashable",
|
||||
"django.utils.html",
|
||||
"django.utils.http",
|
||||
"django.utils.inspect",
|
||||
"django.utils.ipv6",
|
||||
"django.utils.itercompat",
|
||||
"django.utils.module_loading",
|
||||
"django.utils.numberformat",
|
||||
"django.utils.regex_helper",
|
||||
"django.utils.safestring",
|
||||
"django.utils.text",
|
||||
"django.utils.timezone",
|
||||
"django.utils.topological_sort",
|
||||
"django.utils.translation",
|
||||
"django.utils.translation.trans_real",
|
||||
"django.utils.tree",
|
||||
"django.utils.version",
|
||||
"pytz",
|
||||
"pytz.exceptions",
|
||||
"pytz.lazy",
|
||||
"pytz.tzfile",
|
||||
"pytz.tzinfo"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,4 @@
|
||||
tox==3.28; python_version == '2.7'
|
||||
tox==3.28; python_version == '3.6'
|
||||
tox==4.8.0; python_version == '3.7'
|
||||
tox>=4.13.0,~=4.0; python_version >= '3.8'
|
Loading…
Reference in New Issue