Skip to content

Commit 8088c13

Browse files
authored
Merge pull request #1374 from mathics/system-info
Easy access to system information
2 parents 9343528 + 2bae2ec commit 8088c13

File tree

4 files changed

+79
-10
lines changed

4 files changed

+79
-10
lines changed

mathics/settings.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#!/usr/bin/env python3
21
# -*- coding: utf-8 -*-
32

43

mathics/system_info.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import os
4+
import sys
5+
import platform
6+
import mathics.builtin.system as msystem
7+
import mathics.builtin.datentime as datentime
8+
import mathics.builtin.files_io.filesystem as filesystem
9+
import mathics.builtin.numeric as numeric
10+
11+
from mathics.core.definitions import Definitions
12+
from mathics.core.evaluation import Evaluation
13+
14+
def mathics_system_info(defs):
15+
def eval(name, needs_head=True):
16+
evaled = name().evaluate(evaluation)
17+
if needs_head:
18+
return evaled.head.to_python(string_quotes=False)
19+
else:
20+
return evaled.to_python(string_quotes=False)
21+
22+
evaluation = Evaluation(defs, output=None)
23+
return {
24+
"$Machine": sys.platform,
25+
"$MachineName": platform.uname().node,
26+
"$ProcessID": os.getppid(),
27+
"$ProcessorType": platform.machine(),
28+
"$SystemID": sys.platform,
29+
"$UserName": eval(msystem.UserName),
30+
"$SystemMemory": eval(msystem.SystemMemory),
31+
"MemoryAvailable[]": eval(msystem.MemoryAvailable, needs_head=False),
32+
"$SystemTimeZone": eval(datentime.SystemTimeZone),
33+
"MachinePrecision": eval(numeric.MachinePrecision_),
34+
"$BaseDirectory": eval(filesystem.BaseDirectory),
35+
"$RootDirectory": eval(filesystem.RootDirectory),
36+
"$HomeDirectory": eval(filesystem.HomeDirectory),
37+
"$InstallationDirectory": eval(filesystem.InstallationDirectory),
38+
"$TemporaryDirectory": eval(filesystem.TemporaryDirectory),
39+
40+
# ----
41+
# Django specific:
42+
# - - -
43+
# MATHIC_DJANGO_DB_PATH
44+
# DOC_XML_DATA
45+
}

test/test_system_info.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# -*- coding: utf-8 -*-
2+
from .helper import session
3+
4+
from mathics.system_info import mathics_system_info
5+
6+
7+
def test_system_info():
8+
info = mathics_system_info(session.definitions)
9+
10+
from pprint import pprint
11+
12+
pprint(info)
13+
14+
expected_keys = set(
15+
[
16+
"$BaseDirectory",
17+
"$HomeDirectory",
18+
"$InstallationDirectory",
19+
"$Machine",
20+
"$MachineName",
21+
"$ProcessID",
22+
"$ProcessorType",
23+
"$RootDirectory",
24+
"$SystemID",
25+
"$SystemMemory",
26+
"$SystemTimeZone",
27+
"$TemporaryDirectory",
28+
"$UserName",
29+
"MachinePrecision",
30+
"MemoryAvailable[]",
31+
]
32+
)
33+
assert set(info.keys()) == expected_keys

test/test_to_python.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
from .helper import session, check_evaluation
3-
4-
import math
5-
import sympy
6-
import sys
7-
from mathics.core.definitions import Definitions
8-
from mathics.core.evaluation import Evaluation
9-
import pytest
10-
2+
from .helper import check_evaluation
113

124
def test_to_infinity():
135
for str_expr, str_expected, message in (

0 commit comments

Comments
 (0)