Package: pkglib
PkgLib: Company-centric Python packaging and testing libraryKindly open-sourced by AHL, this library has the goal of providing a
one-stop-shop for Python development houses to get up and running using Python
with the minimum of fuss in a Linux development environment.This library has three main components:pkglib: a set of packaging tools which extend on a number of the major
packaging toolsets in Python - distribute, pip and zc.buildout.pkglib.testing: a suite of testing utilities to assist with handling
services, databases, web drivers and coverage amongst other things, as well
as a number of usefulpy.testplugins.pkglib.project_template: a PasteScript template for generating packages
that integrate withpkglibDocumentationThere are the slides from my EuroPython 2013 talk up athttp://github.com/eeaston/pkglib-docs, and the API docs are published athttps://readthedocs.org/projects/pkglib.Headline FeaturesPkgLibPackage metadata all sourced from text-filesetup.cfg, making it easier
to parse package configuration by other releated tools.Advanced dependency management:Allows configuration of in-house company packages that are treated
differently than third-party libraries.Backtracking dependency resolver to solve the difficult ‘diamond problem’
of version resolution in complex dependency graphs.Understands ‘dev’ and ‘release’ version streams, allowing the user to
operate in either mode.Tools to visualise dependency graphs from your current virtualenv.Improved PyPI interaction, prompts for user credentials and raises correct
Unix return codes on error.Installer search path support to allow eggs to be linked into virtualenvs
from shared disk, an important feature when working on shared filesystems in
large teams.Keeps things neat and tidy - cleans out unused packages from your virtualenv’s
site-packages directory.Py.Test integration withpython setup.py test:Configured for sensible defaults for code coverage and quality analysisDetects when running under Jenkins and Hudson, swapping to file-based
reporting and altering tempfile creation.Command-line tool for managing software ‘platforms’, an abstraction upon
single packages when large numbers of interdependant packages are released
together.Checkout and setup packages from in-house repositories by name rather than
url.Numerous powerfulsetup.pytargets:Combine standalone package docs with automatic API documentation using
Sphinx.Run tests using gcov to allow gathering code coverage of C/C++ extensions.Synchronise checkouts and libraries with VCS and PyPICreate Jenkins/Hudson builds.Generate revision-linked development eggs for build systems.Generate test-only eggs to capture test code and runtime options.Deploy package to versioned virtualenvs.‘Batteries Included’ project templatePkgLib.TestingUtilities with associated Py.Test fixture plugins for:Profiling code execution, including C/C++ extensionsManaging temp dirsCreating virutalenvsCreatingpkglibenabled packagesRunning up servers instances in a port-safe manner, with save, restore and
teardown.Supported servers include jenkins, redis, mongodb, Pyramid and (TODO) a
minimal PyPI implementation.Selenium Webdriver, integrated with the Pyramid server runner plugin.Page Objects pattern implementation for better structured Selenium tests.Mocking implementations for databases and other common types.RoadmapFull support for git and mercurial.OSX supportPython 2.4 -> 3.x support for core distlib functionality.Upgrade to latest versions of distribute, and bring the project in-line with
recent developements in the Python packaging space likedistlib.Add support for wheel binary distribution format.ContributorsEdward Easton (eeaston@gmail.com)David Moss (drkjam@gmail.com)Terry SantegoedsEd Catmur (ed@catmur.co.uk)Ben WalshTim Couper (drtimcouper@gmail.com)Inti Ocean (me@inti.co)Andrew BurrowsJames BlackburnStepan Kolesnik (wigbam@yahoo.co.uk)Oisin Mulvihill (oisin.mulvihill@gmail.com)