|
4ce269c…
|
ragelink
|
1 |
[project] |
|
4ce269c…
|
ragelink
|
2 |
name = "fossilrepo" |
|
7719b08…
|
ragelink
|
3 |
version = "0.1.0" |
|
c588255…
|
ragelink
|
4 |
description = "Self-hosted Fossil SCM forge — code hosting, issues, wiki, and continuous backups in one command." |
|
4ce269c…
|
ragelink
|
5 |
license = "MIT" |
|
4ce269c…
|
ragelink
|
6 |
requires-python = ">=3.12" |
|
c588255…
|
ragelink
|
7 |
readme = "README.md" |
|
c588255…
|
ragelink
|
8 |
authors = [ |
|
c588255…
|
ragelink
|
9 |
{ name = "CONFLICT LLC", email = "[email protected]" }, |
|
c588255…
|
ragelink
|
10 |
] |
|
c588255…
|
ragelink
|
11 |
keywords = ["fossil", "scm", "vcs", "code-hosting", "self-hosted", "forge"] |
|
c588255…
|
ragelink
|
12 |
classifiers = [ |
|
c588255…
|
ragelink
|
13 |
"Development Status :: 3 - Alpha", |
|
c588255…
|
ragelink
|
14 |
"Environment :: Web Environment", |
|
c588255…
|
ragelink
|
15 |
"Framework :: Django", |
|
c588255…
|
ragelink
|
16 |
"Framework :: Django :: 5.1", |
|
c588255…
|
ragelink
|
17 |
"Intended Audience :: Developers", |
|
c588255…
|
ragelink
|
18 |
"Intended Audience :: System Administrators", |
|
c588255…
|
ragelink
|
19 |
"License :: OSI Approved :: MIT License", |
|
c588255…
|
ragelink
|
20 |
"Operating System :: POSIX :: Linux", |
|
c588255…
|
ragelink
|
21 |
"Programming Language :: Python :: 3.12", |
|
c588255…
|
ragelink
|
22 |
"Topic :: Software Development :: Version Control", |
|
c588255…
|
ragelink
|
23 |
] |
|
4ce269c…
|
ragelink
|
24 |
dependencies = [ |
|
4ce269c…
|
ragelink
|
25 |
"django>=5.1,<6.0", |
|
4ce269c…
|
ragelink
|
26 |
"psycopg2-binary>=2.9", |
|
4ce269c…
|
ragelink
|
27 |
"redis>=5.0", |
|
4ce269c…
|
ragelink
|
28 |
"celery[redis]>=5.4", |
|
4ce269c…
|
ragelink
|
29 |
"django-celery-results>=2.5", |
|
4ce269c…
|
ragelink
|
30 |
"django-celery-beat>=2.7", |
|
4ce269c…
|
ragelink
|
31 |
"django-import-export>=4.0", |
|
4ce269c…
|
ragelink
|
32 |
"django-simple-history>=3.7", |
|
4ce269c…
|
ragelink
|
33 |
"django-ratelimit>=4.1", |
|
4ce269c…
|
ragelink
|
34 |
"django-health-check>=3.18", |
|
4ce269c…
|
ragelink
|
35 |
"django-constance[database]>=4.1", |
|
4ce269c…
|
ragelink
|
36 |
"django-storages[s3]>=1.14", |
|
4ce269c…
|
ragelink
|
37 |
"django-ses>=4.1", |
|
4ce269c…
|
ragelink
|
38 |
"django-cors-headers>=4.4", |
|
4ce269c…
|
ragelink
|
39 |
"gunicorn>=23.0", |
|
4ce269c…
|
ragelink
|
40 |
"whitenoise>=6.7", |
|
4ce269c…
|
ragelink
|
41 |
"boto3>=1.35", |
|
4ce269c…
|
ragelink
|
42 |
"sentry-sdk[django]>=2.14", |
|
4ce269c…
|
ragelink
|
43 |
"click>=8.1", |
|
4ce269c…
|
ragelink
|
44 |
"rich>=13.0", |
|
4ce269c…
|
ragelink
|
45 |
"markdown>=3.6", |
|
70fa957…
|
ragelink
|
46 |
"requests>=2.31", |
|
c588255…
|
ragelink
|
47 |
"cryptography>=43.0", |
|
c588255…
|
ragelink
|
48 |
"mcp>=1.0", |
|
4ce269c…
|
ragelink
|
49 |
] |
|
c588255…
|
ragelink
|
50 |
|
|
c588255…
|
ragelink
|
51 |
[project.urls] |
|
c588255…
|
ragelink
|
52 |
Homepage = "https://fossilrepo.dev" |
|
c588255…
|
ragelink
|
53 |
Documentation = "https://fossilrepo.dev" |
|
c588255…
|
ragelink
|
54 |
Repository = "https://github.com/ConflictHQ/fossilrepo" |
|
c588255…
|
ragelink
|
55 |
Issues = "https://github.com/ConflictHQ/fossilrepo/issues" |
|
c588255…
|
ragelink
|
56 |
Demo = "https://fossilrepo.io" |
|
4ce269c…
|
ragelink
|
57 |
|
|
4ce269c…
|
ragelink
|
58 |
[project.scripts] |
|
4ce269c…
|
ragelink
|
59 |
fossilrepo-ctl = "ctl.main:cli" |
|
c588255…
|
ragelink
|
60 |
fossilrepo-mcp = "mcp_server.__main__:run" |
|
4ce269c…
|
ragelink
|
61 |
|
|
4ce269c…
|
ragelink
|
62 |
[project.optional-dependencies] |
|
4ce269c…
|
ragelink
|
63 |
dev = [ |
|
4ce269c…
|
ragelink
|
64 |
"ruff>=0.7", |
|
4ce269c…
|
ragelink
|
65 |
"pytest>=8.3", |
|
4ce269c…
|
ragelink
|
66 |
"pytest-django>=4.9", |
|
4ce269c…
|
ragelink
|
67 |
"pytest-cov>=5.0", |
|
4ce269c…
|
ragelink
|
68 |
"coverage>=7.6", |
|
4ce269c…
|
ragelink
|
69 |
"freezegun>=1.4", |
|
4ce269c…
|
ragelink
|
70 |
"pip-audit>=2.7", |
|
4ce269c…
|
ragelink
|
71 |
] |
|
4ce269c…
|
ragelink
|
72 |
|
|
4ce269c…
|
ragelink
|
73 |
[tool.ruff] |
|
4ce269c…
|
ragelink
|
74 |
target-version = "py312" |
|
4ce269c…
|
ragelink
|
75 |
line-length = 140 |
|
4ce269c…
|
ragelink
|
76 |
|
|
4ce269c…
|
ragelink
|
77 |
[tool.ruff.lint] |
|
4ce269c…
|
ragelink
|
78 |
select = ["E", "F", "I", "W", "UP", "B", "SIM", "N"] |
|
4ce269c…
|
ragelink
|
79 |
ignore = ["E501"] |
|
4ce269c…
|
ragelink
|
80 |
|
|
4ce269c…
|
ragelink
|
81 |
[tool.ruff.lint.isort] |
|
c588255…
|
ragelink
|
82 |
known-first-party = ["config", "core", "accounts", "organization", "projects", "pages", "fossil", "testdata", "ctl", "mcp_server"] |
|
4ce269c…
|
ragelink
|
83 |
|
|
4ce269c…
|
ragelink
|
84 |
[tool.ruff.format] |
|
4ce269c…
|
ragelink
|
85 |
quote-style = "double" |
|
4ce269c…
|
ragelink
|
86 |
|
|
4ce269c…
|
ragelink
|
87 |
[tool.pytest.ini_options] |
|
4ce269c…
|
ragelink
|
88 |
DJANGO_SETTINGS_MODULE = "config.settings" |
|
4ce269c…
|
ragelink
|
89 |
python_files = ["tests.py", "test_*.py"] |
|
4ce269c…
|
ragelink
|
90 |
python_classes = ["Test*"] |
|
4ce269c…
|
ragelink
|
91 |
python_functions = ["test_*"] |
|
4ce269c…
|
ragelink
|
92 |
addopts = "-v --tb=short --strict-markers" |
|
4ce269c…
|
ragelink
|
93 |
|
|
4ce269c…
|
ragelink
|
94 |
[tool.coverage.run] |
|
c588255…
|
ragelink
|
95 |
source = ["core", "accounts", "organization", "projects", "pages", "fossil"] |
|
4ce269c…
|
ragelink
|
96 |
omit = ["*/migrations/*", "*/tests/*", "*/testdata/*", "manage.py", "startup.py"] |
|
4ce269c…
|
ragelink
|
97 |
|
|
4ce269c…
|
ragelink
|
98 |
[tool.coverage.report] |
|
4ce269c…
|
ragelink
|
99 |
fail_under = 80 |
|
4ce269c…
|
ragelink
|
100 |
show_missing = true |
|
4ce269c…
|
ragelink
|
101 |
|
|
4ce269c…
|
ragelink
|
102 |
[tool.hatch.build.targets.wheel] |
|
c588255…
|
ragelink
|
103 |
packages = ["ctl", "core", "accounts", "organization", "projects", "pages", "fossil", "config", "mcp_server"] |
|
4ce269c…
|
ragelink
|
104 |
|
|
4ce269c…
|
ragelink
|
105 |
[build-system] |
|
4ce269c…
|
ragelink
|
106 |
requires = ["hatchling"] |
|
4ce269c…
|
ragelink
|
107 |
build-backend = "hatchling.build" |