clustercron
Advanced tools
| ; clustercron.ini | ||
| ; vim: ai et sts=4 ts=4 sw=4 fenc=UTF-8 ft=dosini | ||
| [Cache] | ||
| filename = /tmp/clustercron_cache.json | ||
| expire_time = 59 | ||
| max_iter = 20 |
| # clustercron/version.py | ||
| # vim: ai et ts=4 sw=4 sts=4 ft=python fileencoding=utf-8 | ||
| def get_version(): | ||
| version = None | ||
| try: | ||
| from importlib.metadata import PackageNotFoundError, version | ||
| except ImportError: | ||
| from pkg_resources import DistributionNotFound, get_distribution | ||
| try: | ||
| version = get_distribution("clustercron").version | ||
| except DistributionNotFound: | ||
| pass | ||
| else: | ||
| try: | ||
| version = version("clustercron") | ||
| except PackageNotFoundError: | ||
| pass | ||
| return version |
@@ -61,1 +61,25 @@ --- | ||
| verbose: True | ||
| install-dev: | ||
| strategy: | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| - macos-latest | ||
| name: Verify dev env | ||
| runs-on: ${{ matrix.os }} | ||
| steps: | ||
| - uses: actions/checkout@v2 | ||
| - uses: actions/setup-python@v2 | ||
| with: | ||
| python-version: 3.9 | ||
| - name: Install dev deps in dev mode. | ||
| run: python -m pip install -e '.[dev]' | ||
| - name: Import package | ||
| run: python -c 'import clustercron' |
+35
-0
@@ -0,1 +1,34 @@ | ||
| # Created by https://www.toptal.com/developers/gitignore/api/python,macos | ||
| # Edit at https://www.toptal.com/developers/gitignore?templates=python,macos | ||
| ### macOS ### | ||
| # General | ||
| .DS_Store | ||
| .AppleDouble | ||
| .LSOverride | ||
| # Icon must end with two \r | ||
| Icon | ||
| # Thumbnails | ||
| ._* | ||
| # Files that might appear in the root of a volume | ||
| .DocumentRevisions-V100 | ||
| .fseventsd | ||
| .Spotlight-V100 | ||
| .TemporaryItems | ||
| .Trashes | ||
| .VolumeIcon.icns | ||
| .com.apple.timemachine.donotpresent | ||
| # Directories potentially created on remote AFP share | ||
| .AppleDB | ||
| .AppleDesktop | ||
| Network Trash Folder | ||
| Temporary Items | ||
| .apdisk | ||
| ### Python ### | ||
| # Byte-compiled / optimized / DLL files | ||
@@ -139,1 +172,3 @@ __pycache__/ | ||
| cython_debug/ | ||
| # End of https://www.toptal.com/developers/gitignore/api/python,macos |
+12
-0
@@ -7,2 +7,14 @@ .. :changelog: | ||
| 0.6.14 (2021-09-12) | ||
| ------------------- | ||
| * setuptools_scm (no more bumpversion). | ||
| 0.6.13 (2021-09-10) | ||
| ------------------- | ||
| * More dev env stuff: removed requirements files, all deps in `setup.cfg` now. | ||
| 0.6.12 (2021-09-10) | ||
@@ -9,0 +21,0 @@ ------------------- |
+35
-24
@@ -27,2 +27,4 @@ # Makefile | ||
| PACKAGE = clustercron | ||
| .PHONY: help | ||
@@ -33,9 +35,11 @@ help: | ||
| .PHONY: clean | ||
| clean: clean-build clean-pyc clean-test clean-docs ## Remove all build, test, coverage, docs and Python artifacts | ||
| clean: ## Remove untracked files from the working tree (using `git clean`) | ||
| git clean --force -x -d | ||
| .PHONY: clean-build | ||
| clean-build: ## Remove build artifacts. | ||
| rm -fr dist/ | ||
| rm -fr .eggs/ | ||
| find . -name '*.egg-info' -exec rm -fr {} + | ||
| rm -rf build/ | ||
| rm -rf dist/ | ||
| rm -rf .eggs/ | ||
| find . -name '*.egg-info' -exec rm -rf {} + | ||
| find . -name '*.egg' -exec rm -f {} + | ||
@@ -48,9 +52,12 @@ | ||
| find . -name '*~' -exec rm -f {} + | ||
| find . -name '__pycache__' -exec rm -fr {} + | ||
| find . -name '__pycache__' -exec rm -rf {} + | ||
| .PHONY: clean-test | ||
| clean-test: ## Remove test and coverage artifacts. | ||
| rm -fr .tox/ | ||
| rm -f .coverage | ||
| rm -fr htmlcov/ | ||
| rm -f coverage.xml | ||
| rm -rf .pytest_cache | ||
| rm -rf .tox/ | ||
| rm -f .coverage | ||
| rm -rf htmlcov/ | ||
@@ -62,17 +69,17 @@ .PHONY: clean-docs | ||
| .PHONY: lint | ||
| lint: ## Check style with flake8. | ||
| tox -e lint | ||
| lint: ## Run all pre-commit hooks on all files | ||
| pre-commit run --all-files --show-diff-on-failure | ||
| .PHONY: test | ||
| test: ## Run tests quickly with the default Python. | ||
| pytest | ||
| pytest --cov=$(PACKAGE) | ||
| .PHONY: test-all | ||
| test-all: ## Run tests on every Python version with tox. | ||
| .PHONY: tox | ||
| tox: ## Run tests on every Python version with tox. | ||
| tox | ||
| .PHONY: coverage | ||
| coverage: ## Check code coverage quickly with the default Python. | ||
| coverage: clean-test ## Check code coverage quickly with the default Python. | ||
| coverage erase | ||
| coverage run --source clustercron -m pytest | ||
| coverage run --source $(PACKAGE) -m pytest | ||
| coverage report -m | ||
@@ -84,19 +91,23 @@ coverage html | ||
| docs: clean-docs ## Generate Sphinx HTML documentation, including API docs. | ||
| rm -f docs/clustercron.rst | ||
| rm -f docs/$(PACKAGE).rst | ||
| rm -f docs/modules.rst | ||
| sphinx-apidoc -o docs/ src/clustercron | ||
| sphinx-apidoc -o docs/ src/$(PACKAGE) | ||
| $(MAKE) -C docs html | ||
| $(BROWSER) docs/_build/html/index.html | ||
| .PHONY: servedocs | ||
| servedocs: docs ## Compile the docs watching for changes. | ||
| watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . | ||
| .PHONY: release | ||
| release: clean test build ## Package and upload a release. | ||
| .PHONY: upload | ||
| upload: ## Upload package to Python Package Index (PyPI). | ||
| twine upload dist/* | ||
| .PHONY: build | ||
| build: clean-build ## Builds source and wheel package. | ||
| build: clean ## Builds source and wheel package. | ||
| python -m build | ||
| ls -l dist | ||
| python -m twine check --strict dist/* | ||
| .PHONY: devenv | ||
| devenv: ## Install package development mode + dependencies. | ||
| pip install -U pip wheel setuptools | ||
| pip install -e ".[dev]" | ||
| .PHONY: release | ||
| release: clean tox build upload ## Release package: test, build and upload to PyPI. |
+9
-2
| Metadata-Version: 2.1 | ||
| Name: clustercron | ||
| Version: 0.6.12 | ||
| Version: 0.6.14 | ||
| Summary: Cron job wrapper that ensures a script gets run from one node in the cluster. | ||
@@ -27,2 +27,5 @@ Home-page: https://github.com/maartenq/clustercron | ||
| Description-Content-Type: text/x-rst | ||
| Provides-Extra: dev | ||
| Provides-Extra: docs | ||
| Provides-Extra: test | ||
| License-File: LICENSE.txt | ||
@@ -34,3 +37,3 @@ | ||
| |pypi| |docs| |pre-commit| |workflow-ci| | ||
| |pypi| |docs| |pre-commit| |workflow-ci| |codecov| | ||
@@ -70,2 +73,6 @@ **Clustercron** is cronjob wrapper that tries to ensure that a script gets run | ||
| .. |codecov| image:: https://codecov.io/gh/maartenq/clustercron/branch/master/graph/badge.svg?token=O0YWMFHJBG | ||
| :alt: Codecov | ||
| :target: https://codecov.io/gh/maartenq/clustercron | ||
+6
-4
| # pyproject.toml | ||
| [build-system] | ||
| requires = [ | ||
| "setuptools>=42", | ||
| "wheel" | ||
| ] | ||
| requires = ["setuptools>=44", "wheel", "setuptools_scm>=5.0.2"] | ||
| build-backend = "setuptools.build_meta" | ||
@@ -13,1 +10,6 @@ | ||
| skip-string-normalization = true | ||
| [tool.isort] | ||
| profile = "black" | ||
| [tool.setuptools_scm] |
+5
-1
@@ -5,3 +5,3 @@ =========== | ||
| |pypi| |docs| |pre-commit| |workflow-ci| | ||
| |pypi| |docs| |pre-commit| |workflow-ci| |codecov| | ||
@@ -40,1 +40,5 @@ **Clustercron** is cronjob wrapper that tries to ensure that a script gets run | ||
| :target: https://github.com/maartenq/clustercron/actions?workflow=ci | ||
| .. |codecov| image:: https://codecov.io/gh/maartenq/clustercron/branch/master/graph/badge.svg?token=O0YWMFHJBG | ||
| :alt: Codecov | ||
| :target: https://codecov.io/gh/maartenq/clustercron |
+22
-6
| [metadata] | ||
| name = clustercron | ||
| version = 0.6.12 | ||
| description = Cron job wrapper that ensures a script gets run from one node in the cluster. | ||
@@ -29,2 +28,3 @@ long_description = file: README.rst | ||
| Changelog = https://github.com/maartenq/clustercron/blob/main/HISTORY.rst | ||
| use_scm_version = True, | ||
@@ -43,7 +43,2 @@ [options] | ||
| test_suite = tests | ||
| tests_require = | ||
| pytest | ||
| pytest-cov | ||
| responses | ||
| tox | ||
| zip_safe = False | ||
@@ -58,2 +53,23 @@ | ||
| [options.extras_require] | ||
| dev = | ||
| Sphinx | ||
| black | ||
| build | ||
| flake8 | ||
| pre-commit | ||
| pytest | ||
| pytest-cov | ||
| responses | ||
| sphinx-rtd-theme | ||
| tox | ||
| twine | ||
| docs = | ||
| Sphinx | ||
| sphinx-rtd-theme | ||
| test = | ||
| pytest | ||
| pytest-cov | ||
| responses | ||
| [bdist_wheel] | ||
@@ -60,0 +76,0 @@ universal = 1 |
| Metadata-Version: 2.1 | ||
| Name: clustercron | ||
| Version: 0.6.12 | ||
| Version: 0.6.14 | ||
| Summary: Cron job wrapper that ensures a script gets run from one node in the cluster. | ||
@@ -27,2 +27,5 @@ Home-page: https://github.com/maartenq/clustercron | ||
| Description-Content-Type: text/x-rst | ||
| Provides-Extra: dev | ||
| Provides-Extra: docs | ||
| Provides-Extra: test | ||
| License-File: LICENSE.txt | ||
@@ -34,3 +37,3 @@ | ||
| |pypi| |docs| |pre-commit| |workflow-ci| | ||
| |pypi| |docs| |pre-commit| |workflow-ci| |codecov| | ||
@@ -70,2 +73,6 @@ **Clustercron** is cronjob wrapper that tries to ensure that a script gets run | ||
| .. |codecov| image:: https://codecov.io/gh/maartenq/clustercron/branch/master/graph/badge.svg?token=O0YWMFHJBG | ||
| :alt: Codecov | ||
| :target: https://codecov.io/gh/maartenq/clustercron | ||
| boto | ||
| boto3 | ||
| [dev] | ||
| Sphinx | ||
| black | ||
| build | ||
| flake8 | ||
| pre-commit | ||
| pytest | ||
| pytest-cov | ||
| responses | ||
| sphinx-rtd-theme | ||
| tox | ||
| twine | ||
| [docs] | ||
| Sphinx | ||
| sphinx-rtd-theme | ||
| [test] | ||
| pytest | ||
| pytest-cov | ||
| responses |
@@ -1,2 +0,1 @@ | ||
| .bumpversion.cfg | ||
| .editorconfig | ||
@@ -13,7 +12,3 @@ .flake8 | ||
| README.rst | ||
| clustercron.ini | ||
| pyproject.toml | ||
| requirements.txt | ||
| requirements_dev.txt | ||
| requirements_py27.txt | ||
| setup.cfg | ||
@@ -45,2 +40,3 @@ setup.py | ||
| src/clustercron/main.py | ||
| src/clustercron/version.py | ||
| src/clustercron.egg-info/PKG-INFO | ||
@@ -53,3 +49,4 @@ src/clustercron.egg-info/SOURCES.txt | ||
| src/clustercron.egg-info/top_level.txt | ||
| src/clustercron/etc/clustercron.ini | ||
| tests/__init__.py | ||
| tests/test_main.py |
@@ -6,2 +6,1 @@ # -*- coding: utf-8 -*- | ||
| __email__ = 'ikmaarten@gmail.com' | ||
| __version__ = '0.6.12' |
@@ -20,3 +20,4 @@ # clustercron/clustercron.py | ||
| from . import __version__, cache, config | ||
| from . import cache, config | ||
| from .version import get_version | ||
@@ -198,3 +199,3 @@ # general libary logging | ||
| if optarg.args['version']: | ||
| print(__version__) | ||
| print(get_version()) | ||
| exitcode = 2 | ||
@@ -201,0 +202,0 @@ elif optarg.args['lb_type'] and optarg.args['name']: |
+5
-7
@@ -12,5 +12,4 @@ [tox] | ||
| BOTO_CONFIG = /dev/null | ||
| deps = | ||
| pytest | ||
| pytest-cov | ||
| extras = | ||
| test | ||
| commands = | ||
@@ -31,5 +30,4 @@ pytest --cov=clustercron | ||
| basepython = python3.9 | ||
| deps = | ||
| Sphinx | ||
| sphinx-rtd-theme | ||
| extras = | ||
| docs | ||
| changedir = docs/ | ||
@@ -46,3 +44,3 @@ commands = | ||
| python -m build | ||
| python -m twine check dist/* | ||
| python -m twine check --strict dist/* | ||
@@ -49,0 +47,0 @@ [gh-actions] |
| [bumpversion] | ||
| current_version = 0.6.12 | ||
| commit = True | ||
| tag = True | ||
| [bumpversion:file:setup.cfg] | ||
| [bumpversion:file:src/clustercron/__init__.py] | ||
| search = __version__ = '{current_version}' | ||
| replace = __version__ = '{new_version}' |
| ; clustercron.ini | ||
| ; vim: ai et sts=4 ts=4 sw=4 fenc=UTF-8 ft=dosini | ||
| [Cache] | ||
| filename = /tmp/clustercron_cache.json | ||
| expire_time = 59 | ||
| max_iter = 20 |
| # requirements_dev.txt | ||
| -r requirements.txt | ||
| black | ||
| build | ||
| bumpversion | ||
| coverage | ||
| flake8 | ||
| pytest | ||
| pytest-cov | ||
| responses | ||
| Sphinx | ||
| sphinx-rtd-theme | ||
| tox | ||
| twine |
| # requirements.txt | ||
| -i https://pypi.org/simple | ||
| boto3==1.17.112 | ||
| botocore==1.20.112 | ||
| docutils==0.17.1 | ||
| jmespath==0.10.0 | ||
| python-dateutil==2.8.2 | ||
| s3transfer==0.4.2 | ||
| six==1.16.0 | ||
| urllib3==1.26.6 |
| # requirements.txt | ||
| -i https://pypi.org/simple | ||
| boto==2.49.0 | ||
| boto3==1.18.36 | ||
| docutils==0.17.1 | ||
| jmespath==0.10.0 | ||
| python-dateutil==2.8.2 | ||
| s3transfer==0.5.0 | ||
| six==1.16.0 | ||
| urllib3==1.26.6 |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
76810
3.36%1084
1.69%50
-5.66%