Nagare web framework 0.4.0

2012-01-18 Thread Alain Poirier
Hi all,

Version 0.4.0 of the Nagare web framework is now released!

About Nagare


Nagare is a components based framework: a Nagare application
is a composition of interacting components each one with its
own state and workflow kept on the server. Each component
can have one or several views that are composed to generate
the final web page. This enables the developers to reuse or
write highly reusable components easily and quickly.

Thanks to Stackless Python, Nagare is also a continuation aware
web framework which enables to code a web application like a
desktop application, with no need to split its control flow in
a multitude of controllers and with the automatic handling of
the back, fork and refresh actions from the browser.

Its component model and use of the continuation come from the
famous Seaside Smalltalk framework.

Furthermore Nagare integrates the best tools and standard from
the Python world. For example:

  - WSGI: binds the application to several possible publishers,
  - lxml: generates the DOM trees and brings to Nagare the full
set of XML features (XSL, XPath, Schemas ...),
  - setuptools: installs, deploys and extends the Nagare framework
and the Nagare applications too,
  - PEAK Rules: generic methods are heavily used in Nagare, to
associate views to components, to define security rules, to
translate Python code to Javascript ...
  - WebOb: for its Request and Response Objects.


To read more about its features:
http://www.nagare.org/trac/wiki/NagareFeatures

Release info and download page:
http://pypi.python.org/pypi/nagare

Release info and download page of the examples:
http://pypi.python.org/pypi/nagare.examples

Release info and download page of the pure web IDE:
http://www.nagare.org/trac/wiki/NagareIde
http://pypi.python.org/pypi/nagare.ide

Source and documentation available at the website:
 http://www.nagare.org

Mailing lists - the place to ask questions:
 http://groups.google.com/group/nagare-users


Examples


A complete guess a number game to taste how easy web coding
becomes using continuations:


  import random
  from nagare import component, util

  class Number(component.Task):
  A little game to guess a number
  
  def go(self, comp):
  The game algorithm, using continuation for a pure linear Python 
code
  
  In:
- ``comp`` -- this component
  
  self.attempt = 1
  number = random.randint(1, 20)
  
  comp.call(util.Confirm('I choose a number between 1 and 20. Try to 
guess it'))
  
  while True:
  x = comp.call(util.Ask('Try #%d: ' % self.attempt))
  if not x.isdigit():
  continue
  
  x = int(x)
  
  if x  number:
  comp.call(util.Confirm('Choose a lower number'))
  
  if x  number:
  comp.call(util.Confirm('Choose a greater number'))
  
  if x == number:
  comp.call(util.Confirm('You guessed the number in %d 
attempts' % self.attempt))
  break

  self.attempt += 1


A simple todo list, illustrating the programmatic HTML generation,
the association of view(s) to Python objects and the direct association
of callbacks to HTML form elements and links:

from nagare import presentation
from nagare.namespaces import xhtml

# A plain Python ``TodoList`` class
class TodoList(object):
def __init__(self):
self.todo = []

def add_todo(self, msg):
self.todo.append(msg)

# The default HTML view, generated in programmatic HTML
@presentation.render_for(TodoList)
def render(self, h, comp, model):
# ``h`` is a (X)HTML renderer 
(http://www.nagare.org/trac/wiki/RendererObjects)
with h.div:
for msg in self.todo:
h  h.blockquote(msg)  h.hr

with h.form:
h  'New todo:'  h.br
h  h.textarea.action(self.add_todo)  h.br
h  h.input(type='submit', value='Add')

return h.root

Enjoy!

A. Poirier
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations/


Nagare IDE 0.1.0 - Pure Web IDE for the Nagare framework

2010-05-28 Thread Alain Poirier
Hi all,

I'm pleased to announce that the first (0.1.0) version of the
Nagare IDE is released!

Nagare IDE is a pure Web Integrated Development Environment
dedicated to the Nagare Web framework.

Using YUI, the Bespin editor, ajax and comet communications,
it offers the browsing of your projects, the edition of the
sources, the debugging of the raised exceptions and the
consultation in real-time of the applications logs.

The full documentation with screenshots and how to install it
is available at http://www.nagare.org/trac/wiki/NagareIde

Enjoy!

A. Poirier

-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations/


Nagare web framework 0.3.0 released

2010-02-16 Thread Alain Poirier
Hi all,

The version 0.3.0 of the Nagare web framework is now released !

To read about its features:
http://www.nagare.org/trac/wiki/NagareFeatures

Release info and download page:
 http://pypi.python.org/pypi/nagare

Release info and download page of the examples:
 http://pypi.python.org/pypi/nagare.examples

Source and documentation available at the website:
 http://www.nagare.org

Mailing lists - the place to ask questions:
 http://groups.google.com/group/nagare-users

About Nagare


Nagare is a components based framework: a Nagare application
is a composition of interacting components each one with its
own state and workflow kept on the server. Each component
can have one or several views that are composed to generate
the final web page. This enables the developers to reuse or
write highly reusable components easily and quickly.

Thanks to Stackless Python, Nagare is also a continuation-based
web framework which enables to code a web application like a
desktop application, with no need to split its control flow in
a multitude of controllers and with the automatic handling of
the back, fork and refresh actions from the browser.

Its component model and use of the continuation come from the
famous Seaside Smalltalk framework.

Furthermore Nagare integrates the best tools and standard from
the Python world. For example:

  - WSGI: binds the application to several possible publishers,
  - lxml: generates the DOM trees and brings to Nagare the full
set of XML features (XSL, XPath, Schemas ...),
  - setuptools: installs, deploys and extends the Nagare framework
and the Nagare applications too,
  - PEAK Rules: generic methods are heavily used in Nagare, to
associate views to components, to define security rules, to
translate Python code to Javascript ...
  - WebOb: for its Request and Response Objects.


Examples


A complete guess a number game to taste how easy web coding
becomes using continuations:


  import random
  from nagare import component, util

  class Number(component.Task):
  A little game to guess a number
  
  def go(self, comp):
  The game algorithm, using continuation for a pure linear Python 
code
  
  In:
- ``comp`` -- this component
  
  self.attempt = 1
  number = random.randint(1, 20)
  
  comp.call(util.Confirm('I choose a number between 1 and 20. Try to 
guess it'))
  
  while True:
  x = comp.call(util.Ask('Try #%d: ' % self.attempt))
  if not x.isdigit():
  continue
  
  x = int(x)
  
  if x  number:
  comp.call(util.Confirm('Choose a lower number'))
  
  if x  number:
  comp.call(util.Confirm('Choose a greater number'))
  
  if x == number:
  comp.call(util.Confirm('You guessed the number in %d 
attempts' % self.attempt))
  break

  self.attempt += 1


A simple todo list, illustrating the programmatic HTML generation,
the association of view(s) to Python objects and the direct association
of callbacks to HTML form elements and links:

from nagare import presentation
from nagare.namespaces import xhtml

# A plain Python ``TodoList`` class
class TodoList(object):
def __init__(self):
self.todo = []

def add_todo(self, msg):
self.todo.append(msg)

# The default HTML view, generated in programmatic HTML
@presentation.render_for(TodoList)
def render(self, h, comp, model):
# ``h`` is a (X)HTML renderer 
(http://www.nagare.org/trac/wiki/RendererObjects)
with h.div:
for msg in self.todo:
h  h.blockquote(msg)  h.hr

with h.form:
h  'New todo:'  h.br
h  h.textarea.action(self.add_todo)  h.br
h  h.input(type='submit', value='Add')

return h.root


0.3.0 Changelog
===

New features


  - refactoring of the sessions managers:

- session objects now keep track of their sessions manager
- no more sessions manager factories
- configurable pickler / unpickler objects
- configuration switch ``states_history`` to set if an objects graphs 
history must be kept
- new sessions manager (``type=memory``) that keeps the objects graphs in 
memory, without any pickling
  - logging service added:

- one dedicated logger for each published applications is created
- easy configuration and use of this dedicated logger
- all the ``[logging]`` sections of all the published applications are 
merged before to configure the Python logging system
  - preliminary Comet support added (currently only working in a multi-threaded 
env.)
  - last exception raised kept by the ``WSGIApp`` objects and exception hook 
added
  - 

Nagare 0.2.0 - Components and continuation-based web framework

2009-06-26 Thread Alain Poirier
Hi all,

The version 0.2.0 of the Nagare web framework is now released !

To read about its features:
http://www.nagare.org/trac/wiki/NagareFeatures

Release info and download page:
 http://pypi.python.org/pypi/nagare

Release info and download page of the examples:
 http://pypi.python.org/pypi/nagare.examples

Source and documentation available at the website:
 http://www.nagare.org

Mailing lists - the place to ask questions:
 http://groups.google.com/group/nagare-users

About Nagare


Nagare is a components based framework: a Nagare application
is a composition of interacting components each one with its
own state and workflow kept on the server. Each component
can have one or several views that are composed to generate
the final web page. This enables the developers to reuse or
write highly reusable components easily and quickly.

Thanks to Stackless Python, Nagare is also a continuation-based
web framework which enables to code a web application like a
desktop application, with no need to split its control flow in
a multitude of controllers and with the automatic handling of
the back, fork and refresh actions from the browser.

Its component model and use of the continuation come from the
famous Seaside Smalltalk framework.

Furthermore Nagare integrates the best tools and standard from
the Python world. For example:

  - WSGI: binds the application to several possible publishers,
  - lxml: generates the DOM trees and brings to Nagare the full
set of XML features (XSL, XPath, Schemas ...),
  - setuptools: installs, deploys and extends the Nagare framework
and the Nagare applications too,
  - PEAK Rules: generic methods are heavily used in Nagare, to
associate views to components, to define security rules, to
translate Python code to Javascript ...
  - WebOb: for its Request and Response Objects.


Examples


A complete guess a number game to taste how easy web coding
becomes using continuations:


  import random
  from nagare import component, util

  class Number(component.Task):
  A little game to guess a number
  
  def go(self, comp):
  The game algorithm, using continuation for a pure linear Python 
code
  
  In:
- ``comp`` -- this component
  
  self.attempt = 1
  number = random.randint(1, 20)
  
  comp.call(util.Confirm('I choose a number between 1 and 20. Try to 
guess 
it'))
  
  while True:
  x = comp.call(util.Ask('Try #%d: ' % self.attempt))
  if not x.isdigit():
  continue
  
  x = int(x)
  
  if x  number:
  comp.call(util.Confirm('Choose a lower number'))
  
  if x  number:
  comp.call(util.Confirm('Choose a greater number'))
  
  if x == number:
  comp.call(util.Confirm('You guessed the number in %d 
attempts' % 
self.attempt))
  break

  self.attempt += 1


A simple todo list, illustrating the programmatic HTML generation,
the association of view(s) to Python objects and the direct association
of callbacks to HTML form elements and links:

from nagare import presentation
from nagare.namespaces import xhtml

# A plain Python ``TodoList`` class
class TodoList(object):
def __init__(self):
self.todo = []

def add_todo(self, msg):
self.todo.append(msg)

# The default HTML view, generated in programmatic HTML
@presentation.render_for(TodoList)
def render(self, h, comp, model):
# ``h`` is a (X)HTML renderer 
(http://www.nagare.org/trac/wiki/RendererObjects)
with h.div:
for msg in self.todo:
h  h.blockquote(msg)  h.hr

with h.form:
h  'New todo:'  h.br
h  h.textarea.action(self.add_todo)  h.br
h  h.input(type='submit', value='Add')

return h.root

0.2.0 Changelog
===

Python Stackless 2.6.2 is now the recommanded Python version.

New features


  - When an AJAX update contains CSS or Javascript urls, they are correctly 
fetched.
  - Multiple AJAX updates object added
  - Session lock added (distributed lock when memcached is used)
  - A session can now contains SQLAlchemy (and Elixir) entities
  - LRU management of the sessions and continuations
  - ``nagare-admin create-rules`` administrative command added.
Generation of the Apache / lighttpd / ngnix rewrite rules to serve the 
statics
contents. See :wiki:`NagareAdmin`
  - ``nagare-admin batch`` administrative command added. To execute Python
statements. See :wiki:`NagareAdmin`
  - Easy WSGI pipe creation
  - An application can now be registered under several urls
  - The automatic reloader can be configured with a list of files to watch
  - API to logout and change the 

[issue5868] mimetypes.MAGIC_FUNCTION initialization not thread-safe in Python 2.6.2

2009-04-28 Thread Alain Poirier

New submission from Alain Poirier alain.poir...@net-ng.com:

In Python 2.6.2, the fix for the issue 5401 changed the way the
mimetypes module is initialized.

But now the initialization is not thread-safe : a thread can set
``inited`` to ``True`` and then be preempted before to overwrite the
functions guess_type(), guess_extension() ...

With such a partial initialization, the next thread will raise an 
excessive recursion exception when calling one of this functions.

A fix could be to wrap ``mimetypes.init()`` with a thread lock.

--
components: Library (Lib)
messages: 86747
nosy: apoirier, benjamin.peterson
severity: normal
status: open
title: mimetypes.MAGIC_FUNCTION initialization not thread-safe in Python 2.6.2
type: behavior
versions: Python 2.6

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue5868
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



Nagare web framework - 0.1.0

2008-09-25 Thread Alain Poirier
Hi all,

I'm pleased to announce that the first (0.1.0) version
of the Nagare web framework is released!

To read about its features:
http://www.nagare.org/trac/wiki/NagareFeatures
Release info and download page:
 http://pypi.python.org/pypi/nagare/
Source and documentation are available at the website:
 http://www.nagare.org
Mailing lists:
 http://groups.google.com/group/nagare-users

About Nagare


Nagare is a components based framework: a Nagare application
is a composition of interacting components each one with its
own state and workflow kept on the server. Each component
can have one or several views that are composed to generate
the final web page. This enables the developers to reuse or
write highly reusable components easily and quickly.

Thanks to Stackless Python, Nagare is also a continuation-based
web framework which enables to code a web application like a
desktop application, with no need to split its control flow in
a multitude of controllers and with the automatic handling of
the back, fork and refresh actions from the browser.

Its component model and use of the continuation come from the
famous Seaside SmallTalk framework.

Enjoy!

A. Poirier

--
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations.html