Skip to content

Latest commit

 

History

History
118 lines (79 loc) · 3.42 KB

README.rst

File metadata and controls

118 lines (79 loc) · 3.42 KB

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