from __future__ import absolute_import, print_function, unicode_literals
import os
import subprocess
import sys
from functools import partial
from wolframclient.cli.utils import SimpleCommand
from wolframclient.utils.decorators import to_tuple
from wolframclient.utils.functional import flatten, iterate
from wolframclient.utils.importutils import module_path
process_verbose = partial(
subprocess.Popen,
stdout=sys.stdout,
stdin=subprocess.PIPE,
stderr=sys.stderr,
env=os.environ,
)
[docs]
@to_tuple
def wait_for_process(processes, raise_errors=True, show_output=False):
for p in iterate(processes):
if raise_errors and not p.wait() == 0:
raise ValueError("Process finished with non zero status:")
p.wait()
yield p
[docs]
class Command(SimpleCommand):
modules = ["wolframclient"]
@to_tuple
def _process_args(self, repo, pre, *args):
yield sys.executable
yield "-m"
yield from iterate(pre)
yield module_path(repo)
yield from args
[docs]
def run(self, pre, *args):
args = tuple(flatten(args))
args = tuple(self._process_args(repo, pre, *args) for repo in self.modules)
for a in args:
print(" ".join(a))
return wait_for_process(map(process_verbose, args), raise_errors=False)
[docs]
def handle(self, **opts):
# self.run(("ruff", "format"), "--target-version", "py311")
# to do import replacement do python -m isort Git/rotostampa --force-single-line-imports
self.run(
("ruff", "check"),
"--fix",
"--unsafe-fixes",
"--select",
"ALL",
(
("--ignore", r)
for r in (
"ANN001",
"ANN002",
"ANN003",
"ANN101",
"ANN102",
"ANN201",
"ANN202",
"ANN204",
"ANN205",
"ANN206",
"ANN401",
"B006",
"COM812",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D200",
"D201",
"D202",
"D203",
"D204",
"D205",
"D206",
"D207",
"D208",
"D209",
"D210",
"D211",
"D212",
"D213",
"D214",
"D215",
"D300",
"D301",
"D400",
"D401",
"D402",
"D403",
"D404",
"D405",
"D406",
"D407",
"D408",
"D409",
"D410",
"D411",
"D412",
"D413",
"D414",
"D415",
"D416",
"D417",
"D418",
"D419",
"E501",
"E731",
"EM101",
"EM102",
"EM103",
"RET502",
"RET503",
"UP032",
"FLY002",
"PT009",
"SIM118",
"PT027",
"T201",
"T203",
"UP010",
"SIM105",
"UP009",
"G010",
"LOG009",
)
),
)
self.run(
"black",
"--line-length",
"95",
"--target-version",
"py311",
"--skip-magic-trailing-comma",
)