Sure I understand that :)
It was more of a question of do we want to allow third party developers
to install translations via the installParcel
mechanism as a convience.
My personal opinion at this point is no! Lets just use eggs and have
that be our one and only means of doing resource
and localization registration.
-Brian
Brian Kirsch - Cosmo Developer / Chandler Internationalization Engineer
Open Source Applications Foundation
543 Howard St. 5th Floor
San Francisco, CA 94105
http://www.osafoundation.org
Phillip J. Eby wrote:
At 01:05 PM 6/8/2006 -1000, Brian Kirsch wrote:
From my understanding:
1. Translations and resources will be kept in eggs
2. The Chandler level translations and resource eggs will be on the
sys.path at the very start of Chandler.py
3. At that point it is open for discussion but third party developers
could certainly use the installParcel logic
either in eggs or just as a regular old parcel.
I am still a little unclear on number 3.
installParcel is entirely unrelated. Markku's prototype code is 100%
Chandler-agnostic. It doesn't import anything from Chandler, it
doesn't do anything with the repository. It has no idea that there is
such a thing as a "parcel". :)
It doesn't need any of these things because all it does is support
eggs publishing their i18n resources, and provide an API for looking
up the resources and retrieving them later. So we can use it in
Chandler, and it could be made available for any other project with
similar needs.
Phillip J. Eby wrote:
At 12:51 PM 6/8/2006 -0700, John Anderson wrote:
This helps, but I'm still a little confused about one issue.
installParcel is called only if the parcel hasn't been loaded,
i.e. we don't pay the it's cost every time Chandler is run, only
the first time it's run. This turns out to be a big performance
win. Can we get the same performance win while
loading/registering egg resources?
This approach already does that, by piggybacking on the egg
scanning that Chandler already does at startup. installParcel
and parcel creation happen as a side effect of egg scanning,
where Chandler notices that there is an egg containing parcels
that are not in the repository. This process simply also checks
for resources in the eggs as it scans them.
Phillip J. Eby wrote:
At 12:09 PM 6/8/2006 -0700, John Anderson wrote:
I was talking to Markku today and we thought it would be
useful to have a 4-way Skype conversation to discuss parcel
loading and egg loading as it related to discovering the
internationalization files. So, how about meeting via Skype
tomorrow morning, say 9:30 AM?
In the interest of moving more of this kind of information to
the development lists, I'd just like to go ahead and propose
what I think Chandler should do to load the
internationalization data, using a mechanism based on Markku's
work so far.
Markku currently has code (if I understand correctly) that
loops over the eggs on sys.path and builds an index, something
like:
from pkg_resources import working_set
for egg in working_set:
if egg.has_metadata('resource.info'):
# code here to update the registry of resource
# information by reading the 'resource.info' from
# the egg
What I would propose doing is to change this code to read instead:
from pkg_resources import working_set, add_activation_listener
@add_activation_listener
def update_resources(egg):
if egg.has_metadata('resource.info'):
# code here to update the registry of resource
# information by reading the 'resource.info' from
# the egg
What this code will do, is that whenever an egg is "activated"
(added to sys.path), its resources will be immediately detected
and loaded.
Thus, any eggs that are on sys.path when Chandler starts, will
have their resources detected immediately (because
add_activation_listener calls the callback immediately for eggs
that are *already* on sys.path). Any that are loaded later
(e.g. by the parcel loader scanning PARCELPATH for more eggs)
will automatically cause the resource registry to be updated,
as the egg runtime will call the callback routine as shown above.
As a side effect, if we later add the ability to download and
install eggs while Chandler is running, any resources they
define will also be registered.
Does this answer the questions that you had in mind for the
meeting, or was there something else you wanted to cover?
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev