Skip to content

Commit 12ff672

Browse files
authored
Merge pull request #1138 from mathics/drymodules-rocky
dry module loading
2 parents 2af2c17 + cc90a7a commit 12ff672

2 files changed

Lines changed: 24 additions & 91 deletions

File tree

mathics/builtin/__init__.py

Lines changed: 24 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,18 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
33

4+
import glob
5+
import importlib
6+
import re
7+
import os.path as osp
8+
from mathics.settings import ENABLE_FILES_MODULE
49

5-
from mathics.builtin import (
6-
algebra,
7-
arithmetic,
8-
assignment,
9-
attributes,
10-
calculus,
11-
combinatorial,
12-
compilation,
13-
comparison,
14-
constants,
15-
control,
16-
datentime,
17-
diffeqns,
18-
evaluation,
19-
exptrig,
20-
functional,
21-
graphics,
22-
graphics3d,
23-
image,
24-
inout,
25-
integer,
26-
iohooks,
27-
linalg,
28-
lists,
29-
logic,
30-
manipulate,
31-
quantities,
32-
numbertheory,
33-
numeric,
34-
options,
35-
patterns,
36-
plot,
37-
physchemdata,
38-
randomnumbers,
39-
recurrence,
40-
specialfunctions,
41-
scoping,
42-
strings,
43-
structure,
44-
system,
45-
tensors,
46-
xmlformat,
47-
optimization,
48-
)
10+
# Get a list of file in this directory. We'll exclude from the start
11+
# files with leading characters we don't want like __init__ with its leading underscore.
12+
__py_files__ = [
13+
osp.basename(f[0:-3])
14+
for f in glob.glob(osp.join(osp.dirname(__file__), "[a-z]*.py"))
15+
]
4916

5017
from mathics.builtin.base import (
5118
Builtin,
@@ -57,55 +24,23 @@
5724

5825
from mathics.settings import ENABLE_FILES_MODULE
5926

60-
modules = [
61-
algebra,
62-
arithmetic,
63-
assignment,
64-
attributes,
65-
calculus,
66-
combinatorial,
67-
compilation,
68-
comparison,
69-
constants,
70-
control,
71-
datentime,
72-
diffeqns,
73-
evaluation,
74-
exptrig,
75-
functional,
76-
graphics,
77-
graphics3d,
78-
image,
79-
inout,
80-
integer,
81-
iohooks,
82-
linalg,
83-
lists,
84-
logic,
85-
manipulate,
86-
quantities,
87-
numbertheory,
88-
numeric,
89-
options,
90-
patterns,
91-
plot,
92-
physchemdata,
93-
randomnumbers,
94-
recurrence,
95-
specialfunctions,
96-
scoping,
97-
strings,
98-
structure,
99-
system,
100-
tensors,
101-
xmlformat,
102-
optimization,
27+
exclude_files = set(("files", "codetables", "base", "importexport", "colors"))
28+
module_names = [
29+
f for f in __py_files__ if re.match("^[a-z0-9]+$", f) if f not in exclude_files
10330
]
10431

10532
if ENABLE_FILES_MODULE:
106-
from mathics.builtin import files, importexport
33+
module_names += ["files", "importexport"]
34+
35+
modules = []
10736

108-
modules += [files, importexport]
37+
for module_name in module_names:
38+
try:
39+
module = importlib.import_module("mathics.builtin." + module_name)
40+
except:
41+
# print("XXX", module_name)
42+
continue
43+
modules.append(module)
10944

11045
builtins = []
11146
builtins_by_module = {}

mathics/builtin/files.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4444,8 +4444,6 @@ class ResetDirectory(Builtin):
44444444

44454445
def apply(self, evaluation):
44464446
"ResetDirectory[]"
4447-
global DIRECTORY_STACK
4448-
44494447
try:
44504448
tmp = DIRECTORY_STACK.pop()
44514449
except IndexError:

0 commit comments

Comments
 (0)