Skip to content

Commit 39c1bd5

Browse files
committed
Replace imports of distutils.
As reported in [Debian bug #1083070], the Python module distutils is going to be removed entirely from the upcoming Debian release, following the deprecation on Python side of the distutils module. Removal of distutils is causing test failures in bmtk though: Traceback: /usr/lib/python3.12/importlib/__init__.py:90: in import_module return _bootstrap._gcd_import(name[level:], package, level) tests/simulator/filternet/test_filternet_movies.py:5: in <module> from bmtk.utils.sim_setup import build_env_filternet /usr/lib/python3/dist-packages/bmtk/utils/sim_setup.py:32: in <module> from distutils.dir_util import copy_tree E ModuleNotFoundError: No module named 'distutils' These changes replace copy_tree invocations by shutil.copytree, with the option to clobber existing directories by default, as otherwise the refusal of erasing the target directory will cause other test regressions. The version sort invocation perusing LooseVersion is replaced by invocations of the bare packaging.version.Version. [Debian bug #1083070]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1083070 Signed-off-by: Étienne Mollier <[email protected]>
1 parent 1b2cc81 commit 39c1bd5

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

bmtk/analyzer/spikes_analyzer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import numpy as np
2525

2626
try:
27-
from distutils.version import LooseVersion
28-
use_sort_values = LooseVersion(pd.__version__) >= LooseVersion('0.19.0')
27+
from packaging.version import Version
28+
use_sort_values = Version(pd.__version__) >= Version('0.19.0')
2929

3030
except:
3131
use_sort_values = False

bmtk/utils/compile_mechanisms/compile_mechanisms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import os
22
import logging
33
from subprocess import call
4-
from distutils.dir_util import copy_tree
4+
from shutil import copytree
55

66

77
logger = logging.getLogger(__name__)
@@ -28,4 +28,4 @@ def copy_modfiles(mechanisms_dir, cached_dir=None):
2828
cached_dir = os.path.join(local_path, '..', 'scripts/bionet/mechanisms')
2929

3030
logger.info('Copying mod files from {} to {}'.format(cached_dir, mechanisms_dir))
31-
copy_tree(cached_dir, mechanisms_dir)
31+
copytree(cached_dir, mechanisms_dir, dirs_exist_ok=True)

bmtk/utils/create_environment/env_builder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from subprocess import call
2828
from collections import OrderedDict
2929
import logging
30-
from distutils.dir_util import copy_tree
30+
from shutil import copytree
3131

3232
from bmtk.utils.compile_mechanisms import copy_modfiles, compile_mechanisms
3333

@@ -270,7 +270,7 @@ def _create_components_dir(self, components_dir, with_examples=True):
270270

271271
if with_examples:
272272
logger.info(' Copying files from {}.'.format(src_dir))
273-
copy_tree(src_dir, trg_dir)
273+
copytree(src_dir, trg_dir, dirs_exist_ok=True)
274274

275275
# return components_config
276276
self._circuit_config['components'] = components_config

bmtk/utils/sim_setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from optparse import OptionParser
3030
from collections import OrderedDict
3131
import logging
32-
from distutils.dir_util import copy_tree
32+
from shutil import copytree
3333

3434

3535
logger = logging.getLogger(__name__)
@@ -248,7 +248,7 @@ def _create_components_dir(self, components_dir, with_examples=True):
248248

249249
if with_examples:
250250
logger.info(' Copying files from {}.'.format(src_dir))
251-
copy_tree(src_dir, trg_dir)
251+
copytree(src_dir, trg_dir, dirs_exist_ok=True)
252252

253253
# return components_config
254254
self._circuit_config['components'] = components_config
@@ -852,4 +852,4 @@ def membrane_report_parser(option, opt, value, parser):
852852
elif target_sim == 'filternet':
853853
build_env_filternet(base_dir=base_dir, network_dir=options.network_dir, tstop=options.tstop,
854854
include_examples=options.include_examples,
855-
config_file=options.config_file)
855+
config_file=options.config_file)

0 commit comments

Comments
 (0)