updates2mqtt 1.3.6__tar.gz → 1.3.7__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 (53) hide show
  1. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/CHANGELOG.md +4 -0
  2. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/PKG-INFO +7 -2
  3. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/README.md +4 -1
  4. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/pyproject.toml +6 -4
  5. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/config.py +4 -7
  6. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/uv.lock +3 -3
  7. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.dockerignore +0 -0
  8. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.github/dependabot.yml +0 -0
  9. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.github/workflows/docker-publish.yml +0 -0
  10. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.github/workflows/pypi-publish.yml +0 -0
  11. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.github/workflows/python-package.yml +0 -0
  12. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.gitignore +0 -0
  13. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.hintrc +0 -0
  14. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.pre-commit-config.yaml +0 -0
  15. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.python-version +0 -0
  16. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/.safety-project.ini +0 -0
  17. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/Dockerfile +0 -0
  18. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/LICENSE +0 -0
  19. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/SECURITY.md +0 -0
  20. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/common_packages.yaml +0 -0
  21. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/conftest.py +0 -0
  22. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/configuration.md +0 -0
  23. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/examples/config_maximal.md +0 -0
  24. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/examples/config_minimal.md +0 -0
  25. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/examples/docker_compose.md +0 -0
  26. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/images/ha_mqtt_discovery.png +0 -0
  27. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/images/ha_update_detail.png +0 -0
  28. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/images/ha_update_page.png +0 -0
  29. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/index.md +0 -0
  30. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/installation.md +0 -0
  31. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/docs/local_builds.md +0 -0
  32. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/examples/config.yaml.maximal +0 -0
  33. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/examples/config.yaml.minimal +0 -0
  34. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/examples/docker-compose.yaml +0 -0
  35. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/mkdocs.yml +0 -0
  36. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/no_config.yaml +0 -0
  37. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/refresh-deps.sh +0 -0
  38. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/scripts/healthcheck.sh +0 -0
  39. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/__init__.py +0 -0
  40. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/__main__.py +0 -0
  41. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/app.py +0 -0
  42. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/hass_formatter.py +0 -0
  43. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/integrations/__init__.py +0 -0
  44. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/integrations/docker.py +0 -0
  45. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/integrations/git_utils.py +0 -0
  46. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/model.py +0 -0
  47. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/mqtt.py +0 -0
  48. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/src/updates2mqtt/py.typed +0 -0
  49. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/tests/__init__.py +0 -0
  50. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/tests/test_config.py +0 -0
  51. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/tests/test_docker.py +0 -0
  52. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/tests/test_git_utils.py +0 -0
  53. {updates2mqtt-1.3.6 → updates2mqtt-1.3.7}/tests/test_mqtt.py +0 -0
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.3.7
4
+ - Improved initial setup when run without config or env vars for MQTT
5
+ - Minor test deps update and pyproject docs
6
+
3
7
  ## 1.3.6
4
8
  - Changed exit code on graceful shutdown to 143
5
9
  - App now exits if the MQTT username / password is not authorized
@@ -1,10 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: updates2mqtt
3
- Version: 1.3.6
3
+ Version: 1.3.7
4
4
  Summary: System update and docker image notification and execution over MQTT
5
+ Project-URL: Homepage, https://updates2mqtt.rhizomatics.org.uk
5
6
  Project-URL: Repository, https://github.com/rhizomatics/updates2mqtt
6
7
  Project-URL: Documentation, https://updates2mqtt.rhizomatics.org.uk
7
8
  Project-URL: Issues, https://github.com/rhizomatics/updates2mqtt/issues
9
+ Project-URL: Changelog, https://github.com/rhizomatics/updates2mqtt/blob/main/CHANGELOG.md
8
10
  Author-email: jey burrows <jrb@rhizomatics.org.uk>
9
11
  License-Expression: Apache-2.0
10
12
  License-File: LICENSE
@@ -37,6 +39,7 @@ Description-Content-Type: text/markdown
37
39
 
38
40
  # updates2mqtt
39
41
 
42
+ [![PyPI - Version](https://img.shields.io/pypi/v/updates2mqtt)](https://pypi.org/project/updates2mqtt/)
40
43
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/rhizomatics/supernotify)
41
44
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/rhizomatics/updates2mqtt/main.svg)](https://results.pre-commit.ci/latest/github/rhizomatics/updates2mqtt/main)
42
45
  [![Publish Python 🐍 distribution 📦 to PyPI and TestPyPI](https://github.com/rhizomatics/updates2mqtt/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/rhizomatics/updates2mqtt/actions/workflows/pypi-publish.yml)
@@ -107,8 +110,10 @@ interface, and the package can be remotely fetched and the component restarted.
107
110
 
108
111
  ## Related Projects
109
112
 
113
+ Other apps useful for self-hosting with the help of MQTT:
114
+
110
115
  - [psmqtt](https://github.com/eschava/psmqtt) - Report system health and metrics via MQTT
111
- -
116
+
112
117
  ## Development
113
118
 
114
119
  Access to Docker APIs uses the Python [docker-py](https://docker-py.readthedocs.io/en/stable/) SDK for Python. [Eclipse Paho](https://eclipse.dev/paho/files/paho.mqtt.python/html/client.html) is used for MQTT access, and [OmegaConf](https://omegaconf.readthedocs.io) for configuration.
@@ -2,6 +2,7 @@
2
2
 
3
3
  # updates2mqtt
4
4
 
5
+ [![PyPI - Version](https://img.shields.io/pypi/v/updates2mqtt)](https://pypi.org/project/updates2mqtt/)
5
6
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/rhizomatics/supernotify)
6
7
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/rhizomatics/updates2mqtt/main.svg)](https://results.pre-commit.ci/latest/github/rhizomatics/updates2mqtt/main)
7
8
  [![Publish Python 🐍 distribution 📦 to PyPI and TestPyPI](https://github.com/rhizomatics/updates2mqtt/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/rhizomatics/updates2mqtt/actions/workflows/pypi-publish.yml)
@@ -72,8 +73,10 @@ interface, and the package can be remotely fetched and the component restarted.
72
73
 
73
74
  ## Related Projects
74
75
 
76
+ Other apps useful for self-hosting with the help of MQTT:
77
+
75
78
  - [psmqtt](https://github.com/eschava/psmqtt) - Report system health and metrics via MQTT
76
- -
79
+
77
80
  ## Development
78
81
 
79
82
  Access to Docker APIs uses the Python [docker-py](https://docker-py.readthedocs.io/en/stable/) SDK for Python. [Eclipse Paho](https://eclipse.dev/paho/files/paho.mqtt.python/html/client.html) is used for MQTT access, and [OmegaConf](https://omegaconf.readthedocs.io) for configuration.
@@ -7,7 +7,7 @@ authors = [
7
7
  ]
8
8
 
9
9
  requires-python = ">=3.13"
10
- version = "1.3.6"
10
+ version = "1.3.7"
11
11
  license="Apache-2.0"
12
12
  keywords=["mqtt", "docker", "updates", "automation","home-assistant","homeassistant","selfhosting"]
13
13
 
@@ -47,14 +47,14 @@ managed = true
47
47
  [dependency-groups]
48
48
  dev = [
49
49
  "ruff>=0.13.0",
50
- "pre-commit>=3.7.0",
50
+ "pre-commit>=4.4.0",
51
51
  "pytest>=8.4.2",
52
52
  "pytest-mock>=3.15.0",
53
53
  "pytest-asyncio>=1.2.0",
54
54
  "pytest-cov>=7.0.0",
55
55
  "pytest-httpx",
56
56
  "pytest-mqtt>=0.6.0",
57
- "pytest-subprocess>=1.5.0",
57
+ "pytest-subprocess>=1.5.3",
58
58
  "coverage",
59
59
  ]
60
60
  mkdocs=[
@@ -171,6 +171,8 @@ directory="htmlcov"
171
171
  mypy_path=["./src","./tests"]
172
172
 
173
173
  [project.urls]
174
+ Homepage="https://updates2mqtt.rhizomatics.org.uk"
174
175
  Repository="https://github.com/rhizomatics/updates2mqtt"
175
176
  Documentation="https://updates2mqtt.rhizomatics.org.uk"
176
- Issues="https://github.com/rhizomatics/updates2mqtt/issues"
177
+ Issues="https://github.com/rhizomatics/updates2mqtt/issues"
178
+ Changelog="https://github.com/rhizomatics/updates2mqtt/blob/main/CHANGELOG.md"
@@ -113,7 +113,6 @@ def load_package_info(pkginfo_file_path: Path) -> UpdateInfoConfig:
113
113
 
114
114
  def load_app_config(conf_file_path: Path, return_invalid: bool = False) -> Config | None:
115
115
  base_cfg: DictConfig = OmegaConf.structured(Config)
116
- is_new: bool = False
117
116
  if conf_file_path.exists():
118
117
  cfg: DictConfig = typing.cast("DictConfig", OmegaConf.merge(base_cfg, OmegaConf.load(conf_file_path)))
119
118
  else:
@@ -126,8 +125,6 @@ def load_app_config(conf_file_path: Path, return_invalid: bool = False) -> Confi
126
125
  try:
127
126
  conf_file_path.write_text(OmegaConf.to_yaml(base_cfg))
128
127
  log.info(f"Auto-generated a new config file at {conf_file_path}")
129
- log.info("The config has place holders for MQTT user and password")
130
- is_new = True
131
128
  except Exception:
132
129
  log.exception("Unable to write config file", path=conf_file_path)
133
130
  cfg = base_cfg
@@ -137,10 +134,10 @@ def load_app_config(conf_file_path: Path, return_invalid: bool = False) -> Confi
137
134
  OmegaConf.to_container(cfg, throw_on_missing=True)
138
135
  OmegaConf.set_readonly(cfg, True)
139
136
  config: Config = typing.cast("Config", cfg)
140
- if config.mqtt.user == MISSING or config.mqtt.password == MISSING:
141
- if not is_new:
142
- log.warning("MQTT connection configuration has place holders")
143
- if not is_new and not return_invalid:
137
+
138
+ if config.mqtt.user in ("", MISSING) or config.mqtt.password in ("", MISSING):
139
+ log.info("The config has place holders for MQTT user and/or password")
140
+ if not return_invalid:
144
141
  return None
145
142
  return config
146
143
  except (MissingMandatoryValue, ValidationError) as e:
@@ -988,7 +988,7 @@ wheels = [
988
988
 
989
989
  [[package]]
990
990
  name = "updates2mqtt"
991
- version = "1.3.6"
991
+ version = "1.3.7"
992
992
  source = { editable = "." }
993
993
  dependencies = [
994
994
  { name = "docker" },
@@ -1035,14 +1035,14 @@ requires-dist = [
1035
1035
  [package.metadata.requires-dev]
1036
1036
  dev = [
1037
1037
  { name = "coverage" },
1038
- { name = "pre-commit", specifier = ">=3.7.0" },
1038
+ { name = "pre-commit", specifier = ">=4.4.0" },
1039
1039
  { name = "pytest", specifier = ">=8.4.2" },
1040
1040
  { name = "pytest-asyncio", specifier = ">=1.2.0" },
1041
1041
  { name = "pytest-cov", specifier = ">=7.0.0" },
1042
1042
  { name = "pytest-httpx" },
1043
1043
  { name = "pytest-mock", specifier = ">=3.15.0" },
1044
1044
  { name = "pytest-mqtt", specifier = ">=0.6.0" },
1045
- { name = "pytest-subprocess", specifier = ">=1.5.0" },
1045
+ { name = "pytest-subprocess", specifier = ">=1.5.3" },
1046
1046
  { name = "ruff", specifier = ">=0.13.0" },
1047
1047
  ]
1048
1048
  mkdocs = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes