[build-system]
requires = ["setuptools>=61.0.0", "wheel", "pastescript"]
build-backend = "setuptools.build_meta"

[project]
name = "rhodecode-enterprise-ce"
description = "Enterprise Source Code Management Platform"
authors = [
    {name = "RhodeCode GmbH", email = "support@rhodecode.com"},
]
keywords = [
    'rhodecode', 'mercurial', 'git', 'svn',
    'code review',
    'repo groups', 'ldap', 'repository management', 'hgweb',
    'hgwebdir', 'gitweb', 'serving hgweb',
]
license = {text = "GPL V3"}
requires-python = ">=3.10"
dynamic = ["version", "readme", "dependencies", "optional-dependencies"]
classifiers = [
    'Development Status :: 6 - Mature',
    'Intended Audience :: Developers',
    'Operating System :: OS Independent',
    'Topic :: Software Development :: Version Control',
    'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
    'Programming Language :: Python :: 3.11',
]

[project.entry-points."paste.app_factory"]
main = "rhodecode.config.middleware:make_pyramid_app"

[project.entry-points."pyramid.pshell_runner"]
ipython = "rhodecode.lib.pyramid_shell:ipython_shell_runner"

[project.entry-points."beaker.backends"]
memorylru_base="rhodecode.lib.memory_lru_dict:MemoryLRUNamespaceManagerBase"
memorylru_debug="rhodecode.lib.memory_lru_dict:MemoryLRUNamespaceManagerDebug"

[project.scripts]

rc-setup-app = "rhodecode.lib.rc_commands.setup_rc:main"
rc-upgrade-db = "rhodecode.lib.rc_commands.upgrade_db:main"
rc-ishell = "rhodecode.lib.rc_commands.ishell:main"
rc-add-artifact = "rhodecode.lib.rc_commands.add_artifact:main"
rc-migrate-artifact = "rhodecode.lib.rc_commands.migrate_artifact:main"
rc-ssh-wrapper = "rhodecode.apps.ssh_support.lib.ssh_wrapper_v1:main"
rc-ssh-wrapper-v2 = "rhodecode.apps.ssh_support.lib.ssh_wrapper_v2:main"

[tool.setuptools]
packages = ["rhodecode"]
include-package-data = true

[tools.setuptools.package-data]
"" = ['*.txt', '*.rst']
"configs" = ['*.ini']
"rhodecode" = ['VERSION', 'i18n/*/LC_MESSAGES/*.mo', ]

[tool.setuptools.exclude-package-data]
"rhodecode" = ["__pycache__"]

[tool.setuptools.dynamic]
readme = {file = ["README.rst"], content-type = "text/rst"}
version = {file = "rhodecode/VERSION"}
dependencies = {file = ["requirements.txt"]}
optional-dependencies.tests = {file = ["requirements_test.txt"]}

[tool.ruff]
# Line length max same as Black.
line-length = 120

# Assume Python 3.11
target-version = "py311"

exclude = [
    "rhodecode/config/rcextensions/examples",
    "rhodecode/lib/_vendor/authomatic/six.py"
]

[tool.ruff.lint]
select = [
    # Pyflakes
    "F",
    # Pycodestyle
    "E",
    "W",
    # isort
    "I001"
]

ignore = [
    "I001", # unsorted-imports

    "E402", # module-import-not-at-top-of-file
    "E501",  # line too long, handled by black

    "F403",	# undefined-local-with-import-star
    "F405",	# undefined-local-with-import-star-usage
    "F401", # unused-import
    "F841", # unused-variable
]

[tool.ruff.lint.isort]
known-first-party = ["rhodecode"]

[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"

# 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"


[tool.bumpversion]
current_version = "5.9.1"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
serialize = ["{major}.{minor}.{patch}"]
search = "{current_version}"
replace = "{new_version}"
regex = false
ignore_missing_version = false
ignore_missing_files = false
tag = false
sign_tags = false
tag_name = "v{new_version}"
tag_message = "release(version-bump): {current_version} → {new_version}"
allow_dirty = false
commit = false
message = "release(version-bump): {current_version} → {new_version}"
commit_args = ""
setup_hooks = []
pre_commit_hooks = []
post_commit_hooks = []

[[tool.bumpversion.files]]
filename = "rhodecode/VERSION"

#    message_extractors={
#        'rhodecode': [
#            ('**.py', 'python', None),
#            ('**.js', 'javascript', None),
#            ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
#            ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
#            ('public/**', 'ignore', None),
#        ]
#    },
