taskchampion3-py-dev 3.0.1.1.1a1__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 (43) hide show
  1. taskchampion3_py_dev-3.0.1.1.1a1/.github/workflows/add-to-project.yml +18 -0
  2. taskchampion3_py_dev-3.0.1.1.1a1/.github/workflows/checks.yml +58 -0
  3. taskchampion3_py_dev-3.0.1.1.1a1/.github/workflows/ci.yml +218 -0
  4. taskchampion3_py_dev-3.0.1.1.1a1/.github/workflows/docs.yml +51 -0
  5. taskchampion3_py_dev-3.0.1.1.1a1/.github/workflows/publish_released_by_ci.yml +31 -0
  6. taskchampion3_py_dev-3.0.1.1.1a1/.gitignore +180 -0
  7. taskchampion3_py_dev-3.0.1.1.1a1/CHANGELOG.md +36 -0
  8. taskchampion3_py_dev-3.0.1.1.1a1/CODE_OF_CONDUCT.md +76 -0
  9. taskchampion3_py_dev-3.0.1.1.1a1/Cargo.lock +2350 -0
  10. taskchampion3_py_dev-3.0.1.1.1a1/Cargo.toml +34 -0
  11. taskchampion3_py_dev-3.0.1.1.1a1/LICENSE +21 -0
  12. taskchampion3_py_dev-3.0.1.1.1a1/PKG-INFO +101 -0
  13. taskchampion3_py_dev-3.0.1.1.1a1/README.md +81 -0
  14. taskchampion3_py_dev-3.0.1.1.1a1/RELEASING.md +25 -0
  15. taskchampion3_py_dev-3.0.1.1.1a1/mypy.ini +8 -0
  16. taskchampion3_py_dev-3.0.1.1.1a1/pyproject.toml +38 -0
  17. taskchampion3_py_dev-3.0.1.1.1a1/rust-toolchain.toml +2 -0
  18. taskchampion3_py_dev-3.0.1.1.1a1/src/access_mode.rs +27 -0
  19. taskchampion3_py_dev-3.0.1.1.1a1/src/dependency_map.rs +45 -0
  20. taskchampion3_py_dev-3.0.1.1.1a1/src/lib.rs +48 -0
  21. taskchampion3_py_dev-3.0.1.1.1a1/src/operation.rs +171 -0
  22. taskchampion3_py_dev-3.0.1.1.1a1/src/operations.rs +62 -0
  23. taskchampion3_py_dev-3.0.1.1.1a1/src/replica.rs +311 -0
  24. taskchampion3_py_dev-3.0.1.1.1a1/src/task/annotation.rs +48 -0
  25. taskchampion3_py_dev-3.0.1.1.1a1/src/task/data.rs +66 -0
  26. taskchampion3_py_dev-3.0.1.1.1a1/src/task/mod.rs +12 -0
  27. taskchampion3_py_dev-3.0.1.1.1a1/src/task/status.rs +38 -0
  28. taskchampion3_py_dev-3.0.1.1.1a1/src/task/tag.rs +54 -0
  29. taskchampion3_py_dev-3.0.1.1.1a1/src/task/task.rs +260 -0
  30. taskchampion3_py_dev-3.0.1.1.1a1/src/util.rs +15 -0
  31. taskchampion3_py_dev-3.0.1.1.1a1/src/working_set.rs +80 -0
  32. taskchampion3_py_dev-3.0.1.1.1a1/taskchampion.pyi +191 -0
  33. taskchampion3_py_dev-3.0.1.1.1a1/tests/__init__.py +0 -0
  34. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_annotation.py +29 -0
  35. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_data.py +94 -0
  36. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_dependency_map.py +36 -0
  37. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_operation.py +110 -0
  38. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_operations.py +54 -0
  39. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_replica.py +159 -0
  40. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_tag.py +39 -0
  41. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_task.py +424 -0
  42. taskchampion3_py_dev-3.0.1.1.1a1/tests/test_working_set.py +71 -0
  43. taskchampion3_py_dev-3.0.1.1.1a1/uv.lock +478 -0
@@ -0,0 +1,18 @@
1
+ # This adds all new issues to the Taskwarrior project, for better tracking.
2
+ # It uses a PAT that belongs to @taskwarrior.
3
+ name: Add issues to Taskwarrior Project
4
+
5
+ on:
6
+ issues:
7
+ types:
8
+ - opened
9
+
10
+ jobs:
11
+ add-to-project:
12
+ name: Add issue to project
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/add-to-project@v1.0.2
16
+ with:
17
+ project-url: https://github.com/orgs/GothenburgBitFactory/projects/4
18
+ github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
@@ -0,0 +1,58 @@
1
+ name: checks
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ types: [opened, reopened, synchronize]
7
+
8
+ jobs:
9
+ clippy:
10
+ runs-on: ubuntu-latest
11
+ name: "Check & Clippy"
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Cache cargo registry
17
+ uses: actions/cache@v4
18
+ with:
19
+ path: ~/.cargo/registry
20
+ key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
21
+
22
+ - name: Cache cargo build
23
+ uses: actions/cache@v4
24
+ with:
25
+ path: target
26
+ key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
27
+
28
+ - uses: dtolnay/rust-toolchain@master
29
+ with:
30
+ toolchain: "1.91.1" # MSRV
31
+ components: clippy
32
+
33
+ - name: Check
34
+ run: cargo check
35
+
36
+ - name: Clippy
37
+ run: cargo clippy --all-features --no-deps -- -D warnings
38
+
39
+ fmt:
40
+ runs-on: ubuntu-latest
41
+ name: "Rust Formatting"
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+
45
+ - uses: dtolnay/rust-toolchain@master
46
+ with:
47
+ components: rustfmt
48
+ toolchain: "1.91.1"
49
+
50
+ - name: Rustfmt
51
+ run: cargo fmt --all -- --check
52
+
53
+ black:
54
+ runs-on: ubuntu-latest
55
+ name: "Python Formatting"
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ - uses: psf/black@stable
@@ -0,0 +1,218 @@
1
+ # This file is autogenerated by maturin v1.8.0
2
+ # To update, run
3
+ #
4
+ # maturin generate-ci github
5
+ #
6
+ name: CI
7
+
8
+ on:
9
+ push:
10
+ branches:
11
+ - main
12
+ - master
13
+ - feat/**
14
+ tags:
15
+ - '*'
16
+ pull_request:
17
+ workflow_dispatch:
18
+
19
+ permissions:
20
+ contents: read
21
+
22
+ jobs:
23
+ linux:
24
+ if: ${{ github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/tags/') }}
25
+ runs-on: ${{ matrix.platform.runner }}
26
+ strategy:
27
+ matrix:
28
+ platform:
29
+ - runner: ubuntu-22.04
30
+ target: x86_64
31
+ - runner: ubuntu-22.04
32
+ target: x86
33
+ - runner: ubuntu-22.04
34
+ target: armv7
35
+ - runner: ubuntu-22.04
36
+ target: s390x
37
+ - runner: ubuntu-22.04
38
+ target: ppc64le
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+ - uses: actions/setup-python@v5
42
+ with:
43
+ python-version: 3.12
44
+ - name: Build wheels
45
+ uses: PyO3/maturin-action@v1
46
+ with:
47
+ target: ${{ matrix.platform.target }}
48
+ args: --release --out dist --find-interpreter
49
+ sccache: 'true'
50
+ manylinux: auto
51
+ - name: Upload wheels
52
+ uses: actions/upload-artifact@v4
53
+ with:
54
+ name: wheels-linux-${{ matrix.platform.target }}
55
+ path: dist
56
+
57
+ musllinux:
58
+ if: ${{ github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/tags/') }}
59
+ runs-on: ${{ matrix.platform.runner }}
60
+ strategy:
61
+ matrix:
62
+ platform:
63
+ - runner: ubuntu-22.04
64
+ target: x86_64
65
+ - runner: ubuntu-22.04
66
+ target: x86
67
+ - runner: ubuntu-22.04
68
+ target: aarch64
69
+ - runner: ubuntu-22.04
70
+ target: armv7
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+ - uses: actions/setup-python@v5
74
+ with:
75
+ python-version: 3.12
76
+ - name: Build wheels
77
+ uses: PyO3/maturin-action@v1
78
+ with:
79
+ target: ${{ matrix.platform.target }}
80
+ args: --release --out dist --find-interpreter
81
+ sccache: 'true'
82
+ manylinux: musllinux_1_2
83
+ - name: Upload wheels
84
+ uses: actions/upload-artifact@v4
85
+ with:
86
+ name: wheels-musllinux-${{ matrix.platform.target }}
87
+ path: dist
88
+
89
+ windows:
90
+ if: ${{ github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/tags/') }}
91
+ runs-on: ${{ matrix.platform.runner }}
92
+ strategy:
93
+ matrix:
94
+ platform:
95
+ - runner: windows-latest
96
+ target: x64
97
+ - runner: windows-latest
98
+ target: x86
99
+ steps:
100
+ - uses: actions/checkout@v4
101
+ - uses: actions/setup-python@v5
102
+ with:
103
+ python-version: 3.12
104
+ architecture: ${{ matrix.platform.target }}
105
+ - name: Build wheels
106
+ uses: PyO3/maturin-action@v1
107
+ with:
108
+ target: ${{ matrix.platform.target }}
109
+ args: --release --out dist --find-interpreter
110
+ sccache: 'true'
111
+ - name: Upload wheels
112
+ uses: actions/upload-artifact@v4
113
+ with:
114
+ name: wheels-windows-${{ matrix.platform.target }}
115
+ path: dist
116
+
117
+ macos:
118
+ if: ${{ github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/tags/') }}
119
+ runs-on: ${{ matrix.platform.runner }}
120
+ strategy:
121
+ matrix:
122
+ platform:
123
+ - runner: macos-26-intel
124
+ target: x86_64
125
+ - runner: macos-26
126
+ target: aarch64
127
+ steps:
128
+ - uses: actions/checkout@v4
129
+ - uses: actions/setup-python@v5
130
+ with:
131
+ python-version: 3.12
132
+ - name: Build wheels
133
+ uses: PyO3/maturin-action@v1
134
+ with:
135
+ target: ${{ matrix.platform.target }}
136
+ args: --release --out dist --find-interpreter
137
+ sccache: 'true'
138
+ - name: Upload wheels
139
+ uses: actions/upload-artifact@v4
140
+ with:
141
+ name: wheels-macos-${{ matrix.platform.target }}
142
+ path: dist
143
+
144
+ sdist:
145
+ runs-on: ubuntu-latest
146
+ steps:
147
+ - uses: actions/checkout@v4
148
+ - name: Build sdist
149
+ uses: PyO3/maturin-action@v1
150
+ with:
151
+ command: sdist
152
+ args: --out dist
153
+ - name: Upload sdist
154
+ uses: actions/upload-artifact@v4
155
+ with:
156
+ name: wheels-sdist
157
+ path: dist
158
+
159
+ release:
160
+ name: Release
161
+ runs-on: ubuntu-latest
162
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
163
+ needs: [linux, musllinux, windows, macos, sdist]
164
+ permissions:
165
+ id-token: write
166
+ contents: write
167
+ attestations: write
168
+ steps:
169
+ - uses: actions/download-artifact@v4
170
+ - name: Generate artifact attestation
171
+ uses: actions/attest-build-provenance@v1
172
+ with:
173
+ subject-path: 'wheels-*/*'
174
+ - name: Publish to PyPI
175
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
176
+ uses: PyO3/maturin-action@v1
177
+ with:
178
+ command: upload
179
+ args: --non-interactive --skip-existing wheels-*/*
180
+
181
+ pytest-linux:
182
+ runs-on: ubuntu-latest
183
+ name: "Python Tests (on built wheel)"
184
+ needs: linux
185
+ steps:
186
+ - uses: actions/checkout@v4
187
+ - uses: actions/download-artifact@v4
188
+ - uses: actions/setup-python@v5
189
+ with:
190
+ python-version: 3.12
191
+ - name: Setup uv
192
+ uses: astral-sh/setup-uv@v4
193
+ - name: Install test deps
194
+ run: |
195
+ python -m pip install --upgrade pip
196
+ pip install pytest mypy
197
+ - name: Install built wheel
198
+ run: pip install wheels-linux-x86_64/*cp312*
199
+ - name: Run tests
200
+ run: pytest
201
+
202
+ stubtest:
203
+ runs-on: ubuntu-latest
204
+ name: "Stub Test"
205
+ needs: linux
206
+ steps:
207
+ - uses: actions/download-artifact@v4
208
+ - uses: actions/setup-python@v5
209
+ with:
210
+ python-version: 3.12
211
+ - name: Setup uv
212
+ uses: astral-sh/setup-uv@v4
213
+ - name: Install wheel and mypy
214
+ run: |
215
+ python -m pip install --upgrade pip
216
+ pip install wheels-linux-x86_64/*cp312* mypy
217
+ - name: Run stubtest
218
+ run: python -m mypy.stubtest taskchampion --ignore-missing-stub
@@ -0,0 +1,51 @@
1
+ # Derived from
2
+ # https://raw.githubusercontent.com/mitmproxy/pdoc/refs/heads/main/.github/workflows/docs.yml
3
+
4
+ name: API Docs
5
+
6
+ on:
7
+ push:
8
+ branches:
9
+ - master
10
+
11
+ # security: restrict permissions for CI jobs.
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ # Build the documentation and upload the static HTML files as an artifact.
17
+ build:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: '3.9'
24
+ - name: Setup uv
25
+ uses: astral-sh/setup-uv@v4
26
+ - name: Install docs deps
27
+ run: |
28
+ python -m pip install --upgrade pip
29
+ pip install pdoc maturin
30
+ - name: Build extension
31
+ run: maturin develop --release
32
+ - name: Build docs
33
+ run: pdoc -o docs/ taskchampion
34
+ - uses: actions/upload-pages-artifact@v3
35
+ with:
36
+ path: docs/
37
+
38
+ # Deploy the artifact to GitHub pages.
39
+ # This is a separate job so that only actions/deploy-pages has the necessary permissions.
40
+ deploy:
41
+ needs: build
42
+ runs-on: ubuntu-latest
43
+ permissions:
44
+ pages: write
45
+ id-token: write
46
+ environment:
47
+ name: github-pages
48
+ url: ${{ steps.deployment.outputs.page_url }}
49
+ steps:
50
+ - id: deployment
51
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,31 @@
1
+ name: Publish artifacts
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: [CI]
6
+ types: [completed]
7
+
8
+ jobs:
9
+ publish:
10
+ if: ${{ github.event.workflow_run.conclusion == 'success' && (startsWith(github.event.workflow_run.head_commit.message, 'chore') || startsWith(github.event.workflow_run.head_branch, 'main') || startsWith(github.event.workflow_run.head_branch, 'master') || startsWith(github.event.workflow_run.head_branch, 'release') || startsWith(github.event.workflow_run.head_branch, 'feat/')) }}
11
+ runs-on: ubuntu-latest
12
+ needs: []
13
+ steps:
14
+ - name: Download artifacts
15
+ uses: actions/download-artifact@v4
16
+ with:
17
+ name: wheels-*
18
+
19
+ - name: Generate artifact attestation
20
+ uses: actions/attest-build-provenance@v1
21
+ with:
22
+ subject-path: 'wheels-*/*'
23
+
24
+ - name: Publish to PyPI (upload)
25
+ if: ${{ startsWith(github.event.workflow_run.head_branch, 'main') || startsWith(github.event.workflow_run.head_branch, 'master') || startsWith(github.event.workflow_run.head_tag, 'v') }}
26
+ uses: PyO3/maturin-action@v1
27
+ env:
28
+ MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
29
+ with:
30
+ command: upload
31
+ args: --non-interactive --skip-existing wheels-*/*
@@ -0,0 +1,180 @@
1
+ # Created by https://www.toptal.com/developers/gitignore/api/python,direnv
2
+ # Edit at https://www.toptal.com/developers/gitignore?templates=python,direnv
3
+
4
+ ### direnv ###
5
+ .direnv
6
+ .envrc
7
+
8
+ ### Python ###
9
+ # Byte-compiled / optimized / DLL files
10
+ __pycache__/
11
+ *.py[cod]
12
+ *$py.class
13
+
14
+ # C extensions
15
+ *.so
16
+
17
+ # Distribution / packaging
18
+ .Python
19
+ build/
20
+ develop-eggs/
21
+ dist/
22
+ downloads/
23
+ eggs/
24
+ .eggs/
25
+ lib/
26
+ lib64/
27
+ parts/
28
+ sdist/
29
+ var/
30
+ wheels/
31
+ share/python-wheels/
32
+ *.egg-info/
33
+ .installed.cfg
34
+ *.egg
35
+ MANIFEST
36
+
37
+ # PyInstaller
38
+ # Usually these files are written by a python script from a template
39
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
40
+ *.manifest
41
+ *.spec
42
+
43
+ # Installer logs
44
+ pip-log.txt
45
+ pip-delete-this-directory.txt
46
+
47
+ # Unit test / coverage reports
48
+ htmlcov/
49
+ .tox/
50
+ .nox/
51
+ .coverage
52
+ .coverage.*
53
+ .cache
54
+ nosetests.xml
55
+ coverage.xml
56
+ *.cover
57
+ *.py,cover
58
+ .hypothesis/
59
+ .pytest_cache/
60
+ cover/
61
+
62
+ # Translations
63
+ *.mo
64
+ *.pot
65
+
66
+ # Django stuff:
67
+ *.log
68
+ local_settings.py
69
+ db.sqlite3
70
+ db.sqlite3-journal
71
+
72
+ # Flask stuff:
73
+ instance/
74
+ .webassets-cache
75
+
76
+ # Scrapy stuff:
77
+ .scrapy
78
+
79
+ # Sphinx documentation
80
+ docs/_build/
81
+
82
+ # PyBuilder
83
+ .pybuilder/
84
+ target/
85
+
86
+ # Jupyter Notebook
87
+ .ipynb_checkpoints
88
+
89
+ # IPython
90
+ profile_default/
91
+ ipython_config.py
92
+
93
+ # pyenv
94
+ # For a library or package, you might want to ignore these files since the code is
95
+ # intended to run in multiple environments; otherwise, check them in:
96
+ # .python-version
97
+
98
+ # pipenv
99
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
100
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
101
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
102
+ # install all needed dependencies.
103
+ #Pipfile.lock
104
+
105
+ # poetry
106
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
107
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
108
+ # commonly ignored for libraries.
109
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
110
+ #poetry.lock
111
+
112
+ # pdm
113
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
114
+ #pdm.lock
115
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
116
+ # in version control.
117
+ # https://pdm.fming.dev/#use-with-ide
118
+ .pdm.toml
119
+
120
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121
+ __pypackages__/
122
+
123
+ # Celery stuff
124
+ celerybeat-schedule
125
+ celerybeat.pid
126
+
127
+ # SageMath parsed files
128
+ *.sage.py
129
+
130
+ # Environments
131
+ .env
132
+ .venv
133
+ env/
134
+ venv/
135
+ ENV/
136
+ env.bak/
137
+ venv.bak/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # PyCharm
164
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
165
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
167
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
168
+ #.idea/
169
+
170
+ ### Python Patch ###
171
+ # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
172
+ poetry.toml
173
+
174
+ # ruff
175
+ .ruff_cache/
176
+
177
+ # LSP config files
178
+ pyrightconfig.json
179
+
180
+ # End of https://www.toptal.com/developers/gitignore/api/python,direnv
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [3.0.1.1.dev1] - 2026-05-16
6
+
7
+ ### Changed
8
+ - Development release: Python package version 3.0.1.1.dev1 targeting TaskChampion crate 3.0.1.
9
+ - Packaging/tooling migrated to use the 'uv' package and pyproject.toml updated.
10
+ - Migrated underlying TaskChampion Rust crate to 3.0.1.
11
+ - Python bindings package (taskchampion-py) bumped to 3.0.1.1.dev1.
12
+ - Switched packaging/build tooling to use the 'uv' package and updated pyproject.toml accordingly.
13
+
14
+ ### Removed
15
+ - Replica: removed new_task(), delete_task(), add_undo_point().
16
+ - Task: removed get/set/remove_uda(), get/set/remove_legacy_uda(), delete(); replaced by get/set/remove_user_defined_attribute(s)().
17
+
18
+ ### Fixed
19
+ - working_set::by_uuid: unwrap() → now raises PyValueError on invalid UUID.
20
+ - dependency_map::dependencies/dependents: same fix.
21
+ - taskchampion.pyi: typing fixes (commit_reversed_operations -> bool; get_undo_operations -> Operations; remove_annotation timestamp -> datetime; TaskData.update -> Optional[str]).
22
+
23
+ ### Added
24
+ - New bindings exposed in stubs: Replica.pending_tasks(), Replica.pending_task_data(), Replica.get_task_operations(); Task user-defined attribute APIs; TaskData.properties(), TaskData.items().
25
+ - AccessMode exported in __all__.
26
+
27
+ ### Publication
28
+ - pyproject metadata updated (name: taskchampion3-py-fork) and packaging adjusted.
29
+
30
+ ### Tests & build
31
+ - Tests: 85 -> 91 (+6).
32
+ - cargo build --release: 0 warnings.
33
+
34
+ Notes
35
+ - Python package version: 3.0.1.1.dev1
36
+ - Rust crate version: 3.0.1
@@ -0,0 +1,76 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at dustin@cs.uchicago.edu. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72
+
73
+ [homepage]: https://www.contributor-covenant.org
74
+
75
+ For answers to common questions about this code of conduct, see
76
+ https://www.contributor-covenant.org/faq