Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
2 changes: 1 addition & 1 deletion omv/autogen.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def generate_dottravis(targets):
travis = UnsortableOrderedDict(
[
("language", "python"),
("python", 2.7),
("python", 3.12),
("env", engines),
("install", ["pip install " + repo]),
("script", ["omv all"]),
Expand Down
14 changes: 0 additions & 14 deletions omv/engines/getnetpyne.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from omv.engines.utils.wdir import working_dir
from omv.common.inout import pip_install
import os
import sys


def install_netpyne(version=None):
Expand Down Expand Up @@ -33,19 +32,6 @@ def install_netpyne(version=None):
print(check_output(["pwd"]))

with working_dir(path):
if sys.version_info.major == 2:
pip_install(
[
"kiwisolver==1.0.1",
"matplotlib==2.2.4",
"pandas==0.23.4",
"bokeh==1.4.0",
"Pillow==5.4.1",
"matplotlib-scalebar==0.5.1",
"scipy==1.2.2",
"python-dateutil==2.8.0",
]
)
pip_install(".")

m = "Successfully installed NetPyNE..."
20 changes: 9 additions & 11 deletions omv/engines/getnrn.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
import os
import sys
import re
from subprocess import check_output as co
from omv.common.inout import inform
from omv.common.inout import pip_install

from omv.engines.utils.wdir import working_dir

DEFAULT_NEURON_VERSION = "8.2.7"


def _supports_pip_install(version):
return bool(re.match(r"^7\.8($|\.)|^8\.", version))


def install_neuron(version):
if not version:
if sys.version_info.major == 3:
version = "8.2.7"
else:
version = "7.6"
version = DEFAULT_NEURON_VERSION

if sys.version_info.major == 3 and ("7.8" in version or "8." in version):
if _supports_pip_install(version):
pip_install("neuron==%s" % version)
import neuron

Expand All @@ -31,12 +35,6 @@ def install_neuron(version):
)
dl_file = "nrn-%s.tar.gz" % version

# See below re 7.8 on py2...
if "7.8" in version or "8.0" in version:
nrn_url = "https://github.com/neuronsimulator/nrn/archive/%s.tar.gz" % (
version
)
dl_file = "%s.tar.gz" % version
print(co(["wget", "-nv", nrn_url]))
print(co(["tar", "xzvf", dl_file]))
print(co(["mv", "nrn-%s" % version, "nrn"]))
Expand Down
6 changes: 1 addition & 5 deletions omv/engines/neuron_.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import os
import sys
from glob import glob
import platform
import subprocess as sp
Expand Down Expand Up @@ -175,10 +174,7 @@ def run(self):
self.modelpath,
"\n".join(self.extra_pars),
)
if sys.version_info[0] == 3:
c = dedent(cmd).encode()
else:
c = dedent(cmd)
c = dedent(cmd).encode()
stdout, stderr = p.communicate(c)
# with open('/tmp/omv_test.nrn.stdout', 'w') as f:
# f.write(stdout)
Expand Down
6 changes: 1 addition & 5 deletions omv/engines/pyneuron.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from textwrap import dedent
from omv.engines.utils.wdir import working_dir
from os.path import dirname
import sys

from omv.engines.neuron_ import NeuronEngine

Expand Down Expand Up @@ -73,10 +72,7 @@ def run(self):
cmd = """\
%s
""" % ("\n".join(self.extra_pars))
if sys.version_info[0] == 3:
c = dedent(cmd).encode()
else:
c = dedent(cmd)
c = dedent(cmd).encode()
stdout, stderr = p.communicate(c)
# with open('/tmp/omv_test.nrn.stdout', 'w') as f:
# f.write(stdout)
Expand Down
6 changes: 1 addition & 5 deletions omv/parse_omt.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from omv.omt_mep_parser import OMVTestParser
from omv.common.inout import inform, check, trim_path
from omv.tally import Tallyman
import sys
import platform


Expand Down Expand Up @@ -67,10 +66,7 @@ def parse_omt(omt_path, do_not_run=False, engine_version=None, ignore_non_py3=Fa
indent=3,
)
for rn, rv in results.items():
if sys.version_info >= (3, 0):
inform("{:<30}{:^20}".format(rn, check(rv)), indent=3)
else:
inform("{:<30}{:^20}".format(rn, check(rv)), indent=3)
inform("{:<30}{:^20}".format(rn, check(rv)), indent=3)
if not rv:
some_failed = True
tally.add_experiment(exp, results)
Expand Down
57 changes: 57 additions & 0 deletions omv/test/test_drop_py2_bits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from contextlib import contextmanager
import sys
import types

import pytest

from omv.engines import getnetpyne, getnrn


def test_install_neuron_defaults_to_modern_version(monkeypatch):
pip_calls = []

monkeypatch.setattr(getnrn, "pip_install", lambda spec: pip_calls.append(spec))
monkeypatch.setattr(getnrn, "inform", lambda *args, **kwargs: None)
monkeypatch.setitem(sys.modules, "neuron", types.SimpleNamespace())

getnrn.install_neuron(None)

assert pip_calls == [f"neuron=={getnrn.DEFAULT_NEURON_VERSION}"]


@pytest.mark.parametrize("version", ["7.8.1", "8.2.7"])
def test_install_neuron_supported_versions_use_pip(monkeypatch, version):
pip_calls = []

monkeypatch.setattr(getnrn, "pip_install", lambda spec: pip_calls.append(spec))
monkeypatch.setattr(getnrn, "inform", lambda *args, **kwargs: None)
monkeypatch.setitem(sys.modules, "neuron", types.SimpleNamespace())

getnrn.install_neuron(version)

assert pip_calls == [f"neuron=={version}"]


@pytest.mark.parametrize(
"version,expected",
[("7.8", True), ("7.8.1", True), ("8.2.7", True), ("7.80", False), ("7.7.2", False)],
)
def test_supports_pip_install_matches_supported_families(version, expected):
assert getnrn._supports_pip_install(version) is expected


def test_install_netpyne_without_version_only_installs_package(monkeypatch):
pip_calls = []

@contextmanager
def no_op_working_dir(_):
yield

monkeypatch.setattr(getnetpyne.os.path, "isdir", lambda _: True)
monkeypatch.setattr(getnetpyne, "working_dir", no_op_working_dir)
monkeypatch.setattr(getnetpyne, "check_output", lambda *_: "")
monkeypatch.setattr(getnetpyne, "pip_install", lambda spec: pip_calls.append(spec))

getnetpyne.install_netpyne()

assert pip_calls == ["."]
Loading