Skip to content
πŸ’«PyScaffold extension for data-science projects
Branch: master
Clone or download
Latest commit d85a082 Jul 11, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Initial commit Jul 1, 2019
src/pyscaffoldext Fixed docs in README template Jul 11, 2019
tests Some flake8 fixes Jul 2, 2019
.coveragerc Initial commit Jul 1, 2019
.gitignore Initial commit Jul 1, 2019
.isort.cfg Initial commit Jul 1, 2019
.pre-commit-config.yaml Completed structure Jul 2, 2019
.travis.yml Completed structure Jul 2, 2019
AUTHORS.rst Initial commit Jul 1, 2019
CHANGELOG.rst Version bump Jul 11, 2019
LICENSE.txt Initial commit Jul 1, 2019 Fixed missing directory in README Jul 11, 2019
setup.cfg Version bump Jul 6, 2019 Some flake8 fixes Jul 2, 2019
tox.ini Initial commit Jul 1, 2019

Build Status Coveralls PyPI-Server


PyScaffold extension tailored for Data Science projects. This extension is inspired by cookiecutter-data-science and enhanced in many ways. The main differences are that it

  1. advocates a proper Python package structure that can be shipped and distributed,
  2. uses a conda environment instead of something virtualenv-based and is thus more suitable for data science projects,
  3. more default configurations for Sphinx, py.test, pre-commit, etc. to foster clean coding and best practices.

Also consider using dvc to version control and share your data within your team.

The final directory structure looks like:

β”œβ”€β”€ AUTHORS.rst             <- List of developers and maintainers.
β”œβ”€β”€ CHANGELOG.rst           <- Changelog to keep track of new features and fixes.
β”œβ”€β”€ LICENSE.txt             <- License as chosen on the command-line.
β”œβ”€β”€               <- The top-level README for developers.
β”œβ”€β”€ configs                 <- Directory for configurations of model & application.
β”œβ”€β”€ data
β”‚   β”œβ”€β”€ external            <- Data from third party sources.
β”‚   β”œβ”€β”€ interim             <- Intermediate data that has been transformed.
β”‚   β”œβ”€β”€ processed           <- The final, canonical data sets for modeling.
β”‚   └── raw                 <- The original, immutable data dump.
β”œβ”€β”€ docs                    <- Directory for Sphinx documentation in rst or md.
β”œβ”€β”€ environment.yaml        <- The conda environment file for reproducibility.
β”œβ”€β”€ models                  <- Trained and serialized models, model predictions,
β”‚                              or model summaries.
β”œβ”€β”€ notebooks               <- Jupyter notebooks. Naming convention is a number (for
β”‚                              ordering), the creator's initials and a description,
β”‚                              e.g. `1.0-fw-initial-data-exploration`.
β”œβ”€β”€ references              <- Data dictionaries, manuals, and all other materials.
β”œβ”€β”€ reports                 <- Generated analysis as HTML, PDF, LaTeX, etc.
β”‚   └── figures             <- Generated plots and figures for reports.
β”œβ”€β”€ scripts                 <- Analysis and production scripts which import the
β”‚                              actual PYTHON_PKG, e.g. train_model.
β”œβ”€β”€ setup.cfg               <- Declarative configuration of your project.
β”œβ”€β”€                <- Make this project pip installable with `pip install -e`
β”‚                              or `python develop`.
β”œβ”€β”€ src
β”‚   └── PYTHON_PKG          <- Actual Python package where the main functionality goes.
β”œβ”€β”€ tests                   <- Unit tests which can be run with `py.test` or
β”‚                              `python test`.
β”œβ”€β”€ .coveragerc             <- Configuration for coverage reports of unit tests.
β”œβ”€β”€ .isort.cfg              <- Configuration for git hook that sorts imports.
└── .pre-commit-config.yaml <- Configuration of pre-commit git hooks.

See a demonstration of the initial project structure under dsproject-demo and also check out the the documentation of PyScaffold for more information.


Just install this package with pip install pyscaffoldext-dsproject and note that putup -h shows a new option --dsproject. Creating a data science project is then as easy as:

putup --dsproject my_ds_project


This project has been set up using PyScaffold 3.2. For details and usage information on PyScaffold see

You can’t perform that action at this time.