Giter VIP home page Giter VIP logo

pkglib's Introduction

PkgLib: Company-centric Python packaging and testing library

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

IMPORTANT: this library has a bit of cleanup work to be done before it is releasable on pypi.python.org (like getting all the tests passing again), this will be completed over the next couple of months.

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 useful py.test plugins.
  • pkglib.project_template: a PasteScript template for generating packages that integrate with pkglib

Headline Features

PkgLib

  • Package metadata all sourced from text-file setup.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 with python setup.py test:
    • Configured for sensible defaults for code coverage and quality analysis
    • Detects 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 powerful setup.py targets:
    • 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 PyPI
    • Create 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 template

PkgLib.Testing

  • Utilities with associated Py.Test fixture plugins for:
    • Profiling code execution, including C/C++ extensions
    • Managing temp dirs
    • Creating virutalenvs
    • Creating pkglib enabled packages
    • Running 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.

Roadmap

  • Full support for git and mercurial.
  • OSX support
  • Python 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 like distlib.
  • Add support for wheel binary distribution format.

Contributors

pkglib's People

Contributors

eeaston avatar intiocean avatar oisinmulvihill avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.