pyFroniusReg 0.2.2__tar.gz → 0.2.4__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 (37) hide show
  1. pyfroniusreg-0.2.4/.forgejo/workflows/take1.yaml +19 -0
  2. pyfroniusreg-0.2.4/DEVNOTES.md +46 -0
  3. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/PKG-INFO +5 -3
  4. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/README.md +2 -1
  5. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/examples/check_peak.py +5 -2
  6. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/noxfile.py +2 -1
  7. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/pyproject.toml +4 -3
  8. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/froniusreg.py +3 -3
  9. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/tests/test_datatype.py +0 -0
  10. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/tests/test_regs.py +16 -6
  11. pyfroniusreg-0.2.4/uv.lock +386 -0
  12. pyfroniusreg-0.2.2/uv.lock +0 -23
  13. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/.gitignore +0 -0
  14. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/DesignNotes.md +0 -0
  15. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/LICENSE +0 -0
  16. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/examples/force_charge.py +0 -0
  17. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/examples/read_regs.py +0 -0
  18. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/examples/read_regs_storage.py +0 -0
  19. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/examples/reset_charge.py +0 -0
  20. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/__init__.py +0 -0
  21. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfronius/gen24.py +0 -0
  22. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/gen24_primo_symo_inverter_register_map_float.py +0 -0
  23. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/gen24_primo_symo_inverter_register_map_float_storage.py +0 -0
  24. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/gen24_primo_symo_inverter_register_map_int_sf.py +0 -0
  25. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/gen24_primo_symo_inverter_register_map_int_sf_storage.py +0 -0
  26. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/gen24_registers_orig.py +0 -0
  27. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/smart_meter_register_map_float.py +0 -0
  28. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/smart_meter_register_map_int_sf.py +0 -0
  29. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/tauro_eco_inverter_register_map_float.py +0 -0
  30. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/tauro_eco_inverter_register_map_int_sf.py +0 -0
  31. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/tauro_inverter_register_map_float.py +0 -0
  32. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/tauro_inverter_register_map_int_sf.py +0 -0
  33. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/verto_inverter_register_map_3mppt_float.py +0 -0
  34. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/verto_inverter_register_map_3mppt_int_sf.py +0 -0
  35. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/verto_inverter_register_map_4mppt_float.py +0 -0
  36. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/src/pyfroniusreg/verto_inverter_register_map_4mppt_int_sf.py +0 -0
  37. {pyfroniusreg-0.2.2 → pyfroniusreg-0.2.4}/tools/create_from_spreadsheet.py +0 -0
@@ -0,0 +1,19 @@
1
+ on:
2
+ push:
3
+ branches:
4
+ main
5
+ pull_request:
6
+ jobs:
7
+ test:
8
+ runs-on: docker
9
+ steps:
10
+ - name: checkout-code
11
+ uses: actions/checkout@v6
12
+ - name: install environment
13
+ run: apt update && apt install -y nox
14
+ - name: Run Linter
15
+ run: |
16
+ nox -s lint
17
+ - name: Run Tests
18
+ run: |
19
+ nox -s tests
@@ -0,0 +1,46 @@
1
+ # Setting up the development environment
2
+
3
+ (Because I keep forgetting how to do this!)
4
+
5
+ have the 'uv' tool available from your operating system somewhere, then run:
6
+
7
+ ```
8
+ uv run
9
+ ```
10
+
11
+ Now the virtual environment in '$PWD/.venv' should be accessible
12
+
13
+ ```
14
+ . .venv/bin/activate
15
+ ```
16
+
17
+ Next get nox installed:
18
+ ```
19
+ uv add nox
20
+ ```
21
+
22
+ And now you can run nox sessions:
23
+
24
+ ```
25
+ nox -s lint
26
+ nox -s tests
27
+ ```
28
+
29
+ or just
30
+ ```
31
+ nox
32
+ ```
33
+
34
+ to do a full lint + build + test run.
35
+
36
+
37
+ # Doing a release
38
+
39
+ ```
40
+ git tag -a 'v9.9.9'
41
+ git --tags push
42
+ ```
43
+
44
+ Create a new release in ForgeJo.
45
+
46
+ Maybe investigate bumpver and CI releases.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: pyFroniusReg
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: A library to make interacting with Fronius inverters and storage systems simpler
5
5
  Project-URL: Homepage, https://git.pwarren.id.au/pwarren/PyFroniusReg/
6
6
  Project-URL: Issues, https://git.pwarren.id.au/pwarren/PyFroniusReg/issues
@@ -11,6 +11,7 @@ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or l
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Requires-Python: >=3.9
14
+ Requires-Dist: nox>=2026.4.10
14
15
  Requires-Dist: pymodbus==3.7.*
15
16
  Description-Content-Type: text/markdown
16
17
 
@@ -20,7 +21,8 @@ The aim of this python library is to provide some nice to use abstractions to in
20
21
 
21
22
  # Installation
22
23
 
23
- Currently you can grab the .whl from the releases page. I'll figure out PyPI addition eventually
24
+ Currently you can grab the .whl from the releases page. And now I've added the library to PyPi, so you should be able to do:
25
+ ``` pip install pyFroniusReg```
24
26
 
25
27
  # Examples
26
28
 
@@ -4,7 +4,8 @@ The aim of this python library is to provide some nice to use abstractions to in
4
4
 
5
5
  # Installation
6
6
 
7
- Currently you can grab the .whl from the releases page. I'll figure out PyPI addition eventually
7
+ Currently you can grab the .whl from the releases page. And now I've added the library to PyPi, so you should be able to do:
8
+ ``` pip install pyFroniusReg```
8
9
 
9
10
  # Examples
10
11
 
@@ -44,16 +44,19 @@ print(" Timer: %d" % timer)
44
44
  wh_remain = (soc_percent / 100.0) * total_wh
45
45
  h_estim = wh_remain - (avg_discharge - avg_charge)
46
46
  h_estpct = (h_estim / total_wh) * 100
47
- two_h_estpct = h_estpct * 2.0
47
+ two_h_est = wh_remain - (2 * (avg_charge - avg_discharge))
48
+ two_h_estpct = (two_h_est / total_wh) * 100
48
49
 
49
50
  print("WH remain: %.2f" % wh_remain)
50
51
  print("1h est WH: %.2f" % h_estim)
52
+ print("1h est %%: %.2f" % h_estpct)
51
53
  print("2hr est %%: %.2f" % two_h_estpct)
52
54
 
53
55
 
54
56
  time_check = (current_time.hour == 5 or current_time.hour == 14)
55
- estimate_check = (two_h_estpct < 22.0)
57
+ estimate_check = (two_h_estpct < 50.0)
56
58
 
59
+ #if False:
57
60
  if (time_check and estimate_check):
58
61
  print("Full BEEEEEAAAAANS!")
59
62
  # Set settings timer to 115 minutes
@@ -1,6 +1,7 @@
1
- import nox
2
1
  import os
3
2
 
3
+ import nox
4
+
4
5
 
5
6
  @nox.session
6
7
  def lint(session):
@@ -7,7 +7,7 @@ packages = ["src/pyfroniusreg"]
7
7
 
8
8
  [project]
9
9
  name = "pyFroniusReg"
10
- version = "0.2.2"
10
+ version = "0.2.4"
11
11
  authors = [
12
12
  { name = "Paul Warren", email="pwarren@pwarren.id.au" }
13
13
  ]
@@ -22,8 +22,9 @@ classifiers = [
22
22
  ]
23
23
 
24
24
  dependencies = [
25
- "pymodbus==3.7.*"
26
- ]
25
+ "nox>=2026.4.10",
26
+ "pymodbus==3.7.*",
27
+ ]
27
28
 
28
29
  [project.urls]
29
30
  Homepage = "https://git.pwarren.id.au/pwarren/PyFroniusReg/"
@@ -3,9 +3,9 @@
3
3
  # Copyright 2024, Paul Warren <pwarren@pwarren.id.au>
4
4
  # Licensed under AGPLv3, See LICENSE.md for terms
5
5
 
6
- from pymodbus.constants import Endian
7
- from pymodbus.payload import BinaryPayloadDecoder, BinaryPayloadBuilder
8
6
  from pymodbus.client.base import ModbusBaseClient
7
+ from pymodbus.constants import Endian
8
+ from pymodbus.payload import BinaryPayloadBuilder, BinaryPayloadDecoder
9
9
 
10
10
 
11
11
  class DataType:
@@ -123,7 +123,7 @@ class FroniusReg:
123
123
  )
124
124
  if modbus_value.isError():
125
125
  raise RegisterReadError(
126
- "Unable to read from Fronius Register: %d, %s\n%s"
126
+ f"Unable to read from Fronius Register: {self.address}, {self.description}\n{modbus_value}" # noqa E501
127
127
  % (self.address, self.description, modbus_value)
128
128
  )
129
129
  if modbus_value is None:
@@ -1,14 +1,21 @@
1
1
  #!/usr/bin/env python3
2
2
  import unittest
3
3
 
4
+ from pymodbus.client.tcp import ModbusTcpClient
5
+
4
6
  from pyfroniusreg import gen24_primo_symo_inverter_register_map_int_sf_storage as gen24_registers
5
7
  from pyfroniusreg import smart_meter_register_map_float as smart_meter
6
8
 
7
- from pymodbus.client.tcp import ModbusTcpClient
8
-
9
9
  fronius1 = ModbusTcpClient("172.19.107.211", port=502, timeout=10)
10
10
  fronius1.connect()
11
11
 
12
+ """
13
+ I'm not convinced of the utility of these tests. They're tied to my specific system,
14
+ and so have a reliance on being able actually talk to a specific fronuis inverter
15
+ on my network.
16
+
17
+
18
+ """
12
19
 
13
20
  class TestReadRegs(unittest.TestCase):
14
21
  def test_read_scaled(self):
@@ -23,12 +30,14 @@ class TestReadRegs(unittest.TestCase):
23
30
  Mn = gen24_registers.Mn.get(fronius1)
24
31
  assert Mn[0:7] == "Fronius"
25
32
 
26
- def test_read_string8(self):
27
- # this isn't a good test, this value changes regularly
28
- Vr = gen24_registers.Vr.get(fronius1)
29
- assert Vr == "1.36.6-1"
33
+ # def test_read_string8(self):
34
+ # # this isn't a good test, this value changes regularly
35
+ # Vr = gen24_registers.Vr.get(fronius1)
36
+ # assert Vr == "1.38.6-1"
30
37
 
31
38
  def test_read_model(self):
39
+ # Also not a great test, but does test reading strings
40
+ # and doesn't change as often
32
41
  Md = gen24_registers.Md.get(fronius1)
33
42
  assert Md == "Primo GEN24 5.0\x00"
34
43
 
@@ -36,6 +45,7 @@ class TestReadRegs(unittest.TestCase):
36
45
  # This doesn't seem to return anything useful
37
46
  # SN = gen24_registers.SN.get(fronius1)
38
47
  # assert SN == "12345567"
48
+
39
49
  class testWriteRegs(unittest.TestCase):
40
50
  def test_write_direct(self):
41
51
  current = gen24_registers.OutWRte.get(fronius1)
@@ -0,0 +1,386 @@
1
+ version = 1
2
+ revision = 3
3
+ requires-python = ">=3.9"
4
+ resolution-markers = [
5
+ "python_full_version >= '3.15'",
6
+ "python_full_version >= '3.11' and python_full_version < '3.15'",
7
+ "python_full_version == '3.10.*'",
8
+ "python_full_version < '3.10'",
9
+ ]
10
+
11
+ [[package]]
12
+ name = "argcomplete"
13
+ version = "3.7.0"
14
+ source = { registry = "https://pypi.org/simple" }
15
+ resolution-markers = [
16
+ "python_full_version < '3.10'",
17
+ ]
18
+ sdist = { url = "https://files.pythonhosted.org/packages/95/c0/c8e94135e66fabf89a120d9b4b123fe6993506beca6c1938a74c24cfa5fd/argcomplete-3.7.0.tar.gz", hash = "sha256:afde224f753f874807b1dc1414e883ab8fe0cda9c04807b6047dcb8e1ac23913", size = 73284, upload-time = "2026-06-30T22:28:22.249Z" }
19
+ wheels = [
20
+ { url = "https://files.pythonhosted.org/packages/12/f6/5b8ec087cd9cfa9449491ec83f76fb6b7006b4dff57d2ba8aaab330fe8e4/argcomplete-3.7.0-py3-none-any.whl", hash = "sha256:d8f0f22d2a8a7caa383be1e22b6caf1ecaf0ebd10d8f83cc125e36540c95830c", size = 42575, upload-time = "2026-06-30T22:28:20.547Z" },
21
+ ]
22
+
23
+ [[package]]
24
+ name = "argcomplete"
25
+ version = "3.7.2"
26
+ source = { registry = "https://pypi.org/simple" }
27
+ resolution-markers = [
28
+ "python_full_version >= '3.15'",
29
+ "python_full_version >= '3.11' and python_full_version < '3.15'",
30
+ "python_full_version == '3.10.*'",
31
+ ]
32
+ sdist = { url = "https://files.pythonhosted.org/packages/87/6f/5a73f04007ca950701765949209f068da628bd11f9c2da287278ce91e0ee/argcomplete-3.7.2.tar.gz", hash = "sha256:aad8b69a0b9969edb62db0d1752354c0d50717b10e0cbb00e2a958381b9fc6b9", size = 74473, upload-time = "2026-08-06T04:53:21.662Z" }
33
+ wheels = [
34
+ { url = "https://files.pythonhosted.org/packages/46/bd/551ee6af426af84ca33e02622be722925c196608e9127d731ef17c47f06e/argcomplete-3.7.2-py3-none-any.whl", hash = "sha256:6029205678bdd9c1c728a155f5f9ecf5812393f969eef58807641a2bc2aa5b19", size = 43294, upload-time = "2026-08-06T04:53:20.246Z" },
35
+ ]
36
+
37
+ [[package]]
38
+ name = "attrs"
39
+ version = "26.1.0"
40
+ source = { registry = "https://pypi.org/simple" }
41
+ sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" }
42
+ wheels = [
43
+ { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" },
44
+ ]
45
+
46
+ [[package]]
47
+ name = "colorama"
48
+ version = "0.4.6"
49
+ source = { registry = "https://pypi.org/simple" }
50
+ sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
51
+ wheels = [
52
+ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
53
+ ]
54
+
55
+ [[package]]
56
+ name = "colorlog"
57
+ version = "6.12.0"
58
+ source = { registry = "https://pypi.org/simple" }
59
+ dependencies = [
60
+ { name = "colorama", marker = "sys_platform == 'win32'" },
61
+ ]
62
+ sdist = { url = "https://files.pythonhosted.org/packages/8c/55/ba79756cb90c8d69d599d57785398ac87bba7b19c80e87f4e8a562197c93/colorlog-6.12.0.tar.gz", hash = "sha256:2a7924c1dadf18b22a0eb8b06d1c7b01d5341707ec1641eb6fcc4fde0c3e8e5f", size = 18151, upload-time = "2026-07-23T13:40:40.71Z" }
63
+ wheels = [
64
+ { url = "https://files.pythonhosted.org/packages/d4/19/0b6647bf5e331521e55d2b63bfbdc210bd9cd605189273f03614a05f702d/colorlog-6.12.0-py3-none-any.whl", hash = "sha256:30d392604e9110045a2c2aeefc27d7a017abbab63f3a8aee594eac0801df784e", size = 12239, upload-time = "2026-07-23T13:40:39.562Z" },
65
+ ]
66
+
67
+ [[package]]
68
+ name = "dependency-groups"
69
+ version = "1.3.2"
70
+ source = { registry = "https://pypi.org/simple" }
71
+ dependencies = [
72
+ { name = "packaging" },
73
+ { name = "tomli", marker = "python_full_version < '3.11'" },
74
+ ]
75
+ sdist = { url = "https://files.pythonhosted.org/packages/b5/16/65e61d8e837e0d70a99a0d4dd76e2af53357c3a03ed1db8ad9b5786d7f25/dependency_groups-1.3.2.tar.gz", hash = "sha256:c81831f43828dbc3987ee247eb198241a0152b8e7ceab10977cc3808eb388ac7", size = 13309, upload-time = "2026-08-22T02:43:30.137Z" }
76
+ wheels = [
77
+ { url = "https://files.pythonhosted.org/packages/a1/e4/da5f2f176050efcfb9222a76a3e81c41f69f775be8e563b76ca4292a134f/dependency_groups-1.3.2-py3-none-any.whl", hash = "sha256:8c337f7b92445823b0d0ea507f611390c58dcd2112be00aebcd738a2ca7a1c64", size = 9802, upload-time = "2026-08-22T02:43:28.853Z" },
78
+ ]
79
+
80
+ [[package]]
81
+ name = "distlib"
82
+ version = "0.4.3"
83
+ source = { registry = "https://pypi.org/simple" }
84
+ sdist = { url = "https://files.pythonhosted.org/packages/c9/02/bd72be9134d25ed783ecbbc38a539ffaefbf90c78418c7fb7229600dbac7/distlib-0.4.3.tar.gz", hash = "sha256:f152097224a0ae24be5a0f6bae1b9359af82133bce63f98a95f86cae1aede9ed", size = 615141, upload-time = "2026-06-12T08:04:52.847Z" }
85
+ wheels = [
86
+ { url = "https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl", hash = "sha256:4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b", size = 470628, upload-time = "2026-06-12T08:04:50.506Z" },
87
+ ]
88
+
89
+ [[package]]
90
+ name = "filelock"
91
+ version = "3.19.1"
92
+ source = { registry = "https://pypi.org/simple" }
93
+ resolution-markers = [
94
+ "python_full_version < '3.10'",
95
+ ]
96
+ sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687, upload-time = "2025-08-14T16:56:03.016Z" }
97
+ wheels = [
98
+ { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988, upload-time = "2025-08-14T16:56:01.633Z" },
99
+ ]
100
+
101
+ [[package]]
102
+ name = "filelock"
103
+ version = "4.1.0"
104
+ source = { registry = "https://pypi.org/simple" }
105
+ resolution-markers = [
106
+ "python_full_version == '3.10.*'",
107
+ ]
108
+ sdist = { url = "https://files.pythonhosted.org/packages/4c/58/6fd434bec86eff7c38a3168454cb132b762b2bea9b3ac094101a2f7bc32a/filelock-4.1.0.tar.gz", hash = "sha256:ad7f724afef953e731b1cc39bcd3a09166d72ed7fcdf29e6e88b1c3235c6715d", size = 561277, upload-time = "2026-10-09T19:57:20.34Z" }
109
+ wheels = [
110
+ { url = "https://files.pythonhosted.org/packages/ee/86/032133892a5de43b5a98200b01aadcad68cc255e274a762f08b8a76d2912/filelock-4.1.0-py3-none-any.whl", hash = "sha256:2ce9818e3e2d8f284c1a964414447ef148d42a5fd5e2a477a7118e574b293ec1", size = 133003, upload-time = "2026-10-09T19:57:18.716Z" },
111
+ ]
112
+
113
+ [[package]]
114
+ name = "filelock"
115
+ version = "4.2.0"
116
+ source = { registry = "https://pypi.org/simple" }
117
+ resolution-markers = [
118
+ "python_full_version >= '3.15'",
119
+ "python_full_version >= '3.11' and python_full_version < '3.15'",
120
+ ]
121
+ sdist = { url = "https://files.pythonhosted.org/packages/f4/a9/1af41b37c3279712b22cdc63aac78a52432202b6fe1f9666a2a3d2831fb4/filelock-4.2.0.tar.gz", hash = "sha256:7a60906c75227cf04d0c273afadc8219400f11aeb13cc69591d4f6cdc6c8036e", size = 569667, upload-time = "2026-10-14T20:57:13.11Z" }
122
+ wheels = [
123
+ { url = "https://files.pythonhosted.org/packages/8e/a3/9bc26acff301fe1aaea1cc3d82a1d57e0a34df3e1cadbfa91ac2dbcdde5c/filelock-4.2.0-py3-none-any.whl", hash = "sha256:2ff5690882e8cdb00ef31fb3d01a3094c29f30985426c59495afb1733f3b7238", size = 135032, upload-time = "2026-10-14T20:57:11.349Z" },
124
+ ]
125
+
126
+ [[package]]
127
+ name = "humanize"
128
+ version = "4.13.0"
129
+ source = { registry = "https://pypi.org/simple" }
130
+ resolution-markers = [
131
+ "python_full_version < '3.10'",
132
+ ]
133
+ sdist = { url = "https://files.pythonhosted.org/packages/98/1d/3062fcc89ee05a715c0b9bfe6490c00c576314f27ffee3a704122c6fd259/humanize-4.13.0.tar.gz", hash = "sha256:78f79e68f76f0b04d711c4e55d32bebef5be387148862cb1ef83d2b58e7935a0", size = 81884, upload-time = "2025-08-25T09:39:20.04Z" }
134
+ wheels = [
135
+ { url = "https://files.pythonhosted.org/packages/1e/c7/316e7ca04d26695ef0635dc81683d628350810eb8e9b2299fc08ba49f366/humanize-4.13.0-py3-none-any.whl", hash = "sha256:b810820b31891813b1673e8fec7f1ed3312061eab2f26e3fa192c393d11ed25f", size = 128869, upload-time = "2025-08-25T09:39:18.54Z" },
136
+ ]
137
+
138
+ [[package]]
139
+ name = "humanize"
140
+ version = "4.16.0"
141
+ source = { registry = "https://pypi.org/simple" }
142
+ resolution-markers = [
143
+ "python_full_version >= '3.15'",
144
+ "python_full_version >= '3.11' and python_full_version < '3.15'",
145
+ "python_full_version == '3.10.*'",
146
+ ]
147
+ sdist = { url = "https://files.pythonhosted.org/packages/0a/ea/13a1ef3c12d12662905801495283530251918b70d62d368f1d2e0272c70d/humanize-4.16.0.tar.gz", hash = "sha256:7dc2244a2f84a4bfb1d36c37bac80cd78e35cdc5c119206d87b018e1445f3a3f", size = 89515, upload-time = "2026-06-30T16:17:29.859Z" }
148
+ wheels = [
149
+ { url = "https://files.pythonhosted.org/packages/b0/aa/0b7365d30fed43e7a3449aba1fe20a0a7174d9cf13e282af4e69ac825441/humanize-4.16.0-py3-none-any.whl", hash = "sha256:353eb2f34c09d098b2880eee8bef21832eae6d174f48c5762fff7e5fcb74d01d", size = 137209, upload-time = "2026-06-30T16:17:28.36Z" },
150
+ ]
151
+
152
+ [[package]]
153
+ name = "nox"
154
+ version = "2026.4.10"
155
+ source = { registry = "https://pypi.org/simple" }
156
+ resolution-markers = [
157
+ "python_full_version < '3.10'",
158
+ ]
159
+ dependencies = [
160
+ { name = "argcomplete", version = "3.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
161
+ { name = "attrs", marker = "python_full_version < '3.10'" },
162
+ { name = "colorlog", marker = "python_full_version < '3.10'" },
163
+ { name = "dependency-groups", marker = "python_full_version < '3.10'" },
164
+ { name = "humanize", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
165
+ { name = "packaging", marker = "python_full_version < '3.10'" },
166
+ { name = "tomli", marker = "python_full_version < '3.10'" },
167
+ { name = "virtualenv", marker = "python_full_version < '3.10'" },
168
+ ]
169
+ sdist = { url = "https://files.pythonhosted.org/packages/e7/6b/e672c862a43cfca704d32359221fa3780226daa1e5db5dfc401bcc8be9c9/nox-2026.4.10.tar.gz", hash = "sha256:2d0af5374f3f37a295428c927d1b04a8182aa01762897d172446dda2f1ce9692", size = 4034839, upload-time = "2026-04-10T17:42:42.209Z" }
170
+ wheels = [
171
+ { url = "https://files.pythonhosted.org/packages/7f/95/4df134a100b5a9a12378d5301b934366686ef6fbdaffcd21211d5654970e/nox-2026.4.10-py3-none-any.whl", hash = "sha256:082c117627590d9b90aa21f86df89b310b07c5842539524203bcb3c719f116c1", size = 75536, upload-time = "2026-04-10T17:42:40.664Z" },
172
+ ]
173
+
174
+ [[package]]
175
+ name = "nox"
176
+ version = "2026.8.17"
177
+ source = { registry = "https://pypi.org/simple" }
178
+ resolution-markers = [
179
+ "python_full_version >= '3.15'",
180
+ "python_full_version >= '3.11' and python_full_version < '3.15'",
181
+ "python_full_version == '3.10.*'",
182
+ ]
183
+ dependencies = [
184
+ { name = "argcomplete", version = "3.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
185
+ { name = "attrs", marker = "python_full_version >= '3.10'" },
186
+ { name = "colorlog", marker = "python_full_version >= '3.10'" },
187
+ { name = "dependency-groups", marker = "python_full_version >= '3.10'" },
188
+ { name = "humanize", version = "4.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
189
+ { name = "packaging", marker = "python_full_version >= '3.10'" },
190
+ { name = "platformdirs", version = "4.12.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" },
191
+ { name = "platformdirs", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
192
+ { name = "python-discovery", marker = "python_full_version >= '3.10'" },
193
+ { name = "tomli", marker = "python_full_version == '3.10.*'" },
194
+ { name = "virtualenv", marker = "python_full_version >= '3.10'" },
195
+ ]
196
+ sdist = { url = "https://files.pythonhosted.org/packages/be/65/4cef8ae8f6dbcb5753b202e46791277f1ea0b4a0650d1a6cb940c468b143/nox-2026.8.17.tar.gz", hash = "sha256:8d9c69c9b996a59db1eb2c6968deaebc2edbc55317d205981bbc4a37351d3f2e", size = 4076047, upload-time = "2026-08-18T03:09:57.078Z" }
197
+ wheels = [
198
+ { url = "https://files.pythonhosted.org/packages/81/71/e0829a0500646070e98bc4442afa2917bfe5b6f1289511d8de853ae86497/nox-2026.8.17-py3-none-any.whl", hash = "sha256:a96a5286007cbc0d1eb1930e85738668f6722adba1ffaa48287296a96963086e", size = 94839, upload-time = "2026-08-18T03:09:55.684Z" },
199
+ ]
200
+
201
+ [[package]]
202
+ name = "packaging"
203
+ version = "26.3"
204
+ source = { registry = "https://pypi.org/simple" }
205
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" }
206
+ wheels = [
207
+ { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" },
208
+ ]
209
+
210
+ [[package]]
211
+ name = "platformdirs"
212
+ version = "4.4.0"
213
+ source = { registry = "https://pypi.org/simple" }
214
+ resolution-markers = [
215
+ "python_full_version < '3.10'",
216
+ ]
217
+ sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" }
218
+ wheels = [
219
+ { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" },
220
+ ]
221
+
222
+ [[package]]
223
+ name = "platformdirs"
224
+ version = "4.12.4"
225
+ source = { registry = "https://pypi.org/simple" }
226
+ resolution-markers = [
227
+ "python_full_version == '3.10.*'",
228
+ ]
229
+ sdist = { url = "https://files.pythonhosted.org/packages/90/a1/d5f9002a70298c64a789779077d8dd90c10aa1f47fe40c86802df874f2a6/platformdirs-4.12.4.tar.gz", hash = "sha256:63743c02414e755de4e31b8f68125c1407495b86c5a006e203c01ff8b9924250", size = 60010, upload-time = "2026-10-07T23:30:32.426Z" }
230
+ wheels = [
231
+ { url = "https://files.pythonhosted.org/packages/f4/ba/223e00b885e960edd5d4b4d178c88acce019bd5b83786093681b8c393492/platformdirs-4.12.4-py3-none-any.whl", hash = "sha256:78bfb9db2a8471ed7eebe3c3c932da413911042994e699b384fbb4493fa872d7", size = 32596, upload-time = "2026-10-07T23:30:30.825Z" },
232
+ ]
233
+
234
+ [[package]]
235
+ name = "platformdirs"
236
+ version = "4.13.1"
237
+ source = { registry = "https://pypi.org/simple" }
238
+ resolution-markers = [
239
+ "python_full_version >= '3.15'",
240
+ "python_full_version >= '3.11' and python_full_version < '3.15'",
241
+ ]
242
+ sdist = { url = "https://files.pythonhosted.org/packages/16/35/146546aa5b9286a83248d29c51781476bbb4b0a608523361120059e0f7ed/platformdirs-4.13.1.tar.gz", hash = "sha256:ee77cf2d36d5a515b2acf68ede6434cf3a8fc70b822bb6b3264d01b96c69a8e0", size = 61458, upload-time = "2026-10-15T21:56:08.441Z" }
243
+ wheels = [
244
+ { url = "https://files.pythonhosted.org/packages/aa/0f/ac79a4e8394193bb228abaaf1c520f629b6ada7fcb75e58cdc8c6acce321/platformdirs-4.13.1-py3-none-any.whl", hash = "sha256:4902b4ad355cb0b202c746b29580ab67c5c2d918e30e3d006353465b82ec3ecc", size = 32737, upload-time = "2026-10-15T21:56:07.059Z" },
245
+ ]
246
+
247
+ [[package]]
248
+ name = "pyfroniusreg"
249
+ version = "0.2.3"
250
+ source = { editable = "." }
251
+ dependencies = [
252
+ { name = "nox", version = "2026.4.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
253
+ { name = "nox", version = "2026.8.17", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
254
+ { name = "pymodbus" },
255
+ ]
256
+
257
+ [package.metadata]
258
+ requires-dist = [
259
+ { name = "nox", specifier = ">=2026.4.10" },
260
+ { name = "pymodbus", specifier = "==3.7.*" },
261
+ ]
262
+
263
+ [[package]]
264
+ name = "pymodbus"
265
+ version = "3.7.4"
266
+ source = { registry = "https://pypi.org/simple" }
267
+ sdist = { url = "https://files.pythonhosted.org/packages/0b/bc/f98789706351e778676a3e84ed6203160c4f581092e298eb075bc9e08230/pymodbus-3.7.4.tar.gz", hash = "sha256:573c370aea04523403eea1e159616a583cd7b93cfc5c81b07340d3cccd52c99f", size = 170675, upload-time = "2024-10-22T10:27:16.338Z" }
268
+ wheels = [
269
+ { url = "https://files.pythonhosted.org/packages/07/0a/b57434ae7ecc83a854f0431a380964a575a6474197211d2bae3fa0529484/pymodbus-3.7.4-py3-none-any.whl", hash = "sha256:dfb45ef9a2c1663875ad32378f780b5824628cd3c0a486851e64b8a3341a3e82", size = 173104, upload-time = "2024-10-22T10:27:14.789Z" },
270
+ ]
271
+
272
+ [[package]]
273
+ name = "python-discovery"
274
+ version = "1.6.2"
275
+ source = { registry = "https://pypi.org/simple" }
276
+ dependencies = [
277
+ { name = "filelock", version = "3.19.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
278
+ { name = "filelock", version = "4.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" },
279
+ { name = "filelock", version = "4.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
280
+ ]
281
+ sdist = { url = "https://files.pythonhosted.org/packages/b0/73/54993df8fc57e906dc9b7e01d1d9b0b2d3eb0ce3190639e33dccb12853f7/python_discovery-1.6.2.tar.gz", hash = "sha256:cd1738ca1d37c86ef9d0b654dd46fcee1e41c97c6add12575e8501ced39afdb4", size = 86921, upload-time = "2026-10-10T01:24:27.912Z" }
282
+ wheels = [
283
+ { url = "https://files.pythonhosted.org/packages/61/3b/50ed32583bfffa737df67d33b9c15d7b25df232c55ab606d059f610ef6ca/python_discovery-1.6.2-py3-none-any.whl", hash = "sha256:f0c697f95a3aaec4174a6e5e58f5885e25768684bafc76f1afde384709ebdcf2", size = 38912, upload-time = "2026-10-10T01:24:26.721Z" },
284
+ ]
285
+
286
+ [[package]]
287
+ name = "tomli"
288
+ version = "2.5.0"
289
+ source = { registry = "https://pypi.org/simple" }
290
+ sdist = { url = "https://files.pythonhosted.org/packages/b0/78/9ad63712633ed3ab5cc1a648d863d7e7da371e9425e209555a0fe711b695/tomli-2.5.0.tar.gz", hash = "sha256:264507556cd8b8c8e7c6ee037cdf443a463f03f4c958e57195e3d369711b8ff6", size = 17662, upload-time = "2026-10-07T12:23:37.892Z" }
291
+ wheels = [
292
+ { url = "https://files.pythonhosted.org/packages/22/a6/ab99b60ee52acd949684febabc3005d0045d0f66bebd9cdebd67372d26dd/tomli-2.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c4dc1c1781f2f716de763d1e9a7b34c6a894e167e291c7c5d16c72f7a9538545", size = 163901, upload-time = "2026-10-07T12:22:15.601Z" },
293
+ { url = "https://files.pythonhosted.org/packages/bc/00/ee01b7ed4579180fff07142d290257f25ba786f23f3ec6005f620933c2f5/tomli-2.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eff8babca5a7999bc137acbc7482a8b7e17ffca5075ab41f5d770ab408c7bfef", size = 163756, upload-time = "2026-10-07T12:22:16.957Z" },
294
+ { url = "https://files.pythonhosted.org/packages/72/c2/4efebf65372f6583185f79799312109dddb61102d47e5c33dcfd1a297aca/tomli-2.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:86665cee9c4835b7a7f1e8ec2c719b5258d4dc782887aded5a8ae7352a96843b", size = 268038, upload-time = "2026-10-07T12:22:18.135Z" },
295
+ { url = "https://files.pythonhosted.org/packages/53/07/5850468e925d898abb36038666f9c333a94d2a223e802a8ba5b6d319d23f/tomli-2.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e369fd63331746182360977b1892bfc215476a30d61612d732425311639f56", size = 276422, upload-time = "2026-10-07T12:22:19.567Z" },
296
+ { url = "https://files.pythonhosted.org/packages/b4/87/f293984cdcf83c054196d4fd3dad44fc68ae55b4b8c44bc76cef360c3150/tomli-2.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ad1ea345759240d6463efa0ed1c704402752e49aa21476620738d74d72d8aa1", size = 272616, upload-time = "2026-10-07T12:22:20.794Z" },
297
+ { url = "https://files.pythonhosted.org/packages/ce/ce/db582886b3c1219d3fec93ebd669332482e5aee7a91e0f7838d84f2d1759/tomli-2.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96243987194634bd411066ce40c952e108f86af04db533ecd8ac3ff2a85b1885", size = 276593, upload-time = "2026-10-07T12:22:22.12Z" },
298
+ { url = "https://files.pythonhosted.org/packages/bf/72/7619b87dea4261fc27dd7b54c4461c129c1f7d9bb7ba3aec89c797a431b8/tomli-2.5.0-cp311-cp311-win32.whl", hash = "sha256:610b27d99f28ec5f191c7064a48f3ddb179a1fe6ca73d571483ae859f57b605e", size = 101830, upload-time = "2026-10-07T12:22:23.651Z" },
299
+ { url = "https://files.pythonhosted.org/packages/1e/74/220106da34502304b6751a2a9b8a9fbca6c3fd47e737a2e2e3da7c61c9db/tomli-2.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:c804ae44fe7b4bab5da295e4f980a1ff04670bca9d23fe0a4e887e08ebd741a8", size = 112742, upload-time = "2026-10-07T12:22:24.972Z" },
300
+ { url = "https://files.pythonhosted.org/packages/27/99/7d9c8b41837a7773613e169504147375c157a290167aa59ad74a085f521f/tomli-2.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:cfac177ebd6236003846ea339981f71457cb6eb748f23381eb257e45092e3980", size = 109332, upload-time = "2026-10-07T12:22:26.117Z" },
301
+ { url = "https://files.pythonhosted.org/packages/52/ed/7baa86f87493646a594de388c7c1c40a39dd0461f7e9c0359cbeefc91fe8/tomli-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f4a40d03fb9f63424f0979855bdeaf44dd7696b8d59501822c10ed30ba532df", size = 164854, upload-time = "2026-10-07T12:22:27.444Z" },
302
+ { url = "https://files.pythonhosted.org/packages/a5/b1/44c0341f2224397855723c7a8a39f718ea6fcbcc3dacc66e5aeca0f334e3/tomli-2.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ebf8d19b17bd0daeb7b7dec81a946a439b753942fd0210d6e96c532249eea6b", size = 164074, upload-time = "2026-10-07T12:22:28.679Z" },
303
+ { url = "https://files.pythonhosted.org/packages/23/04/e2d5b7d3fba47adedb23de616c16d428ea076c79a3d8e1d95d649ffe197e/tomli-2.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf0b5e8e0f68ebb494356e577c06c139161efd8d3b9050f93b39b7c26cc54ff0", size = 274274, upload-time = "2026-10-07T12:22:29.804Z" },
304
+ { url = "https://files.pythonhosted.org/packages/43/90/6090e706ff27a6f89f4a40578e3324b95c3cd8c4150868aabf33a8f414c3/tomli-2.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cf74416bdc94ae458b14e37286c1073081850ac8459a00d0c5efef5d44294c6", size = 286435, upload-time = "2026-10-07T12:22:31.297Z" },
305
+ { url = "https://files.pythonhosted.org/packages/0a/9e/a2c40768df16c408f22430afb0a73e9d7e5f79c950884954649d1146b74d/tomli-2.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:61ea1ebe1e55a34ea8199cc8dbff398d35027b82271c8ac4802fd3a1fd5b1bcc", size = 278119, upload-time = "2026-10-07T12:22:32.601Z" },
306
+ { url = "https://files.pythonhosted.org/packages/12/25/3c0cb485b98e9cfac495629b1c93c87ccf0b72fbe9d2689fd8fe62c6d5a3/tomli-2.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed53f7e89bb04f6d9e8e7799112360b0c4d5cbff067de0814c98c37c39b920f7", size = 286177, upload-time = "2026-10-07T12:22:33.745Z" },
307
+ { url = "https://files.pythonhosted.org/packages/77/8b/0144c65f0e37e51c18d04ae15c21b19431c165002d0131fe9aa8b0b8b1e8/tomli-2.5.0-cp312-cp312-win32.whl", hash = "sha256:e7ad033e27a516a233bea839cdb77b80146facb3b4f40bf02cd0cac165cdd5c2", size = 102760, upload-time = "2026-10-07T12:22:34.887Z" },
308
+ { url = "https://files.pythonhosted.org/packages/de/32/5d6d8f42fc9a05fce69354e00ff256484192f5f2fc9a2165718fa0de61ec/tomli-2.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:bd05de8c1698f8413dd7d869492693a0bf2211543b787ac78cd5e7536af1a6d7", size = 112722, upload-time = "2026-10-07T12:22:36.162Z" },
309
+ { url = "https://files.pythonhosted.org/packages/30/65/df18032218db0fb9b769fb23c8039a051f15c811993995ea04c350273a32/tomli-2.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:069435bd5480429b98c5e5afb02ab21c219b6f0064680671c6dc0d46817346ea", size = 109534, upload-time = "2026-10-07T12:22:37.296Z" },
310
+ { url = "https://files.pythonhosted.org/packages/42/e5/51736d70da209350969e15aca5c5ab6e2ce1ea87a0a892a6c13aec172a86/tomli-2.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:943276cf269e0071948d9ff697159c1735e623c1151d88abb09b74659ef0cbea", size = 163328, upload-time = "2026-10-07T12:22:38.373Z" },
311
+ { url = "https://files.pythonhosted.org/packages/ec/55/086f80dab4ab497602644274e6dea7ec5dd0b4e262e443a8ad3bb7edee2d/tomli-2.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:463b16086865b97facd8d0b3fb4cb7c544e3f58d2a69dc3113d6db9653fdb043", size = 162246, upload-time = "2026-10-07T12:22:39.673Z" },
312
+ { url = "https://files.pythonhosted.org/packages/aa/eb/3ecc94459f3635c92321f4e7bde571323fdb2267c50e19e3188a281eae3b/tomli-2.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1245a6638fc4bb0a60af38a7d45413db34a13842027c77597c712c998c62fdf0", size = 272655, upload-time = "2026-10-07T12:22:41.08Z" },
313
+ { url = "https://files.pythonhosted.org/packages/c0/d7/494fd1f0c37a621f1ad9975c2efadb523e8101f144ed6edb2e7fe64738f2/tomli-2.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5d8bac3d603c97e6854424e5b2b5b741bdbde387e09f162fb0446812b4a8362b", size = 283595, upload-time = "2026-10-07T12:22:42.222Z" },
314
+ { url = "https://files.pythonhosted.org/packages/70/51/bb8d62b1317e6640866f6949b2d5855e5300f2c99d46de1cd245570bba65/tomli-2.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:21e4cae4114aba25aa0d4f85cdf486d290fb35c0954d7bba536248da64d43066", size = 276253, upload-time = "2026-10-07T12:22:43.625Z" },
315
+ { url = "https://files.pythonhosted.org/packages/66/f4/f46bd7f0763cd47de2db697dca9257c6a4adfd1a93b018cc75c8190ed5a8/tomli-2.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bbaefc84548d754be821bba7c4141c4787dda182f9e77f2f87b71213529efa7b", size = 283582, upload-time = "2026-10-07T12:22:44.983Z" },
316
+ { url = "https://files.pythonhosted.org/packages/ac/03/70f2bcb2923a6db37818d917e124270a7f4cfd38ea576f5aa753a91c0ef5/tomli-2.5.0-cp313-cp313-win32.whl", hash = "sha256:abdbf6313b8d9efe157edeb7ab6eae4de064b1300ad31abf73755154b30abe68", size = 102628, upload-time = "2026-10-07T12:22:46.508Z" },
317
+ { url = "https://files.pythonhosted.org/packages/dc/98/d52024bb5b0ff68b4f0d276d867f634c84a67319a7e9f6b7708a37742333/tomli-2.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd4dc129784e0c5335bd4e61dfcc4487499a013419e655cf2da1d091b7e0efdc", size = 113301, upload-time = "2026-10-07T12:22:47.647Z" },
318
+ { url = "https://files.pythonhosted.org/packages/6f/f2/540db3a70572a8c23a28aba3e9c358ce0ffffbafc990905c1343aa265b31/tomli-2.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:69491c143d2fe063046e0301e62a810bed338fa4d1ce0fd870c27dc1e09b0d84", size = 109744, upload-time = "2026-10-07T12:22:48.925Z" },
319
+ { url = "https://files.pythonhosted.org/packages/e4/49/caf6b307766eb9567664a8707e9d6be5fcc0e8903f18781c6677a60d80c7/tomli-2.5.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d3182ee2d887e507bd67319a0a61105d1dd33facc111329559a233b772c1a105", size = 162899, upload-time = "2026-10-07T12:22:50.088Z" },
320
+ { url = "https://files.pythonhosted.org/packages/d3/c8/68cfce773a2733a49c74f99d627fb461bd990756860099eac25617889585/tomli-2.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:521345fd1f19d45b8df87657aaa38b6f2ca3800059fadf428e7ebf479a383646", size = 162080, upload-time = "2026-10-07T12:22:51.558Z" },
321
+ { url = "https://files.pythonhosted.org/packages/7e/b2/e5bb8651fdad593f670501a7d718b1a7f73f064d44dea15e04c04dfef45d/tomli-2.5.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e95c7614e705bfe2b04b27aa124adec59752d15813df37e2156747cab3a006b", size = 273380, upload-time = "2026-10-07T12:22:52.918Z" },
322
+ { url = "https://files.pythonhosted.org/packages/8d/d2/9e2d7f8b1dfe0e2b34c245986ebd55c4c553ea4ce6c47c443b332673253f/tomli-2.5.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ac2027d37c3afbdf4bdd377f2676f6f1d2122a5be1f1137b49dced590b37e75", size = 283228, upload-time = "2026-10-07T12:22:54.173Z" },
323
+ { url = "https://files.pythonhosted.org/packages/ba/df/ec7b876b7b1a2718bd74a3743c076fff565b04029ba33e8f61fac262739f/tomli-2.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c414be4ed9d3cac80c42e348fa5a956117d1a48227f48026e31f59cb4a7671eb", size = 277189, upload-time = "2026-10-07T12:22:55.342Z" },
324
+ { url = "https://files.pythonhosted.org/packages/7d/7b/e192d9eed0b9cb80da799f4d77052297fb9a2c3cc9b19f571f56ea88add6/tomli-2.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9b03d7dc168353b4132965bde20feceabaa470e570c6f59660dfae59b1f9eeb3", size = 283632, upload-time = "2026-10-07T12:22:56.735Z" },
325
+ { url = "https://files.pythonhosted.org/packages/84/50/ff94454e75461d75623e47401ed323d65c10aab8fe9033242c20cd2fdf32/tomli-2.5.0-cp314-cp314-win32.whl", hash = "sha256:6f041843c4d3a37245c0c056fd955b186bf8b1fb85690cbe40b81230891dc34b", size = 103535, upload-time = "2026-10-07T12:22:58.084Z" },
326
+ { url = "https://files.pythonhosted.org/packages/54/0b/bdacf05f963bd6026ebf6eeb0beda847d1d60e03e440725c64a4e08a0afd/tomli-2.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:f4b653094e18f9031102d3a1da5c729c8f222d85225b18037dac621695e46e1a", size = 114621, upload-time = "2026-10-07T12:22:59.2Z" },
327
+ { url = "https://files.pythonhosted.org/packages/61/99/53f438fa6ae4f9d4ed0ddde3e7242b3bdc34b48c8f9948b72b9e9b127676/tomli-2.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:3f89d10c1ff6a38d992c27fc8a4816af71a909e08a40ec66934240b1e74347c3", size = 111572, upload-time = "2026-10-07T12:23:00.479Z" },
328
+ { url = "https://files.pythonhosted.org/packages/b9/20/1f88f19427d380a40e90a770e087489eaafe4aeee070ae88ed2bbec00acd/tomli-2.5.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:e9e15b4a6c7dd6b85b5fbab29488a73f1f70de516942308daa266bf0e0aeb0d4", size = 171814, upload-time = "2026-10-07T12:23:01.914Z" },
329
+ { url = "https://files.pythonhosted.org/packages/d0/56/cbe5079c9f9a54b9b3e27fc82f08f3cb36edee75561679f53d2380c801d6/tomli-2.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e12bbcd32897272fb05929110362ae9ff4c1b9bb26bd9e971e71dcd3275b4c3d", size = 171324, upload-time = "2026-10-07T12:23:03.18Z" },
330
+ { url = "https://files.pythonhosted.org/packages/2b/30/1d53fd3b0f1cb3ba542e345ec32c26aefdddc4e829e4f3429af8a4f27782/tomli-2.5.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:20aa36de8f2cf87237143bc1fa1aae8d6612c09118f4da21c6a684db5dd1f6f9", size = 297441, upload-time = "2026-10-07T12:23:04.345Z" },
331
+ { url = "https://files.pythonhosted.org/packages/66/d9/0800acb6a111686f764c1b91ef15cc42a20a66a46013bb42220f1d2c61c1/tomli-2.5.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22185fad8a1e622f064e78008018a0dd3323550dcb479cb7a1d296888d74024f", size = 307476, upload-time = "2026-10-07T12:23:05.671Z" },
332
+ { url = "https://files.pythonhosted.org/packages/e8/63/30a8f3cd51b5bec37f04744bad0b0dc6160df84aad4f27b0e9283d66f221/tomli-2.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:984012f71908165449a951de2050d52f276bfe3aa5d5f570f63ddad814370374", size = 296113, upload-time = "2026-10-07T12:23:07.202Z" },
333
+ { url = "https://files.pythonhosted.org/packages/ab/18/0b9ffc597e69c5a1e20a7823cb60d54b39a9f54e91edcb8574f022186758/tomli-2.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f79203b3965b4000e91808aaa7c040206093f2b8bf86f455982f2274c9ccf442", size = 307725, upload-time = "2026-10-07T12:23:08.508Z" },
334
+ { url = "https://files.pythonhosted.org/packages/ab/c7/18f8baae0b5607a60e8e19b4a7fedee43a8ff6458e3896dcbbadeeac9c22/tomli-2.5.0-cp314-cp314t-win32.whl", hash = "sha256:91294a9fb94a75542f6e46e4a2ae709bd8d9b51134098cae5cf3bea5478b6d03", size = 108546, upload-time = "2026-10-07T12:23:09.956Z" },
335
+ { url = "https://files.pythonhosted.org/packages/72/34/4cca9739254130627bde87500b3f2b512154fe2f278efa7e2a5e10ad4bcb/tomli-2.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f15e3e0b835a6d68b10c86bf80a3149780498d6911c93c3ffd1861d19f9200f1", size = 117814, upload-time = "2026-10-07T12:23:11.486Z" },
336
+ { url = "https://files.pythonhosted.org/packages/7d/fb/afa530d47dd80a78fce43beac6bc6e00f84558eafcffbc6f37b21e80d056/tomli-2.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:6664b7ae7af7294256c53960a6103077f4914cec8ff98479c352f622c6f6b2f0", size = 115188, upload-time = "2026-10-07T12:23:12.728Z" },
337
+ { url = "https://files.pythonhosted.org/packages/66/98/316fdc00f8c0939e6fe50461dd343c162d3ad51d1286eb25b7db54361d50/tomli-2.5.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:a525685c2f97da40762b8695eb7aa0af4c8344ca1905c73e4e29cb04d34607dc", size = 162775, upload-time = "2026-10-07T12:23:13.941Z" },
338
+ { url = "https://files.pythonhosted.org/packages/c5/22/7b10fa5bb01c9539f53f69b619361b19350acc73657772ea7ac70ba309a8/tomli-2.5.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:9dbb18c1cfb2f6517942fc9314437f66aa06d94436ffb1f06102ef3572f35276", size = 161406, upload-time = "2026-10-07T12:23:15.215Z" },
339
+ { url = "https://files.pythonhosted.org/packages/9c/e7/1a069d86dfd20f1f84f71c63faed9f83c1d890bc06c27d82dc7d888fb573/tomli-2.5.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:752e8b1aa6a4367ef8bf6a1a1e005540f7ed055ba36d7193796812ca5404eb52", size = 273855, upload-time = "2026-10-07T12:23:16.471Z" },
340
+ { url = "https://files.pythonhosted.org/packages/ae/83/d1ef43d1687d092ab9c235455c76e6e709483b346b056f086095c7c263a5/tomli-2.5.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c47300f9bf791808f77d82747691c4bb09cb14bdf3060cca99b42cdc4361d5a7", size = 284910, upload-time = "2026-10-07T12:23:18.166Z" },
341
+ { url = "https://files.pythonhosted.org/packages/cc/05/f4d9cf7de61822ece0c3873f30d291e324911c71a378b8bfe5ced13fd9f5/tomli-2.5.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:19b0dd8749f4ea2f112c5fcfb3c5248390c899d7e2e173f1d91abee1fa0ff391", size = 277723, upload-time = "2026-10-07T12:23:19.355Z" },
342
+ { url = "https://files.pythonhosted.org/packages/42/28/78262493141fa543151cf005760c3cb01d09fc28a11f993c05109902cb8c/tomli-2.5.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:57b1c3b01fab802e2899bc3d168dca320e14165e2fd9fd584760fb4ca5826859", size = 285115, upload-time = "2026-10-07T12:23:20.698Z" },
343
+ { url = "https://files.pythonhosted.org/packages/1a/b9/e1dab9a30bcb677b5cc5cee810609cfd64f24306a3055767dd3fda00b1e0/tomli-2.5.0-cp315-cp315-win32.whl", hash = "sha256:667e521b37a6c5ccaa044202c235b530f90177ffe2cd4a64ecc213c7dd535feb", size = 103475, upload-time = "2026-10-07T12:23:21.941Z" },
344
+ { url = "https://files.pythonhosted.org/packages/4c/bd/31a3790c11d6ea95fcf5e6022ac0f8d0543c9b61120b730fc481bd43d3b4/tomli-2.5.0-cp315-cp315-win_amd64.whl", hash = "sha256:d747252933c8a65ef6bd8da0fbb7ce28a90eb6119d8cd00772cd528aa07b68d5", size = 114589, upload-time = "2026-10-07T12:23:23.098Z" },
345
+ { url = "https://files.pythonhosted.org/packages/47/a2/4f6310fa699364f0e3af7ee3af88dddd9af066d33e716a0265bbe2b3ea84/tomli-2.5.0-cp315-cp315-win_arm64.whl", hash = "sha256:75dbcde8751b0a960aa3de173aa5e894d590755c6d7758b7e774c06f1dc3cbdd", size = 111493, upload-time = "2026-10-07T12:23:24.233Z" },
346
+ { url = "https://files.pythonhosted.org/packages/68/14/00853f0b396d8971107ae1921bb5b322fdee1650d2f16bf06c20adb532e5/tomli-2.5.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:2419c2a189551987b59d80e63ec355671283336f41c6b9b89462df679c7d0c57", size = 171380, upload-time = "2026-10-07T12:23:25.512Z" },
347
+ { url = "https://files.pythonhosted.org/packages/89/ad/fa6949321dadee46b27363974fb197b94c911c3b0f7a5fd26d7dc18fc2a0/tomli-2.5.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:0dc598040da8d42cf20f0be588ed7004f46db12a0ac6c32e03a59dccedaaadcd", size = 170553, upload-time = "2026-10-07T12:23:26.855Z" },
348
+ { url = "https://files.pythonhosted.org/packages/53/aa/3056c919eb3e084df3752b2cf5f865dcc04af0b27dba2f66d7b28af4633a/tomli-2.5.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49096930c8d886c9bbdab62d2d0d17ce823ddeea522309a190b36245d5b49e01", size = 294428, upload-time = "2026-10-07T12:23:28.132Z" },
349
+ { url = "https://files.pythonhosted.org/packages/96/b2/faeeb5d8769ea3832021d73e892c8391eae7b4b4f8b55a789127bd8b18a9/tomli-2.5.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8ade5023067f99fe72b88accd30d0ea05a158e9e32a11f124e731ea9695313f", size = 304909, upload-time = "2026-10-07T12:23:29.381Z" },
350
+ { url = "https://files.pythonhosted.org/packages/f6/52/f094c09e73fb654b621716d019acb5d29bdfd1be01df80c281d552bda48d/tomli-2.5.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:b69564772b5c8f22ea5f498dff08cfa825045b4d4c4400529000bdf818aa3b2a", size = 293220, upload-time = "2026-10-07T12:23:30.608Z" },
351
+ { url = "https://files.pythonhosted.org/packages/86/f5/0c30541078ca4b505ce3bd76ed931facbfec524dd018535d691d1af0a6d2/tomli-2.5.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:8ff3a2ca028c7eee0c777f9a092038d0a594a9fa04e215f929a22c329e2cb142", size = 305705, upload-time = "2026-10-07T12:23:32.181Z" },
352
+ { url = "https://files.pythonhosted.org/packages/05/74/590e7d19d6a118fc5cc5704ff358e21d95b8573f6b9443b1519f29ca8825/tomli-2.5.0-cp315-cp315t-win32.whl", hash = "sha256:62fc1bc8eb03e3a9cadfca713d65614ed8e09d974a283295ffe3a831976b4dc5", size = 108432, upload-time = "2026-10-07T12:23:33.496Z" },
353
+ { url = "https://files.pythonhosted.org/packages/1c/b8/63a75cfb27a17c38550e44025d3a6e7be64516fd8608a3b75703bf37d81b/tomli-2.5.0-cp315-cp315t-win_amd64.whl", hash = "sha256:f3fcbc57b1791fa6cbe5d8434179d51de12be1a4811469529f47f6e7487a2571", size = 117281, upload-time = "2026-10-07T12:23:34.648Z" },
354
+ { url = "https://files.pythonhosted.org/packages/72/01/e8c1debb2173973372934c68fc8e46170ab60ef23ed4592dff4dec6e8993/tomli-2.5.0-cp315-cp315t-win_arm64.whl", hash = "sha256:d2ba24db8a9376921b5e87b4762b9adb0f3f1deaea68f2b8b0bb2c11efb9c3e7", size = 115069, upload-time = "2026-10-07T12:23:35.77Z" },
355
+ { url = "https://files.pythonhosted.org/packages/60/3f/3e3f8fd0919249b0200c80fbc4f9a1e70be19f9883da71dfb7f8b9ab8aca/tomli-2.5.0-py3-none-any.whl", hash = "sha256:32a7b79ac57a2e83670ce329ccf675798bc5a2094783a63676866b70503f2e2b", size = 14765, upload-time = "2026-10-07T12:23:36.875Z" },
356
+ ]
357
+
358
+ [[package]]
359
+ name = "typing-extensions"
360
+ version = "4.16.0"
361
+ source = { registry = "https://pypi.org/simple" }
362
+ sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" }
363
+ wheels = [
364
+ { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" },
365
+ ]
366
+
367
+ [[package]]
368
+ name = "virtualenv"
369
+ version = "21.14.7"
370
+ source = { registry = "https://pypi.org/simple" }
371
+ dependencies = [
372
+ { name = "distlib" },
373
+ { name = "filelock", version = "3.19.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
374
+ { name = "filelock", version = "4.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" },
375
+ { name = "filelock", version = "4.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
376
+ { name = "packaging" },
377
+ { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
378
+ { name = "platformdirs", version = "4.12.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" },
379
+ { name = "platformdirs", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
380
+ { name = "python-discovery" },
381
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
382
+ ]
383
+ sdist = { url = "https://files.pythonhosted.org/packages/dc/3f/935cf1757643381fb7f7cc98197b4bc119223d9c2cf37dc3b03ad2a4455f/virtualenv-21.14.7.tar.gz", hash = "sha256:5f427d56f39eb7e7447d641dd4b7ab1e9c92793f498f35f26da2e4972c5546ae", size = 5471741, upload-time = "2026-10-12T01:27:31.842Z" }
384
+ wheels = [
385
+ { url = "https://files.pythonhosted.org/packages/52/5b/799c3e5b8e04d5fa1c9b61a4c1f5079603e747205c7311b92abd30283df5/virtualenv-21.14.7-py3-none-any.whl", hash = "sha256:3769219a308c5d2f093e7729621ad12a6346b5767a7ec4338414e2a0fb0c526b", size = 5487587, upload-time = "2026-10-12T01:27:29.37Z" },
386
+ ]
@@ -1,23 +0,0 @@
1
- version = 1
2
- revision = 3
3
- requires-python = ">=3.9"
4
-
5
- [[package]]
6
- name = "pyfroniusreg"
7
- version = "0.2.2"
8
- source = { editable = "." }
9
- dependencies = [
10
- { name = "pymodbus" },
11
- ]
12
-
13
- [package.metadata]
14
- requires-dist = [{ name = "pymodbus", specifier = "==3.7.*" }]
15
-
16
- [[package]]
17
- name = "pymodbus"
18
- version = "3.7.4"
19
- source = { registry = "https://pypi.org/simple" }
20
- sdist = { url = "https://files.pythonhosted.org/packages/0b/bc/f98789706351e778676a3e84ed6203160c4f581092e298eb075bc9e08230/pymodbus-3.7.4.tar.gz", hash = "sha256:573c370aea04523403eea1e159616a583cd7b93cfc5c81b07340d3cccd52c99f", size = 170675, upload-time = "2024-10-22T10:27:16.338Z" }
21
- wheels = [
22
- { url = "https://files.pythonhosted.org/packages/07/0a/b57434ae7ecc83a854f0431a380964a575a6474197211d2bae3fa0529484/pymodbus-3.7.4-py3-none-any.whl", hash = "sha256:dfb45ef9a2c1663875ad32378f780b5824628cd3c0a486851e64b8a3341a3e82", size = 173104, upload-time = "2024-10-22T10:27:14.789Z" },
23
- ]
File without changes
File without changes