Various Python / Django utility functions
Project description
Boxine - bx_py_utils
Various Python / Django utility functions
Quickstart
pip install bx_py_utils
Existing stuff
Here only a simple list about existing utilities. Please take a look into the sources and tests for deeper informations.
models utilities
approve_workflow
- Base model/admin/form classes to implement a model with draft/approve versions workflowmanipulate.create_or_update()
- Similar to django'screate_or_update()
with benefitstimetracking.TimetrackingBaseModel()
- Base model with "create" and "last update" date time
data types
data_types.gtin
- ModelField, FormField and validators for GTIN/UPC/EAN numbers, more info: data_types/gtin/README.md
test utilities
datetime.MockDatetimeGenerator()
- Mock djangotimezone.now()
with generic time stampsdatetime.parse_dt()
- Handydatetime.strptime()
converthtml_assertion.HtmlAssertionMixin
- Unittest mixin class with usefull assertments around Django test client testsmodel_clean_assert.CleanMock()
- Context manager to track if modelfull_clean()
was calledusers
- Utilities around user/permission setup for teststime.MockTimeMonotonicGenerator()
- Mocktime.monotonic()
with generic time stamps
performance analysis
dbperf.query_recorder.SQLQueryRecorder
- Context Manager that records SQL queries executed via the Django ORM
humanize
humanize.time.human_timedelta()
- Converts a time duration into a friendly text representation. (X ms
,sec
,minutes
etc.)templatetags.humanize_time.human_duration()
- Verbose time since template tag, e.g.:<span title="Jan. 1, 2000, noon">2.0 seconds</span>
filename.filename2human_name()
- Convert filename to a capitalized namefilename.clean_filename()
- Convert filename to ASCII only via slugify
view utilities
view_utils.dynamic_menu_urls.DynamicViewMenu()
- Register views to build a simple menu with sections
misc
dict_utils.dict_get()
- nested dictget()
dict_utils.pluck()
- Extract values from a dict, if they are presentenviron.cgroup_memory_usage()
- Get the memory usage of the current cgrouperror_handling.print_exc_plus()
- Print traceback information with a listing of all the local variables in each frameiteration.chunk_iterable()
- Create chunks off of any iterableprocessify.processify()
- Will execute the decorated function in a separate processstacktrace.get_stacktrace()
- Returns a filterable and easy-to-process stacktrace
developing
To start developing e.g.:
~$ git clone https://github.com/boxine/bx_py_utils.git
~$ cd bx_py_utils
~/bx_py_utils$ make
help List all commands
install-poetry install or update poetry
install install via poetry
update Update the dependencies as according to the pyproject.toml file
lint Run code formatters and linter
fix-code-style Fix code formatting
tox-listenvs List all tox test environments
tox Run pytest via tox with all environments
tox-py36 Run pytest via tox with *python v3.6*
tox-py37 Run pytest via tox with *python v3.7*
tox-py38 Run pytest via tox with *python v3.8*
tox-py39 Run pytest via tox with *python v3.9*
pytest Run pytest
pytest-ci Run pytest with CI settings
publish Release new version to PyPi
makemessages Make and compile locales message files
start-dev-server Start Django dev. server with the test project
clean Remove created files from the test project (e.g.: SQlite, static files)
You can start the test project with the Django developing server, e.g.:
~/bx_py_utils$ make start-dev-server
This is a own manage command, that will create migrations files from our test app, migrate, collectstatic and create a super user if no user exists ;)
If you like to start from stretch, just delete related test project files with:
~/bx_py_utils$ make clean
...and start the test server again ;)
License
MIT. Patches welcome!
Links
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
File details
Details for the file bx_py_utils-20.tar.gz
.
File metadata
- Download URL: bx_py_utils-20.tar.gz
- Upload date:
- Size: 27.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fc9b3a78bf82a02ee5d823f45af4623f8c3bec360434b4ae4b87d01cc0ff03a |
|
MD5 | a3617a776405cbc5cddf6f146b92de1a |
|
BLAKE2b-256 | ceeae62445fd33e975a253b22c1f8785e30cc4379088a657eb0e353634f23d7d |
File details
Details for the file bx_py_utils-20-py3-none-any.whl
.
File metadata
- Download URL: bx_py_utils-20-py3-none-any.whl
- Upload date:
- Size: 38.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b7d21e89e5cc99e400ab0bd910632c2d79c7b27aa45afaaa65f4dec2274496e |
|
MD5 | d03acedd1b54e114f4f0109cac5dce45 |
|
BLAKE2b-256 | 3eb8324489c90c6a1367f6e394e40f0d5e9d6eae2f5ea07de2f8e7840d200bdf |