import nox from nox.logger import logger import os import shutil to_append = [] path = os.environ.get("PATH", "").split(os.pathsep) while True: python = shutil.which("python", path=os.pathsep.join(path)) if python is None: break python = os.path.dirname(python) for elem in path: if elem.startswith(python): path.remove(elem) to_append.append(elem) path += to_append path = os.pathsep.join(path) os.environ["PATH"] = path versions = ["3.{}".format(s) for s in [6, 7, 8]] versions += ["3"] nox.options.keywords = "test" @nox.session(python=versions,venv_backend="conda") def devenv(session): """Set up development environment""" global path location = os.path.abspath(session._runner.venv.location_name) session.env["PATH"] = os.pathsep.join([location, path, location]) session.conda_install("pycrypto", "ujson") session.install("--no-cache-dir", "-e",".") logger.warning(f'Devenv set up, now run "conda activate {location}"') @nox.session(python=versions, venv_backend="conda") def test(session): """Run the test suite.""" global path location = os.path.abspath(session._runner.venv.location_name) python = os.path.join(location, "python.exe") # friendly_name = session._runner.friendly_name cargo_args = ["--manifest-path", "./rust/Cargo.toml"] session.env["PATH"] = os.pathsep.join([location, path, location]) # ================================================ session.run(python, "-VV", external=True) session.run("cargo", "clean", *cargo_args, external=True) session.run("cargo", "clean", *(cargo_args + ["--release"]), external=True) session.run("cargo", "test", *cargo_args, external=True) session.conda_install("pycrypto", "ujson") session.install("--no-cache-dir", "setuptools_rust") session.install("--no-cache-dir", ".[all]") session.run("py.test", "-v", *(session.posargs or [])) if session.python: session.notify(f"build-{session.python}") @nox.session(python=versions, venv_backend="conda") def build(session): "Build installer and zip" global path location = session._runner.venv.location_name python = os.path.join(location, "python.exe") location = os.path.abspath(location) cargo_args = ["--manifest-path", "./rust/Cargo.toml"] session.env["PATH"] = os.pathsep.join([location, path, location]) # ================================================ session.run(python, "-VV", external=True) session.run("cargo", "clean", *cargo_args, external=True) session.run("cargo", "clean", *(cargo_args + ["--release"]), external=True) session.conda_install("pycrypto", "ujson") session.install("--no-cache-dir", ".[gui,web,build]") session.run( "pyinstaller", "-y", "--console", "--noupx", "--clean", "--hidden-import", "pkg_resources.py2_warn", "--name", f"ED_LRR_{session.python}", "--specpath", "build", "ed_lrr_gui/__main__.py", external=True, silent=True, ) if session.python: source_path = os.path.abspath(f"./dist/ED_LRR_{session.python}") else: source_path = os.path.abspath(f"./dist/ED_LRR") source_path = source_path.strip(os.sep) session.run( "iscc", f'/FED_LRR_{session.python}', f'/DSourceFolder={source_path}', "installer/ED_LRR.iss", external=True, silent=True, )