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.
Files changed (78) hide show
  1. edx_celeryutils-2.1.0/.github/ISSUE_TEMPLATE.md +16 -0
  2. edx_celeryutils-2.1.0/.github/PULL_REQUEST_TEMPLATE.md +34 -0
  3. edx_celeryutils-2.1.0/.github/dependabot.yml +10 -0
  4. edx_celeryutils-2.1.0/.github/workflows/add-depr-ticket-to-depr-board.yml +19 -0
  5. edx_celeryutils-2.1.0/.github/workflows/add-remove-label-on-comment.yml +20 -0
  6. edx_celeryutils-2.1.0/.github/workflows/ci.yml +43 -0
  7. edx_celeryutils-2.1.0/.github/workflows/commitlint.yml +10 -0
  8. edx_celeryutils-2.1.0/.github/workflows/release.yml +117 -0
  9. edx_celeryutils-2.1.0/.github/workflows/self-assign-issue.yml +12 -0
  10. edx_celeryutils-2.1.0/.github/workflows/upgrade-python-requirements.yml +22 -0
  11. edx_celeryutils-2.1.0/.gitignore +74 -0
  12. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/CHANGELOG.rst +3 -0
  13. edx_celeryutils-2.1.0/MANIFEST.in +6 -0
  14. edx_celeryutils-2.1.0/Makefile +58 -0
  15. edx_celeryutils-2.1.0/PKG-INFO +104 -0
  16. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/README.rst +2 -6
  17. edx_celeryutils-2.1.0/codecov.yml +12 -0
  18. edx_celeryutils-2.1.0/docs/Makefile +230 -0
  19. edx_celeryutils-2.1.0/docs/_static/theme_overrides.css +10 -0
  20. edx_celeryutils-2.1.0/docs/changelog.rst +1 -0
  21. edx_celeryutils-2.1.0/docs/conf.py +511 -0
  22. edx_celeryutils-2.1.0/docs/getting_started.rst +17 -0
  23. edx_celeryutils-2.1.0/docs/index.rst +28 -0
  24. edx_celeryutils-2.1.0/docs/make.bat +281 -0
  25. edx_celeryutils-2.1.0/docs/readme.rst +1 -0
  26. edx_celeryutils-2.1.0/docs/testing.rst +42 -0
  27. edx_celeryutils-2.1.0/locale/config.yaml +72 -0
  28. edx_celeryutils-2.1.0/manage.py +29 -0
  29. edx_celeryutils-2.1.0/openedx.yaml +13 -0
  30. edx_celeryutils-2.1.0/pylintrc +390 -0
  31. edx_celeryutils-2.1.0/pylintrc_tweaks +11 -0
  32. edx_celeryutils-2.1.0/pyproject.toml +157 -0
  33. edx_celeryutils-2.1.0/setup.cfg +4 -0
  34. edx_celeryutils-2.1.0/src/celery_utils/__init__.py +7 -0
  35. edx_celeryutils-2.1.0/src/edx_celeryutils.egg-info/PKG-INFO +104 -0
  36. edx_celeryutils-2.1.0/src/edx_celeryutils.egg-info/SOURCES.txt +66 -0
  37. edx_celeryutils-2.1.0/src/edx_celeryutils.egg-info/scm_file_list.json +64 -0
  38. edx_celeryutils-2.1.0/test_settings.py +79 -0
  39. edx_celeryutils-2.1.0/test_utils/__init__.py +9 -0
  40. edx_celeryutils-2.1.0/test_utils/celery.py +23 -0
  41. edx_celeryutils-2.1.0/test_utils/tasks.py +40 -0
  42. edx_celeryutils-2.1.0/tox.ini +68 -0
  43. edx_celeryutils-2.1.0/urls.py +10 -0
  44. edx_celeryutils-2.1.0/uv.lock +2074 -0
  45. edx_celeryutils-2.0.0/MANIFEST.in +0 -8
  46. edx_celeryutils-2.0.0/PKG-INFO +0 -250
  47. edx_celeryutils-2.0.0/celery_utils/__init__.py +0 -5
  48. edx_celeryutils-2.0.0/edx_celeryutils.egg-info/PKG-INFO +0 -250
  49. edx_celeryutils-2.0.0/edx_celeryutils.egg-info/SOURCES.txt +0 -35
  50. edx_celeryutils-2.0.0/edx_celeryutils.egg-info/not-zip-safe +0 -1
  51. edx_celeryutils-2.0.0/requirements/base.in +0 -8
  52. edx_celeryutils-2.0.0/requirements/constraints.txt +0 -18
  53. edx_celeryutils-2.0.0/setup.cfg +0 -17
  54. edx_celeryutils-2.0.0/setup.py +0 -159
  55. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/AUTHORS +0 -0
  56. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/LICENSE.txt +0 -0
  57. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/admin.py +0 -0
  58. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/apps.py +0 -0
  59. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/logged_task.py +0 -0
  60. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/__init__.py +0 -0
  61. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/__init__.py +0 -0
  62. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/cleanup_resolved_tasks.py +0 -0
  63. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/reapply_tasks.py +0 -0
  64. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/tests/__init__.py +0 -0
  65. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/tests/test_cleanup_resolved_tasks.py +0 -0
  66. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/management/commands/tests/test_reapply_tasks.py +0 -0
  67. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/0001_initial.py +0 -0
  68. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/0002_chordable_django_backend.py +0 -0
  69. {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
  70. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/migrations/__init__.py +0 -0
  71. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/models.py +0 -0
  72. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/persist_on_failure.py +0 -0
  73. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/celery_utils/tasks.py +0 -0
  74. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/edx_celeryutils.egg-info/dependency_links.txt +0 -0
  75. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/edx_celeryutils.egg-info/requires.txt +1 -1
  76. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0/src}/edx_celeryutils.egg-info/top_level.txt +0 -0
  77. {edx_celeryutils-2.0.0 → edx_celeryutils-2.1.0}/tests/test_logged_task.py +0 -0
  78. {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,10 @@
1
+ # Run commitlint on the commit messages in a pull request.
2
+
3
+ name: Lint Commit Messages
4
+
5
+ on:
6
+ - pull_request
7
+
8
+ jobs:
9
+ commitlint:
10
+ uses: openedx/.github/.github/workflows/commitlint.yml@master
@@ -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,6 @@
1
+ include AUTHORS
2
+ include CHANGELOG.rst
3
+ include CONTRIBUTING.rst
4
+ include LICENSE.txt
5
+ include README.rst
6
+ recursive-include src/celery_utils *.html *.png *.gif *js *.css *jpg *jpeg *svg *py
@@ -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
- After a PR merges, a new version of the package will automatically be released by Travis when the commit is tagged. Use::
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
  -------
@@ -0,0 +1,12 @@
1
+ coverage:
2
+ status:
3
+ project:
4
+ default:
5
+ enabled: yes
6
+ target: auto
7
+ patch:
8
+ default:
9
+ enabled: yes
10
+ target: 100%
11
+
12
+ comment: false