Skip to main content

Python Tools

Project description

mmf_setup

This meta-project provides an easy way to install all of the python tools I typically use. It also serves as a fairly minimal example of setting up a package the pip can install, and specifying dependencies.

In particular, I structure it for the following use-cases:

  1. Rapid installation and configuration of the tools I need. For example, I often use [Sage Mathcloud](cloud.sagemath.com). Whenever I create a new project, I need to perform some initialization. With this project, it is simply a matter of using pip to install this package, and then using some of the tools.

  2. Initial setup of a python distribution on a new computer. This is a little more involved since one needs to first install python (I recommend using Miniconda) and then updating the tools.

  3. A place to document various aspects of installing and setting up python and related tools. Some of this is old, but kept here for reference.

Quickstart (TL;DR)

  1. Install this package from the source directory, PyPI, etc. with one of the following:

  • Directly from PyPI

pip install --user mmf_setup

  • From Source

    pip install --user hg+https://bitbucket.org/mforbes/mmf_setup

  • From Local Source (Run this from the source directory after you unpack it.)

pip install --user .

Note: these can be run without the --user flag if you want to install them system-wide rather than into site.USER_BASE.

  1. To get the notebook tools for Jupyter (IPython) notebooks, execute the following as a code cell in your notebook and then trust the notebook with File/Trust Notebook:

    import mmf_setup; mmf_setup.nbinit()

    This will download and enable the calico extensions, as well as set the theme which is implemented in the output cell so it is stored for use online such as when rendered through NBViewer. One can specify different themes. (Presently only theme='default' and theme='mmf' are supported.)

  2. To use the mercurial shell tools, source the mmf_setup file:

    . mmf_setup

    This will add a custom hgrc file to your HGRCPATH which provides commands for committing clean notebooks such as hg ccommit and hg cstatus.

Installing Tools

The following code will download and install the Calico notebook extensions from here:

import mmf_setup.notebook_configuration
mmf_setup.notebook_configuration.install_extensions()

Mercurial (hg) Tools

If you source the output of the mmf_setup script:

. mmf_setup

then your HGRCPATH will be amended to include this projects hgrc file which does the following:

  1. Adds some useful extensions.

  2. Adds the following commands:

    • hg lga (or hg lg): provides a nice concise graphical display of the repo.

    • hg cstatus (or hg cst):

    • hg cdiff: same for hg diff

    • hg cediff: same for hg ediff

    • hg crecord: same for hg record. Note, this does not function like commit - it will not record the notebooks with the full output.

    • hg ccommit (or hg ccom): same for hg com but also commits the full version of the notebooks with output as a new node off the present node with the message OUT: Automatic commit of output. The files in the repository will be left with the clean commit as the parent so this output commit will be dangling unless you want to include it.

Developer Notes

There are a couple of subtle points here that should be mentioned.

  • I explored both (un)shelve and commit/strip versions of saving the current state. While the former allows for shorter aliases, it can potentially trigger merges, so we use the latter.

  • I sometimes write commit hook. These should only be run on the real commit, so we define the alias _commit which will bypass the hooks as discussed here.

  • The list of files to strip is generated by hg status -man. This only includes added or modified files. This, if a notebook was commited with output (using hg com) then it will not be stripped.

  • Our approach of . mmf_setup sets HGRCPATH but if this was not set before, then this will skip the default search. As such, we insert ~/.hgrc if HGRCPATH was not previously set. This is not ideal, but short of sticking an %include statement in the users ~/.hgrc file, or creating an hg alias, I do not see a robust solution. Note: we only insert ~/.hgrc if HGRCPATH is not defined - I ran into problems when always inserting it since this can change the order of precedence.

  • Chain commands with semicolons ; not && so that things are restored even if a command fails. (For example, hg ccom with a notebook that only has output changes used to fail early.)

Notes

Various notes about python, IPython, etc. are stored in the docs folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mmf_setup-0.1.4.tar.gz (53.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page