yacron2 1.0.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.
- yacron2-1.0.0/.dockerignore +13 -0
- yacron2-1.0.0/.editorconfig +15 -0
- yacron2-1.0.0/.github/ISSUE_TEMPLATE.md +15 -0
- yacron2-1.0.0/.github/workflows/tox.yml +36 -0
- yacron2-1.0.0/.gitignore +67 -0
- yacron2-1.0.0/.pre-commit-config.yaml +17 -0
- yacron2-1.0.0/HISTORY.rst +378 -0
- yacron2-1.0.0/LICENSE +21 -0
- yacron2-1.0.0/MANIFEST.in +8 -0
- yacron2-1.0.0/PKG-INFO +787 -0
- yacron2-1.0.0/README.md +751 -0
- yacron2-1.0.0/example/adhoc.yacron2.d/_inc.yaml +66 -0
- yacron2-1.0.0/example/adhoc.yacron2.d/test-tz.yaml +16 -0
- yacron2-1.0.0/example/adhoc.yacron2.d/test-utc.yaml +16 -0
- yacron2-1.0.0/example/adhoc.yacron2.d/test.yaml +64 -0
- yacron2-1.0.0/example/docker/Dockerfile +7 -0
- yacron2-1.0.0/example/docker/README +28 -0
- yacron2-1.0.0/example/docker/k8s-deploy.yaml +29 -0
- yacron2-1.0.0/example/docker/yacron2tab.yaml +10 -0
- yacron2-1.0.0/pyinstaller/Dockerfile +28 -0
- yacron2-1.0.0/pyinstaller/Makefile +9 -0
- yacron2-1.0.0/pyinstaller/yacron2 +3 -0
- yacron2-1.0.0/pyinstaller/yacron2.spec +36 -0
- yacron2-1.0.0/pyproject.toml +100 -0
- yacron2-1.0.0/requirements_dev.txt +7 -0
- yacron2-1.0.0/setup.cfg +4 -0
- yacron2-1.0.0/tests/__init__.py +0 -0
- yacron2-1.0.0/tests/fixtures/.testenv +7 -0
- yacron2-1.0.0/tests/fixtures/.testenv-invalid +1 -0
- yacron2-1.0.0/tests/test_config.py +523 -0
- yacron2-1.0.0/tests/test_cron.py +684 -0
- yacron2-1.0.0/tests/test_include_parent.yaml +10 -0
- yacron2-1.0.0/tests/test_included_child.yaml +12 -0
- yacron2-1.0.0/tests/test_job.py +730 -0
- yacron2-1.0.0/tests/test_main.py +55 -0
- yacron2-1.0.0/tests/testbrokenconfig.yaml +3 -0
- yacron2-1.0.0/tests/testconfig.yaml +15 -0
- yacron2-1.0.0/tox.ini +30 -0
- yacron2-1.0.0/yacron2/__init__.py +0 -0
- yacron2-1.0.0/yacron2/__main__.py +80 -0
- yacron2-1.0.0/yacron2/config.py +643 -0
- yacron2-1.0.0/yacron2/cron.py +563 -0
- yacron2-1.0.0/yacron2/job.py +654 -0
- yacron2-1.0.0/yacron2/statsd.py +72 -0
- yacron2-1.0.0/yacron2/version.py +24 -0
- yacron2-1.0.0/yacron2.egg-info/PKG-INFO +787 -0
- yacron2-1.0.0/yacron2.egg-info/SOURCES.txt +49 -0
- yacron2-1.0.0/yacron2.egg-info/dependency_links.txt +1 -0
- yacron2-1.0.0/yacron2.egg-info/entry_points.txt +2 -0
- yacron2-1.0.0/yacron2.egg-info/requires.txt +16 -0
- yacron2-1.0.0/yacron2.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Keep the build context small. NOTE: .git MUST be included — setuptools_scm
|
|
2
|
+
# derives the version from git tags during `pip install .`.
|
|
3
|
+
.venv
|
|
4
|
+
.venv314
|
|
5
|
+
.tox
|
|
6
|
+
.mypy_cache
|
|
7
|
+
.ruff_cache
|
|
8
|
+
.pytest_cache
|
|
9
|
+
dist
|
|
10
|
+
build
|
|
11
|
+
*.egg-info
|
|
12
|
+
__pycache__
|
|
13
|
+
*.pyc
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
* yacron2 version:
|
|
2
|
+
* Python version:
|
|
3
|
+
* Operating System:
|
|
4
|
+
|
|
5
|
+
### Description
|
|
6
|
+
|
|
7
|
+
Describe what you were trying to get done.
|
|
8
|
+
Tell us what happened, what went wrong, and what you expected to happen.
|
|
9
|
+
|
|
10
|
+
### What I Did
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Paste the command(s) you ran and the output.
|
|
14
|
+
If there was a crash, please include the traceback here.
|
|
15
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: tox
|
|
2
|
+
on: [push, pull_request]
|
|
3
|
+
jobs:
|
|
4
|
+
tox-lint:
|
|
5
|
+
runs-on: ubuntu-latest
|
|
6
|
+
steps:
|
|
7
|
+
- uses: actions/checkout@v7
|
|
8
|
+
- uses: actions/setup-python@v6.2.0
|
|
9
|
+
- run: pip install --upgrade pip
|
|
10
|
+
- run: pip install tox
|
|
11
|
+
- run: tox -e lint
|
|
12
|
+
|
|
13
|
+
tox-mypy:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v7
|
|
17
|
+
- uses: actions/setup-python@v6.2.0
|
|
18
|
+
- run: pip install --upgrade pip
|
|
19
|
+
- run: pip install tox
|
|
20
|
+
- run: tox -e mypy
|
|
21
|
+
|
|
22
|
+
tox:
|
|
23
|
+
strategy:
|
|
24
|
+
fail-fast: false
|
|
25
|
+
matrix:
|
|
26
|
+
os: [ubuntu-latest] # [macos-latest, ubuntu-latest, windows-latest]
|
|
27
|
+
python: ['3.13', '3.14']
|
|
28
|
+
runs-on: ${{ matrix.os }}
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v7
|
|
31
|
+
- uses: actions/setup-python@v6.2.0
|
|
32
|
+
with:
|
|
33
|
+
python-version: ${{ matrix.python }}
|
|
34
|
+
- run: pip install --upgrade pip
|
|
35
|
+
- run: pip install tox
|
|
36
|
+
- run: tox -e py
|
yacron2-1.0.0/.gitignore
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/.pytest_cache/
|
|
2
|
+
# Byte-compiled / optimized / DLL files
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.py[cod]
|
|
5
|
+
*$py.class
|
|
6
|
+
|
|
7
|
+
# C extensions
|
|
8
|
+
*.so
|
|
9
|
+
|
|
10
|
+
# Distribution / packaging
|
|
11
|
+
.Python
|
|
12
|
+
env/
|
|
13
|
+
build/
|
|
14
|
+
develop-eggs/
|
|
15
|
+
dist/
|
|
16
|
+
downloads/
|
|
17
|
+
eggs/
|
|
18
|
+
.eggs/
|
|
19
|
+
lib/
|
|
20
|
+
lib64/
|
|
21
|
+
parts/
|
|
22
|
+
sdist/
|
|
23
|
+
var/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
|
|
28
|
+
# PyInstaller
|
|
29
|
+
# Usually these files are written by a python script from a template
|
|
30
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
31
|
+
*.manifest
|
|
32
|
+
|
|
33
|
+
# Installer logs
|
|
34
|
+
pip-log.txt
|
|
35
|
+
pip-delete-this-directory.txt
|
|
36
|
+
|
|
37
|
+
# Unit test / coverage reports
|
|
38
|
+
htmlcov/
|
|
39
|
+
.tox/
|
|
40
|
+
.coverage
|
|
41
|
+
.coverage.*
|
|
42
|
+
.cache
|
|
43
|
+
nosetests.xml
|
|
44
|
+
coverage.xml
|
|
45
|
+
*,cover
|
|
46
|
+
.hypothesis/
|
|
47
|
+
|
|
48
|
+
# Translations
|
|
49
|
+
*.mo
|
|
50
|
+
*.pot
|
|
51
|
+
|
|
52
|
+
# Django stuff:
|
|
53
|
+
*.log
|
|
54
|
+
|
|
55
|
+
# Sphinx documentation
|
|
56
|
+
docs/_build/
|
|
57
|
+
|
|
58
|
+
# PyBuilder
|
|
59
|
+
target/
|
|
60
|
+
|
|
61
|
+
# pyenv python configuration file
|
|
62
|
+
.python-version
|
|
63
|
+
|
|
64
|
+
/.mypy_cache/
|
|
65
|
+
|
|
66
|
+
/pyoxidizer/venv/
|
|
67
|
+
/yacron2/version.py
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/PyCQA/bandit
|
|
3
|
+
rev: 1.9.4
|
|
4
|
+
hooks:
|
|
5
|
+
- id: bandit
|
|
6
|
+
args: ["-c", "pyproject.toml", "--severity-level=medium"]
|
|
7
|
+
additional_dependencies: ["bandit[toml]"]
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
10
|
+
# Ruff version.
|
|
11
|
+
rev: v0.15.18
|
|
12
|
+
hooks:
|
|
13
|
+
# Run the linter.
|
|
14
|
+
- id: ruff
|
|
15
|
+
args: [--fix]
|
|
16
|
+
# Run the formatter.
|
|
17
|
+
- id: ruff-format
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
=======
|
|
2
|
+
History
|
|
3
|
+
=======
|
|
4
|
+
|
|
5
|
+
yacron2 is a fork of `yacron <https://github.com/gjcarneiro/yacron>`_,
|
|
6
|
+
continuing from yacron 0.19. The 1.0.0 entry below documents the fork; the
|
|
7
|
+
entries from 0.19.0 onward document the history of the original yacron
|
|
8
|
+
project, on which yacron2 is based.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
1.0.0 (2026-06-19)
|
|
12
|
+
------------------
|
|
13
|
+
|
|
14
|
+
**About this release**
|
|
15
|
+
|
|
16
|
+
* yacron2 1.0.0 is the first release of the yacron2 fork, based on
|
|
17
|
+
gjcarneiro/yacron 0.19. It carries forward all of upstream yacron's
|
|
18
|
+
functionality and adds modernized packaging, a Python 3.13+ runtime, new
|
|
19
|
+
web-API authentication, and a set of security and correctness fixes.
|
|
20
|
+
* The project, package, command, config directory, and reporter environment
|
|
21
|
+
variables have all been renamed from ``yacron`` to ``yacron2`` (see Breaking
|
|
22
|
+
changes for migration steps).
|
|
23
|
+
|
|
24
|
+
**Breaking changes**
|
|
25
|
+
|
|
26
|
+
* The installed command and PyPI distribution are renamed ``yacron`` ->
|
|
27
|
+
``yacron2`` (install with ``pip install yacron2``; run ``yacron2``). The
|
|
28
|
+
Python import package is now ``yacron2`` and the entry point is
|
|
29
|
+
``yacron2.__main__:main``.
|
|
30
|
+
* The default config directory changed from ``/etc/yacron.d`` to
|
|
31
|
+
``/etc/yacron2.d``; operators relying on the default path must move their
|
|
32
|
+
config directory.
|
|
33
|
+
* Minimum Python is now 3.13 (``requires-python >=3.13``); only Python 3.13 and
|
|
34
|
+
3.14 are supported. Python 3.7 through 3.12 are no longer supported.
|
|
35
|
+
* Reporter shell environment variables were renamed ``YACRON_*`` ->
|
|
36
|
+
``YACRON2_*`` (e.g. ``YACRON2_JOB_NAME``, ``YACRON2_RETCODE``). Existing
|
|
37
|
+
``onFailure``/``onSuccess`` shell scripts must be updated.
|
|
38
|
+
* mail ``validate_certs`` now defaults to ``True``, so SMTP TLS certificate
|
|
39
|
+
validation is enabled unless explicitly disabled. Delivery to servers with
|
|
40
|
+
self-signed/invalid certificates that previously worked silently will now
|
|
41
|
+
fail unless ``validate_certs: false`` is set.
|
|
42
|
+
* Privilege drop now drops/sets supplementary groups (``os.initgroups`` /
|
|
43
|
+
``os.setgroups``) before ``setuid``, fixing a privilege-escalation bug where
|
|
44
|
+
root's supplementary group memberships leaked into the child. A numeric
|
|
45
|
+
``user`` without an explicit ``group`` now derives its primary gid from the
|
|
46
|
+
passwd database instead of silently keeping yacron's gid 0.
|
|
47
|
+
* ``defaults.environment`` now merges by key instead of concatenating: a job
|
|
48
|
+
overriding a default variable yields a single entry. Configs relying on the
|
|
49
|
+
old duplicate-key concatenation behave differently.
|
|
50
|
+
* Dependency pins changed: ``crontab`` jumped from ``==0.22.8`` to ``>=1,<2``
|
|
51
|
+
(major version change), ``strictyaml`` to ``>=1.7,<2``, ``aiohttp`` to
|
|
52
|
+
``>=3.10,<4``, ``aiosmtplib`` to ``>=3,<6`` (v2+ login API), ``sentry-sdk``
|
|
53
|
+
to ``>=2,<3``. ``pytz`` and the direct ``ruamel.yaml`` pin were dropped;
|
|
54
|
+
``tzdata>=2024.1`` was added.
|
|
55
|
+
|
|
56
|
+
**Features & behavior**
|
|
57
|
+
|
|
58
|
+
* New ``web.authToken`` option adds opt-in bearer-token authentication to the
|
|
59
|
+
HTTP API (literal ``value``, ``fromFile``, or ``fromEnvVar``); when set, an
|
|
60
|
+
aiohttp middleware requires ``Authorization: Bearer <token>`` on every route,
|
|
61
|
+
compares it in constant time (``hmac.compare_digest``), and returns 401
|
|
62
|
+
otherwise.
|
|
63
|
+
* New ``web.socketMode`` option sets octal permissions on ``unix://`` listen
|
|
64
|
+
sockets, logging a warning rather than failing on invalid values; non-unix
|
|
65
|
+
schemes are ignored.
|
|
66
|
+
* Job stderr is now written to the process's stderr instead of stdout, so
|
|
67
|
+
operators separating yacron2's own stdout/stderr streams get correctly routed
|
|
68
|
+
output.
|
|
69
|
+
* Config now validates numeric ranges at load time and raises a clear
|
|
70
|
+
``ConfigError`` for invalid values (``saveLimit>=0``, ``maxLineLength>0``,
|
|
71
|
+
``killTimeout>=0``, ``executionTimeout>0``, and ``onFailure.retry``
|
|
72
|
+
constraints) instead of failing obscurely at runtime.
|
|
73
|
+
* Multi-file config directories now aggregate jobs, defaults, and logging
|
|
74
|
+
across all files instead of using only the last file's settings. Duplicate
|
|
75
|
+
``web`` or ``logging`` blocks across the directory raise a ``ConfigError``,
|
|
76
|
+
an empty/all-skipped directory yields an empty config (no
|
|
77
|
+
``UnboundLocalError``), and a missing/unreadable single config file now
|
|
78
|
+
raises a clear ``ConfigError``.
|
|
79
|
+
* Logging configuration is now re-applied on reload when it changes and is only
|
|
80
|
+
marked applied on success, so a logging section fixed after an error or
|
|
81
|
+
changed at runtime is picked up without a restart.
|
|
82
|
+
* Scheduling a retry for a job that was removed from the configuration
|
|
83
|
+
mid-retry no longer crashes; the stale retry state is cleared and the retry
|
|
84
|
+
is skipped.
|
|
85
|
+
* Job stop metrics (statsd ``job_stopped``) are now emitted exactly once per
|
|
86
|
+
run; a guard makes ``_on_stop`` idempotent, preventing duplicate metrics when
|
|
87
|
+
``cancel`` races ``wait`` (e.g. ``concurrencyPolicy=Replace``).
|
|
88
|
+
* Non-UTF-8 job output no longer crashes the stream reader (output is decoded
|
|
89
|
+
with ``errors='replace'``).
|
|
90
|
+
* A job with an empty environment list now gets its environment assigned
|
|
91
|
+
correctly (previously left ``None``).
|
|
92
|
+
* Email reports now set an RFC 5322 ``Date`` header
|
|
93
|
+
(``email.utils.format_datetime``), encode HTML bodies with the correct
|
|
94
|
+
charset/transfer-encoding (``set_content`` subtype ``html``), and call
|
|
95
|
+
``smtp.login`` positionally for aiosmtplib v2+ compatibility.
|
|
96
|
+
* The Sentry client is now initialised once per ``(dsn, environment)`` and
|
|
97
|
+
cached instead of on every report, and uses ``sentry_sdk.new_scope()``
|
|
98
|
+
(replacing the deprecated ``push_scope()``).
|
|
99
|
+
* Report templates (sentry/mail body, subject, fingerprint) are now compiled
|
|
100
|
+
and cached via an ``lru_cache``, and the three report blocks (``onFailure``,
|
|
101
|
+
``onPermanentFailure``, ``onSuccess``) deep-copy their defaults so they no
|
|
102
|
+
longer alias one shared mutable object.
|
|
103
|
+
* The shell reporter now logs a nonzero reporter exit code via ``logger.error``
|
|
104
|
+
(clean message) instead of ``logger.exception`` (which logged a bogus
|
|
105
|
+
``NoneType: None`` traceback).
|
|
106
|
+
* statsd UDP errors are now logged with their detail (``UDP error received:
|
|
107
|
+
%s``) instead of being dropped due to a missing format placeholder.
|
|
108
|
+
|
|
109
|
+
**Python & runtime**
|
|
110
|
+
|
|
111
|
+
* Timezone handling migrated from third-party ``pytz`` to the standard-library
|
|
112
|
+
``zoneinfo``; invalid timezones now raise ``ConfigError``.
|
|
113
|
+
* Added ``tzdata>=2024.1`` so ``zoneinfo`` can resolve timezones on
|
|
114
|
+
slim/minimal container images that don't ship the system tz database.
|
|
115
|
+
* The asyncio event loop is now created with ``asyncio.new_event_loop()``
|
|
116
|
+
instead of the deprecated ``asyncio.get_event_loop()`` (carried from
|
|
117
|
+
upstream).
|
|
118
|
+
* Internal logger and argparse program name updated to ``yacron2``; CLI
|
|
119
|
+
error/version output now reads ``yacron2``.
|
|
120
|
+
|
|
121
|
+
**Packaging & build**
|
|
122
|
+
|
|
123
|
+
* Migrated from legacy ``setup.py``/``setup.cfg`` to a PEP 621
|
|
124
|
+
``pyproject.toml`` using the setuptools build backend (``setuptools>=77``,
|
|
125
|
+
``setuptools_scm>=8``); ``setup.py`` and ``setup.cfg`` were removed.
|
|
126
|
+
* Versioning continues via setuptools_scm, now configured under
|
|
127
|
+
``[tool.setuptools_scm]`` writing ``yacron2/version.py``.
|
|
128
|
+
* Adopted a PEP 639 SPDX license expression (``license = "MIT"``) with
|
|
129
|
+
``license-files``, and updated the LICENSE with a ``Copyright (c) 2026, the
|
|
130
|
+
yacron2 developers`` line alongside the original 2019 copyright.
|
|
131
|
+
* Added a ``[project.optional-dependencies]`` ``dev`` extra (mypy,
|
|
132
|
+
mypy-extensions, pytest, pytest-asyncio, pytest-cov, ruff, tox) and trimmed
|
|
133
|
+
``requirements_dev.txt`` to match (dropped flake8, types-pytz, and stale
|
|
134
|
+
pins; added ruff).
|
|
135
|
+
* Consolidated mypy and pytest configuration into ``pyproject.toml`` and bumped
|
|
136
|
+
the black/ruff target-version to ``py313``.
|
|
137
|
+
* ``MANIFEST.in`` and packaging metadata updated for the ``README.rst`` ->
|
|
138
|
+
``README.md`` switch.
|
|
139
|
+
|
|
140
|
+
**CI & tooling**
|
|
141
|
+
|
|
142
|
+
* Removed Travis CI configuration (``.travis.yml``).
|
|
143
|
+
* Switched linting from black + flake8 to ruff (``ruff check`` + ``ruff
|
|
144
|
+
format``) with bugbear/mccabe/pycodestyle/pyflakes/import-sorting rules and a
|
|
145
|
+
mccabe complexity limit; added a bandit config and a
|
|
146
|
+
``.pre-commit-config.yaml`` running bandit and ruff hooks (carried from
|
|
147
|
+
upstream).
|
|
148
|
+
* Modernized the GitHub Actions tox workflow: bumped ``actions/checkout`` (v3
|
|
149
|
+
-> v7) and ``actions/setup-python`` (v3 -> v6.2.0), renamed the lint job, and
|
|
150
|
+
trimmed the test matrix to Python 3.13 and 3.14.
|
|
151
|
+
* Modernized ``tox.ini`` (envlist ``py313, py314, lint, mypy``), removed the
|
|
152
|
+
Travis mapping section, added ``skip_install`` to the lint/mypy envs, dropped
|
|
153
|
+
``types-pytz`` from the mypy env, and pointed lint/mypy commands at the
|
|
154
|
+
``yacron2`` package.
|
|
155
|
+
* Bumped pre-commit hook revisions (ruff-pre-commit and bandit).
|
|
156
|
+
|
|
157
|
+
**Docs & examples**
|
|
158
|
+
|
|
159
|
+
* Converted the README from reStructuredText to Markdown (``README.rst`` ->
|
|
160
|
+
``README.md``) and rebranded it to yacron2, with a new intro noting it is a
|
|
161
|
+
fork of gjcarneiro/yacron continuing from 0.19. The content is otherwise the
|
|
162
|
+
same as upstream 0.19, not a rewrite; install docs now require Python >=
|
|
163
|
+
3.13, the prebuilt binary targets glibc 2.39 / Ubuntu 24.04, and releases
|
|
164
|
+
come from github.com/ptweezy/yacron2.
|
|
165
|
+
* ``HISTORY.rst`` gained a fork-attribution preamble; older entries are
|
|
166
|
+
retained as upstream yacron history.
|
|
167
|
+
* Modernized the Docker example: base image ``python:3.14-slim`` with ``pip
|
|
168
|
+
install yacron2`` (replacing ubuntu:xenial + virtualenv), config copied into
|
|
169
|
+
``/etc/yacron2.d``, and ``ENTRYPOINT ['yacron2']``.
|
|
170
|
+
* Updated the Kubernetes example to the ``apps/v1`` Deployment API with the
|
|
171
|
+
now-required selector, rebranded ``yacrondemo`` -> ``yacron2demo``.
|
|
172
|
+
* Rebranded the ad-hoc example config directory, example tab file, PyInstaller
|
|
173
|
+
spec/launcher, and listen socket paths (``/tmp/yacron.sock`` ->
|
|
174
|
+
``/tmp/yacron2.sock``) to yacron2.
|
|
175
|
+
|
|
176
|
+
**Credits (trailing upstream changes)**
|
|
177
|
+
|
|
178
|
+
* ``web.headers`` option to control HTTP response headers on all web
|
|
179
|
+
endpoints — Gustavo Carneiro (gjcarneiro), commit bde0f0b; merged upstream
|
|
180
|
+
but never released in yacron 0.19.0.
|
|
181
|
+
* Python 3.14 compatibility, including ``asyncio.new_event_loop()`` and
|
|
182
|
+
modern-Python lint/format fixes — Gustavo J. A. M. Carneiro (gjcarneiro),
|
|
183
|
+
commit 27a32bc (#100).
|
|
184
|
+
* Switch from black/flake8 to ruff, plus bandit and pre-commit configuration —
|
|
185
|
+
Gustavo Carneiro (gjcarneiro), commits c656fa6 and 4f7936a.
|
|
186
|
+
* Removal of Travis CI and modernization of the Python/PyInstaller version
|
|
187
|
+
matrices — upstream yacron (gjcarneiro), commits d9b1ca6, 8d28816, 4e6892a,
|
|
188
|
+
2941dcf.
|
|
189
|
+
* README logging example fix adding ``datefmt: '%Y-%m-%d %H:%M:%S'`` to the
|
|
190
|
+
custom-logging formatter — andreas-wittig, commit 931b186.
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
0.19.0 (2023-03-11)
|
|
194
|
+
-------------------
|
|
195
|
+
|
|
196
|
+
* Add ability to configure yacron's own logging (#81 #82 #83, gjcarneiro, bdamian)
|
|
197
|
+
* Add config value for SMTP(validate_certs=False) (David Batley)
|
|
198
|
+
|
|
199
|
+
0.18.0 (2023-01-01)
|
|
200
|
+
-------------------
|
|
201
|
+
|
|
202
|
+
* fixes "Job is always executed immediately on yacron start" (#67)
|
|
203
|
+
* add an `enabled` option in jobs (#73)
|
|
204
|
+
* give a better error message when no configuration file is provided or exists (#72)
|
|
205
|
+
|
|
206
|
+
0.17.0 (2022-06-26)
|
|
207
|
+
-------------------
|
|
208
|
+
|
|
209
|
+
* Support Additional Shell Report Vars (RJ Garcia)
|
|
210
|
+
* Shell reporter: handle long lines truncatation (Hannes Hergeth)
|
|
211
|
+
* exe: undo pyinstaller LD_LIBRARY_PATH changes in subprocesses (#68, Gustavo Carneiro)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
0.16.0 (2021-12-05)
|
|
215
|
+
-------------------
|
|
216
|
+
|
|
217
|
+
* make the capture max line length configurable and change the default
|
|
218
|
+
from 64K to 16M (#56)
|
|
219
|
+
* Add config option to change prefix of subprocess stream lines (#58, eelkeh)
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
0.15.1 (2021-11-19)
|
|
223
|
+
-------------------
|
|
224
|
+
|
|
225
|
+
* Fix a bug in the --validate option (#57, Leonid Repin)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
0.15.0 (2021-11-10)
|
|
229
|
+
-------------------
|
|
230
|
+
|
|
231
|
+
* Allow emails to be html formatted
|
|
232
|
+
* Fix an error when reading cmd output with huge lines (#56)
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
0.14.0 (2021-10-04)
|
|
236
|
+
-------------------
|
|
237
|
+
|
|
238
|
+
* Sentry: increase the size of messages before getting truncated #54
|
|
239
|
+
* Sentry: allow specifying the environment option #53
|
|
240
|
+
* Minor fixes
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
0.13.1 (2021-08-10)
|
|
244
|
+
-------------------
|
|
245
|
+
|
|
246
|
+
* unicode fixes for the exe binary version
|
|
247
|
+
|
|
248
|
+
0.13.0 (2021-06-28)
|
|
249
|
+
|
|
250
|
+
* Add ability for one config file to include another one #38
|
|
251
|
+
* Add shell command reporting ability (Hannes Hergeth, #50)
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
0.12.2 (2021-05-31)
|
|
255
|
+
-------------------
|
|
256
|
+
|
|
257
|
+
* constrain ruamel.yaml to version 0.17.4 or below, later versions are buggy
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
0.12.1 (2021-05-30)
|
|
261
|
+
-------------------
|
|
262
|
+
|
|
263
|
+
* blacklist ruamel.yaml version 0.17.5 in requirements #47
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
0.12.0 (2021-04-22)
|
|
267
|
+
-------------------
|
|
268
|
+
|
|
269
|
+
* web: don't crash when receiving a web request without Accept header (#45)
|
|
270
|
+
* add env_file configuration option (Alessandro Romani, #43)
|
|
271
|
+
* email: add missing Date header (#39)
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
0.11.2 (2020-11-29)
|
|
275
|
+
-------------------
|
|
276
|
+
|
|
277
|
+
* Add back a self contained binary, this time based on PyInstaller
|
|
278
|
+
|
|
279
|
+
0.11.1 (2020-07-29)
|
|
280
|
+
-------------------
|
|
281
|
+
|
|
282
|
+
* Fix email reporting when multiple recipients given
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
0.11.0 (2020-07-20)
|
|
286
|
+
-------------------
|
|
287
|
+
|
|
288
|
+
* reporting: add a failure reason line at the top of sentry/email (#36)
|
|
289
|
+
* mail: new tls, startls, username, and password options (#21)
|
|
290
|
+
* allow jobs to run as a different user (#18)
|
|
291
|
+
* Support timezone schedule (#26)
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
0.10.1 (2020-06-02)
|
|
295
|
+
-------------------
|
|
296
|
+
|
|
297
|
+
* Minor bugfixes
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
0.10.0 (2019-11-03)
|
|
301
|
+
-------------------
|
|
302
|
+
|
|
303
|
+
* HTTP remote interface, allowing to get job status and start jobs on demand
|
|
304
|
+
* Simple Linux binary including all dependencies (built using PyOxidizer)
|
|
305
|
+
|
|
306
|
+
0.10.0b2 (2019-10-26)
|
|
307
|
+
---------------------
|
|
308
|
+
|
|
309
|
+
* Build Linux binary inside Docker Ubuntu 16.04, so that it is compatible with
|
|
310
|
+
older glibc systems
|
|
311
|
+
|
|
312
|
+
0.10.0b1 (2019-10-13)
|
|
313
|
+
---------------------
|
|
314
|
+
* Build a standalone Linux binary, using PyOxidizer
|
|
315
|
+
* Switch from raven to sentry-sdk
|
|
316
|
+
|
|
317
|
+
0.9.0 (2019-04-03)
|
|
318
|
+
------------------
|
|
319
|
+
* Added an option to just check if the yaml file is valid without running the scheduler.
|
|
320
|
+
* Fix missing `body` in the schema for sentry config
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
0.8.1 (2018-10-16)
|
|
324
|
+
------------------
|
|
325
|
+
* Fix a bug handling ``@reboot`` in schedule (#22)
|
|
326
|
+
|
|
327
|
+
0.8.0 (2018-05-14)
|
|
328
|
+
------------------
|
|
329
|
+
* Sentry: add new ``extra`` and ``level`` options.
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
0.7.0 (2018-03-21)
|
|
333
|
+
------------------
|
|
334
|
+
|
|
335
|
+
* Added the ``utc`` option and document that times are utc by default (#17);
|
|
336
|
+
* If an email body is empty, skip sending it;
|
|
337
|
+
* Added docker and k8s example.
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
0.6.0 (2017-11-24)
|
|
341
|
+
------------------
|
|
342
|
+
* Add custom Sentry fingerprint support
|
|
343
|
+
* Ability to send job metrics to statsd (thanks bofm)
|
|
344
|
+
* ``always`` flag to consider any cron job that exits to be failed
|
|
345
|
+
(thanks evanjardineskinner)
|
|
346
|
+
* `maximumRetries` can now be ``-1`` to never stop retrying (evanjardineskinner)
|
|
347
|
+
* ``schedule`` can be the string ``@reboot`` to always run that cron job on startup
|
|
348
|
+
(evanjardineskinner)
|
|
349
|
+
* ``saveLimit`` can be set to zero (evanjardineskinner)
|
|
350
|
+
|
|
351
|
+
0.5.0
|
|
352
|
+
------------------
|
|
353
|
+
* Templating support for reports
|
|
354
|
+
* Remove deprecated smtp_host/smtp_port
|
|
355
|
+
|
|
356
|
+
0.4.3 (2017-09-13)
|
|
357
|
+
------------------
|
|
358
|
+
* Bug fixes
|
|
359
|
+
|
|
360
|
+
0.4.2 (2017-09-07)
|
|
361
|
+
------------------
|
|
362
|
+
* Bug fixes
|
|
363
|
+
|
|
364
|
+
0.4.1 (2017-08-03)
|
|
365
|
+
------------------
|
|
366
|
+
|
|
367
|
+
* More polished handling of configuration errors;
|
|
368
|
+
* Unit tests;
|
|
369
|
+
* Bug fixes.
|
|
370
|
+
|
|
371
|
+
0.4.0 (2017-07-24)
|
|
372
|
+
------------------
|
|
373
|
+
|
|
374
|
+
* New option ``executionTimeout``, to terminate jobs that get stuck;
|
|
375
|
+
* If a job doesn't terminate gracefully kill it. New option ``killTimeout``
|
|
376
|
+
controls how much time to wait for graceful termination before killing it;
|
|
377
|
+
* Switch parsing to strictyaml, for more user friendly parsing validation error
|
|
378
|
+
messages.
|
yacron2-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2019, the Yacron developers
|
|
4
|
+
Copyright (c) 2026, the yacron2 developers
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
7
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
8
|
+
the Software without restriction, including without limitation the rights to
|
|
9
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
10
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
11
|
+
subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
18
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
19
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
20
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
21
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|