About
=====
This is my personal collection of snippets that I use in multiple projects.
Each one feels a bit to small to merit it's own library.
So what does it include?
* memoize decorator (caching)
* a storage class wrapping a dict.
* unittest assert functions.
* Functions for handling large JSON documents.
* list_dir(path) -> (dirnames, filenames)
* PID file locking
* A synchronization decorator
Note that many or all of these are old and that there is better alternatives these days.
Feedback and getting involved
-----------------------------
Send feedback and bug reports by email to hcs at furuvik dot net.
- Code Repository: https://gitlab.com/hcs/hcs_utils
News
====
2.1
------
*Release date: 2024-09-03*
* Removed versioneer because of lack of released Python 3.12 support.
* Switched to poetry based buildsystem.
* Misc non code updates
* ruff auto formatting
* Fixed errors and warnings reported by ruff and mypy
2.0
------
*Release date: 2015-09-14*
+ Now only supports Python 3.4
+ Improved thread safety for Lock
+ Bugfix for file handling i daemon
+ Code cleanup and some more tests
1.5
------
*Release date: 2014-02-11*
+ Added support to path.watch_files_callback for controlled shutdown
+ Lock, improved exception handling for edge case.
1.4
------
*Release date: 2013-11-19*
+ Fix for daemon, started even if it already was started.
1.4rc5
------
*Release date: 2013-04-16*
+ Fix for daemon sigterm handler
1.4rc4
------
*Release date: 2013-04-15*
+ Added logging to Daemon
1.4rc3
------
*Release date: 2013-04-11*
* fixed bug relating to daemon handle sigterm
* Added option to to force recalc of cached value for memoized call
1.4rc2
------
*Release date: 2013-03-21*
* Added unicode support to eq_str
1.4rc1
------
*Release date: 2012-11-16*
* Compatible with python 2.7 and 3.3
* Fixed problem in Lock, timeouts where not used when other thread in same process had the lock.
1.3
------
*Release date: 2012-11-10*
No changes since 1.3rc6
1.3rc6
------
*Release date: 2012--*
* Storage: added storagify and unstoragify (to/from json style data structure)
1.3rc5
------
*Release date: 2011-12-19*
* lock: Improved exception messages (added locking pid).
* lock: Added some debug logging.
1.3rc4
------
*Release date: 2011-09-13*
* Storage: Added generic support for key normalization.
1.3rc3
------
*Release date: 2011-09-06*
* Storage: Added support for running case_insensitive.
* Storage: Added support for default_factory.
1.3rc2
------
*Release date: 2011-08-25*
* Storage: Minor fixes
* daemon: A new module for creating a UNIX daemon.
* lock: Added the option to steal a lock.
1.3rc1
------
*Release date: 2011-07-11*
* PEP8 compliant
* Better test coverage
* added IDLock class to lock module
* Memoize optimization
* path.watch_file
1.3a9
-----
*Release date: 2011-05-31*
* Memoize: bugfixes
1.3a8
-----
*Release date: 2011-05-17*
* ItemStore: fixed bugs in rename and move
1.3a7
-----
*Release date: 2011-04-26*
* Memoize: Added support for instance methods
1.3a6
-----
*Release date: 2011-04-11*
* Added timeout to lockfile
1.3a5
-----
*Release date: 2011-04-06*
* Added locking to itemstore
* Added a file change watcher
* Some bugfixes
* PEP8 cleanup
1.3a4
-----
*Release date: 2011-02-11*
* Optimized Store.__contains__
* memoized functions can now be recursive
1.3a3
-----
* 1.3 will only support Python 2.6 and 2.7
* Testing using py.test instead of nose
* added hcs_utils.path.walkfiles() recursive file generator
* hcs_utils.itemstore Kind of on disk object/file/directory store
* some smaller functionality
* bunch of fixes
1.2
---
*Release date: 2011-01-07*
No changes since 1.2rc5
1.2.rc5
-------
*Release date: 2010-11-30*
* unittest.eq_json, sorted output so that it can be used with dicts.
* unittest switched place on ndiff arguments
1.2.rc4
-------
*Release date: 2010-06-15*
* Dropped support for Python 2.5
* Added hcs_utils.collections.ListBuilder, a nice way to manually build lists.
* Added hcs_utils.lock.Lock, Interprocess locking using a PID symlink.
* Added hcs_utils.path.scan_for_new_files()
* Added hcs_utils.path.tempdir context.
* Added hcs_utils.storage.Storage.\__contains__ and \__iter__
* Added hcs_utils.storage.json* Storage vs. json helpers
* Added hcs_utils.threading.synchronization decorator.
* Memoize is now thread safe.
* hcs_utils.path.list_dir now returns a namedtuple
1.1
---
*Release date: 2010-04-22*
* Fixed unpickeling of Storage objects.
1.0
---
*Release date: 2010-04-18*
* Initial release
Metadata
Release files for hcs-utils 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hcs_utils-2.1.0.tar.gz | 17.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hcs_utils-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.8 kB
Release files / hcs_utils-2.1.0.tar.gz
| Download URL | hcs_utils-2.1.0.tar.gz |
|---|---|
| Size | 17.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b6c4efa17722508e0204723b660d92e2732cf69332918eda448607b9c9a6bb3
|
|
BLAKE2b-256 checksum How to use checksums |
42c48f3769cfa11b18bceb37292adc3b1b709578bd21d92543500644560238c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.12.5 Linux/6.10.4_1
|
Release files / hcs_utils-2.1.0-py3-none-any.whl
| Download URL | hcs_utils-2.1.0-py3-none-any.whl |
|---|---|
| Size | 23.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab493fe39f2428c49f0799a36d4029cab8eefb5ee17121e3b51ef12dbaa5269b
|
|
BLAKE2b-256 checksum How to use checksums |
2eb6ed03f0cdac7f3b49064644d15e7221ec012c7e937819038b52ec7b88d1ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.12.5 Linux/6.10.4_1
|
Security for hcs-utils 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.