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

refactor: Change linting to Ruff #978

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 6 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
36 changes: 0 additions & 36 deletions .flake8

This file was deleted.

33 changes: 17 additions & 16 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
default_stages: [pre-commit]
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-builtin-literals
- id: check-case-conflict
- id: check-docstring-first
- id: check-toml
- id: detect-private-key
- id: end-of-file-fixer
- id: check-builtin-literals
- id: check-case-conflict
- id: check-docstring-first
- id: check-toml
- id: detect-private-key
- id: end-of-file-fixer
exclude: (\.min\.js$|\.svg$)
- id: trailing-whitespace
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
- id: trailing-whitespace
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.7.3
hooks:
- id: flake8
- repo: https://github.com/hoxbro/clean_notebook
rev: v0.1.10
hooks:
- id: clean-notebook
- id: ruff
exclude: \.ipynb
- repo: https://github.com/hoxbro/clean_notebook
rev: v0.1.15
hooks:
- id: clean-notebook
6 changes: 3 additions & 3 deletions numbergen/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import param


from param import __version__ # noqa: API import
from param import __version__

class TimeAware(param.Parameterized):
"""
Expand Down Expand Up @@ -763,5 +763,5 @@ def __call__(self):
else: return val


_public = list({_k for _k,_v in locals().items() if isinstance(_v,type) and issubclass(_v,NumberGenerator)})
__all__ = _public
_public = {_k for _k,_v in locals().items() if isinstance(_v,type) and issubclass(_v,NumberGenerator)}
__all__ = ["__version__", *_public]
4 changes: 2 additions & 2 deletions param/ipython.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def param_docstrings(self, info, max_col_len=100, only_changed=False):
contents = []
displayed_params = []
for name in self.sort_by_precedence(params):
if only_changed and not (name in changed):
if only_changed and name not in changed:
continue
displayed_params.append((name, params[name]))

Expand Down Expand Up @@ -155,7 +155,7 @@ def _build_table(self, info, order, max_col_len=40, only_changed=False):
ordering = self.sort_by_precedence(params)
for name in ordering:
p = params[name]
if only_changed and not (name in changed):
if only_changed and name not in changed:
continue

constant = 'C' if p.constant else 'V'
Expand Down
14 changes: 5 additions & 9 deletions param/parameterized.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,8 +340,6 @@ def edit_constant(parameterized):
p.constant = False
try:
yield
except:
raise
finally:
for (p, const) in zip(params, constants):
p.constant = const
Expand All @@ -359,8 +357,6 @@ def discard_events(parameterized):
list(parameterized.param._events))
try:
yield
except:
raise
finally:
parameterized.param._BATCH_WATCH = batch_watch
parameterized.param._state_watchers = watchers
Expand Down Expand Up @@ -1747,7 +1743,7 @@ def is_equal(cls, obj1, obj2):

@classmethod
def compare_iterator(cls, obj1, obj2):
if type(obj1) != type(obj2) or len(obj1) != len(obj2):
if type(obj1) is not type(obj2) or len(obj1) != len(obj2):
return False
for o1, o2 in zip(obj1, obj2):
if not cls.is_equal(o1, o2):
Expand All @@ -1756,7 +1752,7 @@ def compare_iterator(cls, obj1, obj2):

@classmethod
def compare_mapping(cls, obj1, obj2):
if type(obj1) != type(obj2) or len(obj1) != len(obj2): return False
if type(obj1) is not type(obj2) or len(obj1) != len(obj2): return False
for k in obj1:
if k in obj2:
if not cls.is_equal(obj1[k], obj2[k]):
Expand Down Expand Up @@ -2354,7 +2350,7 @@ def _update(self_, arg=Undefined, /, **kwargs):
raise ValueError(f"{k!r} is not a parameter of {self_.cls.__name__}")
try:
setattr(self_or_cls, k, v)
except:
except Exception:
self_._BATCH_WATCH = False
raise

Expand Down Expand Up @@ -2386,7 +2382,7 @@ def set_param(self_, *args,**kwargs):
"""
self_or_cls = self_.self_or_cls
if args:
if len(args) == 2 and not args[0] in kwargs and not kwargs:
if len(args) == 2 and args[0] not in kwargs and not kwargs:
kwargs[args[0]] = args[1]
else:
raise ValueError("Invalid positional arguments for %s.set_param" %
Expand Down Expand Up @@ -3388,7 +3384,7 @@ def __set_name(mcs, name, dict_):
"""
name_param = dict_.get("name", None)
if name_param is not None:
if not type(name_param) is String:
if type(name_param) is not String:
raise TypeError(
f"Parameterized class {name!r} cannot override "
f"the 'name' Parameter with type {type(name_param)}. "
Expand Down
4 changes: 2 additions & 2 deletions param/parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -1404,7 +1404,7 @@ def serialize(cls, value):
if not isinstance(v, (dt.datetime, dt.date)): # i.e np.datetime64
v = v.astype(dt.datetime)
# Separate date and datetime to deserialize to the right type.
if type(v) == dt.date:
if type(v) is dt.date:
v = v.strftime("%Y-%m-%d")
else:
v = v.strftime("%Y-%m-%dT%H:%M:%S.%f")
Expand Down Expand Up @@ -1958,7 +1958,7 @@ def _ensure_value_is_in_objects(self, val):
Subclasses can override if they support multiple items on a list,
to check each item instead.
"""
if not (val in self.objects):
if val not in self.objects:
self._objects.append(val)

def get_range(self):
Expand Down
4 changes: 2 additions & 2 deletions param/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ def objectselector_schema(cls, p, safe=False):
schema = {'anyOf': allowed_types}
schema['enum'] = p.objects
return schema
except:
except Exception:
if safe is True:
msg = ('ObjectSelector cannot be guaranteed to be safe for '
'serialization due to unserializable type in objects')
Expand All @@ -267,7 +267,7 @@ def selector_schema(cls, p, safe=False):
schema = {'anyOf': allowed_types}
schema['enum'] = p.objects
return schema
except:
except Exception:
if safe is True:
msg = ('Selector cannot be guaranteed to be safe for '
'serialization due to unserializable type in objects')
Expand Down
14 changes: 8 additions & 6 deletions param/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@

__author__ = 'Jean-Luc Stevens'

import os, subprocess, json
import os
import subprocess
import json

def run_cmd(args, cwd=None):
kwargs = {}
Expand Down Expand Up @@ -192,7 +194,7 @@ def git_fetch(self, cmd='git', as_string=False):
output = self._output_from_file()
if output is not None:
self._update_from_vcs(output)
except: pass
except Exception: pass
if output is None:
# glob pattern (not regexp) matching vX.Y.Z* tags
output = run_cmd([cmd, 'describe', '--long', '--match',
Expand Down Expand Up @@ -251,7 +253,7 @@ def _output_from_file(self, entry='git_describe'):
vfile = os.path.join(os.path.dirname(self.fpath), '.version')
with open(vfile) as f:
return json.loads(f.read()).get(entry, None)
except: # File may be missing if using pip + git archive
except Exception: # File may be missing if using pip + git archive
return None


Expand Down Expand Up @@ -427,7 +429,7 @@ def setup_version(cls, setup_path, reponame, archive_commit=None,

if git_describe is not None:
info['git_describe'] = git_describe
except: pass
except Exception: pass

if git_describe is None:
extracted_directory_tag = Version.extract_directory_tag(setup_path, reponame)
Expand All @@ -436,7 +438,7 @@ def setup_version(cls, setup_path, reponame, archive_commit=None,
try:
with open(os.path.join(setup_path, pkgname, '.version'), 'w') as f:
f.write(json.dumps({'extracted_directory_tag':extracted_directory_tag}))
except:
except Exception:
print('Error in setup_version: could not write .version file.')


Expand All @@ -449,7 +451,7 @@ def setup_version(cls, setup_path, reponame, archive_commit=None,
try:
with open(os.path.join(setup_path, pkgname, '.version'), 'w') as f:
f.write(json.dumps(info))
except:
except Exception:
print('Error in setup_version: could not write .version file.')

return info['version_string']
Expand Down
16 changes: 16 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,19 @@ asyncio_default_fixture_loop_scope="function"

[tool.coverage.report]
omit = ["param/version.py"]

[tool.ruff]
fix = true
include = ["*.py"]

[tool.ruff.lint]
select = ["W", "E", "F"]
ignore = [
"E402", # Module level import not at top of file
"E501", # Line too long
"E701", # Multiple statements on one line
"E712", # Comparison to true should be is
"E731", # Do not assign a lambda expression, use a def
"E741", # Ambiguous variable name
"F405", # From star imports
]
2 changes: 1 addition & 1 deletion tests/testclassselector.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def _check_defaults(self, p):
assert p.allow_None is True
assert p.instantiate is True
assert p.is_instance is True
assert p.class_ == dict
assert p.class_ is dict

def test_defaults_class(self):
class P(param.Parameterized):
Expand Down
2 changes: 1 addition & 1 deletion tests/testdateparam.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

try:
import numpy as np
except:
except ImportError:
hoxbro marked this conversation as resolved.
Show resolved Hide resolved
np = None

from .utils import check_defaults
Expand Down
2 changes: 1 addition & 1 deletion tests/testdaterangeparam.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

try:
import numpy as np
except:
except ImportError:
np = None

# Assuming tests of range parameter cover most of what's needed to
Expand Down
4 changes: 2 additions & 2 deletions tests/testdefaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class P(param.Parameterized):

for slot in param.parameterized.get_all_slots(parameter):
# Handled in a special way, skip it
if type(parameter) == param.Composite and slot == 'objtype':
if type(parameter) is param.Composite and slot == 'objtype':
continue
assert getattr(P.param.p, slot) is not param.Undefined
# Handled in a special way, skip it
Expand All @@ -82,7 +82,7 @@ class P(param.Parameterized):

for slot in param.parameterized.get_all_slots(parameter):
# Handled in a special way, skip it
if type(parameter) == param.Composite and slot == 'objtype':
if type(parameter) is param.Composite and slot == 'objtype':
continue
assert getattr(inst.param.p, slot) is not param.Undefined
# Handled in a special way, skip it
Expand Down
18 changes: 9 additions & 9 deletions tests/testfiledeserialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,27 @@
try:
import numpy as np
ndarray = np.array([[1,2,3],[4,5,6]])
except:
except Exception:
hoxbro marked this conversation as resolved.
Show resolved Hide resolved
np = ndarray = None

try:
import pandas as pd
pd_ver = pd.__version__.split('.')
df = pd.DataFrame({'A':[1,2,3], 'B':[1.1,2.2,3.3]})
modern_pd = pd if (int(pd_ver[0]) >= 1 and int(pd_ver[1]) >= 2) else None
except:
except ImportError:
pd = df1 = df2 = modern_pd = None

# The writer could be xlsxwriter, but the sufficient condition is the presence of
# openpyxl
try:
import openpyxl as xlsxm
except:
except ImportError:
xlsxm = None

try:
import odf as ods
except:
except ImportError:
ods = None

# prior to pandas version 1.2, xlrd was always the default excel reader (though it
Expand All @@ -42,27 +42,27 @@
import xlrd as xls
if int(xls.__version__.split('.')[0]) > 2:
raise Exception()
except:
except ImportError:
if modern_pd is None:
xlsxm = None

try:
import pyarrow.feather as feather
except:
except ImportError:
feather = None

try:
import fastparquet as parquet
except:
except ImportError:
parquet = None
try:
import pyarrow as parquet
except:
except ImportError:
pass

try:
import tables as hdf5
except:
except ImportError:
hdf5 = None

np_skip = skipIf(np is None, "NumPy is not available")
Expand Down
Loading