From aaadd513092a2e452fe0c418d785eed99ae97eeb Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 29 Jan 2018 15:24:32 +0000 Subject: [PATCH] sync --- os/charsio.c | 24 +- os/iopreds.c | 5 +- packages/python/swig/prolog/yapi.yap | 15 +- packages/python/swig/setup.py.in | 2 +- packages/python/yap_kernel/CMakeLists.txt | 456 +++++++++++++++--- packages/python/yap_kernel/setup.py | 38 +- .../python/yap_kernel/yap_ipython/yapi.py | 6 +- pl/boot.yap | 7 +- pl/directives.yap | 3 +- pl/meta.yap | 24 +- pl/modules.yap | 15 +- 11 files changed, 471 insertions(+), 124 deletions(-) diff --git a/os/charsio.c b/os/charsio.c index b3925d69e..34ba3e880 100644 --- a/os/charsio.c +++ b/os/charsio.c @@ -96,7 +96,7 @@ INLINE_ONLY inline EXTERN Int CharOfAtom(Atom at) { int Yap_peekWideWithGetwc(int sno) { StreamDesc *s; s = GLOBAL_Stream + sno; - int ch = getwc(s->file); + int ch = fgetwc(s->file); ungetwc(ch, s->file); return ch; } @@ -104,7 +104,7 @@ int Yap_peekWideWithGetwc(int sno) { int Yap_peekWithGetc(int sno) { StreamDesc *s; s = GLOBAL_Stream + sno; - int ch = getc(s->file); + int ch = fgetc(s->file); ungetc(ch, s->file); return ch; } @@ -167,6 +167,7 @@ int Yap_peekWide(int sno) { Int line = s->linecount; Int lpos = s->linepos; int ch = s->stream_wgetc(sno); + fprintf(stderr, "%d=%c\n", fileno(s->file), ch); if (ch == EOF) { if (s->file) clearerr(s->file); @@ -181,9 +182,13 @@ int Yap_peekWide(int sno) { s->charcount = pos; s->linecount = line; s->linepos = lpos; + s->stream_wgetc = Yap_popChar; + s->stream_getc = NU; + s->stream_peek= NULL; + s->stream_wpeek= NULL; s->stream_getc = Yap_popChar; s->stream_wgetc = Yap_popChar; - Yap_SetCurInpPos(sno, pos); + // Yap_SetCurInpPos(sno, pos); } return ch; } @@ -209,15 +214,17 @@ int Yap_peekChar(int sno) { s->linecount = line; s->linepos = lpos; s->stream_getc = Yap_popChar; - s->stream_wgetc = Yap_popChar; - Yap_SetCurInpPos(sno, pos); + s->stream_wgetc = NU; + s->stream_peek= NULL; + s->stream_wpeek= NULL; + //Yap_SetCurInpPos(sno, pos); } return ch; } int Yap_peek(int sno) { return GLOBAL_Stream[sno].stream_wpeek(sno); } -static int dopeek_byte(int sno) { return GLOBAL_Stream[sno].stream_wpeek(sno); } +static int dopeek_byte(int sno) { return GLOBAL_Stream[sno].stream_peek(sno); } bool store_code(int ch, Term t USES_REGS) { Term t2 = Deref(t); @@ -255,10 +262,7 @@ static Int at_end_of_stream(USES_REGS1) { /* at_end_of_stream */ out = (Yap_peek(sno) < 0); } } - UNLOCK(GLOBAL_Stream[sno].streamlock); - return out; -} - + UNLOCK(GLOBAL_Stream[sno].streaml /** @pred at_end_of_stream is iso diff --git a/os/iopreds.c b/os/iopreds.c index ca6ec681c..cefb24308 100644 --- a/os/iopreds.c +++ b/os/iopreds.c @@ -350,6 +350,7 @@ void Yap_DefaultStreamOps(StreamDesc *st) { st->stream_getc = Yap_popChar; st->stream_wgetc = Yap_popChar; } + /* if (st->file) { if (st->status & Readline_Stream_f) { st->stream_peek = Yap_ReadlinePeekChar; @@ -361,7 +362,9 @@ void Yap_DefaultStreamOps(StreamDesc *st) { } else if (st->status & Seekable_Stream_f) { st->stream_peek = Yap_peekWithSeek; st->stream_wpeek = Yap_peekWideWithSeek; - } else { + } else +*/ + { st->stream_peek = Yap_peekChar; st->stream_wpeek = Yap_peekWide; } diff --git a/packages/python/swig/prolog/yapi.yap b/packages/python/swig/prolog/yapi.yap index 93365df3f..b67467edc 100644 --- a/packages/python/swig/prolog/yapi.yap +++ b/packages/python/swig/prolog/yapi.yap @@ -2,10 +2,6 @@ %% @brief support yap shell %% -:- yap_flag(verbose, verbose). - -:- use_module( library(python) ). - :- module(yapi, [ python_ouput/0, show_answer/2, @@ -15,11 +11,20 @@ yapi_query/2 ]). + + :- yap_flag(verbose, verbose). + + :- use_module( library(lists) ). :- use_module( library(maplist) ). :- use_module( library(rbtrees) ). :- use_module( library(terms) ). -:- use_module( library(python) ). +:- reexport( library(python) ). + +:- current_op(X,Y,':='), writeln(X:Y). +:- current_op(X,Y,'.'), writeln(X:Y). + +:- stop_low_level_trace. :- python_import(yap4py.yapi). diff --git a/packages/python/swig/setup.py.in b/packages/python/swig/setup.py.in index a0ec33e80..ec54b6152 100644 --- a/packages/python/swig/setup.py.in +++ b/packages/python/swig/setup.py.in @@ -68,7 +68,7 @@ elif platform.system() == 'Darwin': win_libs = [] local_libs = ['Py4YAP'] elif platform.system() == 'Linux': - my_extra_link_args = ['-L','..'] + my_extra_link_args = ['-L','..','-Wl,-rpath','-Wl,${CMAKE_INSTALL_FULL_LIBDIR}'] win_libs = [] local_libs = ['Py4YAP'] diff --git a/packages/python/yap_kernel/CMakeLists.txt b/packages/python/yap_kernel/CMakeLists.txt index 541c4a54b..1eb508cf0 100644 --- a/packages/python/yap_kernel/CMakeLists.txt +++ b/packages/python/yap_kernel/CMakeLists.txt @@ -1,55 +1,364 @@ set (PYTHON_SOURCES - yap_ipython/core/getipython.py - yap_ipython/core/__init__.py - yap_ipython/core/interactiveshell.py - # yap_ipython/core/modulefind.py - yap_ipython/core/oinspect.py - yap_ipython/core/release.py - yap_ipython/core/shellapp.py - yap_ipython/display.py - yap_ipython/__init__.py - yap_ipython/shellapp.py - yap_kernel_launcher.py - yap_kernel/__init__.py - yap_kernel/__main__.py - yap_kernel/_version.py - yap_kernel/codeutil.py - yap_kernel/connect.py - yap_kernel/datapub.py - yap_kernel/displayhook.py - yap_kernel/embed.py - yap_kernel/eventloops.py - yap_kernel/heartbeat.py - yap_kernel/interactiveshell.py - yap_kernel/iostream.py - yap_kernel/jsonutil.py - yap_kernel/kernelapp.py - yap_kernel/kernelbase.py - yap_kernel/kernelspec.py - yap_kernel/log.py - yap_kernel/parentpoller.py - yap_kernel/pickleutil.py - yap_kernel/serialize.py - yap_kernel/yapkernel.py - yap_kernel/zmqshell.py - yap_kernel/comm/__init__.py - yap_kernel/comm/comm.py - yap_kernel/comm/manager.py - yap_kernel/gui/__init__.py - yap_kernel/gui/gtk3embed.py - yap_kernel/gui/gtkembed.py - yap_kernel/inprocess/__init__.py - yap_kernel/inprocess/blocking.py - yap_kernel/inprocess/channels.py - yap_kernel/inprocess/client.py - yap_kernel/inprocess/ipkernel.py - yap_kernel/inprocess/manager.py - yap_kernel/inprocess/socket.py - yap_kernel/pylab/__init__.py - yap_kernel/pylab/backend_inline.py - yap_kernel/pylab/config.py - ) +yap_kernel_launcher.py +docs/conf.py +yap_kernel/serialize.py +yap_kernel/_eventloop_macos.py +yap_kernel/jsonutil.py +yap_kernel/pickleutil.py +yap_kernel/pylab/backend_inline.py +yap_kernel/pylab/config.py +yap_kernel/pylab/__init__.py +yap_kernel/displayhook.py +yap_kernel/__main__.py +yap_kernel/gui/gtk3embed.py +yap_kernel/gui/gtkembed.py +yap_kernel/gui/__init__.py +yap_kernel/parentpoller.py +yap_kernel/_version.py +yap_kernel/eventloops.py +yap_kernel/connect.py +yap_kernel/comm/comm.py +yap_kernel/comm/__init__.py +yap_kernel/comm/manager.py +yap_kernel/kernelspec.py +yap_kernel/iostream.py +yap_kernel/zmqshell.py +yap_kernel/kernelbase.py +yap_kernel/heartbeat.py +yap_kernel/log.py +yap_kernel/datapub.py +yap_kernel/codeutil.py +yap_kernel/kernelapp.py +yap_kernel/embed.py +yap_kernel/tests/test_embed_kernel.py +yap_kernel/tests/test_kernelspec.py +yap_kernel/tests/_asyncio.py +yap_kernel/tests/test_serialize.py +yap_kernel/tests/test_pickleutil.py +yap_kernel/tests/test_eventloop.py +yap_kernel/tests/utils.py +yap_kernel/tests/test_kernel.py +yap_kernel/tests/test_io.py +yap_kernel/tests/test_jsonutil.py +yap_kernel/tests/test_connect.py +yap_kernel/tests/test_message_spec.py +yap_kernel/tests/__init__.py +yap_kernel/tests/test_start_kernel.py +yap_kernel/tests/test_zmq_shell.py +yap_kernel/__init__.py +yap_kernel/inprocess/blocking.py +yap_kernel/inprocess/socket.py +yap_kernel/inprocess/constants.py +yap_kernel/inprocess/channels.py +yap_kernel/inprocess/tests/test_kernelmanager.py +yap_kernel/inprocess/tests/test_kernel.py +yap_kernel/inprocess/tests/__init__.py +yap_kernel/inprocess/__init__.py +yap_kernel/inprocess/manager.py +yap_kernel/inprocess/client.py +yap_kernel/inprocess/ipkernel.py +yap_kernel/ipkernel.py +yap_ipython/display.py +yap_ipython/frontend.py +yap_ipython/parallel.py +yap_ipython/html.py +yap_ipython/__main__.py +yap_ipython/testing/iptest.py +yap_ipython/testing/skipdoctest.py +yap_ipython/testing/tools.py +yap_ipython/testing/iptestcontroller.py +yap_ipython/testing/__main__.py +yap_ipython/testing/decorators.py +yap_ipython/testing/ipunittest.py +yap_ipython/testing/tests/test_tools.py +yap_ipython/testing/tests/test_ipunittest.py +yap_ipython/testing/tests/test_decorators.py +yap_ipython/testing/tests/__init__.py +yap_ipython/testing/__init__.py +yap_ipython/testing/globalipapp.py +yap_ipython/testing/plugin/iptest.py +yap_ipython/testing/plugin/show_refs.py +yap_ipython/testing/plugin/simplevars.py +yap_ipython/testing/plugin/simple.py +yap_ipython/testing/plugin/ipdoctest.py +yap_ipython/testing/plugin/test_ipdoctest.py +yap_ipython/testing/plugin/setup.py +yap_ipython/testing/plugin/__init__.py +yap_ipython/testing/plugin/dtexample.py +yap_ipython/testing/plugin/test_refs.py +yap_ipython/terminal/ptutils.py +yap_ipython/terminal/shortcuts.py +yap_ipython/terminal/ipapp.py +yap_ipython/terminal/pt_inputhooks/wx.py +yap_ipython/terminal/pt_inputhooks/pyglet.py +yap_ipython/terminal/pt_inputhooks/osx.py +yap_ipython/terminal/pt_inputhooks/gtk.py +yap_ipython/terminal/pt_inputhooks/tk.py +yap_ipython/terminal/pt_inputhooks/glut.py +yap_ipython/terminal/pt_inputhooks/gtk3.py +yap_ipython/terminal/pt_inputhooks/__init__.py +yap_ipython/terminal/pt_inputhooks/qt.py +yap_ipython/terminal/console.py +yap_ipython/terminal/prompts.py +yap_ipython/terminal/ptshell.py +yap_ipython/terminal/embed.py +yap_ipython/terminal/tests/test_help.py +yap_ipython/terminal/tests/test_embed.py +yap_ipython/terminal/tests/test_interactivshell.py +yap_ipython/terminal/tests/__init__.py +yap_ipython/terminal/__init__.py +yap_ipython/terminal/interactiveshell.py +yap_ipython/terminal/debugger.py +yap_ipython/terminal/magics.py +yap_ipython/consoleapp.py +yap_ipython/core/display.py +yap_ipython/core/application.py +yap_ipython/core/builtin_trap.py +yap_ipython/core/formatters.py +yap_ipython/core/prefilter.py +yap_ipython/core/getipython.py +yap_ipython/core/usage.py +yap_ipython/core/oinspect.py +yap_ipython/core/displayhook.py +yap_ipython/core/hooks.py +yap_ipython/core/splitinput.py +yap_ipython/core/page.py +yap_ipython/core/history.py +yap_ipython/core/displaypub.py +yap_ipython/core/profiledir.py +yap_ipython/core/shellapp.py +yap_ipython/core/extensions.py +yap_ipython/core/compilerop.py +yap_ipython/core/events.py +yap_ipython/core/pylabtools.py +yap_ipython/core/completer.py +yap_ipython/core/prompts.py +yap_ipython/core/latex_symbols.py +yap_ipython/core/macro.py +yap_ipython/core/inputsplitter.py +yap_ipython/core/error.py +yap_ipython/core/profileapp.py +yap_ipython/core/magic_arguments.py +yap_ipython/core/logger.py +yap_ipython/core/inputtransformer.py +yap_ipython/core/payloadpage.py +yap_ipython/core/crashhandler.py +yap_ipython/core/magics/display.py +yap_ipython/core/magics/execution.py +yap_ipython/core/magics/namespace.py +yap_ipython/core/magics/basic.py +yap_ipython/core/magics/extension.py +yap_ipython/core/magics/history.py +yap_ipython/core/magics/pylab.py +yap_ipython/core/magics/config.py +yap_ipython/core/magics/osm.py +yap_ipython/core/magics/script.py +yap_ipython/core/magics/__init__.py +yap_ipython/core/magics/auto.py +yap_ipython/core/magics/logging.py +yap_ipython/core/magics/code.py +yap_ipython/core/ultratb.py +yap_ipython/core/tests/test_application.py +yap_ipython/core/tests/simpleerr.py +yap_ipython/core/tests/test_paths.py +yap_ipython/core/tests/bad_all.py +yap_ipython/core/tests/test_prefilter.py +yap_ipython/core/tests/test_logger.py +yap_ipython/core/tests/test_interactiveshell.py +yap_ipython/core/tests/test_events.py +yap_ipython/core/tests/test_display.py +yap_ipython/core/tests/test_autocall.py +yap_ipython/core/tests/test_formatters.py +yap_ipython/core/tests/test_alias.py +yap_ipython/core/tests/nonascii.py +yap_ipython/core/tests/test_displayhook.py +yap_ipython/core/tests/test_profile.py +yap_ipython/core/tests/test_imports.py +yap_ipython/core/tests/test_oinspect.py +yap_ipython/core/tests/test_inputtransformer.py +yap_ipython/core/tests/test_magic_arguments.py +yap_ipython/core/tests/test_debugger.py +yap_ipython/core/tests/test_hooks.py +yap_ipython/core/tests/test_run.py +yap_ipython/core/tests/test_pylabtools.py +yap_ipython/core/tests/print_argv.py +yap_ipython/core/tests/test_page.py +yap_ipython/core/tests/test_compilerop.py +yap_ipython/core/tests/test_prompts.py +yap_ipython/core/tests/test_magic_terminal.py +yap_ipython/core/tests/__init__.py +yap_ipython/core/tests/test_ultratb.py +yap_ipython/core/tests/test_magic.py +yap_ipython/core/tests/test_iplib.py +yap_ipython/core/tests/test_completer.py +yap_ipython/core/tests/test_shellapp.py +yap_ipython/core/tests/daft_extension/daft_extension.py +yap_ipython/core/tests/refbug.py +yap_ipython/core/tests/tclass.py +yap_ipython/core/tests/test_extension.py +yap_ipython/core/tests/test_splitinput.py +yap_ipython/core/tests/test_completerlib.py +yap_ipython/core/tests/nonascii2.py +yap_ipython/core/tests/test_inputsplitter.py +yap_ipython/core/tests/test_handlers.py +yap_ipython/core/tests/test_history.py +yap_ipython/core/__init__.py +yap_ipython/core/autocall.py +yap_ipython/core/alias.py +yap_ipython/core/completerlib.py +yap_ipython/core/magic.py +yap_ipython/core/interactiveshell.py +yap_ipython/core/excolors.py +yap_ipython/core/release.py +yap_ipython/core/display_trap.py +yap_ipython/core/debugger.py +yap_ipython/core/historyapp.py +yap_ipython/core/payload.py +yap_ipython/config.py +yap_ipython/utils/frame.py +yap_ipython/utils/ipstruct.py +yap_ipython/utils/module_paths.py +yap_ipython/utils/jsonutil.py +yap_ipython/utils/PyColorize.py +yap_ipython/utils/pickleutil.py +yap_ipython/utils/eventful.py +yap_ipython/utils/ulinecache.py +yap_ipython/utils/generics.py +yap_ipython/utils/version.py +yap_ipython/utils/tz.py +yap_ipython/utils/_process_cli.py +yap_ipython/utils/wildcard.py +yap_ipython/utils/dir2.py +yap_ipython/utils/strdispatch.py +yap_ipython/utils/sysinfo.py +yap_ipython/utils/io.py +yap_ipython/utils/decorators.py +yap_ipython/utils/contexts.py +yap_ipython/utils/data.py +yap_ipython/utils/terminal.py +yap_ipython/utils/syspathcontext.py +yap_ipython/utils/tokenize2.py +yap_ipython/utils/localinterfaces.py +yap_ipython/utils/_process_win32_controller.py +yap_ipython/utils/py3compat.py +yap_ipython/utils/sentinel.py +yap_ipython/utils/colorable.py +yap_ipython/utils/_sysinfo.py +yap_ipython/utils/importstring.py +yap_ipython/utils/tokenutil.py +yap_ipython/utils/traitlets.py +yap_ipython/utils/path.py +yap_ipython/utils/daemonize.py +yap_ipython/utils/log.py +yap_ipython/utils/openpy.py +yap_ipython/utils/tempdir.py +yap_ipython/utils/_process_common.py +yap_ipython/utils/tests/test_openpy.py +yap_ipython/utils/tests/test_path.py +yap_ipython/utils/tests/test_shimmodule.py +yap_ipython/utils/tests/test_sysinfo.py +yap_ipython/utils/tests/test_pycolorize.py +yap_ipython/utils/tests/test_wildcard.py +yap_ipython/utils/tests/test_imports.py +yap_ipython/utils/tests/test_importstring.py +yap_ipython/utils/tests/test_module_paths.py +yap_ipython/utils/tests/test_io.py +yap_ipython/utils/tests/test_text.py +yap_ipython/utils/tests/test_decorators.py +yap_ipython/utils/tests/test_tokenutil.py +yap_ipython/utils/tests/test_process.py +yap_ipython/utils/tests/test_dir2.py +yap_ipython/utils/tests/__init__.py +yap_ipython/utils/tests/test_capture.py +yap_ipython/utils/tests/test_tempdir.py +yap_ipython/utils/encoding.py +yap_ipython/utils/__init__.py +yap_ipython/utils/signatures.py +yap_ipython/utils/_process_win32.py +yap_ipython/utils/coloransi.py +yap_ipython/utils/_process_posix.py +yap_ipython/utils/shimmodule.py +yap_ipython/utils/timing.py +yap_ipython/utils/text.py +yap_ipython/utils/process.py +yap_ipython/utils/capture.py +yap_ipython/paths.py +yap_ipython/nbconvert.py +yap_ipython/external/mathjax.py +yap_ipython/external/qt_for_kernel.py +yap_ipython/external/decorators/_numpy_testing_noseclasses.py +yap_ipython/external/decorators/_decorators.py +yap_ipython/external/decorators/__init__.py +yap_ipython/external/__init__.py +yap_ipython/external/qt_loaders.py +yap_ipython/__init__.py +yap_ipython/sphinxext/ipython_console_highlighting.py +yap_ipython/sphinxext/ipython_directive.py +yap_ipython/sphinxext/custom_doctests.py +yap_ipython/sphinxext/__init__.py +yap_ipython/kernel/adapter.py +yap_ipython/kernel/channelsabc.py +yap_ipython/kernel/__main__.py +yap_ipython/kernel/launcher.py +yap_ipython/kernel/multikernelmanager.py +yap_ipython/kernel/restarter.py +yap_ipython/kernel/managerabc.py +yap_ipython/kernel/threaded.py +yap_ipython/kernel/clientabc.py +yap_ipython/kernel/connect.py +yap_ipython/kernel/kernelspecapp.py +yap_ipython/kernel/kernelspec.py +yap_ipython/kernel/channels.py +yap_ipython/kernel/__init__.py +yap_ipython/kernel/manager.py +yap_ipython/kernel/client.py +yap_ipython/nbformat.py +yap_ipython/extensions/cythonmagic.py +yap_ipython/extensions/storemagic.py +yap_ipython/extensions/tests/test_autoreload.py +yap_ipython/extensions/tests/test_storemagic.py +yap_ipython/extensions/tests/__init__.py +yap_ipython/extensions/__init__.py +yap_ipython/extensions/rmagic.py +yap_ipython/extensions/sympyprinting.py +yap_ipython/extensions/autoreload.py +yap_ipython/yapi.py +yap_ipython/qt.py +yap_ipython/lib/display.py +yap_ipython/lib/pretty.py +yap_ipython/lib/inputhookgtk.py +yap_ipython/lib/inputhookwx.py +yap_ipython/lib/lexers.py +yap_ipython/lib/demo.py +yap_ipython/lib/inputhookgtk3.py +yap_ipython/lib/kernel.py +yap_ipython/lib/inputhookpyglet.py +yap_ipython/lib/editorhooks.py +yap_ipython/lib/inputhook.py +yap_ipython/lib/backgroundjobs.py +yap_ipython/lib/latextools.py +yap_ipython/lib/deepreload.py +yap_ipython/lib/tests/test_editorhooks.py +yap_ipython/lib/tests/test_backgroundjobs.py +yap_ipython/lib/tests/test_display.py +yap_ipython/lib/tests/test_pretty.py +yap_ipython/lib/tests/test_imports.py +yap_ipython/lib/tests/test_clipboard.py +yap_ipython/lib/tests/test_lexers.py +yap_ipython/lib/tests/test_deepreload.py +yap_ipython/lib/tests/test_security.py +yap_ipython/lib/tests/__init__.py +yap_ipython/lib/tests/test_latextools.py +yap_ipython/lib/__init__.py +yap_ipython/lib/guisupport.py +yap_ipython/lib/security.py +yap_ipython/lib/inputhookglut.py +yap_ipython/lib/clipboard.py +yap_ipython/lib/inputhookqt4.py +__init__.py + + ) set (EXTRAS MANIFEST.in @@ -60,15 +369,13 @@ ) set (RESOURCES - resources/custom.js - resources/prolog.js - #resources/logo-32x32.png - #resources/logo-64x64.png + #yap_kernel/resources/logo-32x32.png + #yap_kernel/resourcess/logo-64x64.png ) set (RENAMED_RESOURCES - resources/logo-32x32.png - resources/logo-64x64.png - # resources/codemirror/mode/prolog/prolog.js + yap_kernel/resources/logo-32x32.png + yap_kernel/resources/logo-64x64.png + # yap_kernel/resources/codemirror/mode/prolog/prolog.js ) set (PL_SOURCES @@ -79,29 +386,44 @@ set(FILES ${PYTHON_SOURCES} ${PL_SOURCES} ${EXTRAS} ${RESOURCES}) set(SETUP_PY ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${i} - COMMAND ${CMAKE_COMMAND} -E tar cvf ${CMAKE_CURRENT_BINARY_DIR}/yap.tgz ${FILESi} + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap.tgz + COMMAND ${CMAKE_COMMAND} -E tar cf ${CMAKE_CURRENT_BINARY_DIR}/yap.tgz ${FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${FILES} ) -add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/logo-32x32.png - COMMAND ${CMAKE_COMMAND} -E tar xvf yap.tgz - COMMAND ${CMAKE_COMMAND} -E copy_if_changed ${CMAKE_SOURCE_DIR}/docs/icons/yap_32z32x32.png ${CMAKE_CURRENT_BINARY_DIR}/resources/logo-32x32.png - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/docs/icons/yap_32x32x32.png +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png + COMMAND ${CMAKE_COMMAND} -E make_directory yap_kernel/resources + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/docs/icons/yap_32x32x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png + DEPENDS ${CMAKE_SOURCE_DIR}/docs/icons/yap_32x32x32.png ) - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/logo-64x64.png - COMMAND ${CMAKE_COMMAND} -E copy_if_changed ${CMAKE_SOURCE_DIR}/docs/icons/yap_64x64x32.png ${CMAKE_CURRENT_BINARY_DIR}/resources/logo-64x64.png + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-64x64.png + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/docs/icons/yap_64x64x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-64x64.png + DEPENDS ${CMAKE_SOURCE_DIR}/docs/icons/yap_64x64x32.png ) - add_custom_target(YAP_KERNEL - COMMAND ${CMAKE_COMMAND} -E tar xvf yap.tgz + + + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/kernel.js + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/kernel.js ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/ + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kernel.js + ) + + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/prolog.js + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/misc/editors/yap.js ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/prolog.js + DEPENDS ${CMAKE_SOURCE_DIR}/misc/editors/yap.js + ) + + add_custom_target(YAP_KERNEL ALL + COMMAND ${CMAKE_COMMAND} -E tar xzf yap.tgz COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} build sdist bdist WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-32x32.png ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/logo-64x64.png yap.tgz ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/kernel.js ${CMAKE_CURRENT_BINARY_DIR}/yap_kernel/resources/prolog.js ) diff --git a/packages/python/yap_kernel/setup.py b/packages/python/yap_kernel/setup.py index cc73098b7..1e1d49eed 100644 --- a/packages/python/yap_kernel/setup.py +++ b/packages/python/yap_kernel/setup.py @@ -37,12 +37,15 @@ from distutils.core import setup pjoin = os.path.join here = os.path.abspath(os.path.dirname(__file__)) +packages = [] # pkg_root = pjoin(here, name) -packages = setuptools.find_packages(here) -# for d, _, _ in os.walk(pjoin(here, name)): -# if os.path.exists(pjoin(d, '__init__.py')): -# packages.append(d[len(here)+1:].replace(os.path.sep, '.')) +for d, _, _ in os.walk(pjoin(here, 'yap_kernel')): + if os.path.exists(pjoin(d, '__init__.py')): + packages.append(d[len(here)+1:].replace(os.path.sep, '.')) +for d, _, _ in os.walk(pjoin(here, 'yap_ipython')): + if os.path.exists(pjoin(d, '__init__.py')): + packages.append(d[len(here)+1:].replace(os.path.sep, '.')) sys.path.insert(0, here) package_data = { @@ -50,13 +53,14 @@ package_data = { 'yap_kernel': ['resources/*.*'] } - -version_ns = {here, name, '_version.py')) as f: +version_ns = {} +with open(pjoin(here, name, '_version.py')) as f: exec(f.read(), {}, version_ns) + setup_args = dict( name = name, version = version_ns['__version__'], @@ -64,10 +68,10 @@ setup_args = dict( packages = packages, py_modules = ['yap_kernel_launcher'], package_data = package_data, - package_dir = {'':here}, + #package_dir = {'':here}, description = "YAP Kernel for Jupyter", author = 'YAP Development Team', - author_email = 'YAP-dev@scipy.org', + author_email = 'yap-dev@scipy.org', url = 'http://ipython.org', license = 'BSD', platforms = "Linux, Mac OS X, Windows", @@ -95,7 +99,7 @@ if any(a.startswith(('bdist', 'build', 'install')) for a in sys.argv): argv = make_yap_kernel_cmd(executable=sys.executable) - dest = os.path.join(here, 'resources') + dest = os.path.join(here, 'yap_kernel', 'resources') try: write_kernel_spec(dest, overrides={'argv': argv}) except: @@ -104,14 +108,14 @@ if any(a.startswith(('bdist', 'build', 'install')) for a in sys.argv): #setup_args['data_files'] = [(pjoin('share', 'jupyter', 'kernels', KERNEL_NAME), glob(pjoin(dest, '*')))] mode_loc = pjoin( sysconfig.get_path('platlib'), 'notebook', 'static', 'components', 'codemirror', 'mode', 'prolog') custom_loc = pjoin( sysconfig.get_path('platlib'), 'notebook', 'static', 'custom') - try: - shutil.copy( pjoin( custom_loc, "custom.js") , pjoin( custom_loc, "custom.js.orig")) - shutil.copy( pjoin( "resources", "custom.js") , pjoin( custom_loc, "custom.js")) - if not os.path.exists(mode_loc): - os.makedirs(mode_loc) - shutil.copy( pjoin( "resources","prolog.js") , mode_loc) - except: - pass +# try: +# shutil.copy( pjoin( custom_loc, "custom.js") , pjoin( custom_loc, "custom.js.orig")) +# shutil.copy( pjoin( "resources", "custom.js") , pjoin( custom_loc, "custom.js")) +# if not os.path.exists(mode_loc): +# os.makedirs(mode_loc) +# shutil.copy( pjoin( "resources","prolog.js") , mode_loc) +# except: +# pass extras_require = setuptools_args['extras_require'] = { 'test:python_version=="2.7"': ['mock'], diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index 2d02ede05..2ef5dbc3f 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -61,7 +61,7 @@ class YAPInputSplitter(InputSplitter): def __init__(self, line_input_checker=True, physical_line_transforms=None, logical_line_transforms=None): self._buffer_raw = [] -v self._validate = True + self._validate = True self.yapeng = None if physical_line_transforms is not None: @@ -551,7 +551,7 @@ class YAPRun: # variable names should match strings #for eq in vs: # if not isinstance(eq[0],str):x -xf # print( "Error: Variable Name matches a Python Symbol") + # print( "Error: Variable Name matches a Python Symbol") # return # ask = True # launch the query @@ -677,7 +677,7 @@ xf # print( "Error: Variable Name matches a Python Symbol") # preprocessing_exc_tuple = sys.exc_info() - e for i in self.syntaxErrors(raw_cell): + for i in self.syntaxErrors(raw_cell): try: (what,lin,_,text) = i e = SyntaxError(what, ("", lin, 1, text)) diff --git a/pl/boot.yap b/pl/boot.yap index 3b45c86f3..c44b49af5 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -165,8 +165,6 @@ print_message(L,E) :- % This is the YAP init file % should be consulted first step after booting -:- '$mk_dynamic'(term_expansion/2). - :- c_compile('top.yap'). % These are pseudo declarations @@ -214,14 +212,13 @@ print_message(L,E) :- C == end_of_file ). -:- '$init_system'. - :- c_compile('arith.yap'). :- c_compile('builtins.yap'). %:- stop_low_level_trace. :- '$all_current_modules'(M), yap_flag(M:unknown, error) ; true. +:- '$init_prolog'. :- compile_expressions. @@ -239,8 +236,6 @@ print_message(L,E) :- :- c_compile('os.yap'). :- c_compile('errors.yap'). -:- '$init_prolog'. - initialize_prolog :- '$init_prolog'. diff --git a/pl/directives.yap b/pl/directives.yap index 27e4f0c1c..862903057 100644 --- a/pl/directives.yap +++ b/pl/directives.yap @@ -156,8 +156,7 @@ considered. '$exec_directive'(module(N,P,Op), Status, _, _, _) :- '$module'(Status,N,P,Op). '$exec_directive'(meta_predicate(P), _, M, _, _) :- - '$yap_strip_module'(M:P,M0,P0), - '$meta_predicate'(P0,M0). + '$meta_predicate'(P,M). '$exec_directive'(module_transparent(P), _, M, _, _) :- '$module_transparent'(P, M). '$exec_directive'(noprofile(P), _, M, _, _) :- diff --git a/pl/meta.yap b/pl/meta.yap index dd899ccdd..6298d0735 100644 --- a/pl/meta.yap +++ b/pl/meta.yap @@ -61,17 +61,20 @@ meta_predicate declaration '$meta_predicate'( P, M1 ). '$meta_predicate'( D, M ) :- functor(D,F,N), - ( M = prolog -> M2 = _ ; M2 = M), - '$install_meta_predicate'(D,M2,F,N), + '$install_meta_predicate'(D,M,F,N), fail. '$meta_predicate'( _D, _M ). +'$install_meta_predicate'(P,M,_F,_N) :- + '$new_meta_pred'(P, M), + fail. '$install_meta_predicate'(_P,M,F,N) :- - retractall(prolog:'$meta_predicate'(F,M,N,_)), + ( M = prolog -> M2 = _ ; M2 = M), + retractall(prolog:'$meta_predicate'(F,M2,N,_)), fail. '$install_meta_predicate'(P,M,F,N) :- - '$new_meta_pred'(P, M), - assertz('$meta_predicate'(F,M,N,P)). + ( M = prolog -> M2 = _ ; M2 = M), + assertz('$meta_predicate'(F,M2,N,P)). % comma has its own problems. @@ -494,7 +497,14 @@ expand_goal(Input, Output) :- '$expand_goals'(IG, _, GF0, M, SM, M, HVars-G), '$yap_strip_module'(M:GF0, MF, GF). -:- '$install_meta_predicate'((0,0),_,(','),2). +:- '$install_meta_predicate'((0,0),prolog,(','),2). +:- '$install_meta_predicate'((0),prolog,(','),2). + +meta_predicate(P) :- + source_module(SM), +'$meta_predicate'(P, SM). + + :- meta_predicate abolish(:), @@ -594,5 +604,5 @@ expand_goal(Input, Output) :- '|'(2,2,?,?), ->(2,2,?,?), \+(2,?,?), - \+( 0 ) + \+( 0 ) . diff --git a/pl/modules.yap b/pl/modules.yap index f976016cf..9a1678954 100644 --- a/pl/modules.yap +++ b/pl/modules.yap @@ -194,7 +194,7 @@ X = 2 ? ; ERROR!! EXISTENCE ERROR- procedure c/1 is undefined, called from context prolog:$user_call/2 Goal was c:c(_131290) -vv~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The state of the module system after this error is undefined. @@ -452,10 +452,15 @@ export_resource(P0) :- ; recorda('$module','$module'(user_input,Mod,user_input,[P],1),_) ). export_resource(op(Prio,Assoc,Name)) :- !, - op(Prio,Assoc,prolog:Name). -export_resource(op(Prio,Assoc,Name)) :- !, - op(Prio,Assoc,user:Name). -export_resource(Resource) :- +'$current_module'(Mod), +op(Prio,Assoc,Mod:Name), +( recorded('$module','$module'(File,Mod,SourceF,ExportedPreds,Line),R) -> + erase(R), + recorda('$module','$module'(File,Mod,SourceF,[op(Prio,Assoc,Name)|ExportedPreds],Line ),_) +; prolog_load_context(file, File) -> + recorda('$module','$module'(File,Mod,SourceF,[op(Prio,Assoc,Name)],Line),_) +; recorda('$module','$module'(user_input,Mod,user_input,[op(Prio,Assoc,Name)],1),_) +).export_resource(Resource) :- '$do_error'(type_error(predicate_indicator,Resource),export(Resource)). export_list(Module, List) :-