Souper

Software skärmdump:
Souper
Mjukvaruinformation:
Version: 1.0.1
Ladda upp dagen: 20 Feb 15
Licens: Gratis
Popularitet: 4

Rating: nan/5 (Total Votes: 0)

Souper är ett Python verktyg för programmerare. Det erbjuder en integrerad lagrings hopbundna med index i en katalog. Posterna i lagrings är generiska. Det är möjligt att lagra data på en skiva om det är ihållande pickable i ZODB.
Souper kan användas användas i alla python program som använder ZODB, såsom Pyramid eller Plone.
Använda Souper
Att ge ett Locator
Skaldjur är tittade upp genom att anpassa souper.interfaces.IStorageLocator till något sammanhang. Souper ger inte någon standard locator. Så första måste lämnas. Låt oss anta sammanhang är något ihållande dict-liknande instans:
>>> Från zope.interface importgenomförare
>>> Från zope.interface import Gränssnitt
>>> Från zope.component import provideAdapter
>>> Från souper.interfaces importera IStorageLocator
>>> Från souper.soup import SoupData
>>>implementer (IStorageLocator)
... Klass StorageLocator (objekt):
...
... Def __init __ (self, kontext):
... Self.context = sammanhang
...
... Def lagring (själv, soup_name):
... Om soup_name inte self.context:
... Self.context [soup_name] = SoupData ()
... Retur self.context [soup_name]
>>> ProvideAdapter (StorageLocator, anpassar = [Interface])
Så vi har locator skapa soppor med namn i farten. Nu är det lätt att få en soppa efter namn:
>>> Från souper.soup import get_soup
>>> Soppa = get_soup ('mysoup ", kontext)
>>> Soppa

Att ge en katalog Factory
Beroende på dina behov katalogen och dess index kan se annorlunda ut användningsfall för att använda-fallet. Katalogen Fabriken ansvarar för att skapa en katalog för en soppa. Fabriken är en namngiven verktyg genomförande souper.interfaces.ICatalogFactory. Namnet på verktyget har till samma som soppan har.
Här repoze.catalog används och låta indexen komma åt data på posterna efter nyckeln till NodeAttributeIndexer används. För särskilda fall kan man skriva sina egna indexe, men den förvalda är bra för det mesta:
>>> Från souper.interfaces importera ICatalogFactory
>>> Från souper.soup import NodeAttributeIndexer
>>> Från zope.component import provideUtility
>>> Från repoze.catalog.catalog import Catalog
>>> Från repoze.catalog.indexes.field import CatalogFieldIndex
>>> Från repoze.catalog.indexes.text import CatalogTextIndex
>>> Från repoze.catalog.indexes.keyword import CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Klass MySoupCatalogFactory (objekt):
...
... Def __call __ (self, context = None):
... Katalog = Katalog ()
... Userindexer = NodeAttributeIndexer ("användare")
... Katalog [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('text')
... Katalog [u'text '] = CatalogTextIndex (textindexer)
... keywordindexer = NodeAttributeIndexer ("sökord")
... Katalog [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Retur katalog
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Katalogen fabriken används soppa-endast internt men man kanske vill kolla om det fungerar bra:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory

>>> Katalog = catalogfactory ()
>>> sorteras (catalog.items ())
[(u'keywords ', ),
(U'text ', ),
(U'user ', )]
Lägga till poster
Som nämnts ovan souper.soup.Record är en och endast typ av data som lagts till soppan. En post har attribut som innehåller data:
>>> Från souper.soup import get_soup
>>> Från souper.soup import Record
>>> Soppa = get_soup ('mysoup ", kontext)
>>> Rekord = Record ()
>>> record.attrs ['user'] = 'user1'
>>> record.attrs ['text'] = u'foo bar baz '
>>> record.attrs ['nyckelord'] = [u'1 ", U'2", u '& uuml;']
>>> Record_id = soup.add (rekord)
En post kan innehåller andra poster. Men att indexera dem man skulle behöva en egen indexeraren, så usally conatined register är värdefulla för senare visning, inte för sökning:
>>> Rekord ['subrecord'] = Record ()
>>> rekord ['homeaddress']. attrs ['zip'] = '6020'
>>> rekord ['homeaddress']. attrs ['stan'] = 'Innsbruck'
>>> Rekord ['homeaddress']. Attrs ['land'] = "Österrike"
Access-data
Även utan någon fråga rekord kan hämtas med id:
>>> Från souper.soup import get_soup
>>> Soppa = get_soup ('mysoup ", kontext)
>>> Rekord = soup.get (record_id)
Alla poster kan nås med hjälp utnyttja containern btree:
>>> soup.data.keys () [0] == record_id
Sann
Fråge uppgifter
Hur att fråga en repoze katalog dokumenteras väl. Sortering fungerar på samma också. Frågor skickas till soppor frågemetod (som använder sedan repoze katalog). Den returnerar en generator:
>>> Från repoze.catalog.query import Eq
>>> [R för r i soup.query (Eq ("användare", "user1"))]
[]
>>> [R för r i soup.query (Eq ("användare", "nonexists"))]
[]
För att också få storleken på sökresultatet passera en with_size = Trogen frågan. Den första posten returneras av generatorn är storleken:
>>> [R för r i soup.query (Eq ("användare", "user1 '), with_size-sant)]
[1, ]
För att optimera hanteringen av stora resultat sätter man kanske inte att hämta posten, men en generator åter lätta föremål. Posterna hämtade jour:
>>> Lat = [l för li soup.lazy (Eq ('name', 'namn'))]
>>> Lat
[,
>>> Lat [0] ()

Här storleken överförs som första värde på geneartor alltför om with_size = true föres.
Radera en post
För att ta bort en post från soppan python del används som man skulle göra på något dict:
>>> Del soppa [record_id]
Reindex
Efter ett register uppgifter förändrats den behöver en REINDEX:
>>> record.attrs ['user'] = 'user1'
>>> Soup.reindex (rekord = [rekord])
Ibland kanske vill indexera alla uppgifter. Då REINDEX har att kallas utan parametrar. Det kan ta ett tag:
>>> Soup.reindex ()
Bygg katalog
Usally efter ett byte av katalogen fabriken gjordes - var alltså något index läggas - en ombyggnad av katalogen jag behövde. Den ersätter den aktuella katalogen med en ny en skapas av katalog fabriken och reindexes samtliga uppgifter. Det kan ta tag:
>>> Soup.rebuild ()
Återställ (eller rensa) soppan
För att ta bort alla data från soppan och tomt och bygga katalogen samtalet klart. Uppmärksamhet: all data går förlorad!
>>> Soup.clear ()
Installationsnoteringar
För att kunna använda Souper node.ext.zodb behövs. Eftersom detta beta släpptes fanns det ingen frigivning (kommer att ske snart). Kontrollera pypi om det är det, annars vänligen hämta node.ext.zodb från github

Vad är nytt i den här versionen:.

  • PEP-8. [Rnix, 2012/10/16]
  • Python 2.7 Support. [Rnix, 2012/10/16]
  • Fix dokumentation.

Krav :

  • Python

Annan programvara för utvecklare BlueDynamics Alliance

node.ext.zodb
node.ext.zodb

20 Feb 15

vdexcsv
vdexcsv

11 May 15

lineage.registry
lineage.registry

14 Apr 15

Kommentarer till Souper

Kommentarer hittades inte
Kommentar
Slå på bilder!