From alice at gothcandy.com Mon Apr 18 18:17:02 2016 From: alice at gothcandy.com (=?utf-8?Q?Alice_Bevan=E2=80=93McGregor?=) Date: Mon, 18 Apr 2016 18:17:02 -0400 Subject: [Web-SIG] ANN: General availability of the WebCore WSGI nanoframework v2.0. Message-ID: > Best Practices Morpheus says: "What if I told you things can get simpler, more independent, and more testable, with a separation of concerns in a glorious holy land?" WebCore is a WSGI nanoframework, a fraction of the size of competing ?microframeworks?, and culmination of more than ten years of web development experience. It provides a clean API for standard points of extension while strongly encouraging model, view, controller separation. Being less than 400 source lines of code (SLoC of `web.core`; excludes comments and documentation) and containing more comments and lines of documentation than lines of code, WebCore is built to be insanely easy to test, adapt, and use, allowing any developer familiar with programming (not just Python programming) to be able to read and understand the entirety of the framework in an evening. * Pypi Package: http://s.webcore.io/fjYp * Annotated Source Documentation: http://s.webcore.io/fja7 * Source Repository: http://s.webcore.io/fjVF * Compatible with: Python 2.7+, Python 3.2+, Pypy, Pypy3 * Dependencies: WebOb, marrow.package * 100% test coverage. * Digitally signed release artifacts and commits. WebCore adds a light-weight dependency-graphed extension layer to WSGI, offering points of extension which replace WSGI middleware, as well as callbacks difficult to implement in bare WSGI, while also supporting standard WSGI middleware both as an application and when treating WebCore as middleware itself. As the #1 thing a typical framework is responsible for is to resolve a URL to a controller to handle the request, this process has been standardized under a "dispatch protocol" (http://s.webcore.io/fjRy) which WebCore speaks. The Marrow Open Source Collective provide several framework-agnostic reference implementations covering regular expression-based routes, object dispatch (attribute descent), and traversal (mapping descent), as well as more abstract "meta-dispatchers" and "dispatch middleware". from web.core import Application Application("Hi.").serve('wsgiref') The rest is up to you, the developer. WebCore is as opinionated as a coma patient. A request comes in, hits the WebCore WSGI Application or outermost WSGI middleware layer, dispatch resolves an "endpoint", the endpoint is executed if callable, and the return value (or endpoint if not callable) is used to find a view which populates the response. The example above relies on the fact that there is a default view to handle strings. Namespaces, virtual dependencies (extras_require) and standard Python entry_points plugin registration are extensively utilized by the framework. You may place your own packages within the `web`, `web.app`, `web.ext`, `web.server`, etc. namespaces if desired. WebCore is also "optimization aware" and will eliminate several expensive validation tests and all debug-level logging from production environments when run with -O or with PYTHONOPTIMIZE set. WebCore was designed to make use of under-utilized WSGI features such as chunked streaming responses and thus pairs naturally with the template engine "cinje" (http://s.webcore.io/fjUx) allowing for the ultimate in responsiveness. Where Django gets 2 generations per second on a 1000 row table test, cinje gets nearly 40,000; see the cinje wiki. Eliminate boilerplate and enjoy a snappier app today! Please give WebCore (and cinje!) a try on your next project or experiment; see the README, many examples, and extensively documented source code to learn more. You may be pleasantly surprised to discover you won't miss those monolithic framework features you weren't using. Join us in #webcore on Freenode IRC if you have any questions or comments; we'd love to hear from you and will gladly assist users getting started using the framework or evaluating and integrating components. Proudly developed in Montr?al with the support of Illico Hodes (http://s.webcore.io/fjYI). From marc at gsites.de Tue Apr 19 04:03:39 2016 From: marc at gsites.de (Marcel Hellkamp) Date: Tue, 19 Apr 2016 10:03:39 +0200 Subject: [Web-SIG] ANN: General availability of the WebCore WSGI nanoframework v2.0. In-Reply-To: References: Message-ID: <5715E65B.90907@gsites.de> Currently, all the links in this mail are dead. Am 19.04.2016 um 00:17 schrieb Alice Bevan?McGregor: >> Best Practices Morpheus says: "What if I told you things can get > simpler, more independent, and more testable, with a separation of > concerns in a glorious holy land?" > > WebCore is a WSGI nanoframework, a fraction of the size of competing > ?microframeworks?, and culmination of more than ten years of web > development experience. It provides a clean API for standard points of > extension while strongly encouraging model, view, controller > separation. Being less than 400 source lines of code (SLoC of > `web.core`; excludes comments and documentation) and containing more > comments and lines of documentation than lines of code, WebCore is > built to be insanely easy to test, adapt, and use, allowing any > developer familiar with programming (not just Python programming) to > be able to read and understand the entirety of the framework in an > evening. > > * Pypi Package: http://s.webcore.io/fjYp > * Annotated Source Documentation: http://s.webcore.io/fja7 > * Source Repository: http://s.webcore.io/fjVF > * Compatible with: Python 2.7+, Python 3.2+, Pypy, Pypy3 > * Dependencies: WebOb, marrow.package > * 100% test coverage. > * Digitally signed release artifacts and commits. > > WebCore adds a light-weight dependency-graphed extension layer to > WSGI, offering points of extension which replace WSGI middleware, as > well as callbacks difficult to implement in bare WSGI, while also > supporting standard WSGI middleware both as an application and when > treating WebCore as middleware itself. As the #1 thing a typical > framework is responsible for is to resolve a URL to a controller to > handle the request, this process has been standardized under a > "dispatch protocol" (http://s.webcore.io/fjRy) which WebCore speaks. > The Marrow Open Source Collective provide several framework-agnostic > reference implementations covering regular expression-based routes, > object dispatch (attribute descent), and traversal (mapping descent), > as well as more abstract "meta-dispatchers" and "dispatch middleware". > > from web.core import Application > Application("Hi.").serve('wsgiref') > > The rest is up to you, the developer. WebCore is as opinionated as a > coma patient. > > A request comes in, hits the WebCore WSGI Application or outermost > WSGI middleware layer, dispatch resolves an "endpoint", the endpoint > is executed if callable, and the return value (or endpoint if not > callable) is used to find a view which populates the response. The > example above relies on the fact that there is a default view to > handle strings. > > Namespaces, virtual dependencies (extras_require) and standard Python > entry_points plugin registration are extensively utilized by the > framework. You may place your own packages within the `web`, > `web.app`, `web.ext`, `web.server`, etc. namespaces if desired. > WebCore is also "optimization aware" and will eliminate several > expensive validation tests and all debug-level logging from production > environments when run with -O or with PYTHONOPTIMIZE set. WebCore was > designed to make use of under-utilized WSGI features such as chunked > streaming responses and thus pairs naturally with the template engine > "cinje" (http://s.webcore.io/fjUx) allowing for the ultimate in > responsiveness. Where Django gets 2 generations per second on a 1000 > row table test, cinje gets nearly 40,000; see the cinje wiki. > Eliminate boilerplate and enjoy a snappier app today! > > Please give WebCore (and cinje!) a try on your next project or > experiment; see the README, many examples, and extensively documented > source code to learn more. You may be pleasantly surprised to discover > you won't miss those monolithic framework features you weren't using. > Join us in #webcore on Freenode IRC if you have any questions or > comments; we'd love to hear from you and will gladly assist users > getting started using the framework or evaluating and integrating > components. > > Proudly developed in Montr?al with the support of Illico Hodes > (http://s.webcore.io/fjYI). From alice at gothcandy.com Tue Apr 19 08:37:44 2016 From: alice at gothcandy.com (=?utf-8?Q?Alice_Bevan=E2=80=93McGregor?=) Date: Tue, 19 Apr 2016 08:37:44 -0400 Subject: [Web-SIG] ANN: General availability of the WebCore WSGI nanoframework v2.0. References: <5715E65B.90907@gsites.de> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 2016-04-19 08:03:39 +0000, Marcel Hellkamp said: > Currently, all the links in this mail are dead. That's curious, they weren't 11 hours ago, and analytics shows activity. Weird. Looks like only the first two links were affected by subtle ID changes: * Pypi Package: http://s.webcore.io/fjV7 (WebCore on pypi as one would expect) * Annotated Source Documentation: http://s.webcore.io/fjVc (pythonhosted docs, also linked on the pypi page) The source repository, dispatch protocol, and cinje links were _not_ broken last night. Of all things, I also forgot to sign the release announcement, too. Apologies! -- Alice. -----BEGIN PGP SIGNATURE----- iQIcBAEBCAAGBQJXFiZRAAoJEPGgniOIRjHR6/IP/RDueQW0FUQj454OJYNwPmm6 mv1gFPoOKtVq7E2hgfMfhQx/9X5waWrlv8T6aPxQVqCzJ2j1VeONB6L9nA5aZhBU NCTIPOzU3Y/Zy5m2QJGfEaboM52L8akcxZoCUokDO8JBq2OpC8YXG/WsVg2HeLE4 EgBOacXdA0W5u67LiPTDyCn3ZirGe2MqoXzKT4gQXBcPG2wvYZwPnHGfBMqmSvHO gseCMCmN0PUp+SqF+U2plRVzFQor5Y1DFNk1dQuEPnremPjJJ2S0dCDdmvFOPGAE kJv8wYiBTC1H0M0vF0MxIpMketypKjB7uozgg5EZkF+guHM4T9y7cpegJf5rSlzu vtaau6rd+B9paW5c49DbEbqUxw+XTp6hMlE7FDSz+LlfpJQytlr6u73+PxLuuqQ5 roYVLT0x7p/HuRnFGosPSJb2ovMmUYyw8K+GbhydLkWxQaeCMqo4DBnP9fyPb0VL 3iqc4sF/VZhFjyJnI7p5GDu/Th6G5rBHMEl+Vw1nGTEDUt6fPsj/lytdbuVB5fH2 OUlzDLq4R2trvyQs+30+8Xmo6EfLQBBOWS/5YwhBUcUZxsh3LYwfaKWL4QOCHXCl QBb7gu2F1TekLVqcliM5WZLV6gH6Vc8aQ/OvU0ZXgdN8qwXOyweLdN2gpF+k7JgG YU/UPE91WEPRqcPDlptH =T488 -----END PGP SIGNATURE----- From graffatcolmingov at gmail.com Tue Apr 19 08:56:26 2016 From: graffatcolmingov at gmail.com (Ian Cordasco) Date: Tue, 19 Apr 2016 07:56:26 -0500 Subject: [Web-SIG] ANN: General availability of the WebCore WSGI nanoframework v2.0. In-Reply-To: References: <5715E65B.90907@gsites.de> Message-ID: On Tue, Apr 19, 2016 at 7:37 AM, Alice Bevan?McGregor wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > On 2016-04-19 08:03:39 +0000, Marcel Hellkamp said: > >> Currently, all the links in this mail are dead. > > > That's curious, they weren't 11 hours ago, and analytics shows activity. > Weird. Looks like only the first two links were affected by subtle ID > changes: > > * Pypi Package: http://s.webcore.io/fjV7 > (WebCore on pypi as one would expect) > > * Annotated Source Documentation: http://s.webcore.io/fjVc > (pythonhosted docs, also linked on the pypi page) For what it's worth, the PyPI/Warehouse/PyPA developers are planning on deprecating pythonhosted for PyPI packages. The suggestion is that you use something like ReadTheDocs.org for documentation hosting. > The source repository, dispatch protocol, and cinje links were _not_ > broken last night. Of all things, I also forgot to sign the release > announcement, too. Apologies! > > -- Alice. > -----BEGIN PGP SIGNATURE----- > > iQIcBAEBCAAGBQJXFiZRAAoJEPGgniOIRjHR6/IP/RDueQW0FUQj454OJYNwPmm6 > mv1gFPoOKtVq7E2hgfMfhQx/9X5waWrlv8T6aPxQVqCzJ2j1VeONB6L9nA5aZhBU > NCTIPOzU3Y/Zy5m2QJGfEaboM52L8akcxZoCUokDO8JBq2OpC8YXG/WsVg2HeLE4 > EgBOacXdA0W5u67LiPTDyCn3ZirGe2MqoXzKT4gQXBcPG2wvYZwPnHGfBMqmSvHO > gseCMCmN0PUp+SqF+U2plRVzFQor5Y1DFNk1dQuEPnremPjJJ2S0dCDdmvFOPGAE > kJv8wYiBTC1H0M0vF0MxIpMketypKjB7uozgg5EZkF+guHM4T9y7cpegJf5rSlzu > vtaau6rd+B9paW5c49DbEbqUxw+XTp6hMlE7FDSz+LlfpJQytlr6u73+PxLuuqQ5 > roYVLT0x7p/HuRnFGosPSJb2ovMmUYyw8K+GbhydLkWxQaeCMqo4DBnP9fyPb0VL > 3iqc4sF/VZhFjyJnI7p5GDu/Th6G5rBHMEl+Vw1nGTEDUt6fPsj/lytdbuVB5fH2 > OUlzDLq4R2trvyQs+30+8Xmo6EfLQBBOWS/5YwhBUcUZxsh3LYwfaKWL4QOCHXCl > QBb7gu2F1TekLVqcliM5WZLV6gH6Vc8aQ/OvU0ZXgdN8qwXOyweLdN2gpF+k7JgG > YU/UPE91WEPRqcPDlptH > =T488 > -----END PGP SIGNATURE----- > > > > _______________________________________________ > Web-SIG mailing list > Web-SIG at python.org > Web SIG: http://www.python.org/sigs/web-sig > Unsubscribe: > https://mail.python.org/mailman/options/web-sig/graffatcolmingov%40gmail.com From alice at gothcandy.com Tue Apr 19 09:00:35 2016 From: alice at gothcandy.com (=?utf-8?Q?Alice_Bevan=E2=80=93McGregor?=) Date: Tue, 19 Apr 2016 09:00:35 -0400 Subject: [Web-SIG] ANN: General availability of the WebCore WSGI nanoframework v2.0. References: <5715E65B.90907@gsites.de> Message-ID: On 2016-04-19 12:56:26 +0000, Ian Cordasco said: >> * Annotated Source Documentation: http://s.webcore.io/fjVc >> (pythonhosted docs, also linked on the pypi page) > > For what it's worth, the PyPI/Warehouse/PyPA developers are planning > on deprecating pythonhosted for PyPI packages. The suggestion is that > you use something like ReadTheDocs.org for documentation hosting. Indeed, I tried desperately to not use it, but WebCore 1 documentation was formerly there and after two hours of searching prior to release was unable to find any way to _remove_ the already uploaded documentation and remove the reference on the pypi page. A very sub-optimal packaging experience, there, so the sooner it's actually gone the happier I'll be. (It's quite slow, for example. ;) -- Alice. From alex.gronholm at nextday.fi Thu Apr 21 11:52:00 2016 From: alex.gronholm at nextday.fi (=?UTF-8?Q?Alex_Gr=c3=b6nholm?=) Date: Thu, 21 Apr 2016 18:52:00 +0300 Subject: [Web-SIG] ANN: General availability of the WebCore WSGI nanoframework v2.0. In-Reply-To: References: <5715E65B.90907@gsites.de> Message-ID: <5718F720.5080605@nextday.fi> Deprecating Pythonhosted? That's a bit worrying. I have Python 3.5 only projects for which RTD is unable to generate documentation because they only have Python 3.4. They also don't allow generated documentation to be directly uploaded. So if Pythonhosted is going away, how I am supposed to publish my docs? Resort to Github? On 19.04.2016 15:56, Ian Cordasco wrote: > On Tue, Apr 19, 2016 at 7:37 AM, Alice Bevan?McGregor > wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA256 >> >> On 2016-04-19 08:03:39 +0000, Marcel Hellkamp said: >> >>> Currently, all the links in this mail are dead. >> >> That's curious, they weren't 11 hours ago, and analytics shows activity. >> Weird. Looks like only the first two links were affected by subtle ID >> changes: >> >> * Pypi Package: http://s.webcore.io/fjV7 >> (WebCore on pypi as one would expect) >> >> * Annotated Source Documentation: http://s.webcore.io/fjVc >> (pythonhosted docs, also linked on the pypi page) > For what it's worth, the PyPI/Warehouse/PyPA developers are planning > on deprecating pythonhosted for PyPI packages. The suggestion is that > you use something like ReadTheDocs.org for documentation hosting. > >> The source repository, dispatch protocol, and cinje links were _not_ >> broken last night. Of all things, I also forgot to sign the release >> announcement, too. Apologies! >> >> -- Alice. >> -----BEGIN PGP SIGNATURE----- >> >> iQIcBAEBCAAGBQJXFiZRAAoJEPGgniOIRjHR6/IP/RDueQW0FUQj454OJYNwPmm6 >> mv1gFPoOKtVq7E2hgfMfhQx/9X5waWrlv8T6aPxQVqCzJ2j1VeONB6L9nA5aZhBU >> NCTIPOzU3Y/Zy5m2QJGfEaboM52L8akcxZoCUokDO8JBq2OpC8YXG/WsVg2HeLE4 >> EgBOacXdA0W5u67LiPTDyCn3ZirGe2MqoXzKT4gQXBcPG2wvYZwPnHGfBMqmSvHO >> gseCMCmN0PUp+SqF+U2plRVzFQor5Y1DFNk1dQuEPnremPjJJ2S0dCDdmvFOPGAE >> kJv8wYiBTC1H0M0vF0MxIpMketypKjB7uozgg5EZkF+guHM4T9y7cpegJf5rSlzu >> vtaau6rd+B9paW5c49DbEbqUxw+XTp6hMlE7FDSz+LlfpJQytlr6u73+PxLuuqQ5 >> roYVLT0x7p/HuRnFGosPSJb2ovMmUYyw8K+GbhydLkWxQaeCMqo4DBnP9fyPb0VL >> 3iqc4sF/VZhFjyJnI7p5GDu/Th6G5rBHMEl+Vw1nGTEDUt6fPsj/lytdbuVB5fH2 >> OUlzDLq4R2trvyQs+30+8Xmo6EfLQBBOWS/5YwhBUcUZxsh3LYwfaKWL4QOCHXCl >> QBb7gu2F1TekLVqcliM5WZLV6gH6Vc8aQ/OvU0ZXgdN8qwXOyweLdN2gpF+k7JgG >> YU/UPE91WEPRqcPDlptH >> =T488 >> -----END PGP SIGNATURE----- >> >> >> >> _______________________________________________ >> Web-SIG mailing list >> Web-SIG at python.org >> Web SIG: http://www.python.org/sigs/web-sig >> Unsubscribe: >> https://mail.python.org/mailman/options/web-sig/graffatcolmingov%40gmail.com > _______________________________________________ > Web-SIG mailing list > Web-SIG at python.org > Web SIG: http://www.python.org/sigs/web-sig > Unsubscribe: https://mail.python.org/mailman/options/web-sig/alex.gronholm%40nextday.fi