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.
Files changed (51) hide show
  1. yacron2-1.0.0/.dockerignore +13 -0
  2. yacron2-1.0.0/.editorconfig +15 -0
  3. yacron2-1.0.0/.github/ISSUE_TEMPLATE.md +15 -0
  4. yacron2-1.0.0/.github/workflows/tox.yml +36 -0
  5. yacron2-1.0.0/.gitignore +67 -0
  6. yacron2-1.0.0/.pre-commit-config.yaml +17 -0
  7. yacron2-1.0.0/HISTORY.rst +378 -0
  8. yacron2-1.0.0/LICENSE +21 -0
  9. yacron2-1.0.0/MANIFEST.in +8 -0
  10. yacron2-1.0.0/PKG-INFO +787 -0
  11. yacron2-1.0.0/README.md +751 -0
  12. yacron2-1.0.0/example/adhoc.yacron2.d/_inc.yaml +66 -0
  13. yacron2-1.0.0/example/adhoc.yacron2.d/test-tz.yaml +16 -0
  14. yacron2-1.0.0/example/adhoc.yacron2.d/test-utc.yaml +16 -0
  15. yacron2-1.0.0/example/adhoc.yacron2.d/test.yaml +64 -0
  16. yacron2-1.0.0/example/docker/Dockerfile +7 -0
  17. yacron2-1.0.0/example/docker/README +28 -0
  18. yacron2-1.0.0/example/docker/k8s-deploy.yaml +29 -0
  19. yacron2-1.0.0/example/docker/yacron2tab.yaml +10 -0
  20. yacron2-1.0.0/pyinstaller/Dockerfile +28 -0
  21. yacron2-1.0.0/pyinstaller/Makefile +9 -0
  22. yacron2-1.0.0/pyinstaller/yacron2 +3 -0
  23. yacron2-1.0.0/pyinstaller/yacron2.spec +36 -0
  24. yacron2-1.0.0/pyproject.toml +100 -0
  25. yacron2-1.0.0/requirements_dev.txt +7 -0
  26. yacron2-1.0.0/setup.cfg +4 -0
  27. yacron2-1.0.0/tests/__init__.py +0 -0
  28. yacron2-1.0.0/tests/fixtures/.testenv +7 -0
  29. yacron2-1.0.0/tests/fixtures/.testenv-invalid +1 -0
  30. yacron2-1.0.0/tests/test_config.py +523 -0
  31. yacron2-1.0.0/tests/test_cron.py +684 -0
  32. yacron2-1.0.0/tests/test_include_parent.yaml +10 -0
  33. yacron2-1.0.0/tests/test_included_child.yaml +12 -0
  34. yacron2-1.0.0/tests/test_job.py +730 -0
  35. yacron2-1.0.0/tests/test_main.py +55 -0
  36. yacron2-1.0.0/tests/testbrokenconfig.yaml +3 -0
  37. yacron2-1.0.0/tests/testconfig.yaml +15 -0
  38. yacron2-1.0.0/tox.ini +30 -0
  39. yacron2-1.0.0/yacron2/__init__.py +0 -0
  40. yacron2-1.0.0/yacron2/__main__.py +80 -0
  41. yacron2-1.0.0/yacron2/config.py +643 -0
  42. yacron2-1.0.0/yacron2/cron.py +563 -0
  43. yacron2-1.0.0/yacron2/job.py +654 -0
  44. yacron2-1.0.0/yacron2/statsd.py +72 -0
  45. yacron2-1.0.0/yacron2/version.py +24 -0
  46. yacron2-1.0.0/yacron2.egg-info/PKG-INFO +787 -0
  47. yacron2-1.0.0/yacron2.egg-info/SOURCES.txt +49 -0
  48. yacron2-1.0.0/yacron2.egg-info/dependency_links.txt +1 -0
  49. yacron2-1.0.0/yacron2.egg-info/entry_points.txt +2 -0
  50. yacron2-1.0.0/yacron2.egg-info/requires.txt +16 -0
  51. 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
+ # http://editorconfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ indent_style = space
7
+ indent_size = 4
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+ charset = utf-8
11
+ end_of_line = lf
12
+
13
+
14
+ [LICENSE]
15
+ insert_final_newline = false
@@ -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
@@ -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.
@@ -0,0 +1,8 @@
1
+ include LICENSE
2
+ include README.md
3
+
4
+ recursive-include tests *
5
+ recursive-include example *
6
+ recursive-exclude * __pycache__
7
+ recursive-exclude * *.py[co]
8
+ recursive-exclude env *