Skip to content

Commit

Permalink
Project clean up and maintenance (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
chuckwondo authored Aug 8, 2024
1 parent bd7117d commit 10e3cf2
Show file tree
Hide file tree
Showing 11 changed files with 381 additions and 94 deletions.
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# See https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
71 changes: 31 additions & 40 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,74 +8,65 @@ on:
name: CI

jobs:

test:
runs-on: ubuntu-latest
strategy:
matrix:
python:
- '3.11'
- '3.10'
- '3.9'
- '3.8'
name: Python ${{ matrix.python }}
- version: '3.12'
- version: '3.11'
- version: '3.10'
- version: '3.9'
exclude-pattern-matching: true
- version: '3.8'
exclude-pattern-matching: true
name: Python ${{ matrix.python.version }}
steps:
# Python
- name: Setup python ${{ matrix.python }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}

# Check out code
- uses: actions/checkout@v2
- uses: actions/checkout@v4

# Cached dependencies
- uses: actions/cache@v1
# Python
- name: Setup python ${{ matrix.python.version }}
uses: actions/setup-python@v5
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-py${{ matrix.python }}-${{ hashFiles('**/requirements-dev.txt') }}
restore-keys: |
${{ runner.os }}-pip-py${{ matrix.python }}-
python-version: ${{ matrix.python.version }}
cache: pip
cache-dependency-path: requirements-dev.txt

- name: Install dev dependencies
run: pip install --requirement requirements-dev.txt
run: pip install --root-user-action=ignore --requirement requirements-dev.txt

# Install library
- name: Install maybe
run: pip install --editable .
run: pip install --root-user-action=ignore --editable .

# Tests
- name: Run tests
run: pytest --ignore=tests/test_pattern_matching.py --ignore=tests/type-checking/test_maybe.yml
- name: Run tests (type checking)
if: matrix.python != '3.8' && matrix.python != '3.9'
# These started breaking for <= 3.9, due to the type checker using a
# '|' for unions rather than 'Union[...]', so it's not possible to run
# the tests without maintaining two duplicate files (one for <= 3.9 and
# one for > 3.9)
run: pytest tests/type-checking/test_maybe.yml
- name: Run tests (pattern matching)
if: matrix.python == '3.10' || matrix.python == '3.11'
run: pytest tests/test_pattern_matching.py
- name: Run tests (excluding pattern matching)
if: ${{ matrix.python.exclude-pattern-matching }}
run: pytest --ignore=tests/test_pattern_matching.py
- name: Run tests (including pattern matching)
if: ${{ ! matrix.python.exclude-pattern-matching }}
run: pytest

# Linters
- name: Run flake8 (Python >= 3.10)
run: flake8
if: matrix.python != '3.9' && matrix.python != '3.8'
- name: Run flake8 (Python < 3.10)
- name: Run flake8 (excluding pattern matching)
if: ${{ matrix.python.exclude-pattern-matching }}
run: flake8 --extend-exclude tests/test_pattern_matching.py
if: matrix.python == '3.9' || matrix.python == '3.8'
- name: Run flake8 (including pattern matching)
if: ${{ ! matrix.python.exclude-pattern-matching }}
run: flake8
- name: Run mypy
run: mypy

# Packaging
- name: Build packages
run: |
pip install --upgrade build pip setuptools wheel
pip install --root-user-action=ignore --upgrade build pip setuptools wheel
python -m build
# Coverage
- name: Upload coverage to codecov.io
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v4
if: matrix.python == '3.9'
with:
token: ${{ secrets.CODECOV_TOKEN }}
282 changes: 272 additions & 10 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,13 +1,275 @@
.cache/
.coverage
coverage.xml
*.swp
*.pyc
__pycache__
# Created by https://www.toptal.com/developers/gitignore/api/python
# Edit at https://www.toptal.com/developers/gitignore?templates=python

### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
build/
.idea/
.mypy_cache/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# IPython
profile_default/
ipython_config.py

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Environments
.env
.venv
env/
venv/
/.tox/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

### Python Patch ###

# ruff
.ruff_cache/

# LSP config files
pyrightconfig.json

# End of https://www.toptal.com/developers/gitignore/api/python
# Created by https://www.toptal.com/developers/gitignore/api/vim
# Edit at https://www.toptal.com/developers/gitignore?templates=vim

### Vim ###
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

# Session
Session.vim
Sessionx.vim

# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~

# End of https://www.toptal.com/developers/gitignore/api/vim
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode

### VisualStudioCode ###
.vscode/
# !.vscode/settings.json
# !.vscode/tasks.json
# !.vscode/launch.json
# !.vscode/extensions.json
# !.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide

# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode
# Created by https://www.toptal.com/developers/gitignore/api/jetbrains
# Edit at https://www.toptal.com/developers/gitignore?templates=jetbrains

### JetBrains ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### JetBrains Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr

# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/

# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml

# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/

# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$

# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml

# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml

# End of https://www.toptal.com/developers/gitignore/api/jetbrains
Loading

0 comments on commit 10e3cf2

Please sign in to comment.