Development Practices

Release procedure

  • merge outstanding feature branch(es) into develop
    • $ git checkout develop
    • $ git merge --no-ff {feature-branch}
  • complete release updates
    • update version number in pptx/
    • update (shouldn’t usually be any changes)
    • update, in particular, the release history
    • update doc/index.rst
    • confirm docs compile without errors
    • run all tests (behave, nosetests, tox)
    • create trial distribution (make clean sdist)
    • git commit -m 'Release v0.2.2'
    • merge develop into master
      • $ git checkout master
      • $ git merge --no-ff develop
    • create tag for new version
      • $ git tag -a v0.2.5 -m 'Release version 0.2.5'
  • release uploaded to PyPI
    • upload: make upload
  • synchronize local repo with github
    • $ git push scanny develop
    • $ git push scanny master
    • $ git push --tags
  • docs regenerated
    • trigger regeneration of docs on

Creating a hand-modified package

  • remove file, e.g. /docProps/core.xml
  • remove reference from [Content_Types].xml
  • remove relationship(s) from _rels/.rels or wherever they are


rm -f ../no-core-props.pptx && zip -Dqr ../no-core-props.pptx .

Procedure – Adding a new feature

  • issue added to github issue tracker
  • git feature branch created
  • working analysis documented
  • acceptance test failing (not just raising exceptions)
  • recursively, outside in:
    • unit test failing
    • next level method(s) written
    • unit test passing
  • all tests passing
    • unit
    • acceptance
    • tox
    • visual confirmation of behavior in PowerPoint
  • documentation updated as required
    • API additions
    • example code
  • feature branch committed, rebased if required
  • feature branch merged into develop
    • git flow feature finish paragraph-level
  • changes pushed to github
  • issue closed

Outside-in layers

  • API wrapper method (if applicable)
  • Internal API method
  • objectify manipulation layer
  • perhaps others

Creating slide images for documentation

  • Desired slide created using a test script
  • Zoom slide to 100% with: click on slide, View > Zoom > Zoom… > 100% > OK
  • Screenshot file on desktop using Cmd-Shift-4, Space, click
  • Load into PhotoShop and crop, keeping dark gray border
  • Save as PNG, scaled to 280 x 210px
  • Completed image saved in doc/_static/img/

Acceptance testing with behave

… using behave for now for acceptance testing …


pip install behave


The behave tutorial is well worth working through.

And this more detailed set of examples and tutorials is great for getting the practicalities down.