semvec/pypi-packages huggingface dataset:
pgrate 0.1.1
Package for applying migrations to the postgresql database
Requires Python: >=3.7

# Package for applying migrations to the postgresql database

[![Lint](https://github.com/Drozd0f/migrator/actions/workflows/linter.yml/badge.svg)](https://github.com/Drozd0f/migrator/actions/workflows/linter.yml)

Not for production purposes.

Tool to migrate database from files.

## **Install**

```shell
$ pip install pgrate
```

## **Usage**

```shell
pgrate -p directorie/to/migrations -d postgres://username:password@localhost:5432/database
```

**OR**

```shell
pgrate -p directorie/to/migrations -d postgresql://username:password@localhost:5432/database
```

> **NOTE**
> Migration name must starts with a number + "_", where number is migration version and ends with *.up.sql example (001_migration_name.up.slq)

## **Examples**

* Move into working directory and create default migrations folder

```shell
$ cd /path/to/project
$ mkdir migrations
```

* Creating a migration up and down

```sql
-- migrations/001_init.up.sql
CREATE TABLE IF NOT EXISTS users(
  id serial PRIMARY KEY, 
  name VARCHAR(255)
);
```

```sql
-- migrations/001_init.down.sql
DROP TABLE IF EXISTS users;
```

* Applying migrations

```shell
$ pgrate -p ./migrations -d postgres://username:password@localhost:5432/database
```

* Results

**Migration schema**

| current_version | is_dirt |
|:---------------:|:-------:|
|        1        |  false  |

* Creating a migration up and down with error

```sql
-- migrations/002_users.up.sql
CREATE TABLE users(
  id serial PRIMARY KEY, 
  name VARCHAR(255)
);
```

```sql
-- migrations/002_users.down.sql
DROP TABLE IF EXISTS users;
```

* Applying migrations

```shell
$ pgrate -p ./migrations -d postgres://username:password@localhost:5432/database
```

* Results

**Console log**

```shell
asyncpg.exceptions.DuplicateTableError: relation "users" already exists
```

**Migration schema**

| current_version | is_dirt |
|:---------------:|:-------:|
|        2        |   true  |

## Commands

|      Command     |         Description         |
|:----------------:|:---------------------------:|
| '-p'<br>'--path'   | Path to migrations folder |
| '-d'<br>'--db-uri' | Database connection URI   |
h5massembly 0.0.12
Package to automagically convert step-gometries to h5m descriptions for neutronics by OpenMC
Requires Python: >=3.8

# step_to_h5m
Please note that this tool will likely change its name soon.

This is intended to be a python package heavily inspired by [Paramak](https://github.com/fusion-energy/paramak), and borrowing a lot from its namesake: https://github.com/fusion-energy/step_to_h5m).
It's "raison d'etre" is to enable a link between the online CAD-tool onShape and the neutron transport code OpenMC.

We will use cadQuery and its links to OCCT to enable import and imprinting/merging algorithms.

The code structure we intend is a main class Assembly which contains the geometry in terms of a set of volumes.
We then use gmsh to generate a surface mesh which may be used by OpenMC through DAGMC/MOAB (i.e. .h5m-files)

# To install/set up in a virtual python environment
_replace \<name\> with an arbitrary name for your virtual environment_
1. Clone the github repository as you'd normally do
2. In the directory where you want your environment to reside do: ```python -m venv <name>```
3. Activate the environment: ```source <name>/bin/activate```
4. install the requirements: ```pip install -r requirements.txt```
5. Build and install moab (if not already installed). The moab team relies on conda for standard installation but are working on a pip-based solution. Once that is done moab would simply be added to the requirements-file instead.
  1. Clone the moab code-repository: e.g. ```git clone git@bitbucket.org:fathomteam/moab.git```
  2. Configure and build the code: ```mkdir build; cd build; cmake .. -DENABLE_PYMOAB=1; make; make install```

# Run a test case:
The follwing code-snippet can now be run to explore the capabilities of Assembly/step_to_h5m
```
  import assembly as ab
  a=ab.Assembly()
  a.stp_files=["file.step"]
  a.import_stp_files()
  a.export_brep('file.brep')
  a.brep_to_h5m(brep_filename='file.brep',min_mesh_size=0.1, max_mesh_size=10, samples=20)
```

N.b. the last 3 parameters to brep_to_h5m are simply echoing their default values, and uses the default mesher: gmsh. Their significance is that all curves are sampled by 20 points, but limits the generated mesh-elements to be  within the size range [min_mesh_size,max_mesh_size].
This procedure will in turn call OCP and gmsh to produce a mesh with merged surfaces in the output file "dagmc.h5m"

The other available meshing backend is the stl-export from CadQuery (accessible by setting ```backend='stl'```) which uses the parameters ```stl_tol``` and ```stl_ang_tol``` to set meshing quality.

The ```export_brep```-step may be omitted, in which case a temporary file will be written.