The Pockets library pulls together many of the Python helper functions I've found useful over the years.
If you've worked on a project that exports an API and accesses a data store, you've probably seen some code that looks like this:
# Receive a data type with underscores from some API data_type = 'user_preference' # Convert underscored data type to CamelCase to match the data model model_name = camel(data_type) # Resolve the model name into a model class model_class = resolve(model_name, modules=["webapp.model.admin", "webapp.model.user", "webapp.model.businesslogic"] # Instantiate the model class and do stuff with the instance... instance = model_class()
There's an impedance mismatch any time you work with two different frameworks; especially when you want to update your back-end while maintaining legacy compatibility with an external API.
Pockets is full of highly tested, well maintained functions that help bridge the gap. Here are just a few examples...
Easily get the right logger no matter where you are
>>> from pockets.autolog import log >>> log.error("Always log from the correct module.Class!") mymodule.MyClass: Always log from the correct module.Class!
Convert underscore_separated string to CamelCase
>>> from pockets import camel >>> camel("xml_http_request", upper_segments=[1]) 'XmlHTTPRequest'
Convert CamelCase string to underscore_separated
>>> from pockets import uncamel >>> uncamel("XmlHTTPRequest") 'xml_http_request'
Resolve a string into an object
>>> from pockets import resolve >>> resolve("calendar.TextCalendar") <class 'calendar.TextCalendar'>
Peek ahead iterator
>>> from pockets import iterpeek >>> p = iterpeek(["a", "b", "c", "d", "e"]) >>> p.peek() 'a' >>> p.next() 'a' >>> p.peek(3) ['b', 'c', 'd']
Full documentation is available on Read the Docs.
Built packages are available on PyPI.
Source code is available on GitHub. Feel free to:
- Create an issue to request a feature or a report a bug.
- Fork the repository and make changes to the master branch for next release.
- Send a pull request and pester the maintainer until it's merged. Make sure to add yourself to AUTHORS and update CHANGES.