odoo-devops-tools 1.0.0__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.
@@ -0,0 +1,576 @@
1
+ Metadata-Version: 2.4
2
+ Name: odoo-devops-tools
3
+ Version: 1.0.0
4
+ Summary: A set of DevOps tools for Odoo deployments and local dev.
5
+ Author: Roman Lacko
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/lck/odoo-devops-tools
8
+ Project-URL: Repository, https://github.com/lck/odoo-devops-tools
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Environment :: Console
11
+ Classifier: Framework :: Odoo
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: System Administrators
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Build Tools
23
+ Classifier: Topic :: Software Development
24
+ Requires-Python: >=3.9
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Dynamic: license-file
28
+
29
+ # odoo-devops-tools
30
+
31
+ A set of DevOps tools for Odoo deployments and local dev.
32
+
33
+ ## Installation
34
+
35
+ Install with pip:
36
+
37
+ ```bash
38
+ pip install odoo-devops-tools
39
+ ```
40
+
41
+ ## Command: `odk-env`
42
+
43
+ Provision and sync a reproducible Odoo workspace from an INI configuration file.
44
+
45
+ #### Requirements
46
+
47
+ - **git**
48
+ - **uv** [Python package and project manager](https://docs.astral.sh/uv/)
49
+
50
+ #### Usage
51
+
52
+ Full **default** behavior (clone repositories, create venv, generate config and helper scripts):
53
+
54
+ ```bash
55
+ odk-env /path/to/ROOT/odoo-project.ini --sync-all --create-venv
56
+ ```
57
+
58
+ By default, `ROOT` is the directory containing the INI file. You can override where the workspace is created with `--root` (must point to an existing directory):
59
+
60
+ ```bash
61
+ odk-env /path/to/odoo-project.ini --sync-all --create-venv --root /path/to/NEW-ROOT
62
+ ```
63
+
64
+ If you want to **build** the workspace in one location but have the generated configs/scripts refer to a different **deployment root**, use `--dest-root`. This path does **not** need to exist on the build machine (it may only exist on the target host):
65
+
66
+ ```bash
67
+ odk-env /path/to/odoo-project.ini --sync-all --create-wheelhouse --root /tmp/build-root --dest-root /srv/odoo/myproject
68
+ ```
69
+
70
+ Sync without venv provisioning:
71
+
72
+ ```bash
73
+ odk-env /path/to/ROOT/odoo-project.ini --sync-all
74
+ ```
75
+
76
+ Build wheelhouse without venv provisioning:
77
+
78
+ ```bash
79
+ odk-env /path/to/ROOT/odoo-project.ini --sync-all --create-wheelhouse
80
+ ```
81
+
82
+ Offline venv provisioning from an existing wheelhouse:
83
+
84
+ ```bash
85
+ odk-env /path/to/ROOT/odoo-project.ini --create-venv --reuse-wheelhouse
86
+ ```
87
+
88
+ Hard rebuild of the venv:
89
+
90
+ ```bash
91
+ odk-env /path/to/ROOT/odoo-project.ini --sync-all --rebuild-venv
92
+ ```
93
+
94
+ If no options are specified, odk-env only regenerates config and helper scripts:
95
+
96
+ ```bash
97
+ odk-env /path/to/ROOT/odoo-project.ini
98
+ ```
99
+
100
+ ### What odk-env creates (directory layout)
101
+
102
+ `ROOT` is the directory containing `odoo-project.ini` (or the path passed via `--root`).
103
+
104
+ If you pass `--dest-root`, odk-env still creates files under `ROOT`, but **paths embedded inside generated files** are based on `DEST_ROOT`.
105
+
106
+ - `ROOT/odoo/` - Odoo repository
107
+ - `ROOT/odoo-addons/<name>/` - addon repositories
108
+ - `ROOT/odoo-backups/` - backups directory
109
+ - `ROOT/odoo-data/` - data directory (can be customized via `[config] data_dir` in the INI file).
110
+ - `ROOT/odoo-configs/` - generated `odoo-server.conf`
111
+ - `ROOT/odoo-scripts/` - helper scripts (see below)
112
+ - `ROOT/odoo-logs/` - runtime logs (created by `instance.sh`)
113
+ - `ROOT/venv/` - Virtualenv / Python toolchain (created/updated with `--create-venv` / `--rebuild-venv` / `--create-wheelhouse`).
114
+ - `ROOT/wheelhouse/` - Local cache of python packages in wheel format (created/updated with `--create-venv` / `--rebuild-venv` / `--create-wheelhouse`)
115
+
116
+ ### Example configuration
117
+
118
+ This configuration creates a ready-to-run Odoo 18.0 development workspace, including:
119
+
120
+ - Python 3.11 virtual environment (`ROOT/venv/`)
121
+ - Odoo 18.0 checkout (`ROOT/odoo/`)
122
+ - Addons checkouts (`ROOT/odoo-addons/oca-web/` and `ROOT/odoo-addons/oca-helpdesk/`)
123
+
124
+ ```ini
125
+ [virtualenv]
126
+ python_version = 3.11
127
+ # Optional (default: true): when false, odk-env will NOT install a managed CPython via `uv python install`.
128
+ # Instead it will rely on an existing system Python that matches `python_version`.
129
+ # managed_python = false
130
+ build_constraints =
131
+ requirements =
132
+ requirements_ignore =
133
+
134
+ [odoo]
135
+ repo = https://github.com/odoo/odoo.git
136
+ branch = 18.0
137
+ # Optional: If true, keep repo as a shallow, single-branch clone (depth=1). If false (default), do a full clone/fetch.
138
+ shallow_clone = true
139
+
140
+ [addons.oca-web]
141
+ repo = https://github.com/OCA/web.git
142
+ branch = 18.0
143
+
144
+ [addons.oca-helpdesk]
145
+ repo = https://github.com/OCA/helpdesk.git
146
+ branch = 18.0
147
+
148
+ [config]
149
+ http_port = 8069
150
+ gevent_port = 8072
151
+ db_host = 127.0.0.1
152
+ db_port = 5432
153
+ db_name = sample_odoo18
154
+ db_user = sample_odoo18
155
+ db_password = sample_odoo18
156
+ log_level = debug
157
+ max_cron_threads = 0
158
+ ```
159
+
160
+ ### Using multiple configuration files with inheritance
161
+
162
+ odk-env supports a lightweight include mechanism so you can split configuration across multiple INI files (for example a shared `base.ini` plus a local override file).
163
+
164
+ Notes:
165
+
166
+ - Paths are resolved relative to the INI file that declares the include.
167
+ - Included files are loaded first; the including file is loaded last (**later values override earlier ones**).
168
+ - Prefix a path with `?` to make it optional (missing file is skipped).
169
+
170
+ Example:
171
+
172
+ `odoo-base.ini`:
173
+
174
+ ```ini
175
+ [virtualenv]
176
+ python_version = 3.11
177
+ build_constraints =
178
+ requirements =
179
+ requirements_ignore =
180
+
181
+ [odoo]
182
+ repo = https://github.com/odoo/odoo.git
183
+ branch = 18.0
184
+
185
+ [config]
186
+ http_port = 8069
187
+ gevent_port = 8072
188
+ db_host = 127.0.0.1
189
+ db_port = 5432
190
+ db_name = sample_odoo18
191
+ db_user = sample_odoo18
192
+ db_password = sample_odoo18
193
+ ```
194
+
195
+ `odoo-dev.ini`:
196
+
197
+ ```ini
198
+ [include]
199
+ files = odoo-base.ini
200
+
201
+ [odoo]
202
+ branch = develop
203
+
204
+ [config]
205
+ db_name = sample_odoo18_dev
206
+ ```
207
+
208
+ `odoo-test.ini`:
209
+
210
+ ```ini
211
+ [include]
212
+ files =
213
+ odoo-base.ini
214
+ ?odoo-dev.ini
215
+
216
+ [config]
217
+ db_name = sample_odoo18_test
218
+ ```
219
+
220
+
221
+ ### Configuration variables & interpolation
222
+
223
+ odk-env uses Python's **ExtendedInterpolation**, so you can reference values via `${section:option}` (for example `${vars:branch}`).
224
+
225
+ In addition, odk-env injects a set of **runtime variables** (workspace paths) into the INI `DEFAULT` scope, so they are available from *any* section in the INI file:
226
+
227
+ - `${ini_dir}` - directory containing the INI file
228
+ - `${root_dir}` - workspace root directory
229
+ - `${odoo_dir}` - `ROOT/odoo`
230
+ - `${addons_dir}` - `ROOT/odoo-addons`
231
+ - `${backups_dir}` - `ROOT/odoo-backups`
232
+ - `${configs_dir}` - `ROOT/odoo-configs`
233
+ - `${config_path}` - full path to the generated `odoo-server.conf`
234
+ - `${scripts_dir}` - `ROOT/odoo-scripts`
235
+ - `${venv_python}` - full path to the virtualenv Python executable
236
+
237
+ **Note on `--dest-root`:**
238
+
239
+ - odk-env always *builds* under `ROOT` (filesystem workspace).
240
+ - When `--dest-root` is provided, values like `${root_dir}`, `${odoo_dir}`, `${addons_dir}` etc. are evaluated against `DEST_ROOT` **for the `[config]` section** (used to render generated files like `odoo-server.conf`).
241
+ - Other sections (for example `[odoo]`, `[addons.*]`, `[virtualenv]`) continue to use the filesystem `ROOT` so build-time operations (git/venv/wheelhouse) are unaffected.
242
+ - `${ini_dir}` always points to the directory containing the entry INI on the build machine (needed for includes).
243
+
244
+ Tip: You can define your own helper section (for example `[vars]`) and reuse it across other sections.
245
+
246
+ Example:
247
+
248
+ ```ini
249
+ [vars]
250
+ project = sample_odoo18
251
+ branch = 18.0
252
+
253
+ [virtualenv]
254
+ python_version = 3.11
255
+ requirements =
256
+ -r ${ini_dir}/requirements-dev.txt
257
+
258
+ [odoo]
259
+ repo = https://github.com/odoo/odoo.git
260
+ branch = ${vars:branch}
261
+
262
+ [addons.oca-web]
263
+ repo = https://github.com/OCA/web.git
264
+ branch = ${odoo:branch}
265
+
266
+ [config]
267
+ db_name = ${vars:project}
268
+ data_dir = ${root_dir}/odoo-data/${vars:project}
269
+ logfile = ${root_dir}/odoo-logs/${vars:project}.log
270
+ ```
271
+
272
+ ### Extending `addons_path`
273
+
274
+ odk-env always generates an `addons_path` for `odoo-server.conf` that includes:
275
+
276
+ - Odoo core addons directory (`ROOT/odoo/addons` and/or `ROOT/odoo/odoo/addons`)
277
+ - every synced addon repository (`ROOT/odoo-addons/<name>`)
278
+
279
+ If you specify `addons_path` in the INI `[config]` section, it **extends** (appends to) this computed base list (it does **not** replace it). Duplicates are removed.
280
+
281
+ Format details:
282
+
283
+ - you can use a comma-separated list and/or a multi-line value
284
+ - relative paths are resolved relative to `ROOT` (same as `${root_dir}`)
285
+
286
+ Example:
287
+
288
+ ```ini
289
+ [config]
290
+ addons_path =
291
+ odoo-addons/3rd_party_addons,
292
+ ${addons_dir}/extra_addons,
293
+ ```
294
+
295
+
296
+ ### Shallow clones (`shallow_clone`)
297
+
298
+ By default, odk-env keeps repositories as **full clones** (all branches + tags + full history). For very large repositories (especially `odoo/odoo`) you can enable a **shallow, single-branch** workflow.
299
+
300
+ Where to set it:
301
+
302
+ - `[odoo] shallow_clone = true` (Odoo core repo)
303
+ - `[addons.<name>] shallow_clone = true` (per addon repo)
304
+
305
+ What it does when enabled:
306
+
307
+ - initial clone: `git clone --depth 1 --single-branch --branch <branch> ...`
308
+ - sync/update: fetch only `origin <branch>` with `--depth 1`, then force local `<branch>` to match `origin/<branch>` (hard reset)
309
+ - no `git fetch --all`; other branches are not kept locally, and tags are not fetched broadly
310
+
311
+ Pros:
312
+
313
+ - much faster clone/fetch
314
+ - significantly less disk usage
315
+
316
+ Limitations / gotchas:
317
+
318
+ - depth is fixed to **1** (only the tip of the branch is available)
319
+ - git operations that require history (for example long `git log`, `git bisect`, `git describe` on older tags/commits) will not work as expected
320
+ - if you need to work across multiple branches, keep `shallow_clone = false`
321
+ - switching from a full clone to `shallow_clone = true` does **not** automatically drop existing history; to actually get the disk/speed benefits, delete the repo directory (`ROOT/odoo` or `ROOT/odoo-addons/<name>`) and re-sync.
322
+
323
+ Switching back to a full clone:
324
+
325
+ Set `shallow_clone = false` (or remove it) and re-run a sync. If the repo is shallow and/or single-branch, odk-env automatically converts it back to full history (unshallow) and widens the `origin` fetch refspec so a subsequent `fetch --all --tags` can pull all remote branches.
326
+
327
+ ### Command-line Options
328
+
329
+ - `--root` - override workspace ROOT directory (default: directory containing INI)
330
+ - `--dest-root` - override DEST_ROOT used for paths embedded in generated configs/scripts (default: same as ROOT; DEST_ROOT does not need to exist on the build machine)
331
+ - `--sync-odoo` - sync only `ROOT/odoo`
332
+ - `--sync-addons` - sync only `ROOT/odoo-addons/*` (optional; if there are no `[addons.*]` sections in the INI, this is a no-op)
333
+ - `--sync-all` - sync both
334
+ - `--create-venv` - enable virtualenv provisioning: create/update `ROOT/venv` and **install** Python dependencies (from the wheelhouse).
335
+ - `--rebuild-venv` - delete `ROOT/venv` and recreate it (implies `--create-venv`).
336
+ - `--reuse-wheelhouse` - reuse an existing `ROOT/wheelhouse/` and install offline only (skip lock/wheel build). Requires `--create-venv`.
337
+ - `--create-wheelhouse` - build/update the lock file + `ROOT/wheelhouse/` **without installing** project requirements into the venv.
338
+ (odk-env may create/update `ROOT/venv/` as a Python toolchain.)
339
+ - `--clear-pip-wheel-cache` - remove all items from the pip's wheel cache.
340
+ - `--no-configs` - don’t generate config files (e.g. `ROOT/odoo-configs/odoo-server.conf`).
341
+ - `--no-scripts` - don’t generate helper scripts under `ROOT/odoo-scripts/`.
342
+ - `--no-data-dir` - don’t create the Odoo data folder under `ROOT/odoo-data/` (or a custom path set via `[config] data_dir` in the INI file).
343
+
344
+ If no options are specified, odk-env only regenerates configs and helper scripts.
345
+
346
+ ### Virtualenv
347
+
348
+ odk-env installs project Python dependencies into the venv only when you pass `--create-venv` (or `--rebuild-venv`).
349
+ You can (re)build the `ROOT/wheelhouse/` either as part of venv provisioning, or separately with `--create-wheelhouse`.
350
+
351
+ - The venv is created/used at: `ROOT/venv`
352
+ - Python version is taken from: `[virtualenv] python_version`
353
+ - venv + installs are done via: `uv venv` and `uv pip`
354
+ - If the requested Python version is not available on the machine and managed Python is enabled, odk-env installs it via `uv python install`.
355
+ - Requirements are resolved into a single lock file and installed into the venv from `ROOT/wheelhouse/` using offline mode (`--offline --no-index`).
356
+
357
+ #### Reusing an existing wheelhouse
358
+
359
+ If `ROOT/wheelhouse/` is already prepared (wheels + `all-requirements.lock.txt`), you can run (requires `--create-venv`):
360
+
361
+ ```bash
362
+ odk-env /path/to/odoo-project.ini --create-venv --reuse-wheelhouse
363
+ ```
364
+
365
+ This skips lock compilation and wheel building and does a strict offline install from the wheelhouse.
366
+ It also works together with `--sync-all/--sync-odoo/--sync-addons` (repo sync still happens, but python deps are installed
367
+ from the existing lock/wheels).
368
+
369
+
370
+ ### Managed Python Install
371
+
372
+ By default, odk-env manages the requested CPython version for you using `uv`.
373
+
374
+ - Option: `[virtualenv] managed_python`
375
+ - Default: `true` (you can omit it)
376
+
377
+ Behavior:
378
+
379
+ - `managed_python = true` (default): when odk-env needs to create `ROOT/venv/`, it ensures the requested `python_version` exists by running `uv python install`.
380
+ - `managed_python = false`: odk-env **skips** `uv python install` and relies on an already-installed system Python that matches `python_version`. If such Python is not available, venv creation will fail.
381
+
382
+ Example:
383
+
384
+ ```ini
385
+ [virtualenv]
386
+ python_version = 3.11
387
+ managed_python = false
388
+ ```
389
+
390
+
391
+ ### Safety / local changes policy
392
+
393
+ If any target repository (Odoo or an addon) contains local uncommitted changes
394
+ (including untracked files), odk-env aborts. Commit/stash/clean your working tree
395
+ before running odk-env.
396
+
397
+ ### Generated scripts
398
+
399
+ odk-env generates helper scripts into `ROOT/odoo-scripts/`. All scripts use the generated configuration file (`odoo-configs/odoo-server.conf`) and forward any additional arguments to the underlying command.
400
+
401
+ #### Linux/macOS
402
+
403
+ - `ROOT/odoo-scripts/run.sh`
404
+ - `ROOT/odoo-scripts/instance.sh`
405
+ - `ROOT/odoo-scripts/test.sh`
406
+ - `ROOT/odoo-scripts/shell.sh`
407
+ - `ROOT/odoo-scripts/initdb.sh`
408
+ - `ROOT/odoo-scripts/backup.sh`
409
+ - `ROOT/odoo-scripts/restore.sh`
410
+ - `ROOT/odoo-scripts/restore_force.sh`
411
+ - `ROOT/odoo-scripts/update.sh`
412
+ - `ROOT/odoo-scripts/update_all.sh`
413
+
414
+ #### Windows
415
+
416
+ - `ROOT/odoo-scripts/run.bat`
417
+ - `ROOT/odoo-scripts/test.bat`
418
+ - `ROOT/odoo-scripts/shell.bat`
419
+ - `ROOT/odoo-scripts/initdb.bat`
420
+ - `ROOT/odoo-scripts/backup.bat`
421
+ - `ROOT/odoo-scripts/restore.bat`
422
+ - `ROOT/odoo-scripts/restore_force.bat`
423
+ - `ROOT/odoo-scripts/update.bat`
424
+ - `ROOT/odoo-scripts/update_all.bat`
425
+
426
+ #### 1. Start the Odoo server
427
+
428
+ Starts the Odoo server.
429
+
430
+ **Linux/macOS**
431
+ ```bash
432
+ ./odoo-scripts/run.sh
433
+ ```
434
+
435
+ **Windows**
436
+ ```bat
437
+ odoo-scripts\run.bat
438
+ ```
439
+
440
+ #### 1a. Manage the Odoo server instance (Linux only)
441
+
442
+ Starts/stops Odoo in the background and writes logs into `ROOT/odoo-logs/odoo-server.log` (the `ROOT/odoo-logs/` directory is created automatically if it doesn't exist).
443
+
444
+ Supported commands: `start`, `stop`, `restart`, `status`.
445
+
446
+ - `status` prints the **PID** if the server is running (exit code 0), otherwise prints `NOT RUNNING` (exit code 1).
447
+ - `start` accepts additional arguments, which are forwarded to `odoo-bin`.
448
+
449
+ **Linux/macOS**
450
+ ```bash
451
+ ./odoo-scripts/instance.sh start
452
+ ./odoo-scripts/instance.sh status
453
+ ./odoo-scripts/instance.sh restart
454
+ ./odoo-scripts/instance.sh stop
455
+ ```
456
+
457
+ #### 2. Update modules
458
+
459
+ Update an Odoo database (odoo -u), automatically detecting addons to
460
+ update based on a hash of their file content, compared to the hashes
461
+ stored in the database
462
+
463
+ **Linux/macOS**
464
+ ```bash
465
+ ./odoo-scripts/update.sh
466
+ ```
467
+
468
+ **Windows**
469
+ ```bat
470
+ odoo-scripts\update.bat
471
+ ```
472
+
473
+ #### 3. Update all modules
474
+
475
+ Force a complete upgrade (-u base)
476
+
477
+ **Linux/macOS**
478
+ ```bash
479
+ ./odoo-scripts/update_all.sh
480
+ ```
481
+
482
+ **Windows**
483
+ ```bat
484
+ odoo-scripts\update_all.bat
485
+ ```
486
+
487
+ #### 4. Run tests
488
+
489
+ Runs Odoo tests.
490
+
491
+ **Linux/macOS**
492
+ ```bash
493
+ ./odoo-scripts/test.sh -u base
494
+ ./odoo-scripts/test.sh -u mail,web
495
+ ./odoo-scripts/test.sh -u my_custom_addon
496
+ ```
497
+
498
+ **Windows**
499
+ ```bat
500
+ odoo-scripts\test.bat -u base
501
+ odoo-scripts\test.bat -u mail,web
502
+ odoo-scripts\test.bat -u my_custom_addon
503
+ ```
504
+
505
+ #### 5. Open an Odoo shell
506
+
507
+ Opens an interactive Odoo shell.
508
+
509
+ **Linux/macOS**
510
+ ```bash
511
+ ./odoo-scripts/shell.sh
512
+ ```
513
+
514
+ **Windows**
515
+ ```bat
516
+ odoo-scripts\shell.bat
517
+ ```
518
+
519
+ #### 6. Initialize the database
520
+
521
+ Create or initialize an Odoo database with pre-installed modules
522
+
523
+ **Linux/macOS**
524
+ ```bash
525
+ ./odoo-scripts/initdb.sh
526
+ ```
527
+
528
+ **Windows**
529
+ ```bat
530
+ odoo-scripts\initdb.bat
531
+ ```
532
+
533
+ #### 7. Create a database backup
534
+
535
+ Creates a timestamped ZIP backup of the database into `ROOT/odoo-backups/`.
536
+ This script dumps the database using pg_dump.
537
+ It also copies the filestore
538
+
539
+ **Linux/macOS**
540
+ ```bash
541
+ ./odoo-scripts/backup.sh
542
+ ```
543
+
544
+ **Windows**
545
+ ```bat
546
+ odoo-scripts\backup.bat
547
+ ```
548
+
549
+ #### 8. Restore a database backup
550
+
551
+ Restores a database from a given backup.
552
+ Neutralizing a database as well
553
+
554
+ **Linux/macOS**
555
+ ```bash
556
+ ./odoo-scripts/restore.sh PATH/TO/BACKUP.zip
557
+ ```
558
+
559
+ **Windows**
560
+ ```bat
561
+ odoo-scripts\restore.bat PATH\TO\BACKUP.zip
562
+ ```
563
+
564
+ #### 9. Restore a backup (force)
565
+
566
+ Same as restore, but overwrites an existing database
567
+
568
+ **Linux/macOS**
569
+ ```bash
570
+ ./odoo-scripts/restore_force.sh PATH/TO/BACKUP.zip
571
+ ```
572
+
573
+ **Windows**
574
+ ```bat
575
+ odoo-scripts\restore_force.bat PATH\TO\BACKUP.zip
576
+ ```
@@ -0,0 +1,8 @@
1
+ odoo_devops_tools/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
2
+ odoo_devops_tools/env.py,sha256=Z5vAssdoLSMvo7_MojotM_Ibv9Ul4sFsGOTL7wyCRhI,90415
3
+ odoo_devops_tools-1.0.0.dist-info/licenses/LICENSE,sha256=3kVGxFPI-TSQGAKsrsm355Lo7Gzq015mqD2K0k3NmUQ,1068
4
+ odoo_devops_tools-1.0.0.dist-info/METADATA,sha256=tk3NkzZLhO69dQoGTPm-DyVNF7JsjRi3k43RhiMPa2Q,17521
5
+ odoo_devops_tools-1.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
6
+ odoo_devops_tools-1.0.0.dist-info/entry_points.txt,sha256=he_qPZDTHB3HbefjxaaRY7rDYaI9xSD0mUPnvSdM_4g,106
7
+ odoo_devops_tools-1.0.0.dist-info/top_level.txt,sha256=3qevYYwzrLMVylX0pxsrEqG7NIllKiMYbud3mzosKmg,18
8
+ odoo_devops_tools-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ odk-env = odoo_devops_tools.env:main
3
+ odoo-devops-tools-env = odoo_devops_tools.env:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Roman Lacko
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ odoo_devops_tools