On 20.05.05, Jose' Matos wrote: > On Friday 20 May 2005 10:04, G. Milde wrote: > Now a serious question: is this [__init__.py] a trivial (empty) file or > do you have any initialization step going inside?
Currently, its just """Package of scripts for the LyX Document Processor (www.lyx.org) """ # we might need __all__ on Windows (update and comment out in this case) # __all__ = ['bindings' # 'lfuns', # 'lyxclient', # 'lyxserver', # 'pyfuns', # ] At some stage, there might be code to add a directory with user-provided python scripts to the packages __path__, so the package becomes extensible. (Remember, my main concern is a scripting support for LyX.) > > What I meant by PYTHONPATH was not the environment variable, but > > sys.path > > I see, it was not obvious before. :-) Sorry for beeing confusing. --------------------------------------------------------------------------- > Clearly we are talking about two different subjects: the python library; > the python scripts that use the library. > > I want to place the python library into the place used by python > libraries. So do I. We still need some nice place (and name) for the "python LyX library" in the CVS, so my idea was to keep the files at this place and symlink to the python site-library (or use a pth file) at install time. > Why not to use distutils? > This allows us to install the package in any platform, no need for this > file. I do not insist on my idea, and have no objection to move the library files to the site-library with distutils at install time. > The python scripts should go in lyx. (the /usr/share/lyx above) Yes, end-user scripts (like lyx2lyx, lyx-Mx or lyx-remote) should go to /usr/share/lyx/scripts. ---------------------------------------------------------------------------- > > In the long run, however, I would like to merge lyx2lyx into the LyX > > package (as ...LyX/lyx2lyx sub-module). ... > But that is already done. :-) Unfortunately, I can not see it. > Clearly here the problem is that lyx2lyx means two different things > again. :-) One is the directory where the code is present and the other is > the script that converts the lyx files. Another problem is the different organization of the CVS tree and the final layout. > lyx2lyx script: > > lyx2lyx is a client script with 67 lines (85 if you consider the license). > > All the knowledge how to deal with lyx files is inside LyX.py and the > lyx_*.py files, not lyx2lyx. We cannot have both, LyX.py and a LyX package inside the python library path. > The only import modules are: > import getopt > import sys > import LyX > > As you see if we create a LyX module there is no need to change the > lyx2lyx script. With a LyX *package*, at least one change to lyx2lyx is needed. With /lyx2lyx/ -> <site-lib>/LyX/, and LyX/__init__.py the minimal change is - import LyX + from LyX import LyX (untested, I don't know whether there is a name conflict) or + from LyX.lyx2lyx.LyX import * (and change of all "LyX." to "") or (I do not like the idea of a LyX module in a LyX package, so I suggest renaming the LyX.py module to the more specific lyxfile.py) + from LyX import lyxfile (and change of all "LyX." to "lyxfile.") > Not only that but I propose to move the lyx2lyx script from > its present location to share/scripts. This is something we can agree on easily :-) > lyx2lyx directory: > > I have been working on the lyx2lyx directory because cvs looses the > history if you rename a directory. If that was not the case this directory > would have been renamed LyX for more than a year ago. > > So at this level, at least for me lyx2lyx == LyX In the CVS, lyx2lyx (or pyLyX) is still a more transparent name than "lyx-cvs/devel/lib/LyX/". Once installed, <python-site-lib>/LyX/ is preferable. > when you say a LyX/lyx2lyx sub-module, there is no need for it, we > already have a LyX.File that does all the work for you. With a LyX package this would become LyX.LyX.File I do not like the idea of a module LyX in package LyX. My suggestion is to rename LyX.py to lyxfile.py. Also, I would like to "hide" lyx2lyx specific files (at least the lyx_*.py version info files) in a subdirectory <site-lib>/LyX/lyx2lyx/ or <site-lib>/LyX/format-info/. > So clearly what we have to do is to agree on the python api to be used. Which means class names, file names and placement of files and sub-directories (== sub-modules) under the <site-lib>/LyX/ package directory. > To illustrate what I mean imagine that you want to load some document, do > some transformations inside it (for example, to promote every section to a > chapter, every subsection to a section, ...) and the load it into a lyx > window. Or to do this transformations on the currently open document. from LyX import lyxfile, lfuns fname = lfuns.server-get-name") # get the current file's name lfuns.buffer-write() # save doc = lyxfile.File(fname) > > # transform it > # save it # Relaod the file (do not use "reload", as this is in reality a "restore") lfuns.file-open(fname) > Is this clear now? It is getting clearer and clearer. I hope we will finally sort out all misunderstandings. Thanks for your patience. > This thread has expanded to some topics that are more > appropriately discussed in the developers mailing list. Ok, so my answer goes there... Günter -- G.Milde web.de