Pylons project

Last updated
Pylons Project
Pylons Project logo on transparent background.png
Type of site
Python framework development
Available inEnglish
OwnerOpen source
EditorAnonymous
URL pylonsproject.org OOjs UI icon edit-ltr-progressive.svg
CommercialNo
RegistrationNone
LaunchedDecember 27, 2010 (2010-12-27)
Current statusActive

Pylons Project is an open-source organization that develops a set of web application technologies written in Python. Initially the project was a single web framework called Pylons, but after the merger with the repoze.bfg framework under the new name Pyramid, the Pylons Project now consists of multiple related web application technologies.

Contents

Pyramid

Pyramid
Pyramid web framework logo on transparent background.png
Developer(s) Chris McDonough, Ben Bangert, Michael Merickel, Bert JW Regeer, Steve Piercy
Initial releaseJuly 8, 2008;14 years ago (2008-07-08) [1]
Stable release
2.0 / February 28, 2021;17 months ago (2021-02-28) [1]
Repository www.github.com/Pylons/pyramid
Written in Python
Operating system Cross-platform
Type Web application framework
License BSD-like [2]
Website www.trypyramid.com

Pyramid is an open source web framework written in Python and is based on WSGI. It is a minimalistic web framework inspired by Zope, Pylons and Django. [3]

Originally called "repoze.bfg", Pyramid gathered attention mostly in the Zope [4] and Plone community as the Open Society Institute's KARL project migrated from Plone to BFG. [5] In 2010 it was announced that the Pylons framework will move over to using BFG as a base in version 1.5. [6] As a result of the inclusion of BFG into the Pylons project, BFG was renamed Pyramid. [7]

Features

Pyramid is a minimalistic, platform-independent web framework. It is persistence agnostic and is integrated both with SQL databases via SQLAlchemy and with the Zope Object Database, as well as other NoSQL databases, such as CouchDB. [3]

Pyramid allows developers to define routes using regular expressions that map to objects. Like its fellow framework Zope, Pyramid also allows hierarchical object traversal, where each part of a URL is an object containing other objects, in a way that is similar to folders in a filesystem. [8]

Pylons Web Framework

Pylons Framework
Pylonsfw.png
Developer(s) Ben Bangert, James Gardner
Initial releaseSeptember 2005;16 years ago (2005-09) [9]
Stable release
1.0.2 [10] / July 21, 2015;7 years ago (2015-07-21)
Repository www.github.com/Pylons/pylons
Written in Python
Operating system Cross-platform
Type Web application framework
License BSD license
Website www.pylonsproject.org/about-pylons-framework.html

Pylons Framework is an open-source Web application framework written in Python. It makes extensive use of the Web Server Gateway Interface standard to promote reusability and to separate functionality into distinct modules. [11] It is strongly influenced by Ruby on Rails: two of its main components, Routes and WebHelpers, are Python reimplementations of Rails features.

Structure

Pylons is well known for having a near-complete stack of third-party tools, eschewing the "not-invented-here" phenomenon.

Installation, dependencies, and setup

The official installation method of Pylons is through EasyInstall via the Python Package Index (PyPI), and most of the additional tools are typically installed the same way. EasyInstall also handles package dependencies when relevant. Some distributions could also package Pylons and Paste, but it is likely that any distribution's packages would lag the official distribution. Pylons may also be installed by hand by renaming its .egg file to .zip and extracting the contents.

Paste is used for project setup, testing, and deployment. Using the common INI configuration format, Paste allows for multiple "profiles", so that developers can run development and deployment setups from the same codebase without revealing sensitive parts of Pylons, such as the interactive debugger, to production users.

URL dispatch

Currently the only widely used URL dispatcher for Pylons is Routes, a Python reimplementation of Ruby on Rails' URL dispatching, although any WSGI-compatible URL dispatcher can be used. While Routes is a separate library, it was developed for use in Pylons and its development remains closely in sync with Pylons.

HTML generation

Another piece of Rails adapted for Pylons is WebHelpers, which provides URL mapping based on the Routes configuration. WebHelpers also provides some utility functions for generating JavaScript code making use of the script.aculo.us and Prototype libraries.

FormEncode and FormBuild are used for HTML form validation and generation; there has been some use of Mako for form generation using Mako's inheritance model.

Templating

Myghty was the default Pylons templating language, but as of version 0.9.6 it has been replaced by Mako. [12] Both templating languages are text-based (as opposed to XML-based), and support includes, inheritance and embedding arbitrary Python code.

Because of Pylons' loosely coupled layers, other templating languages can be used as well. Genshi, an XML-based templating language, can be used in lieu of either Mako or Myghty. [13]

Database abstraction and object-relational mapping

Pylons has no default database library. Both SQLObject and SQLAlchemy are known to be used.

Merger with repoze.bfg and birth of Pyramid Web Framework

Pylons has developed into the Pylons Project, and the old code from Pylons 1.0 is now in maintenance-only mode. However, pursuant to the project's merger with repoze.bfg since November 2010, newer versions of Pylons are actually different from the original Pylons 1.0. Pylons developers initially planned to rewrite certain portions of the code, but they observed that the new code was approximating repoze.bfg, which led to the merger of Pylons and repoze.bfg. [14] [15] This led to repoze.bfg (a part of the Repoze Python-based web framework) to become rebranded and relaunched as the Pyramid web framework. [16]

See also

Related Research Articles

Zope is a family of free and open-source web application servers written in Python, and their associated online community. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web. Zope has been called a Python killer app, an application that helped put Python in the spotlight.

Plone (software)

Plone is a free and open source content management system (CMS) built on top of the Zope application server. Plone is positioned as an enterprise CMS and is commonly used for intranets and as part of the web presence of large organizations. High-profile public sector users include the U.S. Federal Bureau of Investigation, Brazilian Government, United Nations, City of Bern (Switzerland), New South Wales Government (Australia), and European Environment Agency. Plone's proponents cite its security track record and its accessibility as reasons to choose Plone.

The Web Server Gateway Interface is a simple calling convention for web servers to forward requests to web applications or frameworks written in the Python programming language. The current version of WSGI, version 1.0.1, is specified in Python Enhancement Proposal (PEP) 3333.

CherryPy is an object-oriented web application framework using the Python programming language. It is designed for rapid development of web applications by wrapping the HTTP protocol but stays at a low level and does not offer much more than what is defined in RFC 7231.

Django (web framework) Python web framework

Django is a free and open-source, Python-based web framework that follows the model–template–views (MTV) architectural pattern. It is maintained by the Django Software Foundation (DSF), an independent organization established in the US as a 501(c)(3) non-profit.

A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.

TurboGears

TurboGears is a Python web application framework consisting of several WSGI components such as WebOb, SQLAlchemy, Genshi and Repoze.

Nevow is a Python web application framework originally developed by the company Divmod. Template substitution is achieved via a small Tag Attribute Language, which is usually embedded in on-disk XML templates, though there is also a pure-Python domain-specific language called Stan, for expressing this markup programmatically. Nevow integrates well with Twisted, a framework for event-driven programming.

Genshi is a template engine for XML-based vocabularies written in Python. Genshi is used to easily insert generated output into XML-based languages, usually HTML, and reuse elements between documents. Genshi's syntax is based on Kid, but its architecture is different. Genshi aims to implement some of its functionality while processing templates faster, by dynamically processing templates using a stream based API, instead of compiling templates to Python code.

SQLAlchemy

SQLAlchemy is an open-source SQL toolkit and object-relational mapper (ORM) for the Python programming language released under the MIT License.

The Template Attribute Language (TAL) is a templating language used to generate dynamic HTML and XML pages. Its main goal is to simplify the collaboration between programmers and designers. This is achieved by embedding TAL statements inside valid HTML tags which can then be worked on using common design tools.

Python Paste, often simply called paste, is a set of utilities for web development in Python. Paste has been described as "a framework for web frameworks".

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

Grok (web framework) Open-source web framework

Grok is an open-source web framework based on Zope Toolkit (ZTK) technology. The project was started in 2006 by a number of Zope developers. Its core technologies are also used in other Zope-based projects.

Rack (web server interface) API specification for web applications in programming language Ruby

Rack is a modular interface between web servers and web applications developed in the Ruby programming language. With Rack, application programming interfaces (APIs) for web frameworks and middleware are wrapped into a single method call handling HTTP requests and responses.


The Wing Python IDE family of integrated development environments (IDEs) from Wingware was created specifically for the Python programming language, with support for editing, testing, debugging, inspecting/browsing, and error checking Python code.

Diazo, previously named xdv, is a general-purpose, open source website theming tool. It is written in Python and generates XSLT. Diazo creates a separation between theme pages and transformation rules, allowing web designers to work on templates in plain HTML, without knowledge of XSLT or special template-related codes.

Mako (template engine) Python template library

Mako is a template library written in Python. Mako is an embedded Python language, which refines the familiar ideas of componentized layout and inheritance. The Mako template is used by Reddit. It is the default template language included with the Pylons and Pyramid web frameworks.

References

  1. 1 2 "Pyramid Change History — The Pyramid Web Framework v2.0". docs.pylonsproject.org. Retrieved 2021-04-26.
  2. "Copyright, Trademarks, and Attributions — The Pyramid Web Framework v2.0". docs.pylonsproject.org. Retrieved 2021-04-26.
  3. 1 2 Chris McDonough. "repoze.bfg introduction". Archived from the original on 2013-12-30. Retrieved 2010-09-21.
  4. Gary Poster (2010-09-17). "Zope Summit, DZUG, repoze.bfg" . Retrieved 2010-09-21.
  5. Thomas Moroz, Chris Rossi & Calvin Hendryx-Parker (2009-10-28). KARL – large-scale Knowledge Management. Budapest, Hungary: Plone Conference 2009. Archived from the original on 2010-06-02. Retrieved 2010-09-23.
  6. Ben Bangert (2010-09-18). "Emails explaining the Pylons 2 structure" . Retrieved 2010-09-21.
  7. "repoze.bfg is now Pyramid". Archived from the original on 2010-11-13. Retrieved 2011-01-03.
  8. Wichert Akkerman (2009-10-28). Lessons from other frameworks. Budapest, Hungary: Plone Conference 2009. Event occurs at 25:50. Archived from the original on 2013-04-18. Retrieved 2010-09-21.
  9. History of Pylons
  10. Pylons Changelog
  11. The mod_wsgi project includes both Pylons and Pyramid in its list of supported major Python web frameworks.
  12. Haas, Christoph Beginning Pylons Archived 2009-02-16 at the Wayback Machine . Retrieved July 5, 2007
  13. Genshi Wiki Pylons with Genshi Retrieved July 5, 2007
  14. Pylons Project FAQ. URL: https://pylonsproject.org/about-pylons-project.html
  15. Notes on the Pylons and repoze.bfg merger. URL: "Be Groovie - Notes on the Pylons & repoze.BFG Merger". Archived from the original on 2012-03-04. Retrieved 2012-08-14.
  16. About Pyramid. URL: https://trypyramid.com/

Further reading