pybfc

Copyright 2010 Boris Figovsky <borfig@gmail.com>

pybfc is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

pybfc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with pybfc.  If not, see <http://www.gnu.org/licenses/>.

pybfc is a generic purpose library in Python, that includes:

- An Attribute Dictionary - a proxy to a dictionary via attributes;
- Function caching;
- Dependency Graphs: creating, managing and running tasks in DFS and threaded modes;
- Directed Graphs;
- Freezing concept: making stuff hashable and comparable;
- Frozen Dict: like frozenset but a dict;
- Linked-list: a double linked list;
- Derivable Data: data containers with inheritance
  - DerivedSet;
  - DerivedDict;
  - NamedContext: each context has a name, local data, derivable data and bubbles -
                  to control contexts that derive from it.
- Thread Pool;
- Multi-lock, to manage multi locking requests easily;
- Orderded Data:
  - ordered set
  - ordered dict (Python 2.7 has this already)
- File-like:
  - Indented file - a wrapper for file objects to write indented text;
  - Blocked file - a wrapper for file objects to write block-like text;
  - thread-safe line writer;
- Picklable:
  - Modules and callables in them;
  - partial (Python 2.7 fixed this already)
- Views: can iterate on the same data multiple times
  - generators;
  - sequences of weak refs;
- Utilities and wrappers:
  - Python code compilation;
  - exec statement add-ons;
  - cached file importing;
  - OS related;
  - multiprocessing related;

Installation:

- python setup.py install

Testing:

The source distribution of this library contains testing infrastructure.
You need nosetools and pycoverage to run the tests.