clsync 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. clsync-1.0.1/.gitignore +11 -0
  2. clsync-1.0.1/.gitlab-ci.yml +113 -0
  3. clsync-1.0.1/.pip-cache/http-v2/0/3/5/9/5/03595f024098ed084eba12d86fd2749d935b061fa35d6b1f18cc0b84 +0 -0
  4. clsync-1.0.1/.pip-cache/http-v2/0/3/5/9/5/03595f024098ed084eba12d86fd2749d935b061fa35d6b1f18cc0b84.body +139 -0
  5. clsync-1.0.1/.pip-cache/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a +0 -0
  6. clsync-1.0.1/.pip-cache/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a.body +0 -0
  7. clsync-1.0.1/.pip-cache/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029 +0 -0
  8. clsync-1.0.1/.pip-cache/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029.body +0 -0
  9. clsync-1.0.1/.pip-cache/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f +0 -0
  10. clsync-1.0.1/.pip-cache/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f.body +0 -0
  11. clsync-1.0.1/.pip-cache/http-v2/3/c/e/7/7/3ce770df07ea321ab056bed31a67391a50e82aea9460d349fd057276 +0 -0
  12. clsync-1.0.1/.pip-cache/http-v2/3/c/e/7/7/3ce770df07ea321ab056bed31a67391a50e82aea9460d349fd057276.body +107 -0
  13. clsync-1.0.1/.pip-cache/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa +0 -0
  14. clsync-1.0.1/.pip-cache/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa.body +0 -0
  15. clsync-1.0.1/.pip-cache/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0 +0 -0
  16. clsync-1.0.1/.pip-cache/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0.body +0 -0
  17. clsync-1.0.1/.pip-cache/http-v2/6/a/0/8/8/6a088fc192b69f4692b96903e0d1df2f92839b402221a47a2ca3b5be +0 -0
  18. clsync-1.0.1/.pip-cache/http-v2/6/a/0/8/8/6a088fc192b69f4692b96903e0d1df2f92839b402221a47a2ca3b5be.body +82 -0
  19. clsync-1.0.1/.pip-cache/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8 +0 -0
  20. clsync-1.0.1/.pip-cache/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8.body +0 -0
  21. clsync-1.0.1/.pip-cache/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75 +0 -0
  22. clsync-1.0.1/.pip-cache/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75.body +79 -0
  23. clsync-1.0.1/.pip-cache/http-v2/9/e/a/1/5/9ea15e1a7a7a1cb9950b76e2e3c06da4d07100bc185f905f6e33e283 +0 -0
  24. clsync-1.0.1/.pip-cache/http-v2/9/e/a/1/5/9ea15e1a7a7a1cb9950b76e2e3c06da4d07100bc185f905f6e33e283.body +0 -0
  25. clsync-1.0.1/.pip-cache/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140 +0 -0
  26. clsync-1.0.1/.pip-cache/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140.body +0 -0
  27. clsync-1.0.1/.pip-cache/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a +0 -0
  28. clsync-1.0.1/.pip-cache/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a.body +0 -0
  29. clsync-1.0.1/.pip-cache/http-v2/a/d/3/4/4/ad344e8dcc28c72166da85db3d3c34ea7bd39531944f502465cf3a50 +0 -0
  30. clsync-1.0.1/.pip-cache/http-v2/a/d/3/4/4/ad344e8dcc28c72166da85db3d3c34ea7bd39531944f502465cf3a50.body +0 -0
  31. clsync-1.0.1/.pip-cache/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03 +0 -0
  32. clsync-1.0.1/.pip-cache/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03.body +0 -0
  33. clsync-1.0.1/.pip-cache/http-v2/a/f/0/b/4/af0b4f3ea11a267af8c06f6fa9fa74e1a06b91e221cbd34f379bb11c +0 -0
  34. clsync-1.0.1/.pip-cache/http-v2/a/f/0/b/4/af0b4f3ea11a267af8c06f6fa9fa74e1a06b91e221cbd34f379bb11c.body +0 -0
  35. clsync-1.0.1/.pip-cache/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4 +0 -0
  36. clsync-1.0.1/.pip-cache/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4.body +25 -0
  37. clsync-1.0.1/.pip-cache/http-v2/c/5/2/e/2/c52e2f1dd5b9608ced10cc1a661cb4850330552cdc6801105598d8e4 +0 -0
  38. clsync-1.0.1/.pip-cache/http-v2/c/5/2/e/2/c52e2f1dd5b9608ced10cc1a661cb4850330552cdc6801105598d8e4.body +356 -0
  39. clsync-1.0.1/.pip-cache/http-v2/c/6/f/3/1/c6f3192810e6b78a08fee1da61557cd4bdd93a63331b9d474bca9d38 +0 -0
  40. clsync-1.0.1/.pip-cache/http-v2/c/6/f/3/1/c6f3192810e6b78a08fee1da61557cd4bdd93a63331b9d474bca9d38.body +0 -0
  41. clsync-1.0.1/.pip-cache/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a +0 -0
  42. clsync-1.0.1/.pip-cache/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a.body +0 -0
  43. clsync-1.0.1/.pip-cache/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2 +0 -0
  44. clsync-1.0.1/.pip-cache/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2.body +0 -0
  45. clsync-1.0.1/.pip-cache/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5 +0 -0
  46. clsync-1.0.1/.pip-cache/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5.body +152 -0
  47. clsync-1.0.1/.pip-cache/selfcheck/fe300af6f7d708c14827daac3afc81fbb8306b73de8dd6e3f1f8ea3b +1 -0
  48. clsync-1.0.1/LICENSE +21 -0
  49. clsync-1.0.1/PKG-INFO +557 -0
  50. clsync-1.0.1/README.md +521 -0
  51. clsync-1.0.1/pipeline/models.py +12 -0
  52. clsync-1.0.1/pipeline/prompts/synthesize_claude_md.txt +18 -0
  53. clsync-1.0.1/pipeline/prompts/synthesize_critic.txt +23 -0
  54. clsync-1.0.1/pipeline/requirements.txt +2 -0
  55. clsync-1.0.1/pipeline/synthesize.py +426 -0
  56. clsync-1.0.1/project-specification.md +1230 -0
  57. clsync-1.0.1/pyproject.toml +54 -0
  58. clsync-1.0.1/src/claude_sync/__init__.py +0 -0
  59. clsync-1.0.1/src/claude_sync/apply.py +147 -0
  60. clsync-1.0.1/src/claude_sync/bootstrap.py +250 -0
  61. clsync-1.0.1/src/claude_sync/ci_provider.py +296 -0
  62. clsync-1.0.1/src/claude_sync/claude_paths.py +31 -0
  63. clsync-1.0.1/src/claude_sync/cli.py +767 -0
  64. clsync-1.0.1/src/claude_sync/config.py +89 -0
  65. clsync-1.0.1/src/claude_sync/git_ops.py +39 -0
  66. clsync-1.0.1/src/claude_sync/gitlab_api.py +138 -0
  67. clsync-1.0.1/src/claude_sync/lock.py +55 -0
  68. clsync-1.0.1/src/claude_sync/models.py +61 -0
  69. clsync-1.0.1/src/claude_sync/prompts/bootstrap.txt +23 -0
  70. clsync-1.0.1/src/claude_sync/scaffold.py +43 -0
  71. clsync-1.0.1/src/claude_sync/snapshot.py +147 -0
  72. clsync-1.0.1/src/claude_sync/templates/__init__.py +0 -0
  73. clsync-1.0.1/src/claude_sync/templates/github-workflow.yml +40 -0
  74. clsync-1.0.1/src/claude_sync/templates/gitignore +8 -0
  75. clsync-1.0.1/src/claude_sync/templates/gitlab-ci.yml +60 -0
  76. clsync-1.0.1/src/claude_sync/templates/pipeline/models.py +12 -0
  77. clsync-1.0.1/src/claude_sync/templates/pipeline/prompts/synthesize_claude_md.txt +18 -0
  78. clsync-1.0.1/src/claude_sync/templates/pipeline/prompts/synthesize_critic.txt +23 -0
  79. clsync-1.0.1/src/claude_sync/templates/pipeline/requirements.txt +2 -0
  80. clsync-1.0.1/src/claude_sync/templates/pipeline/synthesize.py +426 -0
  81. clsync-1.0.1/tests/fixtures/machine_a/global/CLAUDE.md +15 -0
  82. clsync-1.0.1/tests/fixtures/machine_a/projects/my-app/CLAUDE.md +11 -0
  83. clsync-1.0.1/tests/fixtures/machine_b/global/CLAUDE.md +19 -0
  84. clsync-1.0.1/tests/test_apply.py +277 -0
  85. clsync-1.0.1/tests/test_bootstrap.py +174 -0
  86. clsync-1.0.1/tests/test_claude_paths.py +71 -0
  87. clsync-1.0.1/tests/test_config.py +90 -0
  88. clsync-1.0.1/tests/test_git_ops.py +99 -0
  89. clsync-1.0.1/tests/test_gitlab_api.py +213 -0
  90. clsync-1.0.1/tests/test_lock.py +121 -0
  91. clsync-1.0.1/tests/test_scaffold.py +83 -0
  92. clsync-1.0.1/tests/test_snapshot.py +297 -0
  93. clsync-1.0.1/tests/test_synthesize.py +431 -0
@@ -0,0 +1,11 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.pyo
4
+ *.pyd
5
+ .pytest_cache/
6
+ *.egg-info/
7
+ dist/
8
+ build/
9
+ .env
10
+ *.env
11
+ .claude/settings.local.json
@@ -0,0 +1,113 @@
1
+ workflow:
2
+ rules:
3
+ - if: $CI_PIPELINE_SOURCE == "push"
4
+ - if: $CI_PIPELINE_SOURCE == "trigger"
5
+ - if: $CI_PIPELINE_SOURCE == "schedule"
6
+ - if: $CI_PIPELINE_SOURCE == "web"
7
+
8
+ stages:
9
+ - build
10
+ - publish
11
+ - synthesize
12
+
13
+ variables:
14
+ PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip-cache"
15
+
16
+ build_wheel:
17
+ stage: build
18
+ image: python:3.12-slim
19
+ cache:
20
+ paths:
21
+ - .pip-cache/
22
+ script:
23
+ - pip install build
24
+ - python -m build
25
+ artifacts:
26
+ paths:
27
+ - dist/
28
+ expire_in: 1 week
29
+ rules:
30
+ - if: $CI_COMMIT_TAG
31
+ - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main"
32
+
33
+ publish_to_gitlab_registry:
34
+ stage: publish
35
+ image: python:3.12-slim
36
+ cache:
37
+ paths:
38
+ - .pip-cache/
39
+ needs:
40
+ - build_wheel
41
+ script:
42
+ - pip install twine
43
+ - >
44
+ TWINE_USERNAME=gitlab-ci-token
45
+ TWINE_PASSWORD=${CI_JOB_TOKEN}
46
+ python -m twine upload
47
+ --repository-url "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
48
+ dist/*
49
+ rules:
50
+ - if: $CI_COMMIT_TAG
51
+
52
+ publish_to_pypi:
53
+ stage: publish
54
+ image: python:3.12-slim
55
+ cache:
56
+ paths:
57
+ - .pip-cache/
58
+ needs:
59
+ - build_wheel
60
+ script:
61
+ - pip install twine
62
+ - python -m twine check dist/*
63
+ - TWINE_USERNAME=__token__ TWINE_PASSWORD=${PYPI_API_TOKEN} python -m twine upload --verbose dist/*
64
+ rules:
65
+ - if: $CI_COMMIT_TAG
66
+
67
+ .synthesis_base:
68
+ stage: synthesize
69
+ image: python:3.12-slim
70
+ cache:
71
+ paths:
72
+ - .pip-cache/
73
+ before_script:
74
+ - apt-get update -qq && apt-get install -y -qq git
75
+ - pip install -r pipeline/requirements.txt
76
+ - git config user.email "claude-sync-bot@noreply"
77
+ - git config user.name "Claude Sync Bot"
78
+ - git remote set-url origin "https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"
79
+ - git fetch origin main
80
+ - git checkout main
81
+ - git pull origin main
82
+ script:
83
+ - python pipeline/synthesize.py
84
+ - |
85
+ git add consolidated/ meta/
86
+ if git diff --cached --quiet; then
87
+ echo "No changes after synthesis, skipping commit."
88
+ else
89
+ git commit -m "synthesis: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
90
+ git push origin main
91
+ fi
92
+
93
+ synthesize_scheduled:
94
+ extends: .synthesis_base
95
+ rules:
96
+ - if: $CI_PIPELINE_SOURCE == "schedule"
97
+
98
+ synthesize_manual:
99
+ extends: .synthesis_base
100
+ rules:
101
+ - if: $CI_PIPELINE_SOURCE == "web"
102
+
103
+ synthesize_trigger:
104
+ extends: .synthesis_base
105
+ rules:
106
+ - if: $CI_PIPELINE_SOURCE == "trigger"
107
+
108
+ synthesize_on_push:
109
+ extends: .synthesis_base
110
+ rules:
111
+ - if: $CI_PIPELINE_SOURCE == "push"
112
+ changes:
113
+ - machines/**/*
@@ -0,0 +1,139 @@
1
+ Metadata-Version: 2.4
2
+ Name: build
3
+ Version: 1.4.0
4
+ Summary: A simple, correct Python build frontend
5
+ Author-email: Filipe Laíns <lains@riseup.net>, Bernát Gábor <gaborjbernat@gmail.com>, layday <layday@protonmail.com>, Henry Schreiner <henryschreineriii@gmail.com>
6
+ Requires-Python: >= 3.9
7
+ Description-Content-Type: text/markdown
8
+ License-Expression: MIT
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3 :: Only
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
18
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
19
+ License-File: LICENSE
20
+ Requires-Dist: packaging >= 24.0
21
+ Requires-Dist: pyproject_hooks
22
+ Requires-Dist: colorama; os_name == "nt"
23
+ Requires-Dist: importlib-metadata >= 4.6; python_full_version < "3.10.2"
24
+ Requires-Dist: tomli >= 1.1.0; python_version < "3.11"
25
+ Requires-Dist: uv >= 0.1.18 ; extra == "uv"
26
+ Requires-Dist: virtualenv >= 20.11 ; extra == "virtualenv" and ( python_version < '3.10')
27
+ Requires-Dist: virtualenv >= 20.17 ; extra == "virtualenv" and ( python_version >= '3.10' and python_version < '3.14')
28
+ Requires-Dist: virtualenv >= 20.31 ; extra == "virtualenv" and ( python_version >= '3.14')
29
+ Project-URL: changelog, https://build.pypa.io/en/stable/changelog.html
30
+ Project-URL: homepage, https://build.pypa.io
31
+ Project-URL: issues, https://github.com/pypa/build/issues
32
+ Project-URL: source, https://github.com/pypa/build
33
+ Provides-Extra: uv
34
+ Provides-Extra: virtualenv
35
+
36
+ # build
37
+
38
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pypa/build/main.svg)](https://results.pre-commit.ci/latest/github/pypa/build/main)
39
+ [![CI test](https://github.com/pypa/build/actions/workflows/test.yml/badge.svg)](https://github.com/pypa/build/actions/workflows/test.yml)
40
+ [![codecov](https://codecov.io/gh/pypa/build/branch/main/graph/badge.svg)](https://codecov.io/gh/pypa/build)
41
+
42
+ [![Documentation Status](https://readthedocs.org/projects/pypa-build/badge/?version=latest)](https://build.pypa.io/en/latest/?badge=latest)
43
+ [![PyPI version](https://badge.fury.io/py/build.svg)](https://pypi.org/project/build/)
44
+ [![Discord](https://img.shields.io/discord/803025117553754132?label=Discord%20chat%20%23build)](https://discord.gg/pypa)
45
+
46
+ A simple, correct Python build frontend.
47
+
48
+ See the [documentation](https://build.pypa.io) for more information.
49
+
50
+ ### Installation
51
+
52
+ `build` can be installed via `pip` or an equivalent via:
53
+
54
+ ```console
55
+ $ pip install build
56
+ ```
57
+
58
+ ### Usage
59
+
60
+ ```console
61
+ $ python -m build
62
+ ```
63
+
64
+ This will build the package in an isolated environment, generating a
65
+ source-distribution and wheel in the directory `dist/`. See the
66
+ [documentation](https://build.pypa.io) for full information. Build is also
67
+ available via the command line as `pyproject-build` once installed.
68
+
69
+ ### Common arguments
70
+
71
+ - `--sdist` (`-s`): Produce just an SDist
72
+ - `--wheel` (`-w`): Produce just a wheel
73
+ - `--metadata`: Produce just the metadata as JSON. Cannot be used with `--sdist`/`--wheel`.
74
+ - `-C<option>=<value>`: A Config-setting, the PEP 517 way of passing options to a backend. Can be passed multiple times. Matching options will make a list. Note that setuptools has very limited support.
75
+ - `--config-json=<value>`: An alternative way to pass in complex config settings as JSON strings. Can't be used with `-C`.
76
+ - `--installer`: Pick an installer for the isolated build (`pip` or `uv`).
77
+ - `--no-isolation` (`-n`): Disable build isolation.
78
+ - `--skip-dependency-check` (`-x`): Disable dependency checking when not isolated; this should be done if some requirements or version ranges are not required for non-isolated builds.
79
+ - `--outdir` (`-o`): The output directory (defaults to `dist`)
80
+
81
+ Some common combinations of arguments:
82
+
83
+ - `--sdist --wheel` (`-sw`): Produce and SDist and a wheel, both from the source distribution. The default (if no flag is passed) is to build an SDist and then build a wheel _from_ the SDist.
84
+ - `-nx`: Disable build isolation and dependency checking. Identical to pip and uv's `--no-build-isolation` flag.
85
+ - `--metadata | jq -r .version`: get the version in a bash-like environment.
86
+
87
+ ### Integration with other tools
88
+
89
+ #### pipx
90
+
91
+ If you use [pipx][], such as in GitHub Actions, the following command will download
92
+ and run build in one step:
93
+
94
+ ```console
95
+ $ pipx run build
96
+ ```
97
+
98
+ #### uv
99
+
100
+ If you want to use [uv][] to speed up the virtual environment creation, you can
101
+ use `--installer=uv`. You can get a Python wheel for `uv` with the `[uv]`
102
+ extra. For example, using pipx like above:
103
+
104
+ ```console
105
+ $ pipx run 'build[uv]' --installer uv
106
+ ```
107
+
108
+ If you already have uv, you don't need the extra. For example:
109
+
110
+ ```console
111
+ $ uvx --from build pyproject-build --installer uv
112
+ ```
113
+
114
+ #### cibuildwheel
115
+
116
+ If you are using [cibuildwheel][], build is integrated and the default builder in 3.0+. If you want to use `uv` as the installer, you can use:
117
+
118
+ ```toml
119
+ [tool.cibuildwheel]
120
+ build-frontend = "build[uv]"
121
+ ```
122
+
123
+ (Be sure to pre-install uv before running cibuildwheel for this one!)
124
+
125
+ #### Conda-forge
126
+
127
+ On conda-forge, this package is called [python-build][].
128
+
129
+ ### Code of Conduct
130
+
131
+ Everyone interacting in the build's codebase, issue trackers, chat rooms, and mailing lists is expected to follow
132
+ the [PSF Code of Conduct].
133
+
134
+ [psf code of conduct]: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
135
+ [pipx]: https://pipx.pypa.io
136
+ [uv]: https://docs.astral.sh/uv/
137
+ [cibuildwheel]: https://cibuildwheel.pypa.io
138
+ [python-build]: https://github.com/conda-forge/python-build-feedstock
139
+
@@ -0,0 +1,107 @@
1
+ Metadata-Version: 2.4
2
+ Name: packaging
3
+ Version: 26.0
4
+ Summary: Core utilities for Python packages
5
+ Author-email: Donald Stufft <donald@stufft.io>
6
+ Requires-Python: >=3.8
7
+ Description-Content-Type: text/x-rst
8
+ License-Expression: Apache-2.0 OR BSD-2-Clause
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3 :: Only
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Classifier: Programming Language :: Python :: Implementation :: CPython
22
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
23
+ Classifier: Typing :: Typed
24
+ License-File: LICENSE
25
+ License-File: LICENSE.APACHE
26
+ License-File: LICENSE.BSD
27
+ Project-URL: Documentation, https://packaging.pypa.io/
28
+ Project-URL: Source, https://github.com/pypa/packaging
29
+
30
+ packaging
31
+ =========
32
+
33
+ .. start-intro
34
+
35
+ Reusable core utilities for various Python Packaging
36
+ `interoperability specifications <https://packaging.python.org/specifications/>`_.
37
+
38
+ This library provides utilities that implement the interoperability
39
+ specifications which have clearly one correct behaviour (eg: :pep:`440`)
40
+ or benefit greatly from having a single shared implementation (eg: :pep:`425`).
41
+
42
+ .. end-intro
43
+
44
+ The ``packaging`` project includes the following: version handling, specifiers,
45
+ markers, requirements, tags, metadata, lockfiles, utilities.
46
+
47
+ Documentation
48
+ -------------
49
+
50
+ The `documentation`_ provides information and the API for the following:
51
+
52
+ - Version Handling
53
+ - Specifiers
54
+ - Markers
55
+ - Requirements
56
+ - Tags
57
+ - Metadata
58
+ - Lockfiles
59
+ - Utilities
60
+
61
+ Installation
62
+ ------------
63
+
64
+ Use ``pip`` to install these utilities::
65
+
66
+ pip install packaging
67
+
68
+ The ``packaging`` library uses calendar-based versioning (``YY.N``).
69
+
70
+ Discussion
71
+ ----------
72
+
73
+ If you run into bugs, you can file them in our `issue tracker`_.
74
+
75
+ You can also join ``#pypa`` on Freenode to ask questions or get involved.
76
+
77
+
78
+ .. _`documentation`: https://packaging.pypa.io/
79
+ .. _`issue tracker`: https://github.com/pypa/packaging/issues
80
+
81
+
82
+ Code of Conduct
83
+ ---------------
84
+
85
+ Everyone interacting in the packaging project's codebases, issue trackers, chat
86
+ rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
87
+
88
+ .. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
89
+
90
+ Contributing
91
+ ------------
92
+
93
+ The ``CONTRIBUTING.rst`` file outlines how to contribute to this project as
94
+ well as how to report a potential security issue. The documentation for this
95
+ project also covers information about `project development`_ and `security`_.
96
+
97
+ .. _`project development`: https://packaging.pypa.io/en/latest/development/
98
+ .. _`security`: https://packaging.pypa.io/en/latest/security/
99
+
100
+ Project History
101
+ ---------------
102
+
103
+ Please review the ``CHANGELOG.rst`` file or the `Changelog documentation`_ for
104
+ recent changes and project history.
105
+
106
+ .. _`Changelog documentation`: https://packaging.pypa.io/en/latest/changelog/
107
+
@@ -0,0 +1,82 @@
1
+ Metadata-Version: 2.4
2
+ Name: trove-classifiers
3
+ Version: 2026.1.14.14
4
+ Summary: Canonical source for classifiers on PyPI (pypi.org).
5
+ Home-page: https://github.com/pypa/trove-classifiers
6
+ Author: The PyPI Admins
7
+ Author-email: admin@pypi.org
8
+ Keywords: classifiers
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Typing :: Typed
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Dynamic: author
17
+ Dynamic: author-email
18
+ Dynamic: classifier
19
+ Dynamic: description
20
+ Dynamic: description-content-type
21
+ Dynamic: home-page
22
+ Dynamic: keywords
23
+ Dynamic: license-file
24
+ Dynamic: summary
25
+
26
+ Canonical source for [classifiers][1] on [PyPI][2].
27
+
28
+ Classifiers [categorize projects][3] per [PEP 301][4]. Use this package to
29
+ validate classifiers in packages for PyPI upload or download.
30
+
31
+ ## Usage
32
+
33
+ To install [from PyPI][5]:
34
+
35
+ ```
36
+ $ pip install trove-classifiers
37
+ ```
38
+
39
+ This package can be invoked as a module to print a list of classifiers:
40
+
41
+ ```
42
+ $ python -m trove_classifiers | grep -Ei pyramid
43
+ Framework :: Pyramid
44
+ ```
45
+
46
+ In addition, this package's API is two importable objects:
47
+
48
+ ### Classifiers (`trove_classifiers.classifiers`)
49
+ A `set` containing classifiers (as strings). Useful for determining membership.
50
+
51
+ Example - determine if a classifier is valid:
52
+
53
+ ```python
54
+ >>> from trove_classifiers import classifiers
55
+ >>> 'License :: OSI Approved' in classifiers
56
+ True
57
+ >>> 'Fuzzy :: Wuzzy :: Was :: A :: Bear' in classifiers
58
+ False
59
+ >>>
60
+ ```
61
+
62
+ ### Deprecated classifiers (`trove_classifiers.deprecated_classifiers`)
63
+ A `dict`, mapping a deprecated classifier (string) to a list of classifiers
64
+ which replaces it (strings).
65
+
66
+ Example - determine if a classifier is deprecated:
67
+
68
+ ```python
69
+ >>> from trove_classifiers import deprecated_classifiers
70
+ >>> 'License :: OSI Approved' in deprecated_classifiers
71
+ False
72
+ >>> 'Natural Language :: Ukranian' in deprecated_classifiers
73
+ True
74
+ >>> deprecated_classifiers["Natural Language :: Ukranian"]
75
+ ['Natural Language :: Ukrainian']
76
+ ```
77
+
78
+ [1]: https://pypi.org/classifiers/
79
+ [2]: https://pypi.org
80
+ [3]: https://packaging.python.org/specifications/core-metadata/#classifier-multiple-use
81
+ [4]: https://www.python.org/dev/peps/pep-0301/
82
+ [5]: https://pypi.org/project/trove-classifiers/
@@ -0,0 +1,79 @@
1
+ Metadata-Version: 2.4
2
+ Name: hatchling
3
+ Version: 1.29.0
4
+ Summary: Modern, extensible Python build backend
5
+ Project-URL: Homepage, https://hatch.pypa.io/latest/
6
+ Project-URL: Sponsor, https://github.com/sponsors/ofek
7
+ Project-URL: History, https://hatch.pypa.io/dev/history/hatchling/
8
+ Project-URL: Tracker, https://github.com/pypa/hatch/issues
9
+ Project-URL: Source, https://github.com/pypa/hatch/tree/master/backend
10
+ Author-email: Ofek Lev <oss@ofek.dev>
11
+ License-Expression: MIT
12
+ License-File: LICENSE.txt
13
+ Keywords: build,hatch,packaging
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Natural Language :: English
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: Implementation :: CPython
24
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
25
+ Classifier: Topic :: Software Development :: Build Tools
26
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
+ Requires-Python: >=3.10
28
+ Requires-Dist: packaging>=24.2
29
+ Requires-Dist: pathspec>=0.10.1
30
+ Requires-Dist: pluggy>=1.0.0
31
+ Requires-Dist: tomli>=1.2.2; python_version < '3.11'
32
+ Requires-Dist: trove-classifiers
33
+ Description-Content-Type: text/markdown
34
+
35
+ # Hatchling
36
+
37
+ <div align="center">
38
+
39
+ <img src="https://raw.githubusercontent.com/pypa/hatch/master/docs/assets/images/logo.svg" alt="Hatch logo" width="500" role="img">
40
+
41
+ | | |
42
+ | --- | --- |
43
+ | Package | [![PyPI - Version](https://img.shields.io/pypi/v/hatchling.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/hatchling/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/hatchling.svg?color=blue&label=Downloads&logo=pypi&logoColor=gold)](https://pypi.org/project/hatchling/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/hatchling.svg?logo=python&label=Python&logoColor=gold)](https://pypi.org/project/hatchling/) |
44
+ | Meta | [![Hatch project](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pypa/hatch/master/docs/assets/badge/v0.json)](https://github.com/pypa/hatch) [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![types - Mypy](https://img.shields.io/badge/types-Mypy-blue.svg)](https://github.com/python/mypy) [![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/) [![GitHub Sponsors](https://img.shields.io/github/sponsors/ofek?logo=GitHub%20Sponsors&style=social)](https://github.com/sponsors/ofek) |
45
+
46
+ </div>
47
+
48
+ -----
49
+
50
+ This is the extensible, standards compliant build backend used by [Hatch](https://github.com/pypa/hatch).
51
+
52
+ ## Usage
53
+
54
+ The following snippet must be present in your project's `pyproject.toml` file in order to use Hatchling as your build backend:
55
+
56
+ ```toml
57
+ [build-system]
58
+ requires = ["hatchling"]
59
+ build-backend = "hatchling.build"
60
+ ```
61
+
62
+ Then a build frontend like [pip](https://github.com/pypa/pip), [build](https://github.com/pypa/build), or Hatch itself can build or install your project automatically:
63
+
64
+ ```console
65
+ # install using pip
66
+ pip install /path/to/project
67
+
68
+ # build
69
+ python -m build /path/to/project
70
+
71
+ # build with Hatch
72
+ hatch build /path/to/project
73
+ ```
74
+
75
+ ## Documentation
76
+
77
+ - [Project metadata](https://hatch.pypa.io/latest/config/metadata/)
78
+ - [Dependencies](https://hatch.pypa.io/latest/config/dependency/)
79
+ - [Packaging](https://hatch.pypa.io/latest/config/build/)
@@ -0,0 +1,25 @@
1
+ Metadata-Version: 2.1
2
+ Name: pyproject_hooks
3
+ Version: 1.2.0
4
+ Summary: Wrappers to call pyproject.toml-based build backend hooks.
5
+ Author-email: Thomas Kluyver <thomas@kluyver.me.uk>
6
+ Requires-Python: >=3.7
7
+ Description-Content-Type: text/x-rst
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3 :: Only
11
+ Project-URL: Changelog, https://pyproject-hooks.readthedocs.io/en/latest/changelog.html
12
+ Project-URL: Documentation, https://pyproject-hooks.readthedocs.io/
13
+ Project-URL: Source, https://github.com/pypa/pyproject-hooks
14
+
15
+ ``pyproject-hooks``
16
+ ===================
17
+
18
+ This is a low-level library for calling build-backends in ``pyproject.toml``-based project. It provides the basic functionality to help write tooling that generates distribution files from Python projects.
19
+
20
+ If you want a tool that builds Python packages, you'll want to use https://github.com/pypa/build instead. This is an underlying piece for `pip`, `build` and other "build frontends" use to call "build backends" within them.
21
+
22
+ You can read more in the `documentation <https://pyproject-hooks.readthedocs.io/>`_.
23
+
24
+ Note: The ``pep517`` project has been replaced by this project (low level) and the ``build`` project (high level).
25
+