Skip to content

Commit

Permalink
✨ Support Posix Paths (#42)
Browse files Browse the repository at this point in the history
* ✨ Support Posix Paths

Signed-off-by: Lukas Heumos <[email protected]>

* 🎨 Security

Signed-off-by: Lukas Heumos <[email protected]>

---------

Signed-off-by: Lukas Heumos <[email protected]>
  • Loading branch information
Zethson authored Jan 22, 2025
1 parent 8224f44 commit d6bc4f1
Show file tree
Hide file tree
Showing 8 changed files with 185 additions and 113 deletions.
16 changes: 10 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,39 +12,43 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.12", "3.13"]

steps:
- name: Checkout main
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Checkout lndocs
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: laminlabs/lndocs
ssh-key: ${{ secrets.READ_LNDOCS }}
path: lndocs
ref: main

- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
cache-dependency-path: ".github/workflows/build.yml" # See dependencies below

- name: Cache pre-commit
uses: actions/cache@v3
if: matrix.python-version == '3.12'
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Install Python dependencies
run: |
python -m pip install -U pip
pip install -U laminci
- run: nox -s lint
if: matrix.python-version == '3.12'
- run: nox -s build

- name: Codecov
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@v2
Expand Down
88 changes: 33 additions & 55 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,73 +1,51 @@
fail_fast: false
default_language_version:
python: python3
default_stages:
- pre-commit
- pre-push
minimum_pre_commit_version: 2.12.0
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
exclude: |
(?x)(
.github/workflows/latest-changes.jinja2
)
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:
- id: black-jupyter
- repo: https://github.com/pycqa/flake8
rev: 4.0.1
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: flake8
additional_dependencies:
- flake8-black>=0.1.1
- flake8-typing-imports==1.10.0
language_version: python3
args:
- --max-line-length=88
- --ignore=E203
- --min-python-version=3.8.0
- id: prettier
exclude: |
(?x)(
__init__.py
docs/changelog.md
)
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.6.2
hooks:
- id: prettier
- repo: https://github.com/kynan/nbstripout
rev: 0.3.9
rev: 0.6.1
hooks:
- id: nbstripout
exclude: |
(?x)(
docs/tasks/|
docs/examples/
docs/examples/|
docs/notes/
)
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.1.9
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.2
hooks:
- id: forbid-crlf
- id: remove-crlf
- repo: https://github.com/pre-commit/mirrors-isort
rev: v5.8.0
- id: ruff
args: [--fix, --exit-non-zero-on-fix, --unsafe-fixes]
- id: ruff-format
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: isort
args: ["--profile", "black"]
- id: detect-private-key
- id: check-ast
- id: end-of-file-fixer
exclude: |
(?x)(
__init__.py
)
.github/workflows/latest-changes.jinja2
)
- id: mixed-line-ending
args: [--fix=lf]
- id: trailing-whitespace
- id: check-case-conflict
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.940
rev: v1.14.1
hooks:
- id: mypy
- repo: https://github.com/pycqa/pydocstyle
rev: 6.1.1
hooks:
- id: pydocstyle
args: # google style + __init__, see http://www.pydocstyle.org/en/stable/error_codes.html
- --ignore=D100,D101,D102,D103,D105,D107,D203,D204,D213,D215,D400,D401,D402,D403,D404,D406,D407,D408,D409,D413
exclude: |
(?x)(
__init__.py
)
args: [--no-strict-optional, --ignore-missing-imports]
additional_dependencies: ["types-requests", "types-attrs"]
22 changes: 11 additions & 11 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
cff-version: 1.2.0
title: "readfcs: Read FCS files"
authors:
- family-names: Sun
given-names: Sunny
orcid: https://orcid.org/0000-0002-2365-0888
- family-names: Wolf
given-names: F. Alexander
orcid: https://orcid.org/0000-0002-8760-7838
url: https://github.com/laminlabs/readfcs
preferred-citation:
type: article
title: "readfcs: Read FCS files"
authors:
- family-names: Sun
given-names: Sunny
orcid: https://orcid.org/0000-0002-2365-0888
- family-names: Wolf
given-names: F. Alexander
orcid: https://orcid.org/0000-0002-8760-7838
url: https://github.com/laminlabs/readfcs
preferred-citation:
type: article
title: "readfcs: Read FCS files"
authors:
- family-names: Sun
given-names: Sunny
orcid: https://orcid.org/0000-0002-2365-0888
- family-names: Wolf
given-names: F. Alexander
orcid: https://orcid.org/0000-0002-8760-7838
doi: 10.56528/rfcs
journal: Lamin Reports
year: 2022
110 changes: 106 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ readme = "README.md"
dynamic = ["version", "description"]
classifiers = [
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
Expand All @@ -33,9 +32,6 @@ dev = [
"laminci",
]

[tool.black]
preview = true

[tool.pytest.ini_options]
testpaths = [
"tests",
Expand All @@ -46,3 +42,109 @@ testpaths = [
omit = [
"readfcs/*",
]

[tool.ruff]
src = ["src"]
line-length = 88
lint.select = [
"F", # Errors detected by Pyflakes
"E", # Error detected by Pycodestyle
"W", # Warning detected by Pycodestyle
"I", # isort
"D", # pydocstyle
"B", # flake8-bugbear
"TID", # flake8-tidy-imports
"C4", # flake8-comprehensions
"BLE", # flake8-blind-except
"UP", # pyupgrade
"RUF100", # Report unused noqa directives
"TCH", # Typing imports
"NPY", # Numpy specific rules
"PTH", # Use pathlib
"S" # Security
]
lint.ignore = [
# Do not catch blind exception: `Exception`
"BLE001",
# Errors from function calls in argument defaults. These are fine when the result is immutable.
"B008",
# line too long -> we accept long comment lines; black gets rid of long code lines
"E501",
# Do not assign a lambda expression, use a def -> lambda expression assignments are convenient
"E731",
# allow I, O, l as variable names -> I is the identity matrix
"E741",
# Missing docstring in public module
"D100",
# undocumented-public-class
"D101",
# Missing docstring in public method
"D102",
# Missing docstring in public function
"D103",
# Missing docstring in public package
"D104",
# __magic__ methods are are often self-explanatory, allow missing docstrings
"D105",
# Missing docstring in public nested class
"D106",
# Missing docstring in __init__
"D107",
## Disable one in each pair of mutually incompatible rules
# We don’t want a blank line before a class docstring
"D203",
# 1 blank line required after class docstring
"D204",
# first line should end with a period [Bug: doesn't work with single-line docstrings]
# We want docstrings to start immediately after the opening triple quote
"D213",
# Section underline is over-indented ("{name}")
"D215",
# First line should end with a period
"D400",
# First line should be in imperative mood; try rephrasing
"D401",
# First word of the first line should be capitalized: {} -> {}
"D403",
# First word of the docstring should not be "This"
"D404",
# Section name should end with a newline ("{name}")
"D406",
# Missing dashed underline after section ("{name}")
"D407",
# Section underline should be in the line following the section's name ("{name}")
"D408",
# Section underline should match the length of its name ("{name}")
"D409",
# No blank lines allowed between a section header and its content ("{name}")
"D412",
# Missing blank line after last section ("{name}")
"D413",
# camcelcase imported as lowercase
"N813",
# module import not at top level of file
"E402",
# open()` should be replaced by `Path.open()
"PTH123",
# subprocess` call: check for execution of untrusted input - https://github.com/PyCQA/bandit/issues/333
"S603",
# Starting a process with a partial executable path
"S607",
# Audit URL open for permitted schemes. Allowing use of `file:` or custom schemes is often unexpected.
"S310"
]

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.ruff.lint.per-file-ignores]
"docs/*" = ["I", "S101"]
"tests/**/*.py" = [
"D", # docstrings are allowed to look a bit off
"S101", # asserts allowed in tests...
"ARG", # Unused function args -> fixtures nevertheless are functionally relevant...
"FBT", # Don't care about booleans as positional arguments in tests, e.g. via @pytest.mark.parametrize()
"PLR2004", # Magic value used in comparison, ...
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
]
"*/__init__.py" = ["F401"]
Loading

0 comments on commit d6bc4f1

Please sign in to comment.