kopia lustrzana https://github.com/collective/icalendar
				
				
				
			
		
			
				
	
	
		
			221 wiersze
		
	
	
		
			7.2 KiB
		
	
	
	
		
			TOML
		
	
	
			
		
		
	
	
			221 wiersze
		
	
	
		
			7.2 KiB
		
	
	
	
		
			TOML
		
	
	
#
 | 
						|
# We use the pyproject.toml package specification.
 | 
						|
# See https://packaging.python.org/en/latest/guides/section-build-and-publish/
 | 
						|
# See https://github.com/collective/icalendar/issues/686
 | 
						|
# See https://packaging.python.org/en/latest/specifications/pyproject-toml/
 | 
						|
#
 | 
						|
 | 
						|
[build-system]
 | 
						|
requires = ["hatchling>=1.27.0", "hatch-vcs"]
 | 
						|
build-backend = "hatchling.build"
 | 
						|
 | 
						|
[project]
 | 
						|
name = "icalendar"
 | 
						|
license = "BSD-2-Clause"
 | 
						|
license-files = ["LICENSE.rst"]
 | 
						|
keywords = [
 | 
						|
    "calendar",
 | 
						|
    "calendaring",
 | 
						|
    "ical",
 | 
						|
    "icalendar",
 | 
						|
    "event",
 | 
						|
    "todo",
 | 
						|
    "journal",
 | 
						|
    "recurring",
 | 
						|
    "rfc5545",
 | 
						|
]
 | 
						|
# This email is not in use any more. If you find a better one, go ahead!
 | 
						|
# See https://github.com/collective/icalendar/pull/707#discussion_r1775275335
 | 
						|
authors = [
 | 
						|
  { name="Plone Foundation", email="plone-developers@lists.sourceforge.net" },
 | 
						|
]
 | 
						|
maintainers = [
 | 
						|
  { name="Nicco Kunzmann", email="niccokunzmann@rambler.ru" },
 | 
						|
  { name="Christian Geier" },
 | 
						|
  { name="Jaca", email="vitouejj@gmail.com" },
 | 
						|
]
 | 
						|
# These attributes are dynamically generated by hatch-vcs
 | 
						|
dynamic = [
 | 
						|
    "urls",
 | 
						|
    "version"
 | 
						|
]
 | 
						|
description = "iCalendar parser/generator"
 | 
						|
readme = { file = "README.rst", content-type = "text/x-rst" }
 | 
						|
 | 
						|
#
 | 
						|
# When adjusting the Python Version, adjust also:
 | 
						|
# - .github/workflows/tests.yml
 | 
						|
# - the classifiers below
 | 
						|
# - the documentation
 | 
						|
# - the README file
 | 
						|
# - dependencies for 3.8, Python 3.13 will come our October, too
 | 
						|
# - tool.ruff.target-version
 | 
						|
#
 | 
						|
requires-python = ">=3.8"
 | 
						|
 | 
						|
# see https://pypi.python.org/pypi?%3Aaction=list_classifiers
 | 
						|
classifiers = [
 | 
						|
    "Development Status :: 5 - Production/Stable",
 | 
						|
    "Intended Audience :: Developers",
 | 
						|
    "License :: OSI Approved :: BSD License",
 | 
						|
    "Operating System :: OS Independent",
 | 
						|
    "Programming Language :: Python",
 | 
						|
    "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 :: 3.13",
 | 
						|
    "Programming Language :: Python :: Implementation :: CPython",
 | 
						|
    "Programming Language :: Python :: Implementation :: PyPy",
 | 
						|
]
 | 
						|
 | 
						|
dependencies = [
 | 
						|
    "python-dateutil",
 | 
						|
    # install requirements depending on python version, TODO: Remove with Python 3.8
 | 
						|
    # see https://www.python.org/dev/peps/pep-0508/#environment-markers
 | 
						|
    "backports.zoneinfo; python_version < '3.9'",
 | 
						|
    "tzdata"
 | 
						|
]
 | 
						|
 | 
						|
[project.optional-dependencies]
 | 
						|
test = [
 | 
						|
    "pytest",
 | 
						|
    "coverage",
 | 
						|
    "hypothesis",
 | 
						|
    "pytz",
 | 
						|
]
 | 
						|
 | 
						|
[project.scripts]
 | 
						|
icalendar = "icalendar.cli:main"
 | 
						|
 | 
						|
[tool.hatch.build]
 | 
						|
exclude = [
 | 
						|
  "/.*",
 | 
						|
  "/*.*",
 | 
						|
  "/src/icalendar/fuzzing",
 | 
						|
  "/dist",
 | 
						|
  "/build",
 | 
						|
  "/htmlcov",
 | 
						|
]
 | 
						|
 | 
						|
[tool.hatch.metadata.hooks.vcs.urls]
 | 
						|
# This is a dynamic generation of [project.urls]
 | 
						|
Homepage = "https://icalendar.readthedocs.io/"
 | 
						|
Repository = "https://github.com/collective/icalendar/"
 | 
						|
source_archive = "https://github.com/collective/icalendar/archive/{commit_hash}.zip"
 | 
						|
Issues = "https://github.com/collective/icalendar/issues"
 | 
						|
Documentation = "https://icalendar.readthedocs.io/"
 | 
						|
Changelog = "https://icalendar.readthedocs.io/en/latest/changelog.html"
 | 
						|
 | 
						|
[tool.hatch.version]
 | 
						|
# This configuration allows us to use the version from the tags and dynamically generate
 | 
						|
# version files. This speeds up the release process.
 | 
						|
source = "vcs"
 | 
						|
 | 
						|
[tool.hatch.version.raw-options]
 | 
						|
# see https://github.com/ofek/hatch-vcs/issues/43#issuecomment-1553065222
 | 
						|
local_scheme = "no-local-version"
 | 
						|
 | 
						|
[tool.hatch.build.hooks.vcs]
 | 
						|
version-file = "src/icalendar/_version.py"
 | 
						|
 | 
						|
[tool.hatch.metadata]
 | 
						|
allow-direct-references = true
 | 
						|
 | 
						|
[tool.ruff]
 | 
						|
target-version = "py38"
 | 
						|
unsafe-fixes = true
 | 
						|
 | 
						|
[tool.ruff.lint]
 | 
						|
select = ["ALL"]
 | 
						|
ignore = [
 | 
						|
    "ANN",     # flake8-annotations
 | 
						|
    "B020",    # Loop control variable {name} overrides iterable it iterates
 | 
						|
    "C401",    # Unnecessary generator (rewrite as a set comprehension)
 | 
						|
    "C901",    # {name} is too complex ({complexity} > {max_complexity})
 | 
						|
    "COM812",  # Trailing comma missing
 | 
						|
    "D1",      # Missing docstring
 | 
						|
    "D2",      # docstrings stuffs
 | 
						|
    "D4",      # docstrings stuffs
 | 
						|
    "EM10",    # Exception string usage
 | 
						|
    "ERA001",  # Found commented-out code
 | 
						|
    "FBT002",  # Boolean default positional argument in function definition
 | 
						|
    "FIX",     # TODO comments
 | 
						|
    "ISC001",  # Implicitly concatenated string literals on one line (to avoid with formatter)
 | 
						|
    "N818",    # Exception name {name} should be named with an Error suffix
 | 
						|
    "PLR091",  # Too many things (complexity, arguments, branches, etc...)
 | 
						|
    "PLR2004", # Magic value used in comparison, consider replacing {value} with a constant variable
 | 
						|
    "RUF012",  # Mutable class attributes should be annotated with typing.ClassVar
 | 
						|
    "RUF015",  # Prefer next({iterable}) over single element slice
 | 
						|
    "S101",    # Use of assert detected
 | 
						|
    "TD",      # TODO comments
 | 
						|
    "TRY003",  # Avoid specifying long messages outside the exception class
 | 
						|
    "S104",    # Possible binding to all interfaces
 | 
						|
    "E722",    # Do not use bare `except`
 | 
						|
    "RUF005",  # Consider iterable unpacking instead of concatenation
 | 
						|
    "DTZ005",  # `datetime.datetime.now()` called without a `tz` argument
 | 
						|
    "PERF401", # Use a list comprehension to create a transformed list
 | 
						|
    "ARG002",  # Unused method argument: ...
 | 
						|
    "ARG001",  # Unused function argument: ...
 | 
						|
    "UP007",   # Optional -> X | None remove when migrated to py39+
 | 
						|
]
 | 
						|
extend-safe-fixes = [
 | 
						|
    "PT006", # Wrong type passed to first argument of @pytest.mark.parametrize; expected {expected_string}
 | 
						|
]
 | 
						|
 | 
						|
[tool.ruff.lint.per-file-ignores]
 | 
						|
"src/icalendar/tests/test_timezoned.py" = [
 | 
						|
    "SLF001", # private member
 | 
						|
]
 | 
						|
"src/icalendar/tests/*" = [
 | 
						|
    "B011",   # Do not assert False (python -O removes these calls), raise AssertionError()
 | 
						|
    "DTZ001", # datetime.datetime() called without a tzinfo argument
 | 
						|
    "E501",   # Indentation is not a multiple of {indent_size}
 | 
						|
    "N802",   # Function name {name} should be lowercase
 | 
						|
    "PT011",  # pytest.raises({exception}) is too broad, set the match parameter or use a more specific exception
 | 
						|
    "PT012",  # pytest.raises() block should contain a single simple statement
 | 
						|
    "PT015",  # Assertion always fails, replace with pytest.fail()
 | 
						|
    "T201",   # print found
 | 
						|
    "T203",   # `pprint` found
 | 
						|
    "RUF001", # String contains ambiguous character
 | 
						|
    "SIM300", # Yoda condition
 | 
						|
    "SLF001", # Private member accessed
 | 
						|
    "N999",   # module name
 | 
						|
    "PT027",  # assertRaises
 | 
						|
]
 | 
						|
"src/icalendar/prop.py" = [
 | 
						|
    "N801",   # Class name should use CamelCase
 | 
						|
]
 | 
						|
"src/icalendar/fuzzing/*" = [
 | 
						|
    "T201",   # print found
 | 
						|
    "N802",   # Function name {name} should be lowercase
 | 
						|
]
 | 
						|
"docs/conf.py" = [
 | 
						|
    "INP001", # needs __init__.py
 | 
						|
]
 | 
						|
 | 
						|
[tool.pytest.ini_options]
 | 
						|
# see https://docs.pytest.org/en/6.2.x/customize.html
 | 
						|
minversion = "6.0"
 | 
						|
# see https://docs.pytest.org/en/6.2.x/reference.html?highlight=testpaths#confval-testpaths
 | 
						|
testpaths = [
 | 
						|
    "src/icalendar/tests",
 | 
						|
]
 | 
						|
# see https://docs.pytest.org/en/6.2.x/reference.html?highlight=testpaths#confval-norecursedirs
 | 
						|
norecursedirs = [
 | 
						|
    "src/icalendar/tests/hypothesis",
 | 
						|
    "build",
 | 
						|
]
 | 
						|
filterwarnings = [
 | 
						|
    "ignore::DeprecationWarning",
 | 
						|
]
 | 
						|
 | 
						|
[dependency-groups]
 | 
						|
dev = [
 | 
						|
    "pydata-sphinx-theme>=0.14.4",
 | 
						|
    "sphinx-autobuild>=2021.3.14",
 | 
						|
    "sphinx-copybutton>=0.5.2",
 | 
						|
]
 | 
						|
 |