methodology/README.md

8 KiB

DannyDannyDanny/Methodology

Gitmoji

Repo Roadmap

  • 2021Q1: Gitmoji -> (general) Methodology
  • 2021Q2: Version control methodology
    • Oneliner build / install / run / deploy
    • Git (Branching, Merging and Pull Requests)
    • Default environment section
  • 2021Q3: Decide on sections
    • Organize other methodology into hierarchy
    • Split hierarchy into paragraphs / sections
  • 2021Q4

This methodology repo is focused on Python Data Processing based projects with som external dependencies (APIs or DBs). The repo is actively being updated; Leave a start bookmark it or Watch the repo to get notificatied of updates.

Version control

Commit messages and gitmoji

Use the format :gitmoji: <commit message> in your commit messages. Only proper nouns, CamelCase and class names should have uppercases letters. Avoid using multiple gitmojis.

emoji code description
:sparkles: add new feature / function
🎨 :art: refactor code / improve readibility / structure and lint flake8
🥅 :goal_net: try/raise/handle errors or warnings
:zap: improve performance / coverage / profiling
🐛 :bug: fix this bug
🚚 :truck: moving / renaming
♻️ :recycle: work related to CI/CD, webhooks, automated tests
🚧 / 💥 :construction:/:boom: work in progress / breaking changes
📝 :memo: doc / logging / verbosity / code comments
🔥 / ⚰️ :fire:/:coffin: remove (dead) code / file
👽 :alien: changes related to APIs and Databases
📊 :bar_chart: clean / transform / validate data
💄 :lipstick: improve UI / UX, CLI or visualizations
📌 :pushpin: dependency and environment versioning
🙈 :see_no_evil: changes to .gitignore and exclusively local files
🔍 :mag: changes in connection with PR-review change-requests

Missing a gitmoji? Get inspiration. Submit an issue (or Pull Request).

Oneliner install and run

When using git repositories, connect with ssh.

The README for your project should contain a one-liner code that dowloads, installs and runs a mini-test.

git clone https://github.com/user/repo.git cool-repo && cd cool-repo
pipenv install
pipenv run python .
#cd .. && rm -rf cool-user-repo-online

Git Flows

In progress! 🚧 Use git hooks!

git log --all --decorate --oneline --graph
# Git Log A DOG acronym

New Development Flow

# clone repo with local_name enables several clones
git clone <repo> <local_name>

# optional: checkout (i.e switch to) a branch to continue developing from there
git checkout <feature/featurename>

# optional if you switched branch on the last step
# switched branch: branch out from 
git checkout <feature/newfeature>
git branch <feature/newfeature>
git push --set-upstream origin <feature/newfeature>

Comparing / Merging two branches

git merge --no-commit --no-ff <feature/otherfeaturebranch>

Submitting multiple PRs

Context:

  1. submit PR for feature1
  2. from feature1 branch make new branch feature2
  3. commit and push feature2 changes
  4. submit PR
  5. Both PRs approved
# there should be one or more flows that account for cases where:
# -> feature1 gets change requests
# -> feature1 is rejected and made obsolete

Repo Badges

Coming soon! 🚧

Coverage badge

Documentation

  • Use markdown with Google Style Guide for written documentation.
  • Conceptual graphical documentation as inline embedded images.
  • Save Matplotlib / Seaborn plots as .svg.
  • Sketches and handwritten illustrations scanned / photographed as .png/.jpg.
  • Scanned / photographed illustrations should be cropped, contrast and alligned.
Cons of tables Pros of tables
Great splitting information Painful to format in MD

Python

Python is notoriously painful to manage. Use pipx or pyenv.

Other methdology

Project Portfolio

  • Consumption Predictor