half_orm development Framework.
Project description
halfORM packager (early alpha stage)
๐ข Project Evolution Notice
halfORM_dev is being redesigned to integrate with halfORM 0.16's new extension system.
This project will be refactored as
half-orm-devto provide development tools through the unifiedhalf_ormCLI interface. The core functionality (project management, database patches, code generation) will remain the same, but the integration and command structure will be modernized.Current Status:
- halfORM core 0.16 with extension is about to be released
- halfORM_dev refactoring will start soon
- New
half-orm-devextension planned for Q3 2025What's Changing:
- Commands will integrate with
half_orm devinstead of standalonehop- Extension auto-discovery and security model
- Simplified installation and configuration
- Consistent CLI experience across all halfORM tools
For Current Users: The existing halfORM_dev will continue to work as-is. The new extension will provide a migration path when ready.
Stay Updated: Follow progress in halfORM Discussions and halfORM Issues.
THIS DOC IS A WORK IN PROGRESS...
This package allows you to patch/test a PostgreSQL model and its associated
Python code using the hop command.
It is based on the half_orm PostgreSQL โ Python relation object mapper.
Installation
Run pip install half_orm_dev.
help
$ hop --help
Usage: hop [OPTIONS] COMMAND [ARGS]...
Generates/Synchronises/Patches a python package from a PostgreSQL database
Options:
-v, --version
--help Show this message and exit.
Commands:
new Creates a new hop project named <package_name>.
patch Applies the next patch
test Tests some common pitfalls.
update Updates the Python code with the changes made to the model.
Create a new package for your database: hop new
hop new <package name>
WARNING! The hop new command will add to your database
two new schemas: half_orm_meta and "half_orm_meta.view".
The table half_orm_meta.release will containt the patch history
of your model (see hop patch bellow).
$ hop new pagila
HALFORM_CONF_DIR: /home/joel/.halform
Using '/home/joel/.halform/pagila' file for connexion.
Initializing git with a 'main' branch.
Initializing the patch system for the 'pagila' database.
Patch system initialized at release '0.0.0'.
The hop project 'pagila' has been created.
The tree command shows you the repartition of the modules in your package.
$ tree pagila
pagila
โโโ Backups
โ โโโ pagila-pre-patch.sql
โโโ pagila
โ โโโ base_test.py
โ โโโ db_connector.py
โ โโโ __init__.py
โ โโโ public
โ โโโ actor_info.py
โ โโโ actor_info_test.py
โ โโโ actor.py
โ โโโ actor_test.py
โ โโโ address.py
โ โโโ address_test.py
โ โโโ category.py
โ โโโ category_test.py
โ โโโ city.py
โ โโโ city_test.py
โ โโโ country.py
โ โโโ country_test.py
โ โโโ customer_list.py
โ โโโ customer_list_test.py
โ โโโ customer.py
โ โโโ customer_test.py
โ โโโ film_actor.py
โ โโโ film_actor_test.py
โ โโโ film_category.py
โ โโโ film_category_test.py
โ โโโ film_list.py
โ โโโ film_list_test.py
โ โโโ film.py
โ โโโ film_test.py
โ โโโ __init__.py
โ โโโ inventory.py
โ โโโ inventory_test.py
โ โโโ language.py
โ โโโ language_test.py
โ โโโ nicer_but_slower_film_list.py
โ โโโ nicer_but_slower_film_list_test.py
โ โโโ payment_p2020_01.py
โ โโโ payment_p2020_01_test.py
โ โโโ payment_p2020_02.py
โ โโโ payment_p2020_02_test.py
โ โโโ payment_p2020_03.py
โ โโโ payment_p2020_03_test.py
โ โโโ payment_p2020_04.py
โ โโโ payment_p2020_04_test.py
โ โโโ payment_p2020_05.py
โ โโโ payment_p2020_05_test.py
โ โโโ payment_p2020_06.py
โ โโโ payment_p2020_06_test.py
โ โโโ payment.py
โ โโโ payment_test.py
โ โโโ rental.py
โ โโโ rental_test.py
โ โโโ sales_by_film_category.py
โ โโโ sales_by_film_category_test.py
โ โโโ sales_by_store.py
โ โโโ sales_by_store_test.py
โ โโโ staff_list.py
โ โโโ staff_list_test.py
โ โโโ staff.py
โ โโโ staff_test.py
โ โโโ store.py
โ โโโ store_test.py
โโโ Patches
โ โโโ README
โโโ Pipfile
โโโ README.md
โโโ setup.py
Once created, go to the newly created directory
cd pagila
The organisation
$ tree -d
.
โโโ Backups
โโโ pagila
โ โโโ public
โโโ Patches
You will now be able to manage your package with the hop command.
Get the status of your package: hop
$ hop
STATUS
connection_file_name: pagila
package_name: pagila
CURRENT RELEASE: 0.0.0: 2021-09-03 at 11:54:22+02:00
No new release to apply after 0.0.0.
Next possible releases: 0.0.1, 0.1.0, 1.0.0.
hop --help to get help.
Patch your model: hop patch
$ hop patch
No new release to apply after 0.0.0.
Next possible releases: 0.0.1, 0.1.0, 1.0.0.
The patch system will try to find a next suitable patch to apply from the
last release number. If the last patch is X.Y.Z, hop patch will try in order
X.Y.<Z+1>, X.<Y+1>.Z, <X+1>.Y.Z.
To prepare a new patch, run hop patch -p <patch_level> where patch_level is one
of ['patch', 'minor', 'major']. The command will create a directory in
Patches/X/Y/Z with a CHANGELOG.md description file. You can add in this
directory a series of patches scripts.
The scripts are applied in alphabetical order and can only be of two types:
- SQL with .sql extension
- Python with .py extension
If there is a suitable patch to apply, hop will create a branch hop_<release>,
backup the database in Backups/<dbname>-<release>.sql, apply the patch and
update the Python code.
In development, you will frequently need to adjust a patch.
To replay a patch, simply run hop patch again.
To revert to the previous patch run hop patch -r.
If your git repo is not clean, hop patch will complain. You can use hop patch -f
to avoid the warning.
You can use git as you wish during this phase.
Generate a release (CI): hop release NotImplented
hop release -afor alphahop release -cfor release candidatehop release -pfor production
Test your code
Each hop patch should test and report any error.
The package is test ready. For each module there is a test
$ pytest pagila/
================= test session starts =================
platform linux -- Python 3.8.5, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: /home/joel/Dev/halfORM_packager/tmp/pagila
collected 28 items
pagila/public/actor_info_test.py . [ 3%]
pagila/public/actor_test.py . [ 7%]
pagila/public/address_test.py . [ 10%]
pagila/public/category_test.py . [ 14%]
pagila/public/city_test.py . [ 17%]
pagila/public/country_test.py . [ 21%]
pagila/public/customer_list_test.py . [ 25%]
pagila/public/customer_test.py . [ 28%]
pagila/public/film_actor_test.py . [ 32%]
pagila/public/film_category_test.py . [ 35%]
pagila/public/film_list_test.py . [ 39%]
pagila/public/film_test.py . [ 42%]
pagila/public/inventory_test.py . [ 46%]
pagila/public/language_test.py . [ 50%]
pagila/public/nicer_but_slower_film_list_test.py . [ 53%]
[ 53%]
pagila/public/payment_p2020_01_test.py . [ 57%]
pagila/public/payment_p2020_02_test.py . [ 60%]
pagila/public/payment_p2020_03_test.py . [ 64%]
pagila/public/payment_p2020_04_test.py . [ 67%]
pagila/public/payment_p2020_05_test.py . [ 71%]
pagila/public/payment_p2020_06_test.py . [ 75%]
pagila/public/payment_test.py . [ 78%]
pagila/public/rental_test.py . [ 82%]
pagila/public/sales_by_film_category_test.py . [ 85%]
pagila/public/sales_by_store_test.py . [ 89%]
pagila/public/staff_list_test.py . [ 92%]
pagila/public/staff_test.py . [ 96%]
pagila/public/store_test.py . [100%]
================= 28 passed in 0.18s ==================
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file half_orm_dev-0.16.0a2.tar.gz.
File metadata
- Download URL: half_orm_dev-0.16.0a2.tar.gz
- Upload date:
- Size: 31.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21401bbf8f5ee4ad3358078f935e9d3a7690930f6db896b4946e99ed1dda8444
|
|
| MD5 |
9db7e1954b0ff8d9715756a7c88487f0
|
|
| BLAKE2b-256 |
8ea97be00c00b035530786d031c1dd6ff66a7520aacace97372f1791904eb986
|
File details
Details for the file half_orm_dev-0.16.0a2-py3-none-any.whl.
File metadata
- Download URL: half_orm_dev-0.16.0a2-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2dd970fed31d4cc9f8a773eddb48bf1ac5ac8d0c483f77cf5fd31ae0de9bab2f
|
|
| MD5 |
18ed77e5a2b4c7502f16656849b3e4e3
|
|
| BLAKE2b-256 |
2ccecf434516eceac2cb12e903e5d897b2bc0276bd75ef50ed656fc790be5b75
|