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.
- arthexis-0.1.26.dist-info/METADATA +272 -0
- arthexis-0.1.26.dist-info/RECORD +111 -0
- {arthexis-0.1.9.dist-info → arthexis-0.1.26.dist-info}/licenses/LICENSE +674 -674
- config/__init__.py +5 -5
- config/active_app.py +15 -15
- config/asgi.py +29 -29
- config/auth_app.py +7 -7
- config/celery.py +32 -25
- config/context_processors.py +67 -68
- config/horologia_app.py +7 -7
- config/loadenv.py +11 -11
- config/logging.py +59 -48
- config/middleware.py +71 -25
- config/offline.py +49 -49
- config/settings.py +676 -492
- config/settings_helpers.py +109 -0
- config/urls.py +228 -159
- config/wsgi.py +17 -17
- core/admin.py +4052 -2066
- core/admin_history.py +50 -50
- core/admindocs.py +192 -151
- core/apps.py +350 -223
- core/auto_upgrade.py +72 -0
- core/backends.py +311 -124
- core/changelog.py +403 -0
- core/entity.py +149 -133
- core/environment.py +60 -43
- core/fields.py +168 -75
- core/form_fields.py +75 -0
- core/github_helper.py +188 -25
- core/github_issues.py +183 -172
- core/github_repos.py +72 -0
- core/lcd_screen.py +78 -78
- core/liveupdate.py +25 -25
- core/log_paths.py +114 -100
- core/mailer.py +89 -83
- core/middleware.py +91 -91
- core/models.py +5041 -2195
- core/notifications.py +105 -105
- core/public_wifi.py +267 -227
- core/reference_utils.py +107 -0
- core/release.py +940 -346
- core/rfid_import_export.py +113 -0
- core/sigil_builder.py +149 -131
- core/sigil_context.py +20 -20
- core/sigil_resolver.py +250 -284
- core/system.py +1425 -230
- core/tasks.py +538 -199
- core/temp_passwords.py +181 -0
- core/test_system_info.py +202 -43
- core/tests.py +2673 -1069
- core/tests_liveupdate.py +17 -17
- core/urls.py +11 -11
- core/user_data.py +681 -495
- core/views.py +2484 -789
- core/widgets.py +213 -51
- nodes/admin.py +2236 -445
- nodes/apps.py +98 -70
- nodes/backends.py +160 -53
- nodes/dns.py +203 -0
- nodes/feature_checks.py +133 -0
- nodes/lcd.py +165 -165
- nodes/models.py +2375 -870
- nodes/reports.py +411 -0
- nodes/rfid_sync.py +210 -0
- nodes/signals.py +18 -0
- nodes/tasks.py +141 -46
- nodes/tests.py +5045 -1489
- nodes/urls.py +29 -13
- nodes/utils.py +172 -73
- nodes/views.py +1768 -304
- ocpp/admin.py +1775 -481
- ocpp/apps.py +25 -25
- ocpp/consumers.py +1843 -630
- ocpp/evcs.py +844 -928
- ocpp/evcs_discovery.py +158 -0
- ocpp/models.py +1417 -640
- ocpp/network.py +398 -0
- ocpp/reference_utils.py +42 -0
- ocpp/routing.py +11 -9
- ocpp/simulator.py +745 -368
- ocpp/status_display.py +26 -0
- ocpp/store.py +603 -403
- ocpp/tasks.py +479 -31
- ocpp/test_export_import.py +131 -130
- ocpp/test_rfid.py +1072 -540
- ocpp/tests.py +5494 -2296
- ocpp/transactions_io.py +197 -165
- ocpp/urls.py +50 -50
- ocpp/views.py +2024 -912
- pages/admin.py +1123 -396
- pages/apps.py +45 -10
- pages/checks.py +40 -40
- pages/context_processors.py +151 -85
- pages/defaults.py +13 -0
- pages/forms.py +221 -0
- pages/middleware.py +213 -153
- pages/models.py +720 -252
- pages/module_defaults.py +156 -0
- pages/site_config.py +137 -0
- pages/tasks.py +74 -0
- pages/tests.py +4009 -1389
- pages/urls.py +38 -20
- pages/utils.py +93 -12
- pages/views.py +1736 -762
- arthexis-0.1.9.dist-info/METADATA +0 -168
- arthexis-0.1.9.dist-info/RECORD +0 -92
- core/workgroup_urls.py +0 -17
- core/workgroup_views.py +0 -94
- nodes/actions.py +0 -70
- {arthexis-0.1.9.dist-info → arthexis-0.1.26.dist-info}/WHEEL +0 -0
- {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
|
+
[](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [](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 & 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 & 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 & 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 & 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 & 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]` — returns a field or attribute. Hyphens and casing are normalized automatically.
|
|
244
|
+
- `[PREFIX=IDENTIFIER.FIELD]` — selects a specific record by primary key or any unique field.
|
|
245
|
+
- `[PREFIX:FIELD=VALUE.ATTRIBUTE]` — filters by a custom field instead of the primary key.
|
|
246
|
+
- `[PREFIX.FIELD=[OTHER.SIGIL]]` — nests sigils so the value after `=` resolves before the outer token.
|
|
247
|
+
- `[PREFIX]` — 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 → 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,,
|