Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Ruff to pre-commit hooks #1207

Merged
merged 10 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 42 additions & 3 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ on:
jobs:
test:
if: github.event.pull_request.draft == false
name: mBuild Tests
name: mBuild Tests (python)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macOS-latest, macOS-13, ubuntu-latest]
os: [ubuntu-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
include:
- os: windows-latest
Expand Down Expand Up @@ -60,6 +60,45 @@ jobs:
name: mBuild-Coverage
verbose: true
files: ./coverage.xml
arch-test:
if: github.event.pull_request.draft == false
name: mBuild Tests (python)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macOS-latest, macOS-13, ubuntu-latest, windows-latest]
python-version: ["3.12"]

defaults:
run:
shell: bash -l {0}

steps:
- uses: actions/checkout@v4
name: Checkout Branch / Pull Request

- name: Install Mamba (Linux)
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment-dev.yml
create-args: >-
python=${{ matrix.python-version }}
if: runner.os != 'Windows'

- name: Install Mamba (Windows)
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment-dev-win.yml
create-args: >-
python=${{ matrix.python-version }}
if: runner.os == 'Windows'

- name: Install Package
run: python -m pip install -e .

- name: Test (OS -> ${{ matrix.os }} / Python -> ${{ matrix.python-version }})
run: python -m pytest -v --cov=mbuild --cov-report=xml --cov-append --cov-config=setup.cfg --color yes --pyargs mbuild

bleeding-edge-test:
if: github.event.pull_request.draft == false
Expand All @@ -77,7 +116,7 @@ jobs:
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment-dev.yml
create-args: python=3.11
create-args: python=3.12

- name: Clone Foyer and GMSO
run: |
Expand Down
25 changes: 12 additions & 13 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,35 +1,34 @@
ci:
autofix_commit_msg: |
[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
autofix_prs: true
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
autoupdate_schedule: weekly
skip: []
submodules: false
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.7.0
hooks:
# Run the linter.
- id: ruff
args: [--line-length=80, --fix]
# Run the formatter.
- id: ruff-format
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
exclude: setup.cfg
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black
args: [--line-length=80]
exclude: 'setup.cfg|gmso/tests/files/.*'

- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
name: isort (python)
args: [--profile=black, --line-length=80]
- repo: https://github.com/pycqa/pydocstyle
rev: '6.3.0'
hooks:
- id: pydocstyle
exclude: ^(mbuild/tests/|docs/|devtools/|setup.py|setup.cfg|mbuild/formats/charmm_writer.py|mbuild/formats/gomc_conf_writer.py|mbuild/utils/specific_ff_to_residue.py)
args: [--convention=numpy]
exclude: "gmso/tests/files/.*"
4 changes: 1 addition & 3 deletions docs/sphinxext/notebook_sphinxext.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,6 @@ def setup(app):
setup.config = app.config
setup.confdir = app.confdir

app.add_node(
notebook_node, html=(visit_notebook_node, depart_notebook_node)
)
app.add_node(notebook_node, html=(visit_notebook_node, depart_notebook_node))

app.add_directive("notebook", NotebookDirective)
2 changes: 0 additions & 2 deletions mbuild/bond_graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""

from collections import defaultdict

import networkx as nx


Expand Down
30 changes: 7 additions & 23 deletions mbuild/box.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,7 @@ def from_uvec_lengths(cls, uvec, lengths, precision=None):
scaled_vec = (uvec.T * lengths).T
(alpha, beta, gamma) = _calc_angles(scaled_vec)

return cls(
lengths=lengths, angles=(alpha, beta, gamma), precision=precision
)
return cls(lengths=lengths, angles=(alpha, beta, gamma), precision=precision)

@classmethod
def from_mins_maxs_angles(cls, mins, maxs, angles, precision=None):
Expand All @@ -123,28 +121,20 @@ def from_vectors(cls, vectors, precision=None):
Ly = np.linalg.norm(v2)
Lz = np.linalg.norm(v3)
lengths = (Lx, Ly, Lz)
return cls(
lengths=lengths, angles=(alpha, beta, gamma), precision=precision
)
return cls(lengths=lengths, angles=(alpha, beta, gamma), precision=precision)

@classmethod
def from_lengths_tilt_factors(
cls, lengths, tilt_factors=None, precision=None
):
def from_lengths_tilt_factors(cls, lengths, tilt_factors=None, precision=None):
"""Generate a box from box lengths and tilt factors."""
(Lx, Ly, Lz) = lengths
if tilt_factors is None:
(xy, xz, yz) = (0.0, 0.0, 0.0)
else:
(xy, xz, yz) = tilt_factors

vecs = np.asarray(
[[Lx, 0.0, 0.0], [Ly * xy, Ly, 0.0], [Lz * xz, Lz * yz, Lz]]
)
vecs = np.asarray([[Lx, 0.0, 0.0], [Ly * xy, Ly, 0.0], [Lz * xz, Lz * yz, Lz]])
(alpha, beta, gamma) = _calc_angles(vecs)
return cls(
lengths=lengths, angles=[alpha, beta, gamma], precision=precision
)
return cls(lengths=lengths, angles=[alpha, beta, gamma], precision=precision)

@classmethod
def from_lo_hi_tilt_factors(cls, lo, hi, tilt_factors, precision=None):
Expand All @@ -159,9 +149,7 @@ def from_lo_hi_tilt_factors(cls, lo, hi, tilt_factors, precision=None):
yhi_bound = yhi + max([0.0, yz])

lengths = [xhi_bound - xlo_bound, yhi_bound - ylo_bound, zhi - zlo]
return cls.from_lengths_tilt_factors(
lengths=lengths, tilt_factors=tilt_factors
)
return cls.from_lengths_tilt_factors(lengths=lengths, tilt_factors=tilt_factors)

@property
def vectors(self):
Expand Down Expand Up @@ -327,8 +315,6 @@ def _lengths_angles_to_vectors(lengths, angles, precision):
cos_b = np.clip(np.cos(beta), -1.0, 1.0)
cos_g = np.clip(np.cos(gamma), -1.0, 1.0)

sin_a = np.clip(np.sin(alpha), -1.0, 1.0)
sin_b = np.clip(np.sin(beta), -1.0, 1.0)
sin_g = np.clip(np.sin(gamma), -1.0, 1.0)
a_vec = np.asarray([a, 0.0, 0.0])

Expand Down Expand Up @@ -376,9 +362,7 @@ def _normalize_box(vectors):
sign = np.linalg.det(Q)
R = R * sign

signs = np.diag(
np.diag(np.where(R < 0, -np.ones(R.shape), np.ones(R.shape)))
)
signs = np.diag(np.diag(np.where(R < 0, -np.ones(R.shape), np.ones(R.shape))))
transformed_vecs = R.dot(signs)
return _reduced_form_vectors(transformed_vecs.T)

Expand Down
10 changes: 3 additions & 7 deletions mbuild/coarse_graining.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,7 @@ def _clone(self, clone_of=None, root_container=None):
if self.labels:
for label, compound in self.labels.items():
if not isinstance(compound, list):
newone.labels[label] = compound._clone(
clone_of, root_container
)
newone.labels[label] = compound._clone(clone_of, root_container)
compound.referrers.add(clone_of[compound])
else:
# compound is a list of compounds, so we create an empty
Expand Down Expand Up @@ -150,13 +148,11 @@ def _create_proxy_compounds(real_thing, memo, particle_classes):
proxy = Proxy(real_thing)
memo[real_thing] = proxy

if not type(real_thing) in particle_classes:
if type(real_thing) not in particle_classes:
if not is_leaf(real_thing): # Recurse only if it has parts.
# Recursively create proxies for parts.
for part in real_thing.children:
part_proxy = _create_proxy_compounds(
part, memo, particle_classes
)
part_proxy = _create_proxy_compounds(part, memo, particle_classes)
proxy.add(part_proxy)

return proxy
Expand Down
Loading
Loading