arthexis 0.1.9__py3-none-any.whl → 0.1.26__py3-none-any.whl

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.

Potentially problematic release.


This version of arthexis might be problematic. Click here for more details.

Files changed (112) hide show
  1. arthexis-0.1.26.dist-info/METADATA +272 -0
  2. arthexis-0.1.26.dist-info/RECORD +111 -0
  3. {arthexis-0.1.9.dist-info → arthexis-0.1.26.dist-info}/licenses/LICENSE +674 -674
  4. config/__init__.py +5 -5
  5. config/active_app.py +15 -15
  6. config/asgi.py +29 -29
  7. config/auth_app.py +7 -7
  8. config/celery.py +32 -25
  9. config/context_processors.py +67 -68
  10. config/horologia_app.py +7 -7
  11. config/loadenv.py +11 -11
  12. config/logging.py +59 -48
  13. config/middleware.py +71 -25
  14. config/offline.py +49 -49
  15. config/settings.py +676 -492
  16. config/settings_helpers.py +109 -0
  17. config/urls.py +228 -159
  18. config/wsgi.py +17 -17
  19. core/admin.py +4052 -2066
  20. core/admin_history.py +50 -50
  21. core/admindocs.py +192 -151
  22. core/apps.py +350 -223
  23. core/auto_upgrade.py +72 -0
  24. core/backends.py +311 -124
  25. core/changelog.py +403 -0
  26. core/entity.py +149 -133
  27. core/environment.py +60 -43
  28. core/fields.py +168 -75
  29. core/form_fields.py +75 -0
  30. core/github_helper.py +188 -25
  31. core/github_issues.py +183 -172
  32. core/github_repos.py +72 -0
  33. core/lcd_screen.py +78 -78
  34. core/liveupdate.py +25 -25
  35. core/log_paths.py +114 -100
  36. core/mailer.py +89 -83
  37. core/middleware.py +91 -91
  38. core/models.py +5041 -2195
  39. core/notifications.py +105 -105
  40. core/public_wifi.py +267 -227
  41. core/reference_utils.py +107 -0
  42. core/release.py +940 -346
  43. core/rfid_import_export.py +113 -0
  44. core/sigil_builder.py +149 -131
  45. core/sigil_context.py +20 -20
  46. core/sigil_resolver.py +250 -284
  47. core/system.py +1425 -230
  48. core/tasks.py +538 -199
  49. core/temp_passwords.py +181 -0
  50. core/test_system_info.py +202 -43
  51. core/tests.py +2673 -1069
  52. core/tests_liveupdate.py +17 -17
  53. core/urls.py +11 -11
  54. core/user_data.py +681 -495
  55. core/views.py +2484 -789
  56. core/widgets.py +213 -51
  57. nodes/admin.py +2236 -445
  58. nodes/apps.py +98 -70
  59. nodes/backends.py +160 -53
  60. nodes/dns.py +203 -0
  61. nodes/feature_checks.py +133 -0
  62. nodes/lcd.py +165 -165
  63. nodes/models.py +2375 -870
  64. nodes/reports.py +411 -0
  65. nodes/rfid_sync.py +210 -0
  66. nodes/signals.py +18 -0
  67. nodes/tasks.py +141 -46
  68. nodes/tests.py +5045 -1489
  69. nodes/urls.py +29 -13
  70. nodes/utils.py +172 -73
  71. nodes/views.py +1768 -304
  72. ocpp/admin.py +1775 -481
  73. ocpp/apps.py +25 -25
  74. ocpp/consumers.py +1843 -630
  75. ocpp/evcs.py +844 -928
  76. ocpp/evcs_discovery.py +158 -0
  77. ocpp/models.py +1417 -640
  78. ocpp/network.py +398 -0
  79. ocpp/reference_utils.py +42 -0
  80. ocpp/routing.py +11 -9
  81. ocpp/simulator.py +745 -368
  82. ocpp/status_display.py +26 -0
  83. ocpp/store.py +603 -403
  84. ocpp/tasks.py +479 -31
  85. ocpp/test_export_import.py +131 -130
  86. ocpp/test_rfid.py +1072 -540
  87. ocpp/tests.py +5494 -2296
  88. ocpp/transactions_io.py +197 -165
  89. ocpp/urls.py +50 -50
  90. ocpp/views.py +2024 -912
  91. pages/admin.py +1123 -396
  92. pages/apps.py +45 -10
  93. pages/checks.py +40 -40
  94. pages/context_processors.py +151 -85
  95. pages/defaults.py +13 -0
  96. pages/forms.py +221 -0
  97. pages/middleware.py +213 -153
  98. pages/models.py +720 -252
  99. pages/module_defaults.py +156 -0
  100. pages/site_config.py +137 -0
  101. pages/tasks.py +74 -0
  102. pages/tests.py +4009 -1389
  103. pages/urls.py +38 -20
  104. pages/utils.py +93 -12
  105. pages/views.py +1736 -762
  106. arthexis-0.1.9.dist-info/METADATA +0 -168
  107. arthexis-0.1.9.dist-info/RECORD +0 -92
  108. core/workgroup_urls.py +0 -17
  109. core/workgroup_views.py +0 -94
  110. nodes/actions.py +0 -70
  111. {arthexis-0.1.9.dist-info → arthexis-0.1.26.dist-info}/WHEEL +0 -0
  112. {arthexis-0.1.9.dist-info → arthexis-0.1.26.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,272 @@
1
+ Metadata-Version: 2.4
2
+ Name: arthexis
3
+ Version: 0.1.26
4
+ Summary: Power & Energy Infrastructure
5
+ Author-email: "Rafael J. Guillén-Osorio" <tecnologia@gelectriic.com>
6
+ License-Expression: GPL-3.0-only
7
+ Project-URL: Repository, https://github.com/arthexis/arthexis
8
+ Project-URL: Homepage, https://arthexis.com
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Framework :: Django
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: amqp==5.3.1
15
+ Requires-Dist: annotated-types==0.7.0
16
+ Requires-Dist: anyio==4.9.0
17
+ Requires-Dist: asgiref==3.10.0
18
+ Requires-Dist: atproto<0.1.0,>=0.0.63
19
+ Requires-Dist: attrs==25.3.0
20
+ Requires-Dist: autobahn==24.4.2
21
+ Requires-Dist: Automat==25.4.16
22
+ Requires-Dist: billiard==4.2.2
23
+ Requires-Dist: bleach==6.2.0
24
+ Requires-Dist: black==25.9.0
25
+ Requires-Dist: celery==5.5.3
26
+ Requires-Dist: certifi==2025.7.14
27
+ Requires-Dist: cffi==2.0.0
28
+ Requires-Dist: channels==4.1.0
29
+ Requires-Dist: charset-normalizer==3.4.4
30
+ Requires-Dist: click==8.2.1
31
+ Requires-Dist: click-didyoumean==0.3.1
32
+ Requires-Dist: click-plugins==1.1.1.2
33
+ Requires-Dist: click-repl==0.3.0
34
+ Requires-Dist: colorama==0.4.6
35
+ Requires-Dist: constantly==23.10.4
36
+ Requires-Dist: cron-descriptor==2.0.6
37
+ Requires-Dist: cryptography==45.0.5
38
+ Requires-Dist: daphne==4.2.1
39
+ Requires-Dist: diff-match-patch==20241021
40
+ Requires-Dist: defusedxml==0.7.1
41
+ Requires-Dist: Django==5.2.7
42
+ Requires-Dist: django-celery-beat==2.8.1
43
+ Requires-Dist: django-debug-toolbar==6.0.0
44
+ Requires-Dist: django-import-export==4.3.12
45
+ Requires-Dist: django-object-actions==5.0.0
46
+ Requires-Dist: django-otp==1.5.4
47
+ Requires-Dist: django-timezone-field==7.1
48
+ Requires-Dist: dnspython==2.7.0
49
+ Requires-Dist: docutils==0.22.2
50
+ Requires-Dist: gpiozero==2.0.1; sys_platform == "linux"
51
+ Requires-Dist: graphene-django==3.2.2
52
+ Requires-Dist: graphviz==0.21
53
+ Requires-Dist: geckodriver-autoinstaller==0.1.0
54
+ Requires-Dist: h11==0.16.0
55
+ Requires-Dist: httpcore==1.0.9
56
+ Requires-Dist: httpx==0.28.1
57
+ Requires-Dist: hyperlink==21.0.0
58
+ Requires-Dist: idna==3.11
59
+ Requires-Dist: incremental==24.7.2
60
+ Requires-Dist: kombu==5.5.4
61
+ Requires-Dist: libipld==3.2.0
62
+ Requires-Dist: Markdown==3.9
63
+ Requires-Dist: mdx_truly_sane_lists==1.3
64
+ Requires-Dist: mfrc522==0.0.7; sys_platform == "linux"
65
+ Requires-Dist: outcome==1.3.0.post0
66
+ Requires-Dist: packaging==25.0
67
+ Requires-Dist: pillow==11.3.0
68
+ Requires-Dist: prompt_toolkit==3.0.51
69
+ Requires-Dist: psutil==7.1.2
70
+ Requires-Dist: psycopg==3.2.9
71
+ Requires-Dist: psycopg-binary==3.2.12
72
+ Requires-Dist: pyasn1==0.6.1
73
+ Requires-Dist: pyasn1_modules==0.4.2
74
+ Requires-Dist: pycparser==2.22
75
+ Requires-Dist: pydantic==2.12.3
76
+ Requires-Dist: pydantic_core==2.41.4
77
+ Requires-Dist: pyOpenSSL==25.1.0
78
+ Requires-Dist: pyperclip==1.11.0
79
+ Requires-Dist: PySocks==1.7.1
80
+ Requires-Dist: python-crontab==3.3.0
81
+ Requires-Dist: python-dateutil==2.9.0.post0
82
+ Requires-Dist: python-dotenv==1.1.1
83
+ Requires-Dist: qrcode==8.2
84
+ Requires-Dist: redis==7.0.1
85
+ Requires-Dist: reportlab==4.2.2
86
+ Requires-Dist: requests==2.32.5
87
+ Requires-Dist: selenium==4.34.2
88
+ Requires-Dist: service-identity==24.2.0
89
+ Requires-Dist: setuptools==80.9.0
90
+ Requires-Dist: six==1.17.0
91
+ Requires-Dist: smbus2==0.5.0
92
+ Requires-Dist: sniffio==1.3.1
93
+ Requires-Dist: sortedcontainers==2.4.0
94
+ Requires-Dist: sqlparse==0.5.3
95
+ Requires-Dist: tablib==3.8.0
96
+ Requires-Dist: tinycss2==1.4.0
97
+ Requires-Dist: toml==0.10.2
98
+ Requires-Dist: trio==0.30.0
99
+ Requires-Dist: trio-websocket==0.12.2
100
+ Requires-Dist: Twisted==25.5.0
101
+ Requires-Dist: twine==6.1.0
102
+ Requires-Dist: txaio==25.6.1
103
+ Requires-Dist: typing-inspection==0.4.2
104
+ Requires-Dist: typing_extensions==4.14.1
105
+ Requires-Dist: tzdata==2025.2
106
+ Requires-Dist: urllib3==2.5.0
107
+ Requires-Dist: vine==5.1.0
108
+ Requires-Dist: wcwidth==0.2.14
109
+ Requires-Dist: webencodings==0.5.1
110
+ Requires-Dist: websocket-client==1.8.0
111
+ Requires-Dist: websockets==15.0.1
112
+ Requires-Dist: whitenoise==6.11.0
113
+ Requires-Dist: plyer==2.1.0; sys_platform == "win32"
114
+ Requires-Dist: wsproto==1.2.0
115
+ Requires-Dist: zope.interface==8.0.1
116
+ Dynamic: license-file
117
+
118
+ # Arthexis Constellation
119
+
120
+ [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [![OCPP 1.6 Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)](https://github.com/arthexis/arthexis/blob/main/docs/development/ocpp-user-manual.md)
121
+
122
+
123
+ ## Purpose
124
+
125
+ Arthexis Constellation is a [narrative-driven](https://en.wikipedia.org/wiki/Narrative) [Django](https://www.djangoproject.com/)-based [software suite](https://en.wikipedia.org/wiki/Software_suite) that centralizes tools for managing [electric vehicle charging infrastructure](https://en.wikipedia.org/wiki/Charging_station) and orchestrating [energy](https://en.wikipedia.org/wiki/Energy)-related [products](https://en.wikipedia.org/wiki/Product_(business)) and [services](https://en.wikipedia.org/wiki/Service_(economics)).
126
+
127
+ ## Current Features
128
+
129
+ - Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system. Supported actions are summarized below.
130
+
131
+ **Charge point → CSMS**
132
+
133
+ | Action | What we do |
134
+ | --- | --- |
135
+ | `Authorize` | Validate RFID or token authorization requests before a session starts. |
136
+ | `BootNotification` | Register the charge point and update identity, firmware, and status details. |
137
+ | `DataTransfer` | Accept vendor-specific payloads and record the results. |
138
+ | `DiagnosticsStatusNotification` | Track the progress of diagnostic uploads kicked off from the back office. |
139
+ | `FirmwareStatusNotification` | Track firmware update lifecycle events from charge points. |
140
+ | `Heartbeat` | Keep the websocket session alive and update last-seen timestamps. |
141
+ | `MeterValues` | Persist periodic energy and power readings while a transaction is active. |
142
+ | `StartTransaction` | Create charging sessions with initial meter values and identification data. |
143
+ | `StatusNotification` | Reflect connector availability and fault states in real time. |
144
+ | `StopTransaction` | Close charging sessions, capturing closing meter values and stop reasons. |
145
+
146
+ **CSMS → Charge point**
147
+
148
+ | Action | What we do |
149
+ | --- | --- |
150
+ | `ChangeAvailability` | Switch connectors or the whole station between operative and inoperative states. |
151
+ | `DataTransfer` | Send vendor-specific commands and log the charge point response. |
152
+ | `GetConfiguration` | Poll the device for the current values of tracked configuration keys. |
153
+ | `RemoteStartTransaction` | Initiate a charging session remotely for an identified customer or token. |
154
+ | `RemoteStopTransaction` | Terminate active charging sessions from the control center. |
155
+ | `ReserveNow` | Reserve connectors for upcoming sessions with automatic connector selection and confirmation tracking. |
156
+ | `Reset` | Request a soft or hard reboot to recover from faults. |
157
+ | `TriggerMessage` | Ask the device to send an immediate update (for example status or diagnostics). |
158
+
159
+ **OCPP 1.6 roadmap.** The following catalogue actions are in our backlog: `CancelReservation`, `ChangeConfiguration`, `ClearCache`, `ClearChargingProfile`, `GetCompositeSchedule`, `GetDiagnostics`, `GetLocalListVersion`, `SendLocalList`, `SetChargingProfile`, `UnlockConnector`, `UpdateFirmware`.
160
+
161
+ - Charge point reservations with automated connector assignment, energy account and RFID linkage, and EVCS confirmation tracking.
162
+ - [API](https://en.wikipedia.org/wiki/API) integration with [Odoo](https://www.odoo.com/), syncing:
163
+ - Employee credentials via `res.users`
164
+ - Product catalog lookups via `product.product`
165
+ - Runs on [Windows 11](https://www.microsoft.com/windows/windows-11) and [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/)
166
+ - Tested for the [Raspberry Pi 4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
167
+
168
+ Project under rapid active and open development.
169
+
170
+ ## Role Architecture
171
+
172
+ Arthexis Constellation ships in four node roles tailored to different deployment scenarios.
173
+
174
+ <table border="1" cellpadding="8" cellspacing="0">
175
+ <thead>
176
+ <tr>
177
+ <th align="left">Role</th>
178
+ <th align="left">Description &amp; Common Features</th>
179
+ </tr>
180
+ </thead>
181
+ <tbody>
182
+ <tr>
183
+ <td valign="top"><strong>Terminal</strong></td>
184
+ <td valign="top"><strong>Single-User Research &amp; Development</strong><br />Features: GUI Toast</td>
185
+ </tr>
186
+ <tr>
187
+ <td valign="top"><strong>Control</strong></td>
188
+ <td valign="top"><strong>Single-Device Testing &amp; Special Task Appliances</strong><br />Features: AP Public Wi-Fi, Celery Queue, GUI Toast, LCD Screen, NGINX Server, RFID Scanner</td>
189
+ </tr>
190
+ <tr>
191
+ <td valign="top"><strong>Satellite</strong></td>
192
+ <td valign="top"><strong>Multi-Device Edge, Network &amp; Data Acquisition</strong><br />Features: AP Router, Celery Queue, NGINX Server, RFID Scanner</td>
193
+ </tr>
194
+ <tr>
195
+ <td valign="top"><strong>Watchtower</strong></td>
196
+ <td valign="top"><strong>Multi-User Cloud &amp; Orchestration</strong><br />Features: Celery Queue, NGINX Server</td>
197
+ </tr>
198
+ </tbody>
199
+ </table>
200
+
201
+ ## Quick Guide
202
+
203
+ ### 1. Clone
204
+ - **[Linux](https://en.wikipedia.org/wiki/Linux)**: open a [terminal](https://en.wikipedia.org/wiki/Command-line_interface) and run `git clone https://github.com/arthexis/arthexis.git`.
205
+ - **[Windows](https://en.wikipedia.org/wiki/Microsoft_Windows)**: open [PowerShell](https://learn.microsoft.com/powershell/) or [Git Bash](https://gitforwindows.org/) and run the same command.
206
+
207
+ ### 2. Start and stop
208
+ Terminal nodes can start directly with the scripts below without installing; Control, Satellite, and Watchtower roles require installation first. Both approaches listen on [`http://localhost:8000/`](http://localhost:8000/) by default.
209
+
210
+ - **[VS Code](https://code.visualstudio.com/)**
211
+ - Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
212
+ - Select the **Run Server** (or **Debug Server**) configuration.
213
+ - Press the green start button. Stop the server with the red square button (`Shift+F5`).
214
+
215
+ - **[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
216
+ - Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
217
+ - Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
218
+
219
+ ### 3. Install and upgrade
220
+ - **Linux:**
221
+ - Run [`./install.sh`](install.sh) with a node role flag:
222
+ - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
223
+ - `--control` – prepares the single-device testing appliance.
224
+ - `--satellite` – configures the edge data acquisition node.
225
+ - `--constellation` – enables the multi-user orchestration stack.
226
+ - Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
227
+ - Upgrade with [`./upgrade.sh`](upgrade.sh).
228
+ - Consult the [Install & Lifecycle Scripts Manual](docs/development/install-lifecycle-scripts-manual.md) for complete flag descriptions and operational notes.
229
+
230
+ - **Windows:**
231
+ - Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
232
+ - Installation is not required to start in Terminal mode (the default).
233
+
234
+ ### 4. Administration
235
+ Visit [`http://localhost:8000/admin/`](http://localhost:8000/admin/) for the [Django admin](https://docs.djangoproject.com/en/stable/ref/contrib/admin/) and [`http://localhost:8000/admindocs/`](http://localhost:8000/admindocs/) for the [admindocs](https://docs.djangoproject.com/en/stable/ref/contrib/admin/admindocs/). Use `--port` with the start scripts or installer when you need to expose a different port.
236
+
237
+ ## Sigils
238
+
239
+ Sigils are bracketed tokens such as `[ENV.SMTP_PASSWORD]` that Arthexis expands at runtime. They make it possible to reference configuration secrets, system metadata, or records stored in other apps without duplicating values across the project.
240
+
241
+ ### Syntax at a glance
242
+
243
+ - `[PREFIX.KEY]` &mdash; returns a field or attribute. Hyphens and casing are normalized automatically.
244
+ - `[PREFIX=IDENTIFIER.FIELD]` &mdash; selects a specific record by primary key or any unique field.
245
+ - `[PREFIX:FIELD=VALUE.ATTRIBUTE]` &mdash; filters by a custom field instead of the primary key.
246
+ - `[PREFIX.FIELD=[OTHER.SIGIL]]` &mdash; nests sigils so the value after `=` resolves before the outer token.
247
+ - `[PREFIX]` &mdash; for entity prefixes, returns the serialized object in JSON; for configuration prefixes, resolves to an empty string when the key is missing.
248
+
249
+ The platform ships with three configuration prefixes:
250
+
251
+ - `ENV` reads environment variables.
252
+ - `CONF` reads Django settings.
253
+ - `SYS` exposes computed system information such as build metadata.
254
+
255
+ Additional prefixes are defined through **Sigil Roots**, which map a short code (for example `ROLE`, `ODOO`, or `USER`) to a Django model. You can review them from **Admin &rarr; Sigil Builder** (`/admin/sigil-builder/`), where a test console is also available.
256
+
257
+ Unknown prefixes remain in place (e.g. `[UNKNOWN.VALUE]`) and are logged.
258
+
259
+ ## Support
260
+
261
+ Contact us at [tecnologia@gelectriic.com](mailto:tecnologia@gelectriic.com) or visit our [web page](https://www.gelectriic.com/) for [professional services](https://en.wikipedia.org/wiki/Professional_services) and [commercial support](https://en.wikipedia.org/wiki/Technical_support).
262
+
263
+ ## Project Guidelines
264
+
265
+ - [AGENTS](AGENTS.md) – operating handbook for repository workflows, testing, and release management.
266
+ - [DESIGN](DESIGN.md) – visual, UX, and branding guidance that all interfaces must follow.
267
+
268
+ ## About Me
269
+
270
+ > "What, you want to know about me too? Well, I enjoy [developing software](https://en.wikipedia.org/wiki/Software_development), [role-playing games](https://en.wikipedia.org/wiki/Role-playing_game), long walks on the [beach](https://en.wikipedia.org/wiki/Beach) and a fourth secret thing."
271
+ > --Arthexis
272
+
@@ -0,0 +1,111 @@
1
+ arthexis-0.1.26.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
2
+ config/__init__.py,sha256=AwpOX7il-DAOmkdJ5dVfVJ3CWWebn1lHyQNmkw1EkDw,103
3
+ config/active_app.py,sha256=KJqYh-o91nPQjVXPEdbiJHzsI6cN9IZsBZ9O3iZ6Hyc,373
4
+ config/asgi.py,sha256=Z2HjWrxOxVU9BXcqS7dMEfOGJC48H-WPwFwokRdermY,774
5
+ config/auth_app.py,sha256=cLlKgFYV4VWsMACinKrpP-nZhXXbWZp1aj1RayDszRc,198
6
+ config/celery.py,sha256=c8fPkjfhKw0UQBr6FolzfdvRX2MQAV-dMokSlJ1Afgg,819
7
+ config/context_processors.py,sha256=p74ocuzPRFI9vKSeIaJ42Vu0V2GtGph1t-2DkRo4NMw,2449
8
+ config/horologia_app.py,sha256=puO_hObEYcLvE7PqcY_sGv1thnxJ018YKHKZWqNXha4,187
9
+ config/loadenv.py,sha256=CjXx-wBaTt1wixub4GJ5CMSMFqtiK5JURc7cPXpqO7s,287
10
+ config/logging.py,sha256=1cIbPgRshHuMKnVEEH0jKpRAlJSpewvLFbYDz7sCBG4,2104
11
+ config/middleware.py,sha256=zF8Cma0n5G8NNdh2LVeNJi7Hgl1G4mF9msRE2eRi1RU,2328
12
+ config/offline.py,sha256=X-yDcyoI4C44Y27lpkUwszY_09GwwFfazEsthKJpQ70,1382
13
+ config/settings.py,sha256=1vKOC0VwPOMXXnpUr4OIDRS1C_l_PXY-yyiDo7jmflM,20970
14
+ config/settings_helpers.py,sha256=0BdBciUHIkwsWa0vV_RKAd4wDuEzgE7G-42XYiES4YQ,3127
15
+ config/urls.py,sha256=RtoLsMBdsuKi_hxrlUW3GFCtiAZI_zGxrgXCxqpVVYE,6949
16
+ config/wsgi.py,sha256=zU_mKlya6hejQ21PxKacTui3dUWd4ca_-YJNSYAoMX0,433
17
+ core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ core/admin.py,sha256=IT9nfHKNRWSMmQeCVtCaNCU--aLdAGkViwIx-MZaZJ8,145219
19
+ core/admin_history.py,sha256=XZ4b0ryufIka-xcwboK3DzmOL-INSx5Y2fJO-aJdV70,1783
20
+ core/admindocs.py,sha256=ycD0bJ_VE6rTGf9ebXTiKdYkD8Y8hD2oQ4HxxoBURCM,6756
21
+ core/apps.py,sha256=S6fySxtxUzfvz8FI9dii0KI4wSyLhh5API_oeERLIsc,14084
22
+ core/auto_upgrade.py,sha256=8JpTWPH3-bQpmtOnTa5h3wdTVAbdthr0IqJze4deDUk,2242
23
+ core/backends.py,sha256=O6QzNsX3OXi0QeIO7PCXI57VLz7HoY72ouBGTpzsSPM,10793
24
+ core/changelog.py,sha256=SRn37i5N-qb-RYV4Gpu9fg7Kv8gu4TH8ZwEmDRgN-Vo,12594
25
+ core/entity.py,sha256=o4VteOXePGEsIWJFZ3fpq3DZsdWr3hpQ9A6kFbKosSE,4844
26
+ core/environment.py,sha256=QoiMjFVmwCEln2DEa10Hht6Ymop0H6wbDsyO6-ebXp4,1651
27
+ core/fields.py,sha256=d-qGahdcv4SRcO4fwCJ6_-NnEAP5xW0k3kODdAAAHSA,5412
28
+ core/form_fields.py,sha256=h2xT8sO8EWbznsiARkxukFk69yoW6mQwqpgonA-d6aA,2496
29
+ core/github_helper.py,sha256=fkjoUPwOB19zbGuk39LNLJ5AbIVKFf3rNCtnu-JISIc,5733
30
+ core/github_issues.py,sha256=qIygOk1ZCki0eB-9o1poJ2BnaMnbHH4ewVE36hqHUuo,5223
31
+ core/github_repos.py,sha256=8KCxcEiO2Ltgde7UDTAFOyHTm_eBeZYUIZegEbrjkWA,1690
32
+ core/lcd_screen.py,sha256=WtHMlSoZXKOsdM0d-v-f8ul-LSA6FA1bEWFwho1t6s8,2573
33
+ core/liveupdate.py,sha256=22m0ueQ10-6b-9pQJHY0_5WRYA98fysXKEXOWzIr550,691
34
+ core/log_paths.py,sha256=lxvgXPgJtVNZ-kYrqV8VFle4GFQrSxG-yRTglqvclmU,3318
35
+ core/mailer.py,sha256=JpW0RnD9uZ4O-wvlqeW7CMw95IFeCSkdvbankJDwHq0,2886
36
+ core/middleware.py,sha256=j19K9SX-Emkv7BDDtAacR9g6RWsxhKHwCc8w23JFvMM,3388
37
+ core/models.py,sha256=-vZjeIEFplX0uvFuh0Ctl1oxYLvx0GOvBvSZa1zZwe0,174650
38
+ core/notifications.py,sha256=jNLSuSCrhb8x5cDu_APeDlkrmbMejufk5eJOhssAC4I,3917
39
+ core/public_wifi.py,sha256=yydLgxOo9DmJJbM4X_23wGR3gxL3YzHno54v9GssuFA,7213
40
+ core/reference_utils.py,sha256=tffCoyE1w4_SmYzXVWOsW8aR_ZVVTSPzrGhBq8K2xzA,3631
41
+ core/release.py,sha256=tEMcM7qubmFGmER3TD_MG5j4RceHcwtBjczArZWXEWE,31357
42
+ core/rfid_import_export.py,sha256=petyhPvL0WUpehc6uGUDUhjYQ9AVvc6O49zuhDs6YFw,3516
43
+ core/sigil_builder.py,sha256=SmmYRjl11u2GpU8rt3va-TP5hwAOobJTWTUGqVAikDk,4854
44
+ core/sigil_context.py,sha256=GCzjfM6fcVvBtSbVNfmE6sx3HU8QnxnXrCIytnNpQzM,439
45
+ core/sigil_resolver.py,sha256=06Zt4g3KCJSeQJAg_NYCIbXhNejpfFclosweur0C4W4,9182
46
+ core/system.py,sha256=RVQA66t43Vt-jn5jIZUzYZ63FANs4onk8bXNJRl-rWo,44104
47
+ core/tasks.py,sha256=nhXLn_kE5r7VMraMIG22tBNgKrVTMnvUpuVyHlmUoHg,16176
48
+ core/temp_passwords.py,sha256=FieUnIUeQHmA1DoXvfJ5U6-Ayv3oDz-hSln5s_vNbA4,5271
49
+ core/test_system_info.py,sha256=IMPz21KEs6OC5YbL7YaIBdmJVLjRY6MgPuZpldJB5OI,6935
50
+ core/tests.py,sha256=PuxoarDS4reHNV4EDIyVRW7xIOFxZJYou1K_LI9ZNHY,105265
51
+ core/tests_liveupdate.py,sha256=IquU8ztk6zbzC1bQu3Nrr3RzGzuujtPwDkANJHbxg98,510
52
+ core/urls.py,sha256=YPippON1MAP2KeZZ8jHpcLO6mvbnKn1q7fdMv5Vm9dY,425
53
+ core/user_data.py,sha256=4pheHB5RqLJtmWMql30CLaCpuVqSyShXb7Sy-crRk_4,22400
54
+ core/views.py,sha256=s_a2tu9xwOpVSo7vo0iDDV4RN23jxGZNR-o7JNHs1Wk,88256
55
+ core/widgets.py,sha256=vlR9PlFfZGlkHm5X2cqNXuEBZSj8gmWaR6MO1mMy6kg,6904
56
+ nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ nodes/admin.py,sha256=H4wgxrVOvMhtFcl4JbLsyLklaM8WUAjS1xdF0ROkGAA,79911
58
+ nodes/apps.py,sha256=oi_M2Ya8CAR8N_MoYU68u7_9u-9SlIMelzLOgYM9tDs,3059
59
+ nodes/backends.py,sha256=dmmbS0X2YIlCDz2KjoDf_L62dy--nuqZF1rEDoi2JHM,5921
60
+ nodes/dns.py,sha256=D5smXD7Rkh6E4MdL6TBL2WY8GgJg7Rx9z88LZrcMbTw,7048
61
+ nodes/feature_checks.py,sha256=27e4PCkZ8BGWnJCOwMcY2Bo9z7LoeZWiTZuISWGnrzk,3996
62
+ nodes/lcd.py,sha256=iKA8Wmq85KZD52aTzAU8ZmS144_gbdGMOXcE8yuECps,5758
63
+ nodes/models.py,sha256=x_s7b2smjEsHE6O-fAz6u8gPxXM5QzwaswhLp56nm1E,83613
64
+ nodes/reports.py,sha256=NRYh3Y0SlZFhx31Zh2K03yO12ZrpxEHEY6T-dODA6WE,12059
65
+ nodes/rfid_sync.py,sha256=oeblawcp6xeLApdIuhsJS83OAk58Eu7pVVmgpAc0Nt8,6953
66
+ nodes/signals.py,sha256=PtOKdQfb08mV1LgSZvn7ZAcfOyy2c3Xkq4AOpBQyUdE,622
67
+ nodes/tasks.py,sha256=TKSUE4eILV644iPtn2Xr_UL3ZFYgzjzSAIGUYmhg3Sk,5111
68
+ nodes/tests.py,sha256=-cnhtAh8bWepy9RZU_j_fFROen9GNLe-bQI4qLyngPk,199544
69
+ nodes/urls.py,sha256=9uMhDq-b-EWZz0u-NvPRVSPXJeXfuS-BAACvsCs6gaE,1267
70
+ nodes/utils.py,sha256=x7l8Fz8UwWBumeNrHemmLXXRW_5bkMHaaRnE-VLZFwo,6337
71
+ nodes/views.py,sha256=4uktDPCpkN779Uj5LSnH1PSx4cNim7UfUz8q9eX69NI,60081
72
+ ocpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ ocpp/admin.py,sha256=BSfS4bwqxcC0a57xXOyIw9hFRxB0y7bLsF2gP5rRMfg,60175
74
+ ocpp/apps.py,sha256=i3NqrmIamNEQBT33CIqh7HOSOPmJXCMKrZ-DUd3whqg,842
75
+ ocpp/consumers.py,sha256=XfrtwJR8OLvYzxj0NIIEa_ky36UBjHROUtoEFqFK39I,75577
76
+ ocpp/evcs.py,sha256=q1mZrCVSZxXTrtYsDqH6lkeEcJ6tfSC7p9YxkDmpSCw,28883
77
+ ocpp/evcs_discovery.py,sha256=OmrzgaOHwveDRJs8AIhrM3apX8_k2PPXh_oYaYpNW3c,3876
78
+ ocpp/models.py,sha256=z5uy3zuTCICkrIg7rvBdnnYJzwHUyFrUP1AE-8LX8mk,47889
79
+ ocpp/network.py,sha256=N3je0wXckSqlHLJNQazpxrBvv0yAR7DdjfAR-hTcWDk,14149
80
+ ocpp/reference_utils.py,sha256=_UR82GfE93kv4766mHyVIfdhhyYvrT59660r3H6W55M,1072
81
+ ocpp/routing.py,sha256=3kQya-MdJ00778xDmX0esQLBP05P200V45asg-CGNoo,438
82
+ ocpp/simulator.py,sha256=vnyd59QffT79AaPhmfM_jipni_nqfG57X5tXyx1rBoc,28016
83
+ ocpp/status_display.py,sha256=YGFosd5HJETA0DcLdsjvx6EfhZSnI8Aa3cMnHG2WsBE,939
84
+ ocpp/store.py,sha256=gLCSaP9KKF7li2ALlE3O3RW5eVJtoe-_YHfKhdf0VOM,18943
85
+ ocpp/tasks.py,sha256=AgxSpWQtal6va_KbJsoNEOWug3NRn571ycwsSmwuJC4,15203
86
+ ocpp/test_export_import.py,sha256=ouQbTCp4mxfqoK6gondlu3PPcyrT9jSbWAX5gqqgaNk,4561
87
+ ocpp/test_rfid.py,sha256=IhFSlvsI8A8D3S32sRE298nYfrmqxbv7GfVErtNU3DQ,39137
88
+ ocpp/tests.py,sha256=pEVega4N2gJctjOiO8CSvMqGKrcrUtZrLSLBNSigRGU,214558
89
+ ocpp/transactions_io.py,sha256=p2aUsKlCDYnZ4ZBrOM7pxXoW_w3Tbm-tvRFSjnR3x24,7738
90
+ ocpp/urls.py,sha256=5ZomUtznJe3kfs8E-DtVp12eFva5jUuJdpTEczIsQ5w,1730
91
+ ocpp/views.py,sha256=6p-xSN6umchsDt-Vub_rUeykC5mWAWRnV4AchkrU0wM,77246
92
+ pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ pages/admin.py,sha256=VbxkwgjrFx7lXVhwbZuPSvCkS7EC-flBpwOztHejWtE,35834
94
+ pages/apps.py,sha256=0qcTFKVX9_QgqexJtGeph1sHRqq7khJf4x5ZtkWwblg,1424
95
+ pages/checks.py,sha256=sM8_hUVM_HOIocvtTb2sY3AaSEvbTnOlO46UchGVd-0,1527
96
+ pages/context_processors.py,sha256=vrgMu4vYCOonZ8eZ27gQvGU74PBpMi47T512Lu1__sA,5297
97
+ pages/defaults.py,sha256=3tjv3nFPxwpFu6poJ1Ez1MP92Q6ZvyRluftKHlU-zeI,522
98
+ pages/forms.py,sha256=r3JM5qp3_4RR01-u6XV8WDOaeiRe4OvCN8Y52FcsAwI,7909
99
+ pages/middleware.py,sha256=-tXFju1siXvzVsHcgjClfTtryw-5-PwW0171DQQxKu4,7115
100
+ pages/models.py,sha256=9LdIoIK2Epp3YDUk8LUWyhLW5pJ-NiuYTzO_-xKjg0c,23636
101
+ pages/module_defaults.py,sha256=rCAY8aTyxYNL0M5zDr393rX-Gi-svXqKtuLXm0rILrQ,5444
102
+ pages/site_config.py,sha256=f1Me0GFdHeGbIeyMlQNzD2e6hym59YHqbz92U_ppffY,4057
103
+ pages/tasks.py,sha256=ivcba_3wSQ1-cku0oDplzw6vLeQ9hBq3R4TG-LmR5gs,1913
104
+ pages/tests.py,sha256=_bVEijMfjVq46hNeGRDZprbQXAAUyS2LhXqZ5_Tkryg,155739
105
+ pages/urls.py,sha256=Oe88tm67iVHRFcGJLSBidZ0rkRQPRZ_vRt6ahxNqPek,1499
106
+ pages/utils.py,sha256=vEFrXSzN-3wsK2H687_oVKSwsSOP_NB7DXg1hHwHink,2471
107
+ pages/views.py,sha256=Yd7JRD0OQhhvYsYZLVDUxJz9zjba84jLmyhZ1K1RE0w,65286
108
+ arthexis-0.1.26.dist-info/METADATA,sha256=F6dYnw0KaarTV4KJZ19kzT5p9WR2lMNLewUNSEpEumQ,13888
109
+ arthexis-0.1.26.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
110
+ arthexis-0.1.26.dist-info/top_level.txt,sha256=J2a2q8_BWrCZ8H2WFUNMBfO2jz8j2gax6zZh-_1QDac,29
111
+ arthexis-0.1.26.dist-info/RECORD,,