Skip to content

Latest commit

 

History

History
102 lines (61 loc) · 4.65 KB

CONTRIBUTING.md

File metadata and controls

102 lines (61 loc) · 4.65 KB

Development & Contribution guide

Below are all the details you need to get started helping with the ezspreadsheet project.

Table of contents

Submitting issues

There is a template setup for bug reports, feature requests and questions on github, simply go:

Submitting Pull requests

When you try to submit a pull request there will be an automated template generated that you need to fill out.

On top of that here are the required standards:

  • Commenting is present in all Classes, modules, and functions. Use numpydocs style docstrings
  • Any new functionality has associated tests
  • Functionality has been validated on Linux/Mac and windows (pytest greenlight from github actions on the PR is good enough)
  • Validated this change does not break backwards compatibility without good reason

Roadmap

For current roadmap, and development planning details see our roadmap. This is how releases are planned and will give you an overview of what is being worked on for the current/future releases.

Setting up your development environment

Prerequisites

You will need the following to work on ezspreadsheet:

  • Python 3.6+
    • Be aware some tests will fail on version 3.6 because of lack of dataclasses, this is fine
  • Pip for python 3
  • Windows or *nix (Linux or Mac OS) operating system

Installing development dependencies

There are a few dependencies you will need to use this package fully, they are specified in the extras require parameter in setup.py but you can install them manually:

nox   	# Used to run automated processes
pytest 	# Used to run the test code in the tests directory
pdoc3	# Generates API documentation

Just go through and run pip install <name> or sudo pip3 install <name>. These dependencies will help you to automate documentation creation, testing, and build + distribution (through PyPi) automation.

Folder & File Structure

A Brief explanation of how the project is set up for people trying to get into developing for it

/tests

Contains tests to be run before release

Files in root directory

ezspreadsheet.py: Contains all the functionality for ezspreadsheet

setup.py: Contains all the configuration for installing the package via pip.

LICENSE: This file contains the licensing information about the project.

CHANGELOG.md: Used to create a changelog of features you add, bugs you fix etc. as you release.

CONTRIBUTING.md: This file, contains details about development processes

.deepsource.toml: Deepsource is used for code quality and security validation

noxfile.py: Used to configure various automated processes using nox, these include;

  • Building release distributions
  • Releasing distributions on PyPi
  • Running test suite agains a number of python versions (3.5-current)

If anything to do with deployment or releases is failing, this is likely the suspect.

There are 4 main sessions built into the noxfile and they can be run using nox -s <session name> i.e. nox -s test:

  • build: Creates a source distribution, builds the markdown docs to html, and creates a universal wheel distribution for PyPi.
  • release: First runs the build session, then asks you to confirm all the pre-release steps have been completed, then runs twine to upload to PyPi
  • test: Runs the tests specified in /tests using pytest, and runs it on python versions 3.5-3.8 (assuming they are installed)
  • docs: Serves the docs on a local http server so you can validate they have the content you want without having to fully build them.

.gitignore: A preconfigured gitignore file (info on .gitignore files can be found here: https://www.atlassian.com/git/tutorials/saving-changes/gitignore)