[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] giving smalltalk python import
From: |
Robert Collins |
Subject: |
[Help-smalltalk] giving smalltalk python import |
Date: |
Wed, 08 Sep 2004 11:44:25 +1000 |
On Tue, 2004-09-07 at 13:54 +0200, Paolo Bonzini wrote:
> >I'd like to propose we do something similar:
> >PackageLoader import: 'gtk' !
> >should look along a defined search path for a directory called gtk
> >containing a predefined filename, and then fileIn: that filename.
> >
> That could be another packages.xml file.
It could be. There are some tradeoffs: its easier (and ease is
important) to just write a script, and be able to move it on disk to
have everything associated move, rather than have to create a formal xml
file.
i.e. this might be a python __init__.py file (the __init__.py file is
what turns a directory into a package). Lets say this file is in a dir
'SCM'.
====
import CVS #imports the CVS.py file in this dir
import RCS #imports the RCS.py file in this dir
defaultModule=CVS
====
this creates the following namespaces:
SCM <- package
SCM.CVS <- module
SCM.RCS <- module
SCM has a user defined symbol defaultModule
SCM.CVS has whatever was defined in CVS.py
....
a smalltalkish version without xml might be:
==package.st==
PackageLoader import: 'CVS'; import: 'RCS' !
Namespace currentSpace at: #defaultModule put: CVS.abstractFactory !
====
to do the same with xml you need
==package.xml== (hand waving)
<dependent packages
<relative path
CVS
RCS
/>
< fileIn: package.st />
/>
====
==package.st==
Namespace currentSpace at: #defaultModule put: CVS.abstractFactory !
====
which I think you'll agree is more work.
Now, there is no reason not to support both: but I don't see any value
in /requiring/ an xml file.
> >A default search path might be: the kernel directory
> >
> image directory
sure.
> >, ~/smalltalk-packages
> >
> how is this in python?
missing: folk tend to do something like:
export PYTHONPATH=~/mypackages
in their .bashrc or .profile
> >, /usr/share/gnu-smalltalk
> >
> the parent of the kernel directory
right
> >, /usr/share/gnu-smalltalk/site-packages
> >
> >
> yes.
>
> There is already a search path in the PackageLoader for package.xml
> files. The idea would be like this:
>
> 1) if a package name includes a /, look for another packages.xml file in
> a subdirectory (named like the package you are loading) of each
> directory of the search path. That is, loading blox-tk/Blox would look
> for the Blox package into the packages.xml file of the blox-tk directory.
why not a . ? (I dont' have anything against '/', but . has some
advantages:
* its the syntax used in the language to traverse namespaces
* its used in python (and possible other languages) for import
statements.
> 2) add site-packages etc. to the search path.
>
> 3) add a <namespace> tag to packages.xml that would automatically switch
> the namespace before/after loading it. This way (yahoo) most of the
> loading scripts in the GNU Smalltalk would probably go away!
Thats still quite manual: I'd like to see the loader just Do The Right
Thing - do you think we could do that? (If we can conceptually do it,
then we can worry about how to get there :}).
Rob
--
GPG key available at: <http://www.robertcollins.net/keys.txt>.
signature.asc
Description: This is a digitally signed message part
Re: [Help-smalltalk] lessons from the python environment, Paolo Bonzini, 2004/09/07
Re: [Help-smalltalk] giving smalltalk python import, Brian Brown, 2004/09/08
Re: [Help-smalltalk] giving smalltalk python import, Robert Collins, 2004/09/09
[Help-smalltalk] re: editors, Robert Collins, 2004/09/08
[Help-smalltalk] Re: /bin/sh execution of st scripts., Robert Collins, 2004/09/08