Skip to content

Commit

Permalink
add new repo structure
Browse files Browse the repository at this point in the history
  • Loading branch information
ribeirojose committed Feb 20, 2024
1 parent 10be55c commit bfc594f
Show file tree
Hide file tree
Showing 36 changed files with 5,164 additions and 0 deletions.
19 changes: 19 additions & 0 deletions .github/workflows/ci_core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: CI libs/core

on:
pull_request:
paths:
- '.github/workflows/python_reusable.yml'
- '.github/workflows/ci_base.yml'
- 'cow_py/**'
- 'tests/**'
workflow_dispatch: # Allows to trigger the workflow manually in GitHub UI

jobs:
ci-libs-core:
uses:
./.github/workflows/python_reusable.yml
with:
working-directory: ./
secrets: inherit
64 changes: 64 additions & 0 deletions .github/workflows/python_reusable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: Reusable Python library CI

on:
workflow_call:
inputs:
working-directory:
required: true
type: string
description: "From which folder this pipeline executes"
install-packages:
description: "Space seperated list of packages to install using apt-get."
default: ""
type: string
# To avoid being billed 360 minutes if a step does not terminate
# (we've seen the setup-python step below do so!)
ci-timeout:
description: "The timeout of the ci job. Default is 25min"
default: 25
type: number

jobs:
local-ci-py-template:
runs-on: ubuntu-22.04
timeout-minutes: 30

defaults:
run:
working-directory: ${{ inputs.working-directory }}

steps:
- name: Checkout
uses: actions/checkout@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Python
uses: actions/setup-python@v4
timeout-minutes: 5
with:
python-version-file: ${{ github.workspace }}/.python-version
cache: "pip"
cache-dependency-path: |
dev-requirements.txt
pip-requirements.txt
${{ inputs.working-directory }}/requirements.txt
- name: Install extra packages
if: ${{ inputs.install-packages != ''}}
run: |
sudo apt-get install -y ${{ inputs.install-packages }}
- name: Install Python dependencies
run: |
pip install -r "$(git rev-parse --show-toplevel)/pip-requirements.txt"
pip install -r "$(git rev-parse --show-toplevel)/dev-requirements.txt" -r requirements.txt
- name: Typecheck
run: |
pyright .
- name: Test
run: |
python3 -m pytest tests/ # Assume that tests are in folder "tests/"
54 changes: 54 additions & 0 deletions .github/workflows/top_level.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
name: Top-level CI
on:
workflow_dispatch:
pull_request:
push:
branches: main # Comment this line if you want to test the CI before opening a PR

jobs:
ci-global:
runs-on: ubuntu-22.04
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
timeout-minutes: 5
with:
python-version-file: .python-version
cache: 'pip'
cache-dependency-path: |
pip-requirements.txt
dev-requirements.txt
- name: Install Python dependencies
run: |
pip install -r pip-requirements.txt
pip install -r dev-requirements.txt
# in order to test the template as well, we create a temporary library in the CI
- name: Create library with template
run: |
cookiecutter --no-input templates/pylibrary --output-dir libs/
git add libs/library_name # So that checks below apply to generated library
- name: Format Python imports
run: |
isort --check-only $(git ls-files "*.py")
- name: Format Python
run: |
black --check $(git ls-files "*.py")
- name: Lint Python
run: |
flake8 $(git ls-files "*.py")
# Are all public symbols documented? (see top-level pyproject.toml configuration)
- name: Lint Python doc
run: |
pylint $(git ls-files "*.py")
164 changes: 164 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
##################################################################
# https://github.com/github/gitignore/blob/main/Python.gitignore #
##################################################################

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

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.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/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

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

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
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/
28 changes: 28 additions & 0 deletions .mergify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
queue_rules:
- name: default

pull_request_rules:
- name: automatic merge
conditions:
- "#approved-reviews-by>=1"
- "label=merge-queue"
- "base=main"
actions:
queue:
name: default
method: rebase

- name: delete head branch after merge
conditions:
- merged
- closed
actions:
delete_head_branch: {}

- name: remove from merge-queue after merge
conditions:
- merged
actions:
label:
remove:
- "merge-queue"
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# cow-py

CoW Protocol Python SDK

[Help the herd 🐮](https://snapshot.org/#/cowgrants.eth/proposal/0x29bde0a0789a15f2255e11bdff088b4ffdf491729250dbe93b8b0776beb7f999)
Empty file added cow_py/composable/__init__.py
Empty file.
4 changes: 4 additions & 0 deletions cow_py/core/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from cow_py.core import constants, cow_error, abis, chains, config
from cow_py.core.chains import utils

__all__ = ["constants", "cow_error", "abis", "chains", "config", "utils"]
Loading

0 comments on commit bfc594f

Please sign in to comment.