MIT

Identifier: MIT_airportsdata_20241001

# Project metadata, including build by setuptools # See https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html # TOML syntax at https://toml.io/en/ [build-system] # Minimum requirements for the build system to execute. requires = ['setuptools'] # PEP 508 specifications. # Setuptools specification build-backend = "setuptools.build_meta" [project] # See https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ dynamic = ['version', 'dependencies'] name = 'airportsdata' description = """\ Extensive database of location and timezone data for nearly every airport and landing strip in the world.\ """ readme = { file = 'README.rst', content-type = 'text/x-rst' } requires-python = '>=3.9' license = { file = 'LICENSE' } authors = [{ name = 'Mike Borsetti', email = 'mike+airportsdata@borsetti.com' }] maintainers = [ { name = 'Mike Borsetti', email = 'mike+airportsdata@borsetti.com' }, ] keywords = ['airports', 'aerodromes', 'ICAO', 'IATA'] classifiers = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3 :: Only', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', 'Programming Language :: Python :: Implementation :: CPython', 'Typing :: Typed', ] [project.urls] Documentation = 'https://github.com/mborsetti/airportsdata/blob/main/README.rst' Repository = 'https://github.com/mborsetti/airportsdata/' 'Database (csv)' = 'https://github.com/mborsetti/airportsdata/blob/main/airportsdata/airports.csv' Changelog = 'https://github.com/mborsetti/airportsdata/blob/main/CHANGELOG.rst' Issues = 'https://github.com/mborsetti/airportsdata/issues' CI = 'https://github.com/mborsetti/airportsdata/actions' # -------------------------- setuptools -------------------------- # Called by build # See https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html [tool.setuptools] packages = ['airportsdata'] [tool.setuptools.dynamic] version = { attr = 'airportsdata.__version__' } dependencies = { file = 'requirements.txt' } [tool.setuptools.package-data] 'airportsdata' = ['py.typed'] # -------------------------- coverage -------------------------- # Runs in Github Actions (see .github/workflows/ci-cd.yaml) and in tox (see tox.ini). # Config file documentation at https://coverage.readthedocs.io/en/latest/config.html [tool.coverage.run] branch = true source = ['.'] omit = [ '.*/*', 'build/*', 'dist/*', 'docs/*', 'htmlcov/*', 'pip/*', 'tests/*', 'airportsdata.egg-info/*', ] relative_files = true command_line = '-m pytest -v' parallel = true [tool.coverage.report] # Regexes for lines to exclude from consideration exclude_lines = [ # Don't complain about missing debug-only code: 'def __repr__', 'if self\.debug:', # Have to re-enable the standard pragma 'pragma: no cover', # Don't complain if tests don't hit defensive assertion code: 'raise AssertionError', 'raise NotImplementedError', # Don't complain if non-runnable code isn't run: 'if 0:', 'if __name__ == .__main__.:', # Don't complain if module is not importable (handled by code): 'except ImportError:', # Don't cover IDE code: 'if TYPE_CHECKING:', ] # ignore_errors = true # -------------------------- pytest -------------------------- # Testing framework # Config file documentation at https://docs.pytest.org/en/stable/reference/reference.html#ini-options-ref [tool.pytest.ini_options] log_auto_indent = true # Enable log display during test run (aka "live logging" https://docs.pytest.org/en/stable/logging.html#live-logs) log_cli = true minversion = '8.3.3' testpaths = ['tests'] # Adds pytest-cov functionality (see https://pytest-cov.readthedocs.io/en/latest/config.html) # Note: --cov moved to .github/workflows/ci-cd.yaml and tox.ini due to interference with PyCharm breakpoints (see # https://github.com/pytest-dev/pytest-cov/issues/131) and to enable running tox --parallel # Instead of below, now runs with $ coverage run --parallel-mode # addopts = --cov=./ --cov-report=term --cov-report=html # -------------------------- mypy -------------------------- [tool.mypy] # Static Typing for Python # Runs as part of pre-commit # Config file documentation at https://mypy.readthedocs.io/en/stable/config_file.html # Disables import discovery of namespace packages (see PEP 420) # namespace_packages = false # Top-level packages will be based in either the current directory, or a member of the MYPYPATH environment variable or # mypy_path config option. This option is only useful in the absence of __init__.py. See Mapping file paths to modules # for details. explicit_package_bases = true mypy_path = "C:\\users\\mike\\Documents\\python\\git_repos\\webchanges" # Suppresses error messages about imports that cannot be resolved. ignore_missing_imports = false # Specifies the Python version used to parse and check the target program. # python_version = 3.12 # Disallows calling functions without type annotations from functions with type annotations. disallow_untyped_calls = true # Disallows defining functions without type annotations or with incomplete type annotations. disallow_untyped_defs = true # Reports an error whenever a function with type annotations is decorated with a decorator without annotations. # disallow_untyped_decorators = true # Warns about casting an expression to its inferred type. warn_redundant_casts = true # Warns about unneeded # type: ignore comments. # May behave differently in GitHub Actions than it does on Windows. warn_unused_ignores = true # Allows disabling one or multiple error codes globally. disable_error_code = ["import-not-found", "import-untyped"] # Shows a warning when returning a value with type Any from a function declared with a non-Any return type. warn_return_any = true # Shows a warning when encountering any code inferred to be unreachable or redundant after performing type analysis. warn_unreachable = false # Enables additional checks that are technically correct but may be impractical in real code. extra_checks = true # Shows documentation link to corresponding error code. show_error_code_links = true # Use visually nicer output in error messages: use soft word wrap, show source code snippets, and show error location # markers. pretty = true # Use an SQLite database to store the cache. sqlite_cache = true # Warns about per-module sections in the config file that do not match any files processed when invoking mypy. warn_unused_configs = true # -------------------------- ruff -------------------------- [tool.ruff] # Config file documentation at https://docs.astral.sh/ruff/configuration/ # By default, Ruff will discover files matching *.py, *.pyi, *.ipynb, or pyproject.toml. # Include additional files # include = [] # Set the maximum line length. line-length = 120 # Target Python version # target-version = "py311" # Commented out to infer from [project] requires-python [tool.ruff.lint] # By default, Ruff enables Flake8's F rules, along with a subset of the E rules # Enable rules not enabled by default, and ignore specific rules. select = [ "S", # flake8-bandit "BLE", # flake8-blind-except "B", # flake8-bugbear "A", # flake8-builtin "C4", # flake8-comprehensions "DTZ", # flake8-datetimez # "EM", # flake8-errmsg "FA", # flake8-future-annotations "INT", # flake8-gettext "ISC", # flake8-implicit-str-concat "LOG", # flake8-logging # "G", # flake8-logging-format "PIE", # flake8-pie "PYI", # flake8-pyi "PT", # flake8-pytest-style "Q", # flake8-quotes "RSE", # flake8-raise "RET", # flake8-return "SIM", # flake8-simplify "TID", # flake8-tidy-imports "TD", # flake8-todos "TC", # flake8-type-checking # "ARG", # flake8-unused-arguments "PTH", # flake8-use-pathlib # "FLY", # flynt "I", # isort "C90", # mccabe "N", # pep8-naming "PERF", # Perflint "E", # pycodestyle errors "W", # pycodestyle warnings # "DOC", # pydoclint # "D", # pydocstyle "F", # Pyflakes # "PL", # Pylint "FURB", # refurb "RUF", # Ruff-specific rules # "TRY", # tryceratops ] ignore = [ "B904", # Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` "S101", # Use of `assert` detected "DTZ001", # `datetime.datetime()` called without a `tzinfo` argument "DTZ005", # `datetime.datetime.now()` called without a `tz` argument "DTZ006", # `datetime.datetime.fromtimestamp()` called without a `tz` argument "DTZ007", # Naive datetime constructed using `datetime.datetime.strptime()` without %z "DTZ011", # `datetime.date.today()` used, "RUF012", # Mutable class attributes should be annotated with `typing.ClassVar` "SIM105", # Use contextlib.suppress({exception}) instead of try-except-pass "SIM115", # Use a context manager for opening files "TD002", # Missing author in TODO "TD003", # Missing issue link for this TODO ] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] unfixable = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" # List of allowed "confusable" Unicode characters to ignore when enforcing RUF001, RUF002, and RUF003. allowed-confusables = ["–", "‘", "’"] [tool.ruff.lint.flake8-quotes] inline-quotes = "single" [tool.ruff.lint.mccabe] # Flag errors (`C901`) whenever the complexity level exceeds below. max-complexity = 30 [tool.ruff.lint.per-file-ignores] "test_*" = [ "S101", # Use of `assert` detected ] [tool.ruff.lint.pydoclint] # Skip docstrings which fit on a single line. ignore-one-line-docstrings = true [tool.ruff.lint.pydocstyle] convention = "google" [tool.ruff.per-file-target-version] ".*.py" = "py314" [tool.ruff.format] # Enable the formatter, which is a drop-in replacement for Black. # No extra configuration is needed for basic formatting. # Exclude files for formatting only exclude = [] # Use single quotes for strings. quote-style = "single" # Like Black, indent with spaces, rather than tabs. indent-style = "space" # Like Black, respect magic trailing commas. skip-magic-trailing-comma = false # Like Black, automatically detect the appropriate line ending. line-ending = "auto" # Enable auto-formatting of code examples in docstrings. Markdown, # reStructuredText code/literal blocks and doctests are all supported. # # This is currently disabled by default, but it is planned for this # to be opt-out in the future. docstring-code-format = true # Set the line length limit used when formatting code snippets in # docstrings. # # This only has an effect when the `docstring-code-format` setting is # enabled. docstring-code-line-length = "dynamic"

previous

next