Piramida jest szybki, mały, w dół do ziemi, open source ramach rozwoju Python internetowej. & Nbsp; To sprawia, że w świecie rzeczywistym, tworzenie aplikacji internetowych i wdrażanie więcej zabawy, bardziej przewidywalne i bardziej wydajne.
Piramida jest Pylons i leży u podstaw najnowsze ram internetowych produkowane przez społeczność pylony.
piramidy był znany wcześniej jako repoze.bfg.
Pomoc i dokumentacja
Zobacz stronę internetową Pylony projektu, aby zobaczyć dokumentację, zgłosić błędy i uzyskać wsparcie.
licencji
Piramida jest oferowany pod BSD-pochodzi Repoze Licencji Publicznej
Co nowego w tym wydaniu:.
- mako_templating: dodano obronne obejść za brak importability z mako ze względu na upstream markupsafe spada Pythona 3.2 wsparcie. Mako szablonów nie będzie już pracować w połączeniu MarkupSafe 0,17 i Python 3.2 (choć połączenie MarkupSafe 0,17 i Python 3.3 lub dowolnym Python 2 wersja będzie działać OK).
- Upewnij się pyramid.config.assets.PackageOverrides obiekt wdrożenia API dla __loader__ obiektów określonych w PEP 302. proxy do __loader__ wyznaczonym przez importera, jeśli występuje; inaczej, podnosi NotImplementedError. To sprawia, że Piramida widok statyczna nadpisuje działać prawidłowo w Pythonie 3.3 (wcześniej ich nie będzie). Zobacz https://github.com/Pylons/pyramid/pull/1015 aby uzyskać więcej informacji.
Co nowego w wersji 1.4:
- Rozwiąż testy funkcjonalne w tutorialu ZODB
Co nowego w wersji 1.4 beta 3:
- zwolnienie Opakowania tylko, żadnych zmian w kodzie. 1.4b2 był brownbag zwolnienie z powodu braku katalogów do archiwum.
Co nowego w wersji 1.3.4:
- Po pyramid.debug_routematch był włączony i przemieszczenia orzecznik został wykorzystany w dowolnej trasie, router będzie podnieść wyjątek podczas próby drukowania informacji debugowania trasy. Ten problem istnieje od 1.3a1.
- Po trawers orzecznik był używany w każdej trasie proutes i pviews skrypty konsoli podniesie wyjątek podczas próby drukowania informacji o trasach debugowania. Ten problem istnieje od 1.3a1.
- backportu poprawki błędów od mistrza: - W odnośnika Mako Szablony sprawdzić bezwzględną uri (przy użyciu Mako katalogi), gdy mieszania dziedzictwa z widowisko aktywów. https://github.com/Pylons/pyramid/issues/662
- Po rejestracji wiele widoków z orzeczeniem przyjąć w aplikacji w Pythonie Pyramid runing 3, możesz otrzymaliśmy TypeError: unorderable typy: function () & lt; Funkcja () wyjątek.
- backportu od mistrza: HTTP Accept nagłówki nie były znormalizowane powodując potencjalnie sprzecznych zobacz rejestracje niezauważone. Dwa widoki, które różnią się tylko obudową ("text / html" vs. "text / html") będzie teraz podnieść błąd. https://github.com/Pylons/pyramid/pull/620
Co nowego w wersji 1.4 Alpha 1:
- Poprawione błędy:
- Port Forward z 1,3 branży: Gdy nie został skonfigurowany polityki uwierzytelniania, wywołanie pyramid.security.effective_principals będzie bezwarunkowo zwrócić pustą listę. To było nieprawidłowe, powinien mieć bezwarunkowo zwrócone [Każdy], a teraz nie.
- Explicit wysyłki url Wyrażenia regularne mogą teraz zawierać dwukropka. https://github.com/Pylons/pyramid/issues/629
- Na co najmniej jednej 64-bitowym systemie Ubuntu pod Pythona 3.2, za pomocą dekoratora view_config spowodował RuntimeError: Słownik zmianie rozmiaru podczas iteracji wyjątkiem. To już nie ma. Zobacz https://github.com/Pylons/pyramid/issues/635 aby uzyskać więcej informacji.
- W odnośnika Mako szablony, sprawdzić, czy jest już dostosowana uri i przynieść go z powrotem do specyfikacji aktywów. Zwykle występuje z odziedziczonych lub części składowych szablonów. https://github.com/Pylons/pyramid/issues/606 https://github.com/Pylons/pyramid/issues/607
- W odnośnika Mako Szablony sprawdzić bezwzględną uri (używając katalogów Mako) podczas mieszania się dziedzictwa z widowisko aktywów. https://github.com/Pylons/pyramid/issues/662
- HTTP Accept nagłówki nie były znormalizowane powodując potencjalnie sprzecznych zobacz rejestracje niezauważone. Dwa widoki, które różnią się tylko obudową ("text / html" vs. "text / html") będzie teraz podnieść błąd. https://github.com/Pylons/pyramid/pull/620
- Forward-portowy z 1,3 branży: podczas rejestracji wiele widoków z akceptuje orzecznik w aplikacji w Pythonie Pyramid runiczny 3, możesz otrzymaliśmy TypeError: unorderable typy: function () & lt; Funkcja () wyjątek.
- Opis:
- Configurator.add_directive teraz przyjmuje dowolne callables jak podszablonów lub obiektów wykonawczych __call__ które nie mają atrybutów __doc__ i __name__. Zobacz https://github.com/Pylons/pyramid/issues/621 i https://github.com/Pylons/pyramid/pull/647.
- stron trzecich dostosowany widok trasy, a abonent może być dodany do użytku widzenia autorów poprzez pyramid.config.Configurator.add_view_predicate, pyramid.config.Configurator.add_route_predicate i pyramid.config.Configurator.add_subscriber_predicate. Tak więc, na przykład, w ten sposób:
- config.add_view_predicate ('abc', my.package.ABCPredicate)
- Może pozwolić widok autor to zrobić w aplikacji skonfigurowany, że predykat:
- view_config (abc = 1)
- Podobne cechy istnieją add_route i add_subscriber. Zobacz & quot; Dodawanie TRZECIEJ View, trasy, lub abonenta predykatu & quot; w rozdziale Hooks uzyskać więcej informacji.
- Należy pamiętać, że zmiany wprowadzone w celu wspierania wyżej funkcji oznacza, że teraz tylko działania rejestrowane przy użyciu tego samego & quot; porządek & quot; mogą być sprzeczne ze sobą. Kiedyś sprawę, że akcje zarejestrowane na różnych zleceń może potencjalnie konflikt, ale do mojej wiedzy nigdy nic zależało od tego zachowania (to było trochę głupie).
- niestandardowe można łatwo JSON serializacji w Piramidzie, definiując metodę __json__ na klasy obiektu. Metoda ta powinna zwracać wartości natywnie SERIALIZABLE przez json.dumps (takie jak wskazówki, listy, słowniki, smyczki i tak dalej).
- JSON renderujący pozwala teraz do zdefiniowania niestandardowego typu adaptery do konwersji do serializations nieznanych obiektów JSON.
- W tej wersji, orzecznik REQUEST_METHOD, jeśli jest stosowany, będzie również oznaczać, że głowa jest domniemanych w przypadku korzystania GET. Na przykład za pomocąview_config (REQUEST_METHOD = "GET") jest równoważne użyciuview_config (REQUEST_METHOD = ("GET", "HEAD")). Korzystanieview_config (REQUEST_METHOD = ("GET", "POST") jest równoważne użyciuview_config (REQUEST_METHOD = ("GET", "HEAD", "POST"). To dlatego, że HEAD jest wariant, że pomija GET ciała i WebOb ma specjalnego wsparcia powrotu pustego ciała, gdy jest używany HEAD.
- config.add_request_method został wprowadzony w celu wsparcia rozciągające obiektów żądania z dowolnych callables. Metoda ta rozszerza się na poprzednim config.set_request_property przez metod wspomagających, jak również właściwości. Metoda ta powoduje teraz mniej kod wykonywany na zamówienie czas budowy niż config.set_request_property w wersji 1.3.
- Nie dodawaj? do adresów generowanych przez request.resource_url jeśli argument zapytania jest jednak pusta.
- Nie dodawaj? do adresów generowanych przez request.route_url jeśli argument _query jest jednak pusta.
- statyczne maszyny widok teraz podnosi (zamiast zwrotów) HTTPNotFound i HTTPMovedPermanently wyjątkami, więc mogą one zostać pochwycone przez widok NOTFOUND (i innych poglądów wyjątków).
- Mako renderujący obsługuje nazwę def w specyfikacji aktywów. Gdy nazwa def jest obecny w specyfikacji aktywów, system renderowania def szablonu wewnątrz szablonu i zwróci wynik. Spec przykładem atutem jest pakiet: ścieżka / do / szablonu # defname.mako. Uczyni to def nazwie defname wewnątrz szablonu template.mako zamiast renderowania cały szablon. Stary sposób powrocie krotki w postaci ("defname", {}) z widoku jest obsługiwane dla zachowania zgodności,
- Chameleon ZPT renderujący teraz przyjmuje nazwę makra w specyfikacji aktywów. Gdy nazwa makra jest obecny w specyfikacji aktywów, system będzie świadczyć makro wymienione jako określenie poziomu makro i zwrócić wynik, zamiast renderowania cały szablon. Spec przykładem aktywów: Pakiet: ścieżka / do / szablonu # macroname.pt. Spowoduje to, makra zdefiniowane jako nazwa_makro w szablonie template.pt zamiast całego templae.
- Jeśli nie jest wyjątkiem orzecznik niedopasowanie (widoczne, gdy nie widok odpowiada za dany wniosek, z predykatów nie działa), wyjątek zawiera teraz opis tekstowy orzecznika, który nie zgadza się.
- Metoda dyrektywy add_permission został dodany do konfiguratora. Dyrektywa ta rejestruje wolnostojący uprawnień introspectable do systemu introspekcji Pyramid. Konstrukcje zbudowane na szczycie Piramidy może zatem skorzystać z uprawnienia introspectable danych kategorii zbudować kompleksową listę uprawnień obsługiwanych przez systemie. Przed metoda ta została dodana, uprawnienia te zostały już zarejestrowane w tym introspectable kategorii jako efekt uboczny nazwaniem ich w rozmowy add_view, ta metoda po prostu pozwala zorganizować uprawnienie do wprowadzenia do uprawnień introspectable kategorię bez nazywania go wraz z związane widok. Oto przykład wykorzystania add_permission:
- config = Konfigurator ()
- config.add_permission ('view')
- UnencryptedCookieSessionFactoryConfig teraz akceptuje signed_serialize i signed_deserialize haczyki, które mogą być używane do wywierania wpływu, jak sesje są przetaczane (domyślnie odbywa się to z HMAC + zalewie).
- pyramid.testing.DummyRequest obsługuje metod dostarczonych przez klasę pyramid.util.InstancePropertyMixin takich jak set_property.
- Właściwości i metody Zapytaj dodawane poprzez config.set_request_property lub config.add_request_method są teraz dostępne dla nastolatków.
- Właściwości i metody Zapytaj dodawane poprzez config.set_request_property lub config.add_request_method są teraz dostępne w obiekcie żądania wrócił z pyramid.paster.bootstrap.
- request.context wniosku środowiska podczas bootstrap jest obecnie głównym obiektem, jeśli kontekst nie jest już ustawiony na dostarczonych życzenie.
- Funkcja pyramid.decorator.reify jest teraz API i dodano do dokumentacji API.
- Dodano menedżera kontekstu pyramid.testing.testConfig, który może być wykorzystywany do generowania konfiguracyjnego w teście, np z testing.testConfig (...):.
- Użytkownicy mogą wywołać subrequest widoku z wewnątrz kodu za pomocą nowego request.invoke_subrequest API.
- Deprecations:
- pyramid.config.Configurator.set_request_property było dokumentacji, przestarzałe. Sposób nadal użyteczny ale potężniejszy pyramid.config.Configurator.add_request_method należy stosować w miejsce (posiada wszystkie te same funkcje, ale może również rozciągać się do obiektu z żądaniem z metody A).
- do tyłu Niezgodności:
- Router Piramida nie dodaje wartości lub bfg.routes.matchdict bfg.routes.route do słownika środowiska WSGI wniosek jest. Wartości te były przestarzałe w docs-1.0 (w praktyce repoze.bfg siedmiu mniejszych wydawnictw temu). Jeśli kod zależało od tych wartości, należy użyć request.matched_route i request.matchdict zamiast.
- Nie jest już możliwe, aby przekazać słownika bezpośrednio pyramid.traversal.ResourceTreeTraverser środo .__ call__ (aka ModelGraphTraverser .__ call__). Zamiast tego należy przekazać obiekt żądania. Przechodząc środowisko zamiast wniosek wygenerował ostrzeżenie amortyzacyjne od Piramidy 1.1.
- Piramida nie będzie działać prawidłowo, jeśli używasz webob.request.LegacyRequest jako fabryka życzenie. Instancje LegacyRequest klasy mają request.path_info które powrócić ciąg. Ta wersja zakłada, że request.path_info Pyramid bezwarunkowo być Unicode będzie.
- Funkcje z pyramid.chameleon_zpt i pyramid.chameleon_text nazwie get_renderer, get_template, render_template i render_template_to_response zostały usunięte. Te wydały ostrzeżenie amortyzację w przypadku przywozu od Piramidy 1.0. Użyj pyramid.renderers.get_renderer (), pyramid.renderers.get_renderer (). Wdrażania (), pyramid.renderers.render () lub pyramid.renderers.render_to_response odpowiednio zamiast tych funkcji.
- Moduł pyramid.configuration został usunięty. To była przestarzała od Piramidy 1.0 i wydrukować ostrzeżenie amortyzację momencie jego użycia. Użyj pyramid.config zamiast.
- pyramid.paster.PyramidTemplate API został usunięty. To była przestarzała od Piramidy 1.1 i ostrzeżenie od importu. Jeśli kod ten polegał na tym, by dostosować swój kod zamiast importować pyramid.scaffolds.PyramidTemplate.
- pyramid.settings.get_settings () API został usunięty. Został drukowania ostrzeżenie amortyzację ponieważ Piramida 1.0. Jeśli kod zależało od tego API, użyj pyramid.threadlocal.get_current_registry (). Ustawienia, zamiast lub użyć atrybutu ustawień rejestru dostępnego wniosek (request.registry.settings).
- Te interfejsy API z modułu pyramid.testing zostały usunięte. Zostały one drukowanie ostrzeżeń amortyzacyjne od Piramidy 1.0:
- registerDummySecurityPolicy użyj pyramid.config.Configurator.testing_securitypolicy zamiast.
- registerResources (aka registerModels, używać pyramid.config.Configurator.testing_resources zamiast.
- registerEventListener użyj pyramid.config.Configurator.testing_add_subscriber zamiast.
- registerTemplateRenderer (aka registerDummyRenderer`), użyj pyramid.config.Configurator.testing_add_template zamiast.
- registerView użyj pyramid.config.Configurator.add_view zamiast.
- registerUtility użyj pyramid.config.Configurator.registry.registerUtility zamiast.
- registerAdapter użyj pyramid.config.Configurator.registry.registerAdapter zamiast.
- registerSubscriber użyj pyramid.config.Configurator.add_subscriber zamiast.
- registerRoute użyj pyramid.config.Configurator.add_route zamiast.
- registerSettings, wykorzystanie pyramid.config.Configurator.add_settings zamiast.
- W Piramidzie 1.3 i poprzednia, metoda __call__ z obiektu Response została wywołana zanim jakiekolwiek gotowe wywołania zwrotne zostały zrealizowane. Począwszy od tej wersji, metoda __call__ z obiektu Response jest wywoływana po gotowe wywołania zwrotne są wykonywane. To poparcie request.invoke_subrequest funkcji.
- Dokumentacja:
- Dodane & quot; Aktualizacja Pyramid & quot; rozdział w dokumentacji opisowej. Opisuje w jaki sposób radzić sobie z deprecations oraz usuwania Pyramid API i jak pokazać Piramida Deprecation ostrzeżenia wygenerowane testy podczas jazdy i podczas pracy serwera.
- Dodane & quot; Wywoływanie Subrequest & quot; rozdział w dokumentacji. Opisuje, jak korzystać z nowego request.invoke_subrequest API.
- Zależności:
- Piramida wymaga teraz WebOb 1.2b3 + (przed uwolnienia Piramida polegać tylko na 1.2dev +). Ma to zapewnić, że otrzymujemy wersję WebOb zwracającą request.path_info jako tekst.
Predykaty
Obiekty
Co nowego w wersji 1.3.2:
- Wersja 1.3.1 było zwolnienie brownbag, co najmniej na Windows i być może w innych systemach operacyjnych, z powodu istnienia bezpańskich & quot; katalogu pakietu (cytat w zestawie) w katalogu głównym 1.3.1 archiwum. Ten katalog i jego zawartość była obecna, ponieważ został stworzony .tar.gz za pomocą wersji wydania setuptools-git, a nie z kasy zainstalowanej w setuptools-git. Jedyną zmianą w tej wersji jest, aby poprawić błąd pakowania w 1.3.1.
Co nowego w wersji 1.3:
- Po pyramid.wsgi.wsgiapp2 nazywa downstream aplikację WSGI, App na środo nie będzie już (i potencjalnie mylące przestarzałe) bfg.routes.matchdict lub bfg.routes.route klucze w nim. Objaw ten błąd będzie wsgiapp2 owinięte Piramida aplikacja znalezienia złą opinię, bo błędnie wykrywa, że trasa została dopasowana, podczas gdy w rzeczywistości nie było.
- poprawka dla wydania https://github.com/Pylons/pyramid/issues/461 (co pozwoliło na metody instancji do stosowania jako widok callables) wprowadziła do tyłu niezgodności, gdy metody zadeklarowany tylko prośba argumentem były stosowane. Zobacz https://github.com/Pylons/pyramid/issues/503
Co nowego w wersji 1.3 Beta 2:
- Metoda pyramid.request.Request.partial_application_url jest nie ma już w API docs. To miała być prywatna metoda; jego opublikowaniu w dokumentacji jako metody API był błąd, i został przemianowany na czymś prywatnym.
- Jeśli widok został zarejestrowany za pomocą statycznych ścieżkę bezwzględną systemu plików w systemie Windows, funkcja request.static_url nie działa do generowania adresów URL do jego zasobów. Objaw: & quot; Nie statyczne dopasowanie definicja URL c:. Foobarbaz & quot;
- wszystkie testy przechodzą na Windows XP.
- Bug w uwierzytelniania ACL sprawdzania Pythonie 3: zezwolenia i principals_allowed_by_permission metoda pyramid.authorization.ACLAuthenticationPolicy mógł wrócić nieodpowiednią wartość True, gdy pozwolenie na ACL był łańcuch, a nie kolejność, i to tylko wtedy, gdy uprawnienie ACL Łańcuch był podciąg wartości uprawnień przekazywany funkcji.
- Ten błąd nie efekty wdrażania Piramida w Pythonie 2; jest to błąd, który istnieje tylko w wdrożeń działa na Python 3. Istnieje od Pyramid 1.3a1.
- Ten błąd był ze względu na obecność atrybutu __iter__ na smyczki pod Pythonie 3, która nie występuje w ciągi znaków w Pythonie 2.
Co nowego w wersji 1.3 beta 1:
- Poprawione błędy:
- pyramid.config.Configurator.with_package nie działa, jeśli Konfigurator był starym stylu instancji pyramid.configuration.Configurator.
- zasady autoryzacji Piramida nie pojawił się w introspector.
- Deprecations:
- Wszystkie odniesienia do zmiennej życzenie tmpl_context zostały usunięte z dokumentów. Jego istnienie w Piramidzie jest mylące dla osób, które nigdy nie były pylony użytkowników. Został on dodany jako towania wygody dla użytkowników pylonów w Piramidzie 1.0, ale to nigdy nie złapał na ponieważ system renderowania Piramida jest zupełnie inaczej niż Pylony "było, istnieją alternatywne sposoby i zrobić to, co zostało zaprojektowane do zaoferowania w Pylons. Będzie nadal istnieje & quot; zawsze & quot; ale to nie będzie zalecane lub wspomniano w docs.
Wymagania :
- Python
Komentarze nie znaleziono