blob: 4ce5d9ac4e440d9d2a96737718e4103cbff301af [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[build-system]
requires = [
"setuptools~=66.1",
"wheel~=0.37.1"
]
build-backend = "setuptools.build_meta"
[project]
name = "apache-libcloud"
description = "A standard Python library that abstracts away differences among multiple cloud provider APIs. For more information and documentation, please see https://libcloud.apache.org"
authors = [
{name = "Apache Software Foundation", email = "dev@libcloud.apache.org"},
]
keywords = [
"cloud",
"libcloud",
"apache",
"aws",
"ec2",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
]
requires-python = ">=3.8"
dependencies = [
"requests>=2.26.0",
]
license = {text = "Apache License (2.0)"}
dynamic = ["version", "readme"]
[project.urls]
# Threre seems to be known bug with homepage and pyproject.yaml https://github.com/pypa/packaging-problems/issues/606
Homepage = "https://libcloud.apache.org"
Documentation = "https://libcloud.readthedocs.io"
"Mailing list" = "https://libcloud.apache.org/community.html#mailing-lists"
Security = "https://libcloud.apache.org/security.html"
Repository = "https://github.com/apache/libcloud"
Tests = "https://github.com/apache/libcloud/tree/trunk/libcloud/test"
Coverage = "https://app.codecov.io/github/apache/libcloud"
Issues = "https://github.com/apache/libcloud/issues"
Distribution = "https://pypi.org/project/apache-libcloud"
Changelog = "https://github.com/apache/libcloud/blob/trunk/CHANGES.rst"
[project.optional-dependencies]
build = [
"build==1.0.3"
]
publish = [
"twine==4.0.2"
]
test = [
"pytest",
"requests_mock",
]
[tool.setuptools.packages.find]
where = ["./"]
include = ["libcloud"]
[tool.setuptools]
exclude-package-data = { "*" = ["secrets.py"], "libcloud.test" = ["secrets.py"] }
[tool.setuptools.dynamic]
version = {attr = "libcloud.__version__"}
readme = {file = ["README.rst"], content-type = "text/x-rst"}
[tool.distutils.bdist_wheel]
universal = true
[tool.black]
line_length = 100
target_version = ['py37', 'py38', 'py39', 'py310', 'py311']
include = '\.pyi?$'
exclude = '''
(
/(
| \.git
| \.virtualenv
| __pycache__
| secrets\.py
)/
)
'''
[tool.isort]
profile = "black"
multi_line_output = 3
line_length = 99
src_paths = ["libcloud", "contrib", "docs", "demos", "pylint_plugins", "integration"]
skip_glob = [".venv/*", ".tox/*", ".github/actions/*"]
length_sort = true
[tool.pytest.ini_options]
# Set options for pytest
python_classes = "*Test"
testpaths = "libcloud/test"
# Show slowest 10 tests in the output
addopts = "--durations=10"
# Ignore UserWarning's
filterwarnings = ["ignore::UserWarning"]
[tool.bandit]
exclude_dirs = [".tox", ".git", "build", "dist", "venv", "tests/*"]
skips = ["B411"]
[tool.pylint.MASTER]
ignore = "test,constants"
persistent = "yes"
load-plugins = ""
[tool.pylint.'MESSAGES CONTROL']
disable = "redefined-builtin,too-many-arguments,too-few-public-methods,missing-docstring,invalid-name,abstract-method"
[tool.pylint.TYPECHECK]
generated-members = "async_request,objects"
[tool.pylint.VARIABLES]
init-import = "no"
dummy-variables-rgx = "_|dummy"
additional-builtins = ""
[tool.pylint.FORMAT]
max-line-length = 100
max-module-lines = 1000
indent-string = " "
[tool.mypy]
python_version = 3.8
platform = "linux"
show_error_context = true
show_column_numbers = true
[[tool.mypy.overrides]]
module = [
"lxml",
"xml.dom",
"xmlrpc.*",
"paramiko.*",
"cryptography.*",
"lockfile.*",
]
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = [
"libcloud.utils.py3",
"libcloud.compute.drivers.*",
"libcloud.storage.drivers.*",
"libcloud.dns.drivers.*",
"libcloud.container.drivers.*",
]
ignore_errors = true
[tool.coverage.run]
parallel = false
branch = true
source = ["libcloud"]
[tool.coverage.paths]
source = [
"libcloud/",
]
tests = [
"libcloud/test/",
]
[tool.coverage.report]
show_missing = true
skip_covered = true
exclude_lines = [
# Have to re-enable the standard pragma
"pragma: no cover",
# Don't complain about missing debug-only code:
"def __repr__",
"def __str__",
"if self\\.debug",
# 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__.:",
"__all__",
"import",
"deprecated_warning",
"in_development_warning",
"@abc.abstractmethod",
# Type checking related code,
"^if (False|TYPE_CHECKING):",
"if typing.TYPE_CHECKING",
]
ignore_errors = true
[tool.coverage.html]
directory = "coverage_html_report"
[tool.codespell]
skip = 'venvs,.venv,.git,build,*.egg-info,*.lock,libcloud/test/*/fixtures/*'
# fo - file object, hda - hda mount point, nd - node, doesnt - inside the path,
# ags - agreements
ignore-words-list = 'fo,hda,nd,doesnt,ags'
count = ''
quiet-level = 3