uv-upsync 2.3.2__tar.gz → 2.4.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 (64) hide show
  1. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/.editorconfig +1 -1
  2. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/.github/PULL_REQUEST_TEMPLATE.md +2 -9
  3. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/.github/labels.yaml +24 -20
  4. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/.github/workflows/ci.yaml +9 -13
  5. uv_upsync-2.3.2/.github/workflows/update-labels.yaml → uv_upsync-2.4.1/.github/workflows/labels.yaml +13 -7
  6. uv_upsync-2.4.1/.github/workflows/release.yaml +108 -0
  7. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/.gitignore +62 -31
  8. uv_upsync-2.4.1/.pre-commit-hooks.yaml +17 -0
  9. uv_upsync-2.4.1/.python-version +1 -0
  10. uv_upsync-2.4.1/CHANGELOG.md +246 -0
  11. uv_upsync-2.4.1/CLAUDE.md +60 -0
  12. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/CODE_OF_CONDUCT.md +0 -13
  13. uv_upsync-2.4.1/CONTRIBUTING.md +128 -0
  14. uv_upsync-2.4.1/PKG-INFO +290 -0
  15. uv_upsync-2.4.1/README.md +255 -0
  16. uv_upsync-2.4.1/SECURITY.md +19 -0
  17. uv_upsync-2.4.1/action.yml +46 -0
  18. uv_upsync-2.4.1/cliff.toml +44 -0
  19. uv_upsync-2.4.1/justfile +26 -0
  20. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/pyproject.toml +14 -47
  21. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/src/uv_upsync/__init__.py +3 -1
  22. uv_upsync-2.4.1/src/uv_upsync/__main__.py +520 -0
  23. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/src/uv_upsync/commands.py +5 -11
  24. uv_upsync-2.4.1/src/uv_upsync/config.py +103 -0
  25. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/src/uv_upsync/exceptions.py +1 -18
  26. uv_upsync-2.4.1/src/uv_upsync/logging.py +77 -0
  27. uv_upsync-2.4.1/src/uv_upsync/parsers.py +384 -0
  28. uv_upsync-2.4.1/src/uv_upsync/pypi.py +134 -0
  29. uv_upsync-2.4.1/src/uv_upsync/report.py +68 -0
  30. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/src/uv_upsync/uv.py +15 -4
  31. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/tests/conftest.py +2 -2
  32. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/tests/test_commands.py +8 -30
  33. uv_upsync-2.4.1/tests/test_config.py +78 -0
  34. uv_upsync-2.4.1/tests/test_exceptions.py +55 -0
  35. uv_upsync-2.4.1/tests/test_logging.py +152 -0
  36. uv_upsync-2.4.1/tests/test_parsers.py +378 -0
  37. uv_upsync-2.4.1/tests/test_pypi.py +149 -0
  38. uv_upsync-2.4.1/tests/test_report.py +44 -0
  39. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/tests/test_uv.py +24 -19
  40. uv_upsync-2.4.1/uv.lock +521 -0
  41. uv_upsync-2.3.2/.github/.codecov.yaml +0 -7
  42. uv_upsync-2.3.2/.github/ISSUE_TEMPLATE/---bug-report.yaml +0 -81
  43. uv_upsync-2.3.2/.github/ISSUE_TEMPLATE/---documentation.yaml +0 -58
  44. uv_upsync-2.3.2/.github/ISSUE_TEMPLATE/---feature-request.yaml +0 -67
  45. uv_upsync-2.3.2/.github/ISSUE_TEMPLATE/config.yaml +0 -1
  46. uv_upsync-2.3.2/.github/workflows/release.yaml +0 -55
  47. uv_upsync-2.3.2/CHANGELOG.md +0 -228
  48. uv_upsync-2.3.2/CONTRIBUTING.md +0 -99
  49. uv_upsync-2.3.2/PKG-INFO +0 -189
  50. uv_upsync-2.3.2/README.md +0 -154
  51. uv_upsync-2.3.2/SECURITY.md +0 -24
  52. uv_upsync-2.3.2/justfile +0 -16
  53. uv_upsync-2.3.2/src/uv_upsync/__main__.py +0 -155
  54. uv_upsync-2.3.2/src/uv_upsync/logging.py +0 -34
  55. uv_upsync-2.3.2/src/uv_upsync/parsers.py +0 -155
  56. uv_upsync-2.3.2/src/uv_upsync/pypi.py +0 -67
  57. uv_upsync-2.3.2/tests/test_exceptions.py +0 -109
  58. uv_upsync-2.3.2/tests/test_logging.py +0 -120
  59. uv_upsync-2.3.2/tests/test_parsers.py +0 -269
  60. uv_upsync-2.3.2/tests/test_pypi.py +0 -99
  61. uv_upsync-2.3.2/uv.lock +0 -1320
  62. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/LICENSE +0 -0
  63. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/assets/logo.svg +0 -0
  64. {uv_upsync-2.3.2 → uv_upsync-2.4.1}/tests/__init__.py +0 -0
@@ -10,6 +10,6 @@ max_line_length = 120
10
10
  tab_width = 2
11
11
  trim_trailing_whitespace = true
12
12
 
13
- [{*.py,*.pyi}]
13
+ [{*.py,*.pyi,*.ipynb}]
14
14
  indent_size = 4
15
15
  tab_width = 4
@@ -1,6 +1,7 @@
1
1
  # Pull Request Checklist
2
2
 
3
- **Resolves: #issue-number-here**
3
+ <!-- Optional — uncomment if this PR closes an issue -->
4
+ <!-- Resolves: #issue-number-here -->
4
5
 
5
6
  ## Summary
6
7
 
@@ -13,11 +14,3 @@
13
14
  - [ ] I have commented my code, particularly in hard-to-understand areas
14
15
  - [ ] I have made corresponding changes to the documentation
15
16
  - [ ] My changes generate no new warnings or errors
16
-
17
- ## Screenshots (if applicable)
18
-
19
- <!-- Add screenshots to help explain your changes if UI is affected -->
20
-
21
- ## Additional Notes
22
-
23
- <!-- Add any other context or information for reviewers -->
@@ -2,6 +2,30 @@
2
2
  description: Pull requests that update a dependency file
3
3
  color: 0366d6
4
4
 
5
+ - name: "type: breaking"
6
+ description: Indicates a BREAKING CHANGE
7
+ color: B60205
8
+
9
+ - name: "type: bug"
10
+ description: Indicates an unexpected problem or unintended behavior
11
+ color: D93F0B
12
+
13
+ - name: "type: security"
14
+ description: Indicates a security vulnerability or hardening request
15
+ color: B60205
16
+
17
+ - name: "type: documentation"
18
+ description: Indicates a need for improvement or addition to documentation
19
+ color: 006B75
20
+
21
+ - name: "type: enhancement"
22
+ description: Indicates a new feature request
23
+ color: 0E8A16
24
+
25
+ - name: "type: maintenance"
26
+ description: Indicates changes to the CI, etc.; a code change that does not fix a bug or add a feature
27
+ color: FBCA04
28
+
5
29
  - name: "priority: critical"
6
30
  description: Indicates a critical bug or work that is holding up a lot of other important features or fixes
7
31
  color: B60205
@@ -33,23 +57,3 @@
33
57
  - name: "status: help wanted"
34
58
  description: Indicates that a maintainer wants help on an issue or pull request
35
59
  color: C5DEF5
36
-
37
- - name: "type: breaking"
38
- description: Indicates a BREAKING CHANGE
39
- color: B60205
40
-
41
- - name: "type: bug"
42
- description: Indicates an unexpected problem or unintended behavior
43
- color: D93F0B
44
-
45
- - name: "type: documentation"
46
- description: Indicates a need for improvement or addition to documentation
47
- color: 006B75
48
-
49
- - name: "type: enhancement"
50
- description: Indicates a new feature request
51
- color: 0E8A16
52
-
53
- - name: "type: maintenance"
54
- description: Indicates changes to the CI, etc.; a code change that does not fix a bug or add a feature
55
- color: FBCA04
@@ -1,6 +1,3 @@
1
- # Requires GitHub secrets
2
- # - CODECOV_TOKEN
3
-
4
1
  name: CI
5
2
 
6
3
  on:
@@ -9,15 +6,19 @@ on:
9
6
  pull_request:
10
7
  workflow_dispatch:
11
8
 
9
+ concurrency:
10
+ group: ci-${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
12
+
13
+ permissions:
14
+ contents: read
15
+
12
16
  jobs:
13
17
  ci:
14
- name: CI
15
18
  runs-on: ubuntu-latest
16
19
  steps:
17
20
  - name: Checkout repository
18
21
  uses: actions/checkout@v6
19
- with:
20
- fetch-depth: 0
21
22
 
22
23
  - name: Install just
23
24
  uses: extractions/setup-just@v3
@@ -28,7 +29,7 @@ jobs:
28
29
  python-version: "3.13"
29
30
 
30
31
  - name: Install dependencies
31
- run: uv sync --all-groups --all-extras
32
+ run: just install
32
33
 
33
34
  - name: Run linters
34
35
  run: just lint
@@ -36,10 +37,5 @@ jobs:
36
37
  - name: Run tests
37
38
  run: just test
38
39
 
39
- - name: Upload coverage to Codecov
40
- uses: codecov/codecov-action@v5
41
- with:
42
- token: ${{ secrets.CODECOV_TOKEN }}
43
-
44
40
  - name: Run audit
45
- run: uv audit
41
+ run: just audit
@@ -1,27 +1,33 @@
1
1
  # Requires GitHub secrets
2
2
  # - GH_TOKEN
3
3
 
4
- name: Update Labels
4
+ name: Labels
5
5
 
6
6
  on:
7
7
  push:
8
8
  branches: ["main"]
9
9
  paths:
10
10
  - ".github/labels.yaml"
11
- - ".github/workflows/update-labels.yaml"
11
+ - ".github/workflows/labels.yaml"
12
12
  workflow_dispatch:
13
13
 
14
+ concurrency:
15
+ group: labels-${{ github.ref }}
16
+ cancel-in-progress: false
17
+
18
+ permissions:
19
+ contents: read
20
+ issues: write
21
+ pull-requests: write
22
+
14
23
  jobs:
15
- update-labels:
16
- name: Update Labels
24
+ sync:
17
25
  runs-on: ubuntu-latest
18
26
  steps:
19
27
  - name: Checkout repository
20
28
  uses: actions/checkout@v6
21
- with:
22
- fetch-depth: 0
23
29
 
24
- - name: Update labels
30
+ - name: Sync labels
25
31
  uses: crazy-max/ghaction-github-labeler@v6
26
32
  with:
27
33
  github-token: ${{ secrets.GH_TOKEN }}
@@ -0,0 +1,108 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: "Version override (leave empty to auto-detect from commits)"
8
+ required: false
9
+
10
+ permissions:
11
+ contents: write
12
+
13
+ jobs:
14
+ tag:
15
+ runs-on: ubuntu-latest
16
+ outputs:
17
+ tag: v${{ steps.version.outputs.version }}
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v6
21
+ with:
22
+ fetch-depth: 0
23
+
24
+ - name: Install git-cliff
25
+ uses: orhun/git-cliff-action@v4
26
+ with:
27
+ args: --version
28
+
29
+ - name: Add git-cliff to PATH
30
+ run: echo "$RUNNER_TEMP/git-cliff/bin" >> "$GITHUB_PATH"
31
+
32
+ - name: Install uv
33
+ uses: astral-sh/setup-uv@v6
34
+ with:
35
+ python-version: "3.13"
36
+
37
+ - name: Resolve version
38
+ id: version
39
+ run: |
40
+ if [[ -n "${{ github.event.inputs.version }}" ]]; then
41
+ VERSION="${{ github.event.inputs.version }}"
42
+ else
43
+ VERSION=$(git-cliff --bumped-version)
44
+ VERSION="${VERSION#v}"
45
+ fi
46
+ echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
47
+
48
+ - name: Update version
49
+ run: uv version "${{ steps.version.outputs.version }}"
50
+
51
+ - name: Generate changelog
52
+ uses: orhun/git-cliff-action@v4
53
+ with:
54
+ args: --tag v${{ steps.version.outputs.version }} --output CHANGELOG.md
55
+
56
+ - name: Commit and tag
57
+ run: |
58
+ VERSION="${{ steps.version.outputs.version }}"
59
+ git config user.name "github-actions[bot]"
60
+ git config user.email "github-actions[bot]@users.noreply.github.com"
61
+ git add pyproject.toml CHANGELOG.md
62
+ if ! git diff --cached --quiet; then
63
+ git commit -m "release: v${VERSION}"
64
+ fi
65
+ git tag "v${VERSION}"
66
+ git push origin main --tags
67
+
68
+ release:
69
+ needs: tag
70
+ runs-on: ubuntu-latest
71
+ steps:
72
+ - name: Checkout repository
73
+ uses: actions/checkout@v6
74
+ with:
75
+ ref: ${{ needs.tag.outputs.tag }}
76
+ fetch-depth: 0
77
+
78
+ - name: Generate Changelog
79
+ uses: orhun/git-cliff-action@v4
80
+ id: changelog
81
+ with:
82
+ args: --latest --strip header
83
+
84
+ - name: Create GitHub Release
85
+ uses: softprops/action-gh-release@v2
86
+ with:
87
+ tag_name: ${{ needs.tag.outputs.tag }}
88
+ body: ${{ steps.changelog.outputs.content }}
89
+
90
+ publish:
91
+ needs: [tag, release]
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - name: Checkout repository
95
+ uses: actions/checkout@v6
96
+ with:
97
+ ref: ${{ needs.tag.outputs.tag }}
98
+
99
+ - name: Install uv
100
+ uses: astral-sh/setup-uv@v6
101
+ with:
102
+ python-version: "3.13"
103
+
104
+ - name: Build
105
+ run: uv build
106
+
107
+ - name: Publish to PyPI
108
+ run: uv publish --token ${{ secrets.PYPI_TOKEN }}
@@ -27,8 +27,8 @@ share/python-wheels/
27
27
  MANIFEST
28
28
 
29
29
  # PyInstaller
30
- # Usually these files are written by a python script from a template
31
- # before PyInstaller builds the exe, so as to inject date/other infos into it.
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
32
  *.manifest
33
33
  *.spec
34
34
 
@@ -47,6 +47,7 @@ nosetests.xml
47
47
  coverage.xml
48
48
  *.cover
49
49
  *.py.cover
50
+ *.lcov
50
51
  .hypothesis/
51
52
  .pytest_cache/
52
53
  cover/
@@ -92,45 +93,59 @@ ipython_config.py
92
93
  # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
94
  # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
95
  # install all needed dependencies.
95
- #Pipfile.lock
96
+ # Pipfile.lock
96
97
 
97
98
  # UV
98
99
  # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
100
  # This is especially recommended for binary packages to ensure reproducibility, and is more
100
101
  # commonly ignored for libraries.
101
- #uv.lock
102
+ # uv.lock
102
103
 
103
104
  # poetry
104
105
  # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
106
  # This is especially recommended for binary packages to ensure reproducibility, and is more
106
107
  # commonly ignored for libraries.
107
108
  # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
- #poetry.lock
109
- #poetry.toml
109
+ # poetry.lock
110
+ # poetry.toml
110
111
 
111
112
  # pdm
112
113
  # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
114
  # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
115
  # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
- #pdm.lock
116
- #pdm.toml
116
+ # pdm.lock
117
+ # pdm.toml
117
118
  .pdm-python
118
119
  .pdm-build/
119
120
 
120
121
  # pixi
121
122
  # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
- #pixi.lock
123
+ # pixi.lock
123
124
  # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
125
  # in the .venv directory. It is recommended not to include this directory in version control.
125
- .pixi
126
+ .pixi/*
127
+ !.pixi/config.toml
126
128
 
127
129
  # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
130
  __pypackages__/
129
131
 
130
132
  # Celery stuff
131
- celerybeat-schedule
133
+ celerybeat-schedule*
132
134
  celerybeat.pid
133
135
 
136
+ # Redis
137
+ *.rdb
138
+ *.aof
139
+ *.pid
140
+
141
+ # RabbitMQ
142
+ mnesia/
143
+ rabbitmq/
144
+ rabbitmq-data/
145
+
146
+ # ActiveMQ
147
+ activemq-data/
148
+
134
149
  # SageMath parsed files
135
150
  *.sage.py
136
151
 
@@ -169,24 +184,26 @@ dmypy.json
169
184
  cython_debug/
170
185
 
171
186
  # PyCharm
172
- # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
173
- # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
174
- # and can be added to the global gitignore or merged into this file. For a more nuclear
175
- # option (not recommended) you can uncomment the following to ignore the entire idea folder.
176
- .idea/
187
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
188
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
189
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
190
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
191
+ # .idea/
177
192
 
178
193
  # Abstra
179
- # Abstra is an AI-powered process automation framework.
180
- # Ignore directories containing user credentials, local state, and settings.
181
- # Learn more at https://abstra.io/docs
194
+ # Abstra is an AI-powered process automation framework.
195
+ # Ignore directories containing user credentials, local state, and settings.
196
+ # Learn more at https://abstra.io/docs
182
197
  .abstra/
183
198
 
184
199
  # Visual Studio Code
185
- # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
186
- # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
187
- # and can be added to the global gitignore or merged into this file. However, if you prefer,
188
- # you could uncomment the following to ignore the entire vscode folder
189
- .vscode/
200
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
201
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
202
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
203
+ # you could uncomment the following to ignore the entire vscode folder
204
+ # .vscode/
205
+ # Temporary file for partial code execution
206
+ tempCodeRunnerFile.py
190
207
 
191
208
  # Ruff stuff:
192
209
  .ruff_cache/
@@ -194,17 +211,31 @@ cython_debug/
194
211
  # PyPI configuration file
195
212
  .pypirc
196
213
 
197
- # Cursor
198
- # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
199
- # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
200
- # refer to https://docs.cursor.com/context/ignore-files
201
- .cursorignore
202
- .cursorindexingignore
203
-
204
214
  # Marimo
205
215
  marimo/_static/
206
216
  marimo/_lsp/
207
217
  __marimo__/
208
218
 
219
+ # Streamlit
220
+ .streamlit/secrets.toml
221
+
209
222
  # OS
210
223
  .DS_Store
224
+ Thumbs.db
225
+
226
+ # Editors
227
+ .zed/
228
+ .idea/
229
+ .vscode/
230
+
231
+ # Env
232
+ .env
233
+ .env.local
234
+ .env.*.local
235
+
236
+ # Logs
237
+ *.log
238
+
239
+ # Misc
240
+ .cache/
241
+ .tmp/
@@ -0,0 +1,17 @@
1
+ - id: uv-upsync
2
+ name: uv-upsync
3
+ description: Upgrade dependency lower bounds in pyproject.toml to the latest versions
4
+ entry: uv-upsync
5
+ language: python
6
+ files: ^pyproject\.toml$
7
+ pass_filenames: false
8
+ require_serial: true
9
+
10
+ - id: uv-upsync-check
11
+ name: uv-upsync (check)
12
+ description: Fail if any dependency in pyproject.toml can be upgraded
13
+ entry: uv-upsync --check
14
+ language: python
15
+ files: ^pyproject\.toml$
16
+ pass_filenames: false
17
+ require_serial: true
@@ -0,0 +1 @@
1
+ 3.13