Skip to content

RobRuana/pockets

Repository files navigation

Pockets full of useful Python tools!

Let me check my pockets...

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...

>>> from pockets.autolog import log
>>> log.error("Always log from the correct module.Class!")
mymodule.MyClass: Always log from the correct module.Class!
>>> from pockets import camel
>>> camel("xml_http_request", upper_segments=[1])
'XmlHTTPRequest'
>>> from pockets import uncamel
>>> uncamel("XmlHTTPRequest")
'xml_http_request'
>>> from pockets import resolve
>>> resolve("calendar.TextCalendar")
<class 'calendar.TextCalendar'>
>>> from pockets import iterpeek
>>> p = iterpeek(["a", "b", "c", "d", "e"])
>>> p.peek()
'a'
>>> p.next()
'a'
>>> p.peek(3)
['b', 'c', 'd']

Downloads and Docs

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.

Build Status

Build Status

Coverage Status

Documentation Status

About

Pockets full of Python tools!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages