10 December 2014 meeting, 2:00 - 3:00 Attendees * Conrad, TomG, Eric, Greg Agenda * Data event and trigger API * We agreed that the Chimera 1 trigger API will be ported over with minor changes: * No trigger name required when deregistering handler * No closure argument when registering handler * Data event API will need to be accessible from both C++ and Python. Primary example is if we expose atomic coordinates as a '''numpy''' array; if someone manipulates the coordinates from Python, he will need to create atom notifications manually. * UI events are completely decoupled from triggers and data events. We may add a safety net where we check for non-empty data event queue during redraw. We may add API for indicating whether a notification should be synchronous or not, so that we can check in the safety net whether something really bad has happened. * Neither triggers nor data events (aka notifications) are absolutely needed for the Feb 2 deadline, so we will add proposed API and then move on * Build infrastructure * While trying to install toolshed, Conrad discovered some inconsistencies in source code arrangement * We will use the following rules: * Directories containing either Python or C++ code that generate Python modules/packages will not have any special suffix * Directories containing C++ code that generate C++ link libraries (.dylib on Mac, .dll on Windows) will have a "_cpp" suffix. * Python packages that need a supporting C++ module will be arranged with the Python package as the parent directory (e.g., "geometry") and the C++ module as a child directory (e.g., "_geometry"). The intent is that there should be a {{{from _geometry import *}}} statement in '''geometry/!__init!__.py''' and that callers of the '''geometry''' package does not ever know about the presences of '''geometry._geometry'''. * All C++ link libraries will be installed in the same directory in the build and install trees to facilitate installation. * All C++ Python modules will be installed in '''site-packages/chimera''' in the same way as pure Python packages and modules. * If a C++ Python module also wants a C++ link library, then the source tree should look something like: * module_name - container directory * module_name/module_name - C++ Python module * module_name/module_name_cpp - C++ link library * The '''Makefile''' in the container directory should indicate that '''module_name/module_name''' depends on '''module_name/module_name_cpp'''. Next Meeting * February 2 demo details Action Items * How are we going to handle REST (getting responses from REST) * Greg will convert all of '''chimera.core''' to the source tree naming conventions.