Skip to content

Commit

Permalink
builtin.system_init -> core.system_init
Browse files Browse the repository at this point in the history
Move system initialization module out of mathics.builtin.
(Similar to PR #639)

This also removes the need for Python to "partially initialize"
mathics.builtin since it doesn't import one of its children
  • Loading branch information
rocky committed Dec 4, 2022
1 parent 2eed518 commit 2985323
Show file tree
Hide file tree
Showing 11 changed files with 26 additions and 20 deletions.
2 changes: 1 addition & 1 deletion examples/symbolic_logic/gries_schneider/test_gs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# -*- coding: utf-8 -*-


from mathics.builtin.system_init import initialize_system
from mathics.core.definitions import Definitions
from mathics.core.evaluation import Evaluation
from mathics.core.parser import MathicsSingleLineFeeder, parse
from mathics.core.system_init import initialize_system

initialize_system()
definitions = Definitions(add_builtin=True)
Expand Down
2 changes: 1 addition & 1 deletion mathics/builtin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
SympyObject,
mathics_to_python,
)
from mathics.builtin.system_init import get_builtin_pyfiles, name_is_builtin_symbol
from mathics.core.pattern import pattern_objects
from mathics.core.system_init import get_builtin_pyfiles, name_is_builtin_symbol
from mathics.settings import ENABLE_FILES_MODULE

__py_files__ = get_builtin_pyfiles()
Expand Down
2 changes: 1 addition & 1 deletion mathics/core/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
Symbol,
strip_context,
)
from mathics.core.system_init import contribute
from mathics.core.systemsymbols import SymbolGet

from mathics_scanner.tokeniser import full_names_pattern
Expand Down Expand Up @@ -130,7 +131,6 @@ def __init__(

if add_builtin:
from mathics.builtin import modules
from mathics.builtin.system_init import contribute
from mathics.settings import ROOT_DIR

loaded = False
Expand Down
2 changes: 1 addition & 1 deletion mathics/core/pymathics.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import sys


from mathics.builtin.system_init import builtins_by_module, name_is_builtin_symbol
from mathics.core.evaluation import Evaluation
from mathics.core.system_init import builtins_by_module, name_is_builtin_symbol

# Tis dict
# Probably this do not belong here.
Expand Down
22 changes: 13 additions & 9 deletions mathics/builtin/system_init.py → mathics/core/system_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,6 @@
import os.path as osp
from typing import Optional

from mathics.builtin.base import (
Builtin,
Operator,
PatternObject,
SympyObject,
mathics_to_python,
)

from mathics.core.pattern import pattern_objects

builtins_precedence = {}
Expand All @@ -31,6 +23,13 @@


def add_builtins(new_builtins):
from mathics.builtin.base import (
Operator,
PatternObject,
SympyObject,
mathics_to_python,
)

for var_name, builtin in new_builtins:
name = builtin.get_name()
if hasattr(builtin, "python_equivalent"):
Expand Down Expand Up @@ -79,6 +78,7 @@ def contribute(definitions):

def create_builtins_by_module():
from mathics.builtin import modules
from mathics.builtin.base import Builtin

for module in modules:
builtins_by_module[module.__name__] = []
Expand Down Expand Up @@ -109,7 +109,9 @@ def get_builtin_pyfiles() -> tuple:
"""
return tuple(
osp.basename(f[0:-3])
for f in glob.glob(osp.join(osp.dirname(__file__), "[a-z]*.py"))
for f in glob.glob(
osp.join(osp.dirname(__file__), "..", "builtin", "[a-z]*.py")
)
)


Expand Down Expand Up @@ -141,6 +143,8 @@ def name_is_builtin_symbol(module, name: str) -> Optional[type]:
Return ``None`` if the name should not get added to definitions.
"""
from mathics.builtin.base import Builtin

if name.startswith("_"):
return None

Expand Down
6 changes: 4 additions & 2 deletions mathics/doc/common_doc.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,14 @@
from types import ModuleType
from typing import Callable

import mathics.core as core
from mathics import builtin
from mathics import settings
from mathics.builtin.base import check_requires_list
from mathics.core.evaluation import Message, Print
from mathics.core.util import IS_PYPY
from mathics.core.system_init import name_is_builtin_symbol

from mathics.doc.utils import slugify

# These regular expressions pull out information from docstring or text in a file.
Expand Down Expand Up @@ -830,7 +833,7 @@ def __init__(self, want_sorting=False):
(
"Reference of Built-in Symbols",
builtin.modules,
builtin.system_init.builtins_by_module,
core.system_init.builtins_by_module,
True,
)
]: # nopep8
Expand Down Expand Up @@ -1088,7 +1091,6 @@ def __init__(self, module=None):
# Load the dictionary of mathics symbols defined in the module
self.symbols = {}
from mathics.builtin.base import Builtin
from mathics.builtin.system_init import name_is_builtin_symbol

print("loading symbols")
for name in dir(self.pymathicsmodule):
Expand Down
2 changes: 1 addition & 1 deletion mathics/docpipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from mathics.core.definitions import Definitions
from mathics.core.evaluation import Evaluation, Output
from mathics.core.parser import MathicsSingleLineFeeder
from mathics.builtin.system_init import builtins_dict, initialize_system
from mathics.core.system_init import builtins_dict, initialize_system

from mathics import version_string
from mathics import settings
Expand Down
2 changes: 1 addition & 1 deletion mathics/format/mathml.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
)
from mathics.builtin.box.graphics import GraphicsBox
from mathics.builtin.box.graphics3d import Graphics3DBox
from mathics.builtin.system_init import display_operators_set as operators


from mathics.core.atoms import String
Expand All @@ -33,6 +32,7 @@
)
from mathics.core.parser import is_symbol_name
from mathics.core.symbols import SymbolTrue
from mathics.core.system_init import display_operators_set as operators


def encode_mathml(text: str) -> str:
Expand Down
2 changes: 1 addition & 1 deletion mathics/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
from mathics import settings
from mathics import version_string, license_string, __version__
from mathics.builtin.trace import TraceBuiltins, traced_do_replace
from mathics.builtin.system_init import initialize_system
from mathics.core.atoms import String
from mathics.core.definitions import autoload_files, Definitions, Symbol
from mathics.core.evaluation import Evaluation, Output
Expand All @@ -24,6 +23,7 @@
from mathics.core.rules import BuiltinRule
from mathics.core.symbols import strip_context, SymbolNull
from mathics.core.streams import stream_manager
from mathics.core.system_init import initialize_system
from mathics.timing import show_lru_cache_statistics


Expand Down
2 changes: 1 addition & 1 deletion mathics/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
import os.path as osp
from typing import Optional

from mathics.builtin.system_init import initialize_system
from mathics.core.definitions import autoload_files
from mathics.core.parser import parse, MathicsSingleLineFeeder
from mathics.core.definitions import Definitions
from mathics.core.evaluation import Evaluation
from mathics.core.system_init import initialize_system
import mathics.settings


Expand Down
2 changes: 1 addition & 1 deletion test/consistency-and-style/test_duplicate_builtins.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import os
from mathics.builtin import modules
from mathics.builtin.base import Builtin
from mathics.builtin.system_init import name_is_builtin_symbol
from mathics.core.system_init import name_is_builtin_symbol


@pytest.mark.skipif(
Expand Down

0 comments on commit 2985323

Please sign in to comment.