diff --git a/.coveragerc b/.coveragerc index 90b06f40..d2ef0864 100644 --- a/.coveragerc +++ b/.coveragerc @@ -10,6 +10,7 @@ omit= oar/tools/__init__.py oar/cli/oar2trace.py oar/cli/_oarbench.py + oar/cli/oarproxycleaner.py [report] exclude_lines = diff --git a/flake.lock b/flake.lock index 44b23d49..8ab2ebf4 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1687017257, - "narHash": "sha256-jbk0Szj1DPe9KwySeMr3KzYqW1JaUKJ6lYwSLMvc1n0=", + "lastModified": 1701053011, + "narHash": "sha256-8QQ7rFbKFqgKgLoaXVJRh7Ik5LtI3pyBBCfOnNOGkF0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aaef163eac75c2ac7f882c1fae4e0c08aa18d186", + "rev": "5b528f99f73c4fad127118a8c1126b5e003b01a9", "type": "github" }, "original": { diff --git a/oar/cli/oarconnect.py b/oar/cli/oarconnect.py index e983f1a4..ab13ee14 100644 --- a/oar/cli/oarconnect.py +++ b/oar/cli/oarconnect.py @@ -9,13 +9,19 @@ @click.command() @click.argument("job_id", nargs=1, required=True, type=int) -def cli(job_id): +@click.pass_context +def cli(ctx, job_id): """Connect to a reservation in Running state.""" - config, engine, log = init_oar() - session_factory = sessionmaker(bind=engine) - scoped = scoped_session(session_factory) - session = scoped() + ctx = click.get_current_context() + if ctx.obj: + (session, config) = ctx.obj + else: + config, engine, log = init_oar() + + session_factory = sessionmaker(bind=engine) + scoped = scoped_session(session_factory) + session = scoped() cmd_ret = CommandReturns() openssh_cmd = config["OPENSSH_CMD"] diff --git a/oar/cli/oarsub.py b/oar/cli/oarsub.py index 1e2a8c8b..c56cfa7f 100644 --- a/oar/cli/oarsub.py +++ b/oar/cli/oarsub.py @@ -247,13 +247,7 @@ def connect_job(session, config, job_id, stop_oarexec, openssh_cmd, cmd_ret): ) if (luser != job.user) and (luser != "oar"): - cmd_ret.error( - "User mismatch for job " - + str(job_id) - + " (job user is " - + job.user - + "." - ) + cmd_ret.error(f"User mismatch for job {job_id} (job user is {job.user})") cmd_ret.exit(20) cmd_ret.exit(0) diff --git a/oar/lib/models.py b/oar/lib/models.py index 9170e2ce..8352dc13 100644 --- a/oar/lib/models.py +++ b/oar/lib/models.py @@ -20,7 +20,7 @@ from oar.lib.database import Database -from .utils import reraise, to_json +from .utils import reraise # from .globals import db @@ -75,12 +75,6 @@ def to_dict(self, ignore_keys=()): asdict = to_dict - def to_json(self, **kwargs): - """Dump `self` to json string.""" - kwargs.setdefault("ignore_keys", ()) - obj = self.to_dict(kwargs.pop("ignore_keys")) - return to_json(obj, **kwargs) - def __iter__(self): """Return an iterable that supports .next()""" for key, value in (self.asdict()).items(): diff --git a/oar/lib/utils.py b/oar/lib/utils.py index 6dd71afd..221a4d0a 100644 --- a/oar/lib/utils.py +++ b/oar/lib/utils.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- import copy -import datetime -import decimal import os import re import sys @@ -10,8 +8,6 @@ from collections.abc import Callable from decimal import Decimal, InvalidOperation -import simplejson as json - basestring = (str, bytes) integer_types = (int,) numeric_types = integer_types + (float,) @@ -78,35 +74,6 @@ def callable(obj): return isinstance(obj, Callable) -class JSONEncoder(json.JSONEncoder): - """JSON Encoder class that handles conversion for a number of types not - supported by the default json library, especially the sqlalchemy objects. - - :returns: object that can be converted to json - """ - - def default(self, obj): - if isinstance(obj, (datetime.datetime, datetime.date, datetime.time)): - return obj.isoformat() - elif isinstance(obj, (decimal.Decimal)): - return to_unicode(obj) - elif hasattr(obj, "asdict") and callable(getattr(obj, "asdict")): - return obj.asdict() - elif hasattr(obj, "to_dict") and callable(getattr(obj, "to_dict")): - return obj.to_dict() - else: - return json.JSONEncoder.default(self, obj) - - -def to_json(obj, **kwargs): - """Dumps object to json string.""" - kwargs.setdefault("ensure_ascii", False) - kwargs.setdefault("cls", JSONEncoder) - kwargs.setdefault("indent", 4) - kwargs.setdefault("separators", (",", ": ")) - return json.dumps(obj, **kwargs) - - def touch(fname, times=None): dirname = "/".join(fname.split("/")[:-1]) if not os.path.exists(dirname): diff --git a/poetry.lock b/poetry.lock index 159fd2fa..e754f035 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2583,6 +2583,21 @@ platformdirs = ">=3.9.1,<4" docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +[[package]] +name = "vulture" +version = "2.10" +description = "Find dead code" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "vulture-2.10-py2.py3-none-any.whl", hash = "sha256:568a4176db7468d0157817ae3bb1847a19f1ddc629849af487f9d3b279bff77d"}, + {file = "vulture-2.10.tar.gz", hash = "sha256:2a5c3160bffba77595b6e6dfcc412016bd2a09cd4b66cdf7fbba913684899f6f"}, +] + +[package.dependencies] +toml = "*" + [[package]] name = "wcwidth" version = "0.2.9" @@ -2705,4 +2720,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <4" -content-hash = "e80cb6effd4fa79e5fcec4dd180dd1cbd87e9d75f81a12ec7352666f0a24c9b2" +content-hash = "68a93e757577e3c200d3602ee078e2daeaa10a3423a3dd44c5e56cdfc0e85fb5" diff --git a/pyproject.toml b/pyproject.toml index 847a328b..1b8e9d4d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,6 +97,10 @@ redis = "^3.5.3" [tool.poetry.group.docs.dependencies] sphinx-rtd-theme = "^1.3.0" + +[tool.poetry.group.dev.dependencies] +vulture = "^2.10" + [tool.black] line-length = 88 include = '\.pyi?$'