Skip to main content

No project description provided

Project description

omnipy-examples

Example projects that that makes use of the omnipy package for type-driven, scalable and interoperable data wrangling!

Main installation instructions

  • Install:
    • pip install omnipy-examples
  • Run example scripts:
    • Example: omnipy-examples isajson
    • For help on the command line interface: omnipy-examples --help
    • For help on a particular example: omnipy-examples isajson --help

Output of flow runs

The output will by default appear in the data directory, with a timestamp.

  • It is recommended to install a file viewer that are capable of browsing tar.gz files. For instance, the "File Expander" plugin in PyCharm is excellent for this.
  • To unpack the compressed files of a run on the command line (just make sure to replace the datetime string from this example):
for f in $(ls data/2023_02_03-12_51_51/*.tar.gz); do mkdir ${f%.tar.gz}; tar xfzv $f -C ${f%.tar.gz}; done

Run with the Prefect engine

Omnipy is integrated with the powerful Prefect data flow orchestration library.

  • To run an local example using the prefect engine, e.g.:
    • omnipy-examples --engine prefect isajson
  • After completion of some runs, you can check the flow logs and orchestration options in the Prefect UI:
    • prefect server start

To set up a kubernetes-based deployment on our NIRD test setup, run e.g.:

  • prefect config set PREFECT_API_URL=https://prefect.fairtracks.sigma2.no/api
  • prefect deploy -n isajson

The configuration of this job is found in the file prefect.yaml.

More info on Prefect configuration will come soon...

Development setup

  • Install Poetry:

    • curl -sSL https://install.python-poetry.org | python3 -
  • Install dependencies:

    • poetry install --with dev
  • Update all dependencies:

    • poetry update
  • Update single dependency, e.g.:

    • poetry update omnipy
  • If a dependency is not updated to the latest version available on Pypi, you might need to clear the pip cache of poetry:

    • poetry cache clear pypi --all

For mypy support in PyCharm

  • In PyCharm, install "Mypy" plugin (not "Mypy (Official)")
    • which mypy to get path to mypy binary
    • In the PyCharm settings for the mypy plugin:
      • Select the mypy binary
      • Select pyproject.toml as the mypy config file

For automatic formatting and linting

I have added my typical setup for automatic formatting and linting. The main alternative is to use black, which is easier to set up, but it does not have as many options. I am not fully happy with my config, but I at least like it better than black.

  • In PyCharm -> File Watchers:
    • Click arrow down icon
    • Select pycharm-file-watchers.xml
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Finished running "task-transpose-dicts-2-lists-annoying-wombat"! [omnipy.log.registry.RunStateRegistry]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Writing dataset as a gzipped tarpack to "/Users/sveinugu/PycharmProjects/omnipy_examples/outputs/2024_08_27-15_39_30/02_task_transpose_dicts_2_lists.tar.gz" [omnipy.compute.task.TaskWithMixins]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Finished running "func-flow-transpose-dicts-of-lists-of-dicts-2-lists-of-dicts-banana-antelope"! [omnipy.log.registry.RunStateRegistry]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Writing dataset as a gzipped tarpack to "/Users/sveinugu/PycharmProjects/omnipy_examples/outputs/2024_08_27-15_39_30/03_func_flow_transpose_dicts_of_lists_of_dicts_2_lists_of_dicts.tar.gz" [omnipy.compute.flow.FuncFlowWithMixins]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Initialized "func-flow-flatten-nested-json-incredible-bobcat" [omnipy.log.registry.RunStateRegistry]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Started running "func-flow-flatten-nested-json-incredible-bobcat"... [omnipy.log.registry.RunStateRegistry]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Initialized "task-flatten-outer-level-of-all-data-files-axiomatic-ape" [omnipy.log.registry.RunStateRegistry]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Started running "task-flatten-outer-level-of-all-data-files-axiomatic-ape"... [omnipy.log.registry.RunStateRegistry]
[OMNIPY]  Tue Aug 27 15:39:30 2024 - INFO: Finished running "task-flatten-outer-level-of-all-data-files-axiomatic-ape"! [omnipy.log.registry.RunStateRegistry]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnipy_examples-0.8.0.tar.gz (10.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omnipy_examples-0.8.0-py3-none-any.whl (10.2 MB view details)

Uploaded Python 3

File details

Details for the file omnipy_examples-0.8.0.tar.gz.

File metadata

  • Download URL: omnipy_examples-0.8.0.tar.gz
  • Upload date:
  • Size: 10.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.10.8 Darwin/23.6.0

File hashes

Hashes for omnipy_examples-0.8.0.tar.gz
Algorithm Hash digest
SHA256 bb42b8e83f3e10a11eaceb19503cad0664358d778e958591a92a1683a2caa807
MD5 b80afbe861251ad593e3a557839c2dc3
BLAKE2b-256 0ba3e79b9c8a1df2e3723b37ab5c4571d069df54b5ba950e3f883d65cfc36e7e

See more details on using hashes here.

File details

Details for the file omnipy_examples-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: omnipy_examples-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.10.8 Darwin/23.6.0

File hashes

Hashes for omnipy_examples-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e850582c4070fdd39a33e8f573e336b6a60cea273f2946ad55efaf175cc09c41
MD5 7f99b02d643fe5ef248c5b1855b91f85
BLAKE2b-256 c83d54d46e48daa5ce0e2136d941a5698a2b29fcd19df09feb73a26dce4a5178

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page