edx-celeryutils 2.0.0__tar.gz → 2.1.0__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.
- edx_celeryutils-2.1.0/.github/ISSUE_TEMPLATE.md +16 -0
- edx_celeryutils-2.1.0/.github/PULL_REQUEST_TEMPLATE.md +34 -0
- edx_celeryutils-2.1.0/.github/dependabot.yml +10 -0
- edx_celeryutils-2.1.0/.github/workflows/add-depr-ticket-to-depr-board.yml +19 -0
- edx_celeryutils-2.1.0/.github/workflows/add-remove-label-on-comment.yml +20 -0
- edx_celeryutils-2.1.0/.github/workflows/ci.yml +43 -0
- edx_celeryutils-2.1.0/.github/workflows/commitlint.yml +10 -0
- edx_celeryutils-2.1.0/.github/workflows/release.yml +117 -0
- edx_celeryutils-2.1.0/.github/workflows/self-assign-issue.yml +12 -0
- edx_celeryutils-2.1.0/.github/workflows/upgrade-python-requirements.yml +22 -0
- edx_celeryutils-2.1.0/.gitignore +74 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/CHANGELOG.rst +3 -0
- edx_celeryutils-2.1.0/MANIFEST.in +6 -0
- edx_celeryutils-2.1.0/Makefile +58 -0
- edx_celeryutils-2.1.0/PKG-INFO +104 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/README.rst +2 -6
- edx_celeryutils-2.1.0/codecov.yml +12 -0
- edx_celeryutils-2.1.0/docs/Makefile +230 -0
- edx_celeryutils-2.1.0/docs/_static/theme_overrides.css +10 -0
- edx_celeryutils-2.1.0/docs/changelog.rst +1 -0
- edx_celeryutils-2.1.0/docs/conf.py +511 -0
- edx_celeryutils-2.1.0/docs/getting_started.rst +17 -0
- edx_celeryutils-2.1.0/docs/index.rst +28 -0
- edx_celeryutils-2.1.0/docs/make.bat +281 -0
- edx_celeryutils-2.1.0/docs/readme.rst +1 -0
- edx_celeryutils-2.1.0/docs/testing.rst +42 -0
- edx_celeryutils-2.1.0/locale/config.yaml +72 -0
- edx_celeryutils-2.1.0/manage.py +29 -0
- edx_celeryutils-2.1.0/openedx.yaml +13 -0
- edx_celeryutils-2.1.0/pylintrc +390 -0
- edx_celeryutils-2.1.0/pylintrc_tweaks +11 -0
- edx_celeryutils-2.1.0/pyproject.toml +157 -0
- edx_celeryutils-2.1.0/setup.cfg +4 -0
- edx_celeryutils-2.1.0/src/celery_utils/__init__.py +7 -0
- edx_celeryutils-2.1.0/src/edx_celeryutils.egg-info/PKG-INFO +104 -0
- edx_celeryutils-2.1.0/src/edx_celeryutils.egg-info/SOURCES.txt +66 -0
- edx_celeryutils-2.1.0/src/edx_celeryutils.egg-info/scm_file_list.json +64 -0
- edx_celeryutils-2.1.0/test_settings.py +79 -0
- edx_celeryutils-2.1.0/test_utils/__init__.py +9 -0
- edx_celeryutils-2.1.0/test_utils/celery.py +23 -0
- edx_celeryutils-2.1.0/test_utils/tasks.py +40 -0
- edx_celeryutils-2.1.0/tox.ini +68 -0
- edx_celeryutils-2.1.0/urls.py +10 -0
- edx_celeryutils-2.1.0/uv.lock +2074 -0
- edx_celeryutils-2.0.0/MANIFEST.in +0 -8
- edx_celeryutils-2.0.0/PKG-INFO +0 -250
- edx_celeryutils-2.0.0/celery_utils/__init__.py +0 -5
- edx_celeryutils-2.0.0/edx_celeryutils.egg-info/PKG-INFO +0 -250
- edx_celeryutils-2.0.0/edx_celeryutils.egg-info/SOURCES.txt +0 -35
- edx_celeryutils-2.0.0/edx_celeryutils.egg-info/not-zip-safe +0 -1
- edx_celeryutils-2.0.0/requirements/base.in +0 -8
- edx_celeryutils-2.0.0/requirements/constraints.txt +0 -18
- edx_celeryutils-2.0.0/setup.cfg +0 -17
- edx_celeryutils-2.0.0/setup.py +0 -159
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/AUTHORS +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/LICENSE.txt +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/admin.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/apps.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/logged_task.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/__init__.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/__init__.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/cleanup_resolved_tasks.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/reapply_tasks.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/tests/__init__.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/tests/test_cleanup_resolved_tasks.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/tests/test_reapply_tasks.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/0001_initial.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/0002_chordable_django_backend.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/0003_rename_failedtask_task_name_exc_idx_failedtask_task_exc.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/__init__.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/models.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/persist_on_failure.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/tasks.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/edx_celeryutils.egg-info/dependency_links.txt +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/edx_celeryutils.egg-info/requires.txt +1 -1
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/edx_celeryutils.egg-info/top_level.txt +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/tests/test_logged_task.py +0 -0
- {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/tests/test_persist_on_failure.py +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
* edx-celeryutils version:
|
|
2
|
+
* Django version:
|
|
3
|
+
* Python version:
|
|
4
|
+
* Operating System:
|
|
5
|
+
|
|
6
|
+
### Description
|
|
7
|
+
|
|
8
|
+
Describe what you were trying to get done.
|
|
9
|
+
Tell us what happened, what went wrong, and what you expected to happen.
|
|
10
|
+
|
|
11
|
+
### What I Did
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Paste the command(s) you ran and the output.
|
|
15
|
+
If there was a crash, please include the traceback here.
|
|
16
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
**Description:** Describe in a couple of sentence what this PR adds
|
|
2
|
+
|
|
3
|
+
**JIRA:** Link to JIRA ticket
|
|
4
|
+
|
|
5
|
+
**Dependencies:** dependencies on other outstanding PRs, issues, etc.
|
|
6
|
+
|
|
7
|
+
**Merge deadline:** List merge deadline (if any)
|
|
8
|
+
|
|
9
|
+
**Installation instructions:** List any non-trivial installation
|
|
10
|
+
instructions.
|
|
11
|
+
|
|
12
|
+
**Testing instructions:**
|
|
13
|
+
|
|
14
|
+
1. Open page A
|
|
15
|
+
2. Do thing B
|
|
16
|
+
3. Expect C to happen
|
|
17
|
+
4. If D happend instead - check failed.
|
|
18
|
+
|
|
19
|
+
**Reviewers:**
|
|
20
|
+
- [ ] tag reviwer
|
|
21
|
+
- [ ] tag reviewer
|
|
22
|
+
|
|
23
|
+
**Merge checklist:**
|
|
24
|
+
- [ ] All reviewers approved
|
|
25
|
+
- [ ] CI build is green
|
|
26
|
+
- [ ] Commits are squashed
|
|
27
|
+
- [ ] PR author is listed in AUTHORS
|
|
28
|
+
|
|
29
|
+
**Post merge:**
|
|
30
|
+
- [ ] Delete working branch (if not needed anymore)
|
|
31
|
+
|
|
32
|
+
**Author concerns:** List any concerns about this PR - inelegant
|
|
33
|
+
solutions, hacks, quick-and-dirty implementations, concerns about
|
|
34
|
+
migrations, etc.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Adding new check for github-actions
|
|
4
|
+
- package-ecosystem: "github-actions"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
# Optional: specify reviewers to automatically request review on Dependabot PRs
|
|
9
|
+
# reviewers:
|
|
10
|
+
# - "openedx/xxx"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Run the workflow that adds new tickets that are either:
|
|
2
|
+
# - labelled "DEPR"
|
|
3
|
+
# - title starts with "[DEPR]"
|
|
4
|
+
# - body starts with "Proposal Date" (this is the first template field)
|
|
5
|
+
# to the org-wide DEPR project board
|
|
6
|
+
|
|
7
|
+
name: Add newly created DEPR issues to the DEPR project board
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
issues:
|
|
11
|
+
types: [opened]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
routeissue:
|
|
15
|
+
uses: openedx/.github/.github/workflows/add-depr-ticket-to-depr-board.yml@master
|
|
16
|
+
secrets:
|
|
17
|
+
GITHUB_APP_ID: ${{ secrets.GRAPHQL_AUTH_APP_ID }}
|
|
18
|
+
GITHUB_APP_PRIVATE_KEY: ${{ secrets.GRAPHQL_AUTH_APP_PEM }}
|
|
19
|
+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_ISSUE_BOT_TOKEN }}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This workflow runs when a comment is made on the ticket
|
|
2
|
+
# If the comment starts with "label: " it tries to apply
|
|
3
|
+
# the label indicated in rest of comment.
|
|
4
|
+
# If the comment starts with "remove label: ", it tries
|
|
5
|
+
# to remove the indicated label.
|
|
6
|
+
# Note: Labels are allowed to have spaces and this script does
|
|
7
|
+
# not parse spaces (as often a space is legitimate), so the command
|
|
8
|
+
# "label: really long lots of words label" will apply the
|
|
9
|
+
# label "really long lots of words label"
|
|
10
|
+
|
|
11
|
+
name: Allows for the adding and removing of labels via comment
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
issue_comment:
|
|
15
|
+
types: [created]
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
add_remove_labels:
|
|
19
|
+
uses: openedx/.github/.github/workflows/add-remove-label-on-comment.yml@master
|
|
20
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Python CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
workflow_call:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
run_tests:
|
|
11
|
+
name: tests
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
os: [ubuntu-latest]
|
|
18
|
+
python-version: ['3.12']
|
|
19
|
+
toxenv: [quality, docs, django42, django52]
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
25
|
+
with:
|
|
26
|
+
enable-cache: true
|
|
27
|
+
python-version: ${{ matrix.python-version }}
|
|
28
|
+
|
|
29
|
+
- name: Install Dependencies
|
|
30
|
+
run: uv sync --locked --group ci
|
|
31
|
+
|
|
32
|
+
- name: Run Tests
|
|
33
|
+
env:
|
|
34
|
+
TOXENV: ${{ matrix.toxenv }}
|
|
35
|
+
run: uv run --locked tox
|
|
36
|
+
|
|
37
|
+
- name: Run coverage
|
|
38
|
+
if: matrix.python-version == '3.12' && matrix.toxenv == 'django42'
|
|
39
|
+
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
|
|
40
|
+
with:
|
|
41
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
42
|
+
flags: unittests
|
|
43
|
+
fail_ci_if_error: true
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
name: Semantic Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
# The same aggregate a pull request has to pass, so the release runs exactly
|
|
9
|
+
# the checks that were required to merge -- and picks up any package added to
|
|
10
|
+
# ci.yml later without needing a change here.
|
|
11
|
+
run_ci:
|
|
12
|
+
uses: ./.github/workflows/ci.yml
|
|
13
|
+
|
|
14
|
+
release:
|
|
15
|
+
# Every package this workflow publishes has to build before we tag
|
|
16
|
+
# anything. The GitHub release and the PyPI uploads cannot be taken back,
|
|
17
|
+
# so a package that only fails to build in its publish job would leave the
|
|
18
|
+
# release half-finished.
|
|
19
|
+
needs: [run_ci]
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
if: github.ref_name == 'master'
|
|
22
|
+
concurrency:
|
|
23
|
+
group: ${{ github.workflow }}-release-${{ github.ref_name }}
|
|
24
|
+
cancel-in-progress: false
|
|
25
|
+
|
|
26
|
+
permissions:
|
|
27
|
+
contents: write
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
# Note: We checkout the repository at the branch that triggered the workflow.
|
|
31
|
+
# Python Semantic Release will automatically convert shallow clones to full clones
|
|
32
|
+
# if needed to ensure proper history evaluation. However, we forcefully reset the
|
|
33
|
+
# branch to the workflow sha because it is possible that the branch was updated
|
|
34
|
+
# while the workflow was running, which prevents accidentally releasing un-evaluated
|
|
35
|
+
# changes.
|
|
36
|
+
- name: Setup | Checkout Repository on Release Branch
|
|
37
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
38
|
+
with:
|
|
39
|
+
ref: ${{ github.ref_name }}
|
|
40
|
+
|
|
41
|
+
- name: Setup | Force release branch to be at workflow sha
|
|
42
|
+
run: |
|
|
43
|
+
git reset --hard ${{ github.sha }}
|
|
44
|
+
|
|
45
|
+
- name: Action | Semantic Version Release
|
|
46
|
+
id: release
|
|
47
|
+
# Adjust tag with desired version if applicable.
|
|
48
|
+
uses: python-semantic-release/python-semantic-release@b700dbeb1f431a0fcc30a79f3f0869407fe07278 # v10.7.0
|
|
49
|
+
with:
|
|
50
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
51
|
+
git_committer_name: "github-actions"
|
|
52
|
+
git_committer_email: "actions@users.noreply.github.com"
|
|
53
|
+
changelog: "false"
|
|
54
|
+
# Commit, tag, push and build, but don't create the GitHub release.
|
|
55
|
+
# We create it ourselves in the next step so that the distributions
|
|
56
|
+
# are attached before the release is published. See that step for why.
|
|
57
|
+
vcs_release: "false"
|
|
58
|
+
|
|
59
|
+
# This repo has immutable releases enabled, which freezes a release's
|
|
60
|
+
# assets the moment it is published, so assets cannot be attached
|
|
61
|
+
# afterwards. Everything we want on the release has to be built by now
|
|
62
|
+
# and passed to this one command, which creates the release as a draft,
|
|
63
|
+
# uploads the assets, and only then publishes it:
|
|
64
|
+
# https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases
|
|
65
|
+
- name: Publish | Create GitHub Release with Assets
|
|
66
|
+
if: steps.release.outputs.released == 'true'
|
|
67
|
+
env:
|
|
68
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
69
|
+
# Reuse the release notes python-semantic-release generated for us.
|
|
70
|
+
RELEASE_NOTES: ${{ steps.release.outputs.release_notes }}
|
|
71
|
+
TAG: ${{ steps.release.outputs.tag }}
|
|
72
|
+
run: |
|
|
73
|
+
# Output the release notes to a file
|
|
74
|
+
printf '%s' "$RELEASE_NOTES" > "$RUNNER_TEMP/release_notes.md"
|
|
75
|
+
# Creates the release as a draft, uploads the assets, and then
|
|
76
|
+
# publishes it -- all within this one command.
|
|
77
|
+
gh release create "$TAG" \
|
|
78
|
+
--verify-tag \
|
|
79
|
+
--title "$TAG" \
|
|
80
|
+
--notes-file "$RUNNER_TEMP/release_notes.md" \
|
|
81
|
+
dist/*
|
|
82
|
+
|
|
83
|
+
- name: Upload | Distribution Artifacts
|
|
84
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
85
|
+
if: steps.release.outputs.released == 'true'
|
|
86
|
+
with:
|
|
87
|
+
name: distribution-artifacts
|
|
88
|
+
path: dist
|
|
89
|
+
if-no-files-found: error
|
|
90
|
+
|
|
91
|
+
outputs:
|
|
92
|
+
released: ${{ steps.release.outputs.released || 'false' }}
|
|
93
|
+
version: ${{ steps.release.outputs.version }}
|
|
94
|
+
|
|
95
|
+
publish_to_pypi:
|
|
96
|
+
# 1. Separate out the publish step from the github release step to run each step at
|
|
97
|
+
# the least amount of token privilege
|
|
98
|
+
# 2. Also, publishing can fail, and its better to have a separate job if you need to retry
|
|
99
|
+
# and it won't require reversing the release.
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
needs: release
|
|
102
|
+
if: github.ref_name == 'master' && needs.release.outputs.released == 'true'
|
|
103
|
+
|
|
104
|
+
permissions:
|
|
105
|
+
contents: read
|
|
106
|
+
id-token: write
|
|
107
|
+
|
|
108
|
+
steps:
|
|
109
|
+
- name: Setup | Download Build Artifacts
|
|
110
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
111
|
+
id: artifact-download
|
|
112
|
+
with:
|
|
113
|
+
name: distribution-artifacts
|
|
114
|
+
path: dist
|
|
115
|
+
|
|
116
|
+
- name: Publish to PyPi
|
|
117
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# This workflow runs when a comment is made on the ticket
|
|
2
|
+
# If the comment starts with "assign me" it assigns the author to the
|
|
3
|
+
# ticket (case insensitive)
|
|
4
|
+
|
|
5
|
+
name: Assign comment author to ticket if they say "assign me"
|
|
6
|
+
on:
|
|
7
|
+
issue_comment:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
self_assign_by_comment:
|
|
12
|
+
uses: openedx/.github/.github/workflows/self-assign-issue.yml@master
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Upgrade Requirements
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "0 3 * * 4"
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
branch:
|
|
9
|
+
description: 'Target branch to create requirements PR against'
|
|
10
|
+
required: true
|
|
11
|
+
default: 'master'
|
|
12
|
+
jobs:
|
|
13
|
+
call-upgrade-python-requirements-workflow:
|
|
14
|
+
with:
|
|
15
|
+
branch: ${{ github.event.inputs.branch }}
|
|
16
|
+
send_success_notification: false
|
|
17
|
+
secrets:
|
|
18
|
+
requirements_bot_github_token: ${{ secrets.REQUIREMENTS_BOT_GITHUB_TOKEN }}
|
|
19
|
+
requirements_bot_github_email: ${{ secrets.REQUIREMENTS_BOT_GITHUB_EMAIL }}
|
|
20
|
+
edx_smtp_username: ${{ secrets.EDX_SMTP_USERNAME }}
|
|
21
|
+
edx_smtp_password: ${{ secrets.EDX_SMTP_PASSWORD }}
|
|
22
|
+
uses: openedx/.github/.github/workflows/upgrade-python-requirements.yml@master
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
*.py[cod]
|
|
2
|
+
__pycache__
|
|
3
|
+
|
|
4
|
+
# C extensions
|
|
5
|
+
*.so
|
|
6
|
+
|
|
7
|
+
# Packages
|
|
8
|
+
*.egg
|
|
9
|
+
*.egg-info
|
|
10
|
+
dist
|
|
11
|
+
build
|
|
12
|
+
eggs
|
|
13
|
+
parts
|
|
14
|
+
bin
|
|
15
|
+
var
|
|
16
|
+
sdist
|
|
17
|
+
develop-eggs
|
|
18
|
+
.installed.cfg
|
|
19
|
+
lib
|
|
20
|
+
lib64
|
|
21
|
+
|
|
22
|
+
# Installer logs
|
|
23
|
+
pip-log.txt
|
|
24
|
+
|
|
25
|
+
# Unit test / coverage reports
|
|
26
|
+
.cache/
|
|
27
|
+
.coverage
|
|
28
|
+
.coverage.*
|
|
29
|
+
.tox
|
|
30
|
+
coverage.xml
|
|
31
|
+
htmlcov/
|
|
32
|
+
|
|
33
|
+
# Translations
|
|
34
|
+
*.mo
|
|
35
|
+
|
|
36
|
+
# IDEs and text editors
|
|
37
|
+
*~
|
|
38
|
+
*.swp
|
|
39
|
+
.idea/
|
|
40
|
+
.project
|
|
41
|
+
.pycharm_helpers/
|
|
42
|
+
.pydevproject
|
|
43
|
+
|
|
44
|
+
# The Silver Searcher
|
|
45
|
+
.agignore
|
|
46
|
+
|
|
47
|
+
# OS X artifacts
|
|
48
|
+
*.DS_Store
|
|
49
|
+
|
|
50
|
+
# Logging
|
|
51
|
+
log/
|
|
52
|
+
logs/
|
|
53
|
+
chromedriver.log
|
|
54
|
+
ghostdriver.log
|
|
55
|
+
|
|
56
|
+
# Complexity
|
|
57
|
+
output/*.html
|
|
58
|
+
output/*/index.html
|
|
59
|
+
|
|
60
|
+
# Sphinx
|
|
61
|
+
docs/_build
|
|
62
|
+
docs/modules.rst
|
|
63
|
+
docs/celeryutils.rst
|
|
64
|
+
docs/celeryutils.*.rst
|
|
65
|
+
|
|
66
|
+
# Private requirements
|
|
67
|
+
requirements/private.in
|
|
68
|
+
requirements/private.txt
|
|
69
|
+
|
|
70
|
+
# tox environment temporary artifacts
|
|
71
|
+
tests/__init__.py
|
|
72
|
+
|
|
73
|
+
# Development task artifacts
|
|
74
|
+
default.db
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
Change Log
|
|
2
2
|
----------
|
|
3
3
|
|
|
4
|
+
This changelog is no longer maintained. Release notes are published only on
|
|
5
|
+
the `GitHub Releases page <https://github.com/openedx/edx-celeryutils/releases>`_.
|
|
6
|
+
|
|
4
7
|
..
|
|
5
8
|
All enhancements and patches to edx-celeryutils will be documented
|
|
6
9
|
in this file. It adheres to the structure of http://keepachangelog.com/ ,
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
.PHONY: clean coverage docs help quality requirements test test-all upgrade validate
|
|
2
|
+
|
|
3
|
+
.DEFAULT_GOAL := help
|
|
4
|
+
|
|
5
|
+
define BROWSER_PYSCRIPT
|
|
6
|
+
import os, webbrowser, sys
|
|
7
|
+
try:
|
|
8
|
+
from urllib import pathname2url
|
|
9
|
+
except:
|
|
10
|
+
from urllib.request import pathname2url
|
|
11
|
+
|
|
12
|
+
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
|
|
13
|
+
endef
|
|
14
|
+
export BROWSER_PYSCRIPT
|
|
15
|
+
BROWSER := python -c "$$BROWSER_PYSCRIPT"
|
|
16
|
+
|
|
17
|
+
help: ## display this help message
|
|
18
|
+
@echo "Please use \`make <target>' where <target> is one of"
|
|
19
|
+
@perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m %-25s\033[0m %s\n", $$1, $$2}'
|
|
20
|
+
|
|
21
|
+
clean: ## remove generated byte code, coverage reports, and build artifacts
|
|
22
|
+
find . -name '*.pyc' -exec rm -f {} +
|
|
23
|
+
find . -name '*.pyo' -exec rm -f {} +
|
|
24
|
+
find . -name '*~' -exec rm -f {} +
|
|
25
|
+
coverage erase
|
|
26
|
+
rm -fr build/
|
|
27
|
+
rm -fr dist/
|
|
28
|
+
rm -fr *.egg-info
|
|
29
|
+
|
|
30
|
+
coverage: clean ## generate and view HTML coverage report
|
|
31
|
+
py.test --cov-report html
|
|
32
|
+
$(BROWSER) htmlcov/index.html
|
|
33
|
+
|
|
34
|
+
docs: ## generate Sphinx HTML documentation, including API docs
|
|
35
|
+
tox -e docs
|
|
36
|
+
$(BROWSER) docs/_build/html/index.html
|
|
37
|
+
|
|
38
|
+
upgrade: ## update the uv lockfile with the latest packages satisfying pyproject.toml
|
|
39
|
+
uv run --with edx-lint edx_lint write_uv_constraints pyproject.toml
|
|
40
|
+
uv lock --upgrade
|
|
41
|
+
|
|
42
|
+
quality: ## check coding style with pycodestyle and pylint
|
|
43
|
+
tox -e quality
|
|
44
|
+
|
|
45
|
+
requirements: ## install development environment requirements
|
|
46
|
+
uv sync --group dev
|
|
47
|
+
|
|
48
|
+
test: clean ## run tests in the current virtualenv
|
|
49
|
+
py.test tests/ src/celery_utils/
|
|
50
|
+
|
|
51
|
+
diff_cover: test
|
|
52
|
+
diff-cover coverage.xml
|
|
53
|
+
|
|
54
|
+
test-all: ## run tests on every supported Python/Django combination
|
|
55
|
+
tox -e quality
|
|
56
|
+
tox
|
|
57
|
+
|
|
58
|
+
validate: quality test ## run tests and quality checks
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: edx-celeryutils
|
|
3
|
+
Version: 2.1.0
|
|
4
|
+
Summary: Code to support working with celery
|
|
5
|
+
Author-email: Open edX Project <oscm@openedx.org>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/openedx/edx-celeryutils
|
|
8
|
+
Project-URL: Repository, https://github.com/openedx/edx-celeryutils
|
|
9
|
+
Keywords: Django,edx
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Framework :: Django
|
|
12
|
+
Classifier: Framework :: Django :: 4.2
|
|
13
|
+
Classifier: Framework :: Django :: 5.2
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Natural Language :: English
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Requires-Python: >=3.12
|
|
19
|
+
Description-Content-Type: text/x-rst
|
|
20
|
+
License-File: LICENSE.txt
|
|
21
|
+
License-File: AUTHORS
|
|
22
|
+
Requires-Dist: celery<6.0
|
|
23
|
+
Requires-Dist: Django
|
|
24
|
+
Requires-Dist: django-model-utils
|
|
25
|
+
Requires-Dist: jsonfield
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
edx-celeryutils
|
|
29
|
+
=============================
|
|
30
|
+
|
|
31
|
+
.. image:: https://img.shields.io/pypi/v/edx-celeryutils.svg
|
|
32
|
+
:target: https://pypi.python.org/pypi/edx-celeryutils/
|
|
33
|
+
:alt: PyPI
|
|
34
|
+
|
|
35
|
+
.. image:: https://github.com/openedx/edx-celeryutils/workflows/Python%20CI/badge.svg?branch=master
|
|
36
|
+
:target: https://github.com/openedx/edx-celeryutils/actions?query=workflow%3A%22Python+CI%22
|
|
37
|
+
:alt: CI
|
|
38
|
+
|
|
39
|
+
.. image:: http://codecov.io/github/edx/edx-celeryutils/coverage.svg?branch=master
|
|
40
|
+
:target: http://codecov.io/github/edx/edx-celeryutils?branch=master
|
|
41
|
+
:alt: Codecov
|
|
42
|
+
|
|
43
|
+
.. image:: http://edx-celeryutils.readthedocs.io/en/latest/?badge=latest
|
|
44
|
+
:target: http://edx-celeryutils.readthedocs.io/en/latest/
|
|
45
|
+
:alt: Documentation
|
|
46
|
+
|
|
47
|
+
.. image:: https://img.shields.io/pypi/pyversions/edx-celeryutils.svg
|
|
48
|
+
:target: https://pypi.python.org/pypi/edx-celeryutils/
|
|
49
|
+
:alt: Supported Python versions
|
|
50
|
+
|
|
51
|
+
.. image:: https://img.shields.io/github/license/edx/edx-celeryutils.svg
|
|
52
|
+
:target: https://github.com/openedx/edx-celeryutils/blob/master/LICENSE.txt
|
|
53
|
+
:alt: License
|
|
54
|
+
|
|
55
|
+
Code to support working with Celery, a distributed task queue.
|
|
56
|
+
|
|
57
|
+
Overview (please modify)
|
|
58
|
+
------------------------
|
|
59
|
+
|
|
60
|
+
This package contains utilities to wrap tasks with logging and to
|
|
61
|
+
persist them if they fail.
|
|
62
|
+
|
|
63
|
+
It also supports Django administration for searching and deleting
|
|
64
|
+
failed tasks, and management commands for rerunning failed tasks and
|
|
65
|
+
deleting old ones.
|
|
66
|
+
|
|
67
|
+
Documentation
|
|
68
|
+
-------------
|
|
69
|
+
|
|
70
|
+
(TODO: `Set up documentation <https://openedx.atlassian.net/wiki/spaces/DOC/pages/21627535/Publish+Documentation+on+Read+the+Docs>`_)
|
|
71
|
+
|
|
72
|
+
Publishing a Release
|
|
73
|
+
--------------------
|
|
74
|
+
|
|
75
|
+
Merges to master are released automatically by python-semantic-release, which picks the version from the
|
|
76
|
+
conventional commit types. Release notes are on the `GitHub Releases <https://github.com/openedx/edx-celeryutils/releases>`_ page.
|
|
77
|
+
|
|
78
|
+
License
|
|
79
|
+
-------
|
|
80
|
+
|
|
81
|
+
The code in this repository is licensed under the Apache 2.0 unless
|
|
82
|
+
otherwise noted.
|
|
83
|
+
|
|
84
|
+
Please see ``LICENSE.txt`` for details.
|
|
85
|
+
|
|
86
|
+
How To Contribute
|
|
87
|
+
-----------------
|
|
88
|
+
|
|
89
|
+
Contributions are very welcome.
|
|
90
|
+
|
|
91
|
+
Please read `How To Contribute <https://github.com/openedx/.github/blob/master/CONTRIBUTING.md>`_ for details.
|
|
92
|
+
|
|
93
|
+
Reporting Security Issues
|
|
94
|
+
-------------------------
|
|
95
|
+
|
|
96
|
+
Please do not report security issues in public. Please email security@openedx.org.
|
|
97
|
+
|
|
98
|
+
Getting Help
|
|
99
|
+
------------
|
|
100
|
+
|
|
101
|
+
Have a question about this repository, or about Open edX in general? Please
|
|
102
|
+
refer to this `list of resources`_ if you need any assistance.
|
|
103
|
+
|
|
104
|
+
.. _list of resources: https://open.edx.org/getting-help
|
|
@@ -45,12 +45,8 @@ Documentation
|
|
|
45
45
|
Publishing a Release
|
|
46
46
|
--------------------
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
git tag -a X.Y.Z -m "Releasing version X.Y.Z"
|
|
51
|
-
git push origin X.Y.Z
|
|
52
|
-
|
|
53
|
-
Do **not** create a Github Release, or ensure its message points to the CHANGELOG.rst.
|
|
48
|
+
Merges to master are released automatically by python-semantic-release, which picks the version from the
|
|
49
|
+
conventional commit types. Release notes are on the `GitHub Releases <https://github.com/openedx/edx-celeryutils/releases>`_ page.
|
|
54
50
|
|
|
55
51
|
License
|
|
56
52
|
-------
|