From c311c26889e68c1bc8b426a6e94e4ac14e91d933 Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 04:54:44 +0530 Subject: [PATCH 01/11] chore(vcs): ignore redis db :see_no_evil: --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 9cc9f05..60b75e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ # Ignoring shape predictor app/data/classifiers/*.dat +# redis dump db +dump.rdb + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] From 1a56a4f1837491d14cf78c3b09abd70d630225b9 Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 04:54:59 +0530 Subject: [PATCH 02/11] docs: update README :memo: --- README.md | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cacf173..d965a0d 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,35 @@ -

+

logo-text -

RESTful API for the CSSI Platform

+

RESTful API for the CSSI Platform

-

- +

+ + + + + + - License: MIT + License: MIT + + + Requirements Status + + + Github stars + + Github forks + + + Twitter + + + + +

# Getting Started From 21f770aee5467102e12ab586943136058006c6ed Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 05:20:09 +0530 Subject: [PATCH 03/11] chore(scripts): add release shell scripts --- VERSION.txt | 1 + scripts/release.sh | 37 ++++++++++++++ version.py | 124 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+) create mode 100644 VERSION.txt create mode 100644 scripts/release.sh create mode 100644 version.py diff --git a/VERSION.txt b/VERSION.txt new file mode 100644 index 0000000..9a4043a --- /dev/null +++ b/VERSION.txt @@ -0,0 +1 @@ +0,1,0,alpha,1,0,0 \ No newline at end of file diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100644 index 0000000..be64f57 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -u -e -o pipefail + +# Used for production releases. +# Args: release_type: ["major", "minor", "patch", "premajor", "preminor", "prepatch", "prenext", "dev", "post"] +# release_level: ["alpha", "beta", "candidate", "final"] + +RELEASE_TYPE=$1 +RELEASE_LEVEL=$2 + +echo "======================================================" +echo " Releasing CSSI API for Production\n" +echo " Release Type: $RELEASE_TYPE" +echo " Release Level: $RELEASE_LEVEL" +echo "======================================================" + +# Construct the new version by executing the `construct_release_version()` function +# in `version.py` script inside the `cssi` package. +NEW_VERSION=$(python -c "from version import construct_release_version; print(construct_release_version('$RELEASE_TYPE', '$RELEASE_LEVEL'))") + +# Tag the release +git tag -a ${NEW_VERSION} -m "release: cut the v$NEW_VERSION release" +git push origin ${NEW_VERSION} + +# Generate the changelog +# Format -o = output file +# -s = commit style {angular,atom,basic} +# -t = template {angular, keepachangelog} +# REPOSITORY = directory that contains the .git folder +git-changelog -o CHANGELOG.md -s angular -t angular . + +# Stage and create a release commit with CHANGELOG.md and VERSION.txt files +git add CHANGELOG.md cssi/VERSION.txt +git commit -m "release: cut the $NEW_VERSION release :tada:" + +echo "Successfully released a new version of CSSI: v$NEW_VERSION" diff --git a/version.py b/version.py new file mode 100644 index 0000000..b6df04b --- /dev/null +++ b/version.py @@ -0,0 +1,124 @@ +# PEP0440 compatible formatted version, see: +# https://www.python.org/dev/peps/pep-0440/ +# +# Final Releases: +# X(.Y)* +# Ex: 0.9 +# 0.9.1 +# 0.9.2 +# Pre-releases +# X.YaN # Alpha release +# X.YbN # Beta release +# X.YrcN # Release Candidate +# X.Y.Z # For bug-fix releases +# +# Post-releases: +# X.YaN.postM # Post-release of an alpha release +# X.YbN.postM # Post-release of a beta release +# X.YrcN.postM # Post-release of a release candidate +# +# Developmental releases +# X.YaN.devM # Developmental release of an alpha release +# X.YbN.devM # Developmental release of a beta release +# X.YrcN.devM # Developmental release of a release candidate +# X.Y.postN.devM # Developmental release of a post-release + +import os + +VERSION_FILE_NAME = "VERSION.txt" +VERSION_FILE_PATH = os.path.join(os.path.split(__file__)[0], VERSION_FILE_NAME) + +# Read the VERSION.txt file and extract the version number +# Version number is saved in the following format +# (major, minor, patch, level, pre_identifier, dev_identifier, post_identifier) +try: + with open(VERSION_FILE_PATH) as vf: + _version = tuple( + vf.read().strip().split(",")) + VERSION = (int(_version[0]), int(_version[1]), int(_version[2]), _version[3], int( + _version[4]), int(_version[5]), int(_version[6])) +except IOError: + raise RuntimeError( + "Unable to read version file on path : {0}".format(VERSION_FILE_PATH)) + + +def _construct_version(major, minor, patch, level, pre_identifier, dev_identifier, post_identifier): + """Construct a PEP0440 compatible version number to be set to __version__""" + assert level in ["alpha", "beta", "candidate", "final"] + + version = "{0}.{1}".format(major, minor) + if patch: + version += ".{0}".format(patch) + + if level == "final": + if post_identifier: + version += ".{0}{1}".format("post", post_identifier) + if dev_identifier: + version += ".{0}{1}".format("dev", dev_identifier) + else: + level_short = {"alpha": "a", "beta": "b", "candidate": "rc"}[level] + version += "{0}{1}".format(level_short, pre_identifier) + if post_identifier: + version += ".{0}{1}".format("post", post_identifier) + if dev_identifier: + version += ".{0}{1}".format("dev", dev_identifier) + return version + + +def construct_release_version(release_type, release_level="final"): + """Constructs the version number based on the release type and level.""" + assert release_type in ["major", "minor", "patch", "premajor", + "preminor", "prepatch", "prenext", "dev", "post"] + assert release_level in ["alpha", "beta", "candidate", "final"] + + # Extract the version sub parts from VERSION + major, minor, patch, level, pre_identifier, dev_identifier, post_identifier = VERSION + + version = "{0}.{1}".format(major, minor) + if release_type == "major": + major += 1 + version = (major, 0, 0, release_level, 0, 0, 0) + elif release_type == "minor": + minor += 1 + version = (major, minor, 0, release_level, 0, 0, 0) + elif release_type == "patch": + patch += 1 + version = (major, minor, patch, release_level, 0, 0, 0) + elif release_type == "premajor": + major += 1 + version = (major, 0, 0, release_level, 1, 0, 0) + elif release_type == "preminor": + minor += 1 + version = (major, minor, 0, release_level, 1, 0, 0) + elif release_type == "prepatch": + patch += 1 + version = (major, minor, patch, release_level, 1, 0, 0) + elif release_type == "prenext": + pre_identifier += 1 + version = (major, minor, patch, release_level, pre_identifier, 0, 0) + elif release_type == "dev": + dev_identifier += 1 + version = (major, minor, patch, release_level, + pre_identifier, dev_identifier, post_identifier) + elif release_type == "post": + post_identifier += 1 + version = (major, minor, patch, release_level, + pre_identifier, dev_identifier, post_identifier) + + # Update the version file + update_version_file(version) + + return _construct_version(*version) + + +def update_version_file(version): + """Updates the version number in VERSION.txt file.""" + try: + with open(VERSION_FILE_PATH, "w") as f: + f.write(','.join(str(v) for v in version)) + except IOError: + raise RuntimeError( + "Unable to write to version file on path : {0}".format(VERSION_FILE_PATH)) + + +__version__ = _construct_version(*VERSION) From 39c717c92309924c56602085d48e5439c2996aef Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 05:25:07 +0530 Subject: [PATCH 04/11] refactor(docs): move image resources :truck: --- docs/{logos => logo}/cssi-logo square-pixel.png | Bin docs/{logos => logo}/cssi-logo-black.svg | 0 docs/{logos => logo}/cssi-logo-core.png | Bin .../cssi-logo-dashboard-text-only-white.svg | 0 docs/{logos => logo}/cssi-logo-dashboard.png | Bin docs/{logos => logo}/cssi-logo-dashboard.svg | 0 docs/{logos => logo}/cssi-logo-outline.svg | 0 docs/{logos => logo}/cssi-logo-rest-api.png | Bin docs/{logos => logo}/cssi-logo-rest-api.svg | 0 docs/{logos => logo}/cssi-logo-square.png | Bin docs/{logos => logo}/cssi-logo-square.svg | 0 docs/{logos => logo}/cssi-logo-text-only.png | Bin docs/{logos => logo}/cssi-logo-white.svg | 0 docs/{logos => logo}/cssi-logo.png | Bin docs/{logos => logo}/cssi-logo.svg | 0 docs/{ => readme-resources}/technologies/celery.png | Bin .../technologies/flask-socketio.png | Bin .../technologies/flask-sqlalchemy.png | Bin docs/{ => readme-resources}/technologies/flask.svg | 0 .../technologies/marshmallow.png | Bin docs/{ => readme-resources}/technologies/mysql.svg | 0 docs/{ => readme-resources}/technologies/python.svg | 0 docs/{ => readme-resources}/technologies/redis.png | Bin 23 files changed, 0 insertions(+), 0 deletions(-) rename docs/{logos => logo}/cssi-logo square-pixel.png (100%) rename docs/{logos => logo}/cssi-logo-black.svg (100%) rename docs/{logos => logo}/cssi-logo-core.png (100%) rename docs/{logos => logo}/cssi-logo-dashboard-text-only-white.svg (100%) rename docs/{logos => logo}/cssi-logo-dashboard.png (100%) rename docs/{logos => logo}/cssi-logo-dashboard.svg (100%) rename docs/{logos => logo}/cssi-logo-outline.svg (100%) rename docs/{logos => logo}/cssi-logo-rest-api.png (100%) rename docs/{logos => logo}/cssi-logo-rest-api.svg (100%) rename docs/{logos => logo}/cssi-logo-square.png (100%) rename docs/{logos => logo}/cssi-logo-square.svg (100%) rename docs/{logos => logo}/cssi-logo-text-only.png (100%) rename docs/{logos => logo}/cssi-logo-white.svg (100%) rename docs/{logos => logo}/cssi-logo.png (100%) rename docs/{logos => logo}/cssi-logo.svg (100%) rename docs/{ => readme-resources}/technologies/celery.png (100%) rename docs/{ => readme-resources}/technologies/flask-socketio.png (100%) rename docs/{ => readme-resources}/technologies/flask-sqlalchemy.png (100%) rename docs/{ => readme-resources}/technologies/flask.svg (100%) rename docs/{ => readme-resources}/technologies/marshmallow.png (100%) rename docs/{ => readme-resources}/technologies/mysql.svg (100%) rename docs/{ => readme-resources}/technologies/python.svg (100%) rename docs/{ => readme-resources}/technologies/redis.png (100%) diff --git a/docs/logos/cssi-logo square-pixel.png b/docs/logo/cssi-logo square-pixel.png similarity index 100% rename from docs/logos/cssi-logo square-pixel.png rename to docs/logo/cssi-logo square-pixel.png diff --git a/docs/logos/cssi-logo-black.svg b/docs/logo/cssi-logo-black.svg similarity index 100% rename from docs/logos/cssi-logo-black.svg rename to docs/logo/cssi-logo-black.svg diff --git a/docs/logos/cssi-logo-core.png b/docs/logo/cssi-logo-core.png similarity index 100% rename from docs/logos/cssi-logo-core.png rename to docs/logo/cssi-logo-core.png diff --git a/docs/logos/cssi-logo-dashboard-text-only-white.svg b/docs/logo/cssi-logo-dashboard-text-only-white.svg similarity index 100% rename from docs/logos/cssi-logo-dashboard-text-only-white.svg rename to docs/logo/cssi-logo-dashboard-text-only-white.svg diff --git a/docs/logos/cssi-logo-dashboard.png b/docs/logo/cssi-logo-dashboard.png similarity index 100% rename from docs/logos/cssi-logo-dashboard.png rename to docs/logo/cssi-logo-dashboard.png diff --git a/docs/logos/cssi-logo-dashboard.svg b/docs/logo/cssi-logo-dashboard.svg similarity index 100% rename from docs/logos/cssi-logo-dashboard.svg rename to docs/logo/cssi-logo-dashboard.svg diff --git a/docs/logos/cssi-logo-outline.svg b/docs/logo/cssi-logo-outline.svg similarity index 100% rename from docs/logos/cssi-logo-outline.svg rename to docs/logo/cssi-logo-outline.svg diff --git a/docs/logos/cssi-logo-rest-api.png b/docs/logo/cssi-logo-rest-api.png similarity index 100% rename from docs/logos/cssi-logo-rest-api.png rename to docs/logo/cssi-logo-rest-api.png diff --git a/docs/logos/cssi-logo-rest-api.svg b/docs/logo/cssi-logo-rest-api.svg similarity index 100% rename from docs/logos/cssi-logo-rest-api.svg rename to docs/logo/cssi-logo-rest-api.svg diff --git a/docs/logos/cssi-logo-square.png b/docs/logo/cssi-logo-square.png similarity index 100% rename from docs/logos/cssi-logo-square.png rename to docs/logo/cssi-logo-square.png diff --git a/docs/logos/cssi-logo-square.svg b/docs/logo/cssi-logo-square.svg similarity index 100% rename from docs/logos/cssi-logo-square.svg rename to docs/logo/cssi-logo-square.svg diff --git a/docs/logos/cssi-logo-text-only.png b/docs/logo/cssi-logo-text-only.png similarity index 100% rename from docs/logos/cssi-logo-text-only.png rename to docs/logo/cssi-logo-text-only.png diff --git a/docs/logos/cssi-logo-white.svg b/docs/logo/cssi-logo-white.svg similarity index 100% rename from docs/logos/cssi-logo-white.svg rename to docs/logo/cssi-logo-white.svg diff --git a/docs/logos/cssi-logo.png b/docs/logo/cssi-logo.png similarity index 100% rename from docs/logos/cssi-logo.png rename to docs/logo/cssi-logo.png diff --git a/docs/logos/cssi-logo.svg b/docs/logo/cssi-logo.svg similarity index 100% rename from docs/logos/cssi-logo.svg rename to docs/logo/cssi-logo.svg diff --git a/docs/technologies/celery.png b/docs/readme-resources/technologies/celery.png similarity index 100% rename from docs/technologies/celery.png rename to docs/readme-resources/technologies/celery.png diff --git a/docs/technologies/flask-socketio.png b/docs/readme-resources/technologies/flask-socketio.png similarity index 100% rename from docs/technologies/flask-socketio.png rename to docs/readme-resources/technologies/flask-socketio.png diff --git a/docs/technologies/flask-sqlalchemy.png b/docs/readme-resources/technologies/flask-sqlalchemy.png similarity index 100% rename from docs/technologies/flask-sqlalchemy.png rename to docs/readme-resources/technologies/flask-sqlalchemy.png diff --git a/docs/technologies/flask.svg b/docs/readme-resources/technologies/flask.svg similarity index 100% rename from docs/technologies/flask.svg rename to docs/readme-resources/technologies/flask.svg diff --git a/docs/technologies/marshmallow.png b/docs/readme-resources/technologies/marshmallow.png similarity index 100% rename from docs/technologies/marshmallow.png rename to docs/readme-resources/technologies/marshmallow.png diff --git a/docs/technologies/mysql.svg b/docs/readme-resources/technologies/mysql.svg similarity index 100% rename from docs/technologies/mysql.svg rename to docs/readme-resources/technologies/mysql.svg diff --git a/docs/technologies/python.svg b/docs/readme-resources/technologies/python.svg similarity index 100% rename from docs/technologies/python.svg rename to docs/readme-resources/technologies/python.svg diff --git a/docs/technologies/redis.png b/docs/readme-resources/technologies/redis.png similarity index 100% rename from docs/technologies/redis.png rename to docs/readme-resources/technologies/redis.png From 412a3e21ea210891a21cf610718e2a557d42ebf4 Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 05:25:30 +0530 Subject: [PATCH 05/11] chore(deps): add pytest dependency --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 83b48ad..6985d6a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,5 @@ flask-socketio==3.3.2 PyMySQL==0.9.3 redis==3.2.1 Pillow -numpy>=1.16.2 \ No newline at end of file +numpy>=1.16.2 +pytest==4.5.0 From 500e1647ee2bd72708385119157521204c8d85cc Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 05:26:51 +0530 Subject: [PATCH 06/11] ci(travis): add travis config :construction_worker: --- .travis.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..2f70fca --- /dev/null +++ b/.travis.yml @@ -0,0 +1,13 @@ +dist: xenial +language: python + +cache: pip +python: + - '3.7' + +install: + - pip install -r requirements.txt + - pip freeze + +script: + - pytest From c25be78d3b7af3b9793b4c4dc66df811daf69c74 Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Sat, 6 Jul 2019 05:54:01 +0530 Subject: [PATCH 07/11] docs: update documents :memo: --- CONTRIBUTING.md | 138 ++++++++++++++++++++++++++++++++++++++++++--- README.md | 22 +++++--- docs/RELEASES.md | 82 +++++++++++++++++++++++++++ docs/VERSIONING.md | 33 +++++++++++ 4 files changed, 259 insertions(+), 16 deletions(-) create mode 100644 docs/RELEASES.md create mode 100644 docs/VERSIONING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9b1724d..4e3b61e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,10 +1,68 @@ # Contributing to CSSI REST API -We would love for you to contribute to CSSI API and help make it even better than it is -today! +We would love for you to contribute to CSSI REST API and help make +it even better than it is today!. As a contributor, here are the +guidelines for you to follow: -### Type + - [Commit Message Guidelines](#commit) + - [Branch Naming Conventions](#branch-naming) + +## Commit Message Guidelines + +We have used `semantic git commits` through out the application and would like to keep them consistent. Please follow the following specified rules when committing your code. + +### Commit Message Format +Each commit message consists of a **header**, a **body** and a **footer**. The header has a special +format that includes a **type**, a **scope** and a **subject**: + +``` +(): + + + +