Skip to content

dynamic-graphics-inc/dgpy-libs

Repository files navigation

drawing

dgpy-libs

Ruff

Docs: dynamic-graphics-inc.github.io/dgpy-libs

Repo: github.com/dynamic-graphics-inc/dgpy-libs


Dynamic Graphics python libraries, home of:

  • Callable modules and packages
  • Recursive list/gen comprehensions
  • Nutty decorators
  • Secret agent JSON Bourne
  • The best package names around
  • Notebooks with funky python
  • Dynamic imports

Libs

libs
├── aiopen
├── asyncify
├── dgpylibs
├── dgpytest
├── fmts
├── funkify
├── h5
├── jsonbourne
├── lager
├── listless
├── requires
├── shellfish
└── xtyping

Install: pip install aiopen asyncify fmts funkify h5 jsonbourne lager listless requires shellfish xtyping

aiopen ~ pip install aiopen ~ Wheel Version py_versions

asyncify ~ pip install asyncify ~ Wheel Version py_versions

dgpylibs ~ pip install dgpylibs ~ Wheel Version py_versions

dgpytest ~ pip install dgpytest ~ Wheel Version py_versions

fmts ~ pip install fmts ~ Wheel Version py_versions

funkify ~ pip install funkify ~ Wheel Version py_versions

h5 ~ pip install h5 ~ Wheel Version py_versions

jsonbourne ~ pip install jsonbourne ~ Wheel Version py_versions

lager ~ pip install lager ~ Wheel Version py_versions

listless ~ pip install listless ~ Wheel Version py_versions

requires ~ pip install requires ~ Wheel Version py_versions

shellfish ~ pip install shellfish ~ Wheel Version py_versions

xtyping ~ pip install xtyping ~ Wheel Version py_versions

About

This repo (dgpy-libs) are the polished gems formed under intense pressure below the offices of Dynamic Graphics Inc. These pure-python libraries are all published on pip under the listed names.

Design PhilosoPY

  • dgpy-libs must have excellent names and be published on pip
  • Embrace async/await
  • Python 3.6 'n up, baby! (May move to 3.7 for __future___.annotations... tbd)
  • Use type annotations everywhere
  • No dead or commented out code
  • Prefer pure-python & compiled-3rd-party-libs over writing packages with compiled extensions
  • Use optional compiled-3rd-party-libs as optional dependencies to sneakily speed things up if present
  • Offer integrations with the super-hot-fire modern python packages all the kids are using
  • Optional dependencies are good! Missing optional deps should trigger an error msg that is helpful to installing the relevant dependency ONLY IF THE DEPENDENCY IS NEEDED.
  • Test coverage is usually a dumb metric and 100% test coverage != bug-free code (tests of dgpy-libs are slowly being migrated from internal/private repos to this repo)

Third party friends

  • pydantic; best python lib you will ever use
  • loguru; base of lager
  • httpx ; don't use requests
  • attrs; pydantic alternative
  • poetry; best dep management python has to offer
  • orjson; fastest python json lib (opt dep of jsonbourne)
  • rapidjson/python-rapidjson; best mostly drop-in replacement for python's json module
  • h5py; base of h5
  • rich; best python console formatting lib
  • nox; like tox but less maddening

Notebooks

notebooks/
├── cache_money.ipynb
├── filter_none.ipynb
├── json_parsing.ipynb
└── string_fmt.ipynb

Contributor(s):

  • Jesse Rubin ~ jesse@dgi.com / jessekrubin@gmail.com
  • Dan Costello ~ dan@dgi.com / dan.costello2@gmail.com
  • Possibly you!?

Contributing:

Plz do! Send me that PR!


TODO:

  • Have CI/CD auto build n publish
  • Changelog (for real)
  • Figure out why the combine-prs workflow doesn't trigger github actions...
  • Update mkdocs to include all dgpy-libs