diff --git a/mathics/builtin/directories/user_directories.py b/mathics/builtin/directories/user_directories.py index ea5e66a60..eac3f828e 100644 --- a/mathics/builtin/directories/user_directories.py +++ b/mathics/builtin/directories/user_directories.py @@ -13,7 +13,7 @@ class Path(Predefined): - """ + r""" :WMA link:https://reference.wolfram.com/language/ref/Path.html
@@ -23,6 +23,13 @@ class Path(Predefined): >> $Path = ... + + '\$Path' used consulted in builtin functions + :\$Get: + /doc/reference-of-built-in-symbols/inputoutput-files-and-filesystem/file-and-stream-operations/get/, \ + and + :Needs: + /doc/reference-of-built-in-symbols/inputoutput-files-and-filesystem/filesystem-operations/needs/ to resolve filenames, and to resolve contexts to file names. """ attributes = A_NO_ATTRIBUTES diff --git a/mathics/builtin/files_io/files.py b/mathics/builtin/files_io/files.py index c66ddf908..c7f2cccb9 100644 --- a/mathics/builtin/files_io/files.py +++ b/mathics/builtin/files_io/files.py @@ -375,9 +375,28 @@ class Get(PrefixOperator): = Cos[x] + I Sin[x] S> DeleteFile[filename] + If the 'Path' is not fully qualified built-in variable + :\$Path: + /doc/reference-of-built-in-symbols/directories-and-directory-operations/user-file-directories/$path/ is consulted. + + 'Get' can also load packages: + >> $ContextPath + = ... + S> << "VectorAnalysis`" + = ... + + If a package is loaded variable + :\$ContextPath: + /doc/reference-of-built-in-symbols/scoping-constructs/$contextpath/ is updated with the new package context name: + >> $ContextPath + = ... + + See also + :Needs: + /doc/reference-of-built-in-symbols/inputoutput-files-and-filesystem/filesystem-operations/needs/. + + ## TODO: Requires EndPackage implemented - ## 'Get' can also load packages: - ## >> << "VectorAnalysis`" """ eval_error = Builtin.generic_argument_error diff --git a/mathics/builtin/files_io/filesystem.py b/mathics/builtin/files_io/filesystem.py index 9f910eb53..00cd94b70 100644 --- a/mathics/builtin/files_io/filesystem.py +++ b/mathics/builtin/files_io/filesystem.py @@ -834,6 +834,21 @@ class Needs(Builtin):
>> Needs["VectorAnalysis`"] + + In contrast to + :Get: + /doc/reference-of-built-in-symbols/inputoutput-files-and-filesystem/file-and-stream-operations/get/, \ + 'Needs' only loads a package if it has not already been loaded. + + Like 'Get', + :\$ContextPath: + /doc/reference-of-built-in-symbols/scoping-constructs/$contextpath/ is updated \ + when a new package context is added. + + Builtin variable + :\$Path: + /doc/reference-of-built-in-symbols/directories-and-directory-operations/user-file-directories/$path/ is used resolve the context to a file name. + """ messages = { diff --git a/mathics/builtin/scoping.py b/mathics/builtin/scoping.py index 7bc37e242..0cdf4fd64 100644 --- a/mathics/builtin/scoping.py +++ b/mathics/builtin/scoping.py @@ -316,6 +316,17 @@ class ContextPath_(Predefined): ## #> System`$ContextPath ## = {x`} ## #> $ContextPath = {"System`", "Global`"}; + + Functions + :Needs: + /doc/reference-of-built-in-symbols/inputoutput-files-and-filesystem/filesystem-operations/needs/ and + :Get: + /doc/reference-of-built-in-symbols/inputoutput-files-and-filesystem/file-and-stream-operations/get/, \ + add to '\$ContextPath' when a new context is added. + + See also Builtin variable + :\$Path: + /doc/reference-of-built-in-symbols/directories-and-directory-operations/user-file-directories/$path/. """ messages = {"cxlist": "`1` is not a list of valid context names ending in `."}