Skip to content

xmnlab/scicookie

 
 

Cookiecutter Python Package

SciCookie is a template developed by Open Science Labs that creates projects from project templates and is based on Cookieninja A Cookiecutter Fork command-line utility. It serves as a boilerplate which can be used by beginners as well as full fledged developers to simplify the project creation process and save considerable amount of time. Cookieninja enables projects with an initial layout that includes recommended tools, workflows, and project structure.

Cookieninja also offers other features that can enhance the workflow of the development process. Features such as automatic documentation generation, automated testing, and project-specific configuration are part of this. Overall, Cookieninja is an efficient tool that gives users the ability to effortlessly create consistent, high-quality projects.

Open Science Labs Scientific Python cookiecutter template is primarily based on the PyOpenSci recommendations who is actively conducting research to determine the tools, libraries, best practices, and workflows utilized by significant scientific Python groups. As a result, this template offers to authors a starting point for their project that adheres with industry standards and can be adjusted to meet particular project requirements.

Cookieninja template for a Python package.

Features

  • Allows package slug (use _ instead of -)
  • Licenses supported: MIT, BSD 3 Clause, ISC License, Apache Software License 2.0, and GPL 3
  • Documentation engines: mkdocs, sphinx, jupyter-boook
  • Test library: pytest
  • Auto format code tool: blue and black
  • Initial integration with git
  • Support to conda (as base environment) and poetry as packaging and dependency management
  • Support to pre-commit
  • CI with github actions
  • Release workflow with semantic release and github actions
  • The structure of the project can use the src layout or flat layout. The “src layout” moving the code that is intended to be importable into a subdirectory. This subdirectory is typically named src. "Flat layout" refers to organising a project's files in a folder or repository so that the various configuration files and import packages are all in the top-level directory. You can read about their differences at https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/
  • Finding common security problems in Python code using bandit
  • Offers the option to use pydocstyle for checking compliance with Python documentation conventions.
  • Finds unused code in Python programs using vulture.
  • To automatically detect overly complex code based on cyclomatic complexity, the template gives you the option to use the McCabe library, which is included via flake8.
  • Provides the option to add initial files that allow you to run and orchestrate containers using Docker or Podman in your project.

Quickstart

Install the latest Cookieninja if you haven't installed it yet (this requires Cookieninja 1.0.0):

pip install scicookie

Go to a desired folder to create your new project, for example:

cd ~/dev/my-python-projects

Generate a Python package project:

scicookie

Development

For testing your changes locally, you can run:

makim tests.lint
makim tests.unittest
makim tests.smoke

About

Cookiecutter template for a Python package.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 70.2%
  • Shell 9.3%
  • Makefile 8.2%
  • Dockerfile 6.2%
  • Jupyter Notebook 3.5%
  • Batchfile 2.6%