Souper est un outil de Python pour les programmeurs. Il dispose d'une mémoire intégrée attachés ensemble avec des index dans un catalogue. Les dossiers dans le stockage sont génériques. Il est possible de stocker des données sur un disque si elle est pickable persistant dans ZODB.
Souper peut être utilisé utilisé dans ne importe quelle application python utilisant la ZODB, tels que Pyramid ou Plone.
Utilisation Souper
Fournir un Locator
Soupes sont recherchés en adaptant souper.interfaces.IStorageLocator à un certain contexte. Souper ne fournit aucune localisation par défaut. Donc première doivent être fournis. Supposons contexte est certaine instance de dict-comme persistante:
>>> From zope.interface importation exécutant
>>> Partir de l'interface d'importation de zope.interface
>>> From zope.component provideAdapter d'importation
>>> From souper.interfaces importer IStorageLocator
>>> From SoupData d'importation souper.soup
>>>implementer (IStorageLocator)
... StorageLocator de classe (objet):
...
... Def __init __ (self, contexte):
... Self.context = contexte
...
... Def stockage (auto, soup_name):
... Si soup_name pas dans self.context:
... Self.context [soup_name] = SoupData ()
... Retour self.context [soup_name]
>>> ProvideAdapter (StorageLocator, adapte = [Interface])
Nous avons donc localisateur création soupes par nom à la volée. Maintenant son facile d'obtenir une soupe par son nom:
>>> From souper.soup importation get_soup
>>> Soupe = get_soup ('mysoup', contexte)
>>> Soupe
Fournir un catalogue usine
Selon vos besoins, le catalogue et ses index peut être différent de cas d'utilisation à utiliser cas. L'usine de catalogue est responsable de créer un catalogue pour une soupe. L'usine est un utilitaire nommé la mise en œuvre souper.interfaces.ICatalogFactory. Le nom de l'utilitaire a la même que la soupe ont.
Voici repoze.catalog est utilisé et de laisser les indices accéder aux données sur les dossiers par la touche NodeAttributeIndexer est utilisé. Pour les cas spéciaux, on peut écrire ses indexeurs personnalisés, mais celui par défaut est très bien la plupart du temps:
>>> From souper.interfaces importer ICatalogFactory
>>> From souper.soup importation NodeAttributeIndexer
>>> From zope.component provideUtility d'importation
>>> From repoze.catalog.catalog Catalogue d'importation
>>> From repoze.catalog.indexes.field importation CatalogFieldIndex
>>> From CatalogTextIndex d'importation repoze.catalog.indexes.text
>>> From CatalogKeywordIndex d'importation repoze.catalog.indexes.keyword
>>>implementer (ICatalogFactory)
... MySoupCatalogFactory de classe (objet):
...
... Def __call __ (self, context = Aucun):
... Le catalogue = Catalogue ()
... Userindexer = NodeAttributeIndexer ('user')
... Le catalogue [u'user '] = CatalogFieldIndex (userindexer)
... TextIndexer = NodeAttributeIndexer ('text')
... Le catalogue [u'text '] = CatalogTextIndex (TextIndexer)
... keywordindexer = NodeAttributeIndexer («mots-clés»)
... Catalogue [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Le catalogue de retour
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
L'usine de catalogue est utilisé soupe interne mais on peut vouloir vérifier si elle fonctionne bien:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory
>>> Catalogue = catalogfactory ()
>>> triés (catalog.items ())
[(u'keywords »,
(U'text ',
Ce qui est nouveau dans cette version:.
- PEP-8. [Rnix, 16.10.2012]
- Python 2.7 Soutien. [Rnix, 16.10.2012]
- Documentation Fix.
Exigences :
- Python
Commentaires non trouvées