Souper to narzędzie dla programistów Pythona. Oferuje zintegrowane przechowywanie wiązanej wraz z indeksami w katalogu. Zapisy w pamięci są ogólne. Jest to możliwe do przechowywania wszystkich danych na płycie jest trwała pickable w ZODB.
Souper można stosować w dowolnej aplikacji pytona używając ZODB, takich jak piramida lub Plone.
Korzystanie souper
Zapewnienie Locator
Zupy są spojrzał przez dostosowanie w pewnym kontekście souper.interfaces.IStorageLocator. Souper nie zapewnia domyślny lokalizator. Więc pierwszy muszą być świadczone. Załóżmy, że kontekst jest pewne trwałe dict-jak wystąpienie:
>>> Z zope.interface importu realizatora
>>> Z zope.interface importu interfejsu
>>> Z zope.component importu provideAdapter
>>> Z souper.interfaces importować IStorageLocator
>>> Z souper.soup SoupData przywozowych
>>>implementer (IStorageLocator)
... Klasa StorageLocator (obiekt):
...
... Def __init __ (self, kontekst):
... Self.context = kontekstu
...
... Def przechowywania (self, soup_name):
... Jeśli nie self.context soup_name:
... Self.context [soup_name] = SoupData ()
... Powrót self.context [soup_name]
>>> ProvideAdapter (StorageLocator, dostosowuje = [Interfejs])
Więc mamy lokalizator tworząc zupy według nazwy w locie. Teraz łatwo jest dostać zupę po nazwie:
>>> Z souper.soup importu get_soup
>>> Zupa = get_soup ("mysoup", kontekst)
>>> Zupa
Zapewnienie Factory katalogowy
W zależności od potrzeb i jej indeksów katalogu mogą się różnić od przypadków użycia w użyciu-przypadek. Fabryka Katalog jest odpowiedzialny, aby utworzyć katalog dla zupy. Fabryka jest nazwany narzędzie realizacji souper.interfaces.ICatalogFactory. Nazwa narzędzia musi sama jak zup.
Tutaj repoze.catalog jest używany i pozwolić indeksy dostęp do danych w ewidencji według klucza NodeAttributeIndexer jest wykorzystywanych. W szczególnych przypadkach może napisać swoje własne indeksujących, ale jeden domyślny jest w porządku przez większość czasu:
>>> Z souper.interfaces importować ICatalogFactory
>>> Z souper.soup importu NodeAttributeIndexer
>>> Z zope.component importu provideUtility
>>> Z repoze.catalog.catalog importu Katalog
>>> Z repoze.catalog.indexes.field importu CatalogFieldIndex
>>> Z repoze.catalog.indexes.text importu CatalogTextIndex
>>> Z repoze.catalog.indexes.keyword importu CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Klasa MySoupCatalogFactory (obiekt):
...
... Def __call __ (self, context = None):
... Katalog = Katalog ()
... Userindexer = NodeAttributeIndexer ("użytkownik")
... Katalog [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ("tekst")
... Katalog [u'text '] = CatalogTextIndex (textindexer)
... keywordindexer = NodeAttributeIndexer ("słowa kluczowe")
... Katalog [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Katalog powrót
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Fabryka Katalog jest używany tylko wewnętrzne zupy, ale może chcieć sprawdzić, czy działa prawidłowo:
>>> Catalogfactory = getUtility (ICatalogFactory, name = "mysoup")
>>> Catalogfactory
>>> Katalog = catalogfactory ()
>>> sortowane (catalog.items ())
[(u'keywords ',
(U'text ",
Co nowego w tym wydaniu:.
- PEP-8. [Rnix, 16.10.2012]
- Python 2.7 Wsparcie. [Rnix, 16.10.2012]
- Dokumentacja Fix.
Wymagania :
- Python
Komentarze nie znaleziono