Releases: quantmind/pulsar
1.3.0
This is a backward incompatible version which works for python 3.5 and above.
The async/await syntax has been adopted in the whole codebase. It brings
several improvements in the API as well as bug fixes.
Core
- Tidy up cython extensions, No more python 2 checks
- Cython is no longer required when installing C extensions
- Better dev version to avoid warning in command line for #213 6d369f0
- Hindi pulsar, need double check c83e178
- Overwrite pid file if the pid is stale, fixes #218, 00195c4
- Regression fix in
get_application
#220
HttpClient
- HttpClient support
json
parameter for easily posting JSON data 5256dc9 - Http client stream with sync and async iterators e2f12de
- Use certifi library if available
- urlparams replaced by
params
, same as requests 08fed42 - Don't raise error when content_type is given and data is bytes 18424cc
- Verify parameter in http client. Fixes #191 4611261
WSGI
- Removed AsyncString proxy to String f484062
- Renamed async object to wait in test classes cbbc1a5
- Refactored import file function 6bb5df0
GreenIO
- Added
GreenHttp
e8a1fd4
Tests
- Overall refactoring of the test suite.
- The
runtests
script has been removed. tests are now run usingsetup.py
#213 - The
pulsar_test
package is included in the installation. It gives access to thepulsar_test.Test
class for running tests using pulsar test suite - Added tests for flaskgreen and fixed bug in multiapp config 9bf37b1
- Versioning supports pep440 for alpha and beta releases 468daa2
- Don't run slugify test if unidecode package is not installed. Fixes #206
1.2.0
Pulsar 1.2 is broadly backward compatible with the 1.1 version with the only caveat that the is_async
function is now deprecated and replaced by the isawaitable
function. Warnings will be issued when used by client applications.
In addition, pulsar 1.2.x is the last minor release ("major.minor.micro") to support python 3.4.
From pulsar 1.3.x, support for python 3.4 will be dropped and the new async-await syntax will be used in the whole codebase.
New Features
- Added
isawaitable
function and deprecatedis_async
which will be removed
in version 1.3. Issue #203 6a2f9e4 - Verify parameter in http client. Fixes #191 4611261
- Hindi pulsar, need double check c83e178
Bug fixes and Enhancements
- Versioning supports pep440 for alpha and beta
releases too 468daa2 - Tidy up cython extensions. No more py2 checks. Better dev version to avoid warning
in command line 6d369f0 - fix #211
- Fix #209
Examples
- Added Green Flask example applications to illustrate how to use synchronous web frameworks and
pulsargreenio
module 1855819
Test
Wsgi
- Check for missing suffix in the file when serving media files bc6e04d
Fully compatible with async/await
Make sure the asyncio.coroutine
decorator is used by all pulsar coroutines
This allows to use pulsar to write python 3.5 compatible code with the
async/await
syntax. 709f9ff
Documentation
- Mcve reference in the readme b49434d
- Removed CHANGELOG.rst from the top level directory and created a folder inside
the docs which contains a list of minor releases - Started using markdown in documentation. 6b20825
Http
- Better keep-alive management of HTTP connections df1be4b
- Http client uses the base class connection method rather than using a
different one b584828 - The http response object has the links attribute which return a parsed
Links headers dictionary. Code from python requests 023ca50
Wsgi
- Use file_response function in MediaMixin.serve_file method c012af1
- FileRouter is now a proxy for MediaRouter
WSGI File Wrapper
- Removed
release
application and created a new repository for it (https://github.com/quantmind/git-agile) wait
method ingreenio
app accepts an extra parameter for checking if in child greenlet- Specialised
MustBeInChildGreenlet
error for functions which should be called on a child greenlet - Critical bug fix in
pubsub
subscribe method for Redis backend - Added an asynchronous
wsgi.file_wrapper
to the WSGI environment - Added
file_response
utility to serve local files - Introduced
pulsar.ensure_future
in place ofpulsar.async
HTTP client improvements
- Full support for python 3.5
Core
- Added CI for python 3.5
- Added
debug
properties to allAsyncObject
. The property returns the event loop
debug mode flag
HttpClient
- Backward incompatible changes with API much closer to requests_ and far better support for streaming both uploads and downloads
- Added
content
attribute toHttpResponse
, in line with requests_ - Ability to pass
stream=True
during a request, same API as python requests_ - Added the
raw
property to the Http Response, it can be used in conjunction with
stream
to stream http data. Similar API to requests_ - Renamed
proxy_info
toproxies
, same API as python requests_ - You can now pass
proxies
dictionary during a request - Stream uploads by passing a generator as
data
parameter - Better websocket upgrade process
- Tidy up
CONNECT
request url (for tunneling) - Added tests for proxyserver example using requests_
WSGI
- Both
wsgi
andhttp
apps use the samepulsar.utils.httpurl.http_chunks
function for transfer-encodingchunked
render_error
escapes the Exception message to prevent XSS_
Data Store
- Better
pulsards_url
function, default value formcfg.data_store
key_value_save
set to empty list by default (no persistence)
Examples
- Refactored proxy server example
- Updated django chat example so that warning are no longer issued
.. _requests: http://docs.python-requests.org/
.. _XSS: https://en.wikipedia.org/wiki/Cross-site_scripting
.. _async-await: https://www.python.org/dev/peps/pep-0492/#specification
Minor Bug fixes
Api
- Improvements in the
release
application - Handle
StopIteration
in green pool [182]
Release App and Bug fixes
Api
- Pulsar Protocol requires loop as first parameter during initialisation
- Actor uses event loop
set_debug
method when running with the--debug
flag GreenWSGI
handler moved topulsar.apps.greenio.wsgi
- Added the release application for making releases. Used by pulsar and other packages.
Internals
- Use
actor_stop
rather thanloop.stop
when handling OS signals which kill an actor. - Better
close
method forTCPServer
- sudoless testing in travis
Bug Fixes
- Bug fix in
HttpRedirect.location
attribute
Redis Lock and Twitter Streaming Example
- Asynchronous Redis locking primitive for distributing computing
- Added the Twitter Streaming tutorial
- Added Javascript directory in examples and a gruntfile for compiling and linting scripts
- Better handling of Ctrl-C in the test application
- Data streaming for
multipart/form-data
content type - Write EOF before closing connections
- Documentation and bug fixes
JSON-RPC Batch and Bug fixes
- Flake8 on all codebase
- Added JSON-RPC 2.0 Batch - part of specification (by artemmus)
- Attach configuration
connection_made
andconnection_lost
to connections of TCP and UDP servers (connection providers). - Bug fix in Connection
data_received
method. Thedata_processed
event was not triggered. - Process title does not append arbiter to the main process name.
- Added a snippet in examples on how to build a simple framework for remote
objects. - Better handling of content-type headers in the HTTP client requests
- Test coverage at 87%
Better handling of RouterParameter
- Test WSGI environment does not use asynchronous stream
- Bug fixes in pulsar data store commands
- Critical bug fix in WSGI Router default parameters (RouterParameter).
- Increased test coverage
- Code cleanup and several internal fixes