
Security News
Vite Releases Technical Preview of Rolldown-Vite, a Rust-Based Bundler
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
A transport and architecture agnostic rpc library that focuses on exposing public services with a well-defined API.
Homepage: http://spyne.io
Spyne aims to save the protocol implementers the hassle of implementing their own remote procedure call api and the application programmers the hassle of jumping through hoops just to expose their services using multiple protocols and transports.
spyne.model.table
is gone.sqla_column_args
is now only a dict. It can override column name without
changing mapped object attribute name.Date(format="%Y")
no longer works. Use Date(date_format="%Y")
just
like the api docs sayServiceBase
is deprecated in favor of Service
. It's just a name change
in order to make it consistent with the rest of the package. ServiceBase will
be kept until Spyne 3.
Introduced internal keys for services and methods. Uniqueness is enforced
during Application instantiation. If your server refuses to boot after
migrating to 2.13 raising MethodAlreadyExistsError
, explicitly setting a
unique __service_name__
in one of the offending ServiceBase
subclasses should fix the problem.
See 2fee1435c30dc50f7503f0915b5e56220dff34d0 for the change.
EXPERIMENTAL library-wide Python 3 Support! Yay!
MessagePack uses backwards-compatible raws with a hard-coded UTF-8 encoding for Unicode (non-ByteArray) types. Please open an issue if not happy with this.
It's the transports' job to decide on a codec. Use UTF-8 when in doubt, as that's what we're doing.
Avoid the async keyword for Python 3.7.
Float rounding behaviour seems to have changed in Python 3. In Python 2,
round(2.5) = 3
and round(3.5) = 4
whereas in Python 3,
round(2.5) = 2
and round(3.5) = 4
. This is called half-to-even
rounding and while being counterintuitive, it seems to make better sense from
a statistical standpoint.
You will have to live with this or use decimal.Decimal
.
This changes the way datetime and time microseconds are rounded. See
test_datetime_usec
and test_time_usec
in
spyne.test.model.test_primitive
.
spyne.model.Unicode
used to tolerate (i.e. implicitly but not-so-silenty
casted to str
) int values. This is no longer the case. If you want to
set proper numbers to a Unicode-designated field, you must provide a
casting function. Generally, Unicode(cast=str)
is what you want to do.
See d495aa3d56451bd02c0076a9a1f14c6450eadc8e for the change.
exc_table
is deprecated in favour of exc_db
. Please do a
s/exc_table/exc_db/g in your codebase when convenient.
Django 1.6 support dropped. Supporting 1.7-1.10.
Bare methods with non-empty output now have
descriptior.body_style = spyne.BODY_STYLE_EMPTY_OUT_BARE
, which was
spyne.BODY_STYLE_EMPTY
before. This hould not break anything unless you
are doing some REAL fancy stuff in the method decorators or service events.
Auxproc is DEPRECATED. Just get rid of it.
spyne.protocol.dictdoc.simple
, spyne.server.twisted.http
and
spyne.server.django
are not experimental anymore.
No major changes otherwise but we paid a lot of technical debt. e.g. We revamped the test infrastructure.
_in_variable_names
argument to @rpc
was deprecated in favour of
_in_arg_names
_udp
argument to @rpc
was deprecated in favour of _udd
. UDP is
too well known as user datagram protocol which could be confusing.
_when
argument to @mrpc
now needs to be a callable that satisfies
the f(self, ctx)
signature. It was f(self)
before.
Attachment is removed. It's been deprecated since ages.
Usual bug fixes.
gc.collect()
See issue #472. PR: #515_safe_set
now returns True on success so that protocols can react
accordingly.DateTime
handle unicode date format strings for Python 2.MessagePackTransportBase
__getitem__
.ImportError
running Python 3.4 under Pydev using PyCharm.
(Eclipse still has issues, see
issue #432 <https://github.com/arskom/spyne/issues/432>
_. Any help would be
much appreciated)int
/long
to str
.repr()
'ing passed instance.SimpleDictDocument
confusing a missing value and an empty value for
array types. When the client wants to denote an empty array, it should pass
array_field=empty
. Normally it passes something along the lines of:
array_field[0]=Something&array_field[1]=SomethingElse
.MessagePackServerBase
to MessagePackTransportBase
and
MessagePackServerBase
. No API was harmed during this change.MessagePackTransportBase
.log_repr
now consults NATIVE_MAP
as a last resort before freaking out.issue #446 <https://github.com/arskom/spyne/issues/446>
_
we noticed that in some cases, SOAP messages inside HTTP requests got
processed even when the request method != 'POST'. This got resolved, but you
should check whether this is the case in your setup and take the necessary
precautions before deploying Spyne.attribute_of
is removed.interface
argument to Application
.@rpc
. Be sure to test your daemons
before deploying for production, because if you got leftovers, the server will
refuse to boot!Experimental Python 3 Support for all of the Xml-related (non-Html) components.
Add support for altering output protocol by setting ctx.out_protocol
.
Add returning ctx.out_string support to null server (The ostr
argument).
Add support for XmlData modifier. It lets mapping the data in the xml body to an object field via xsd:simpleContent.
Remove deprecated JsonObject
identifier. Just do a gentle
s/JsonObject/JsonDocument/g
if you're still using it.
SQLAlchemy: Implement storing arrays of simple types in a table.
SQLAlchemy: Make it work with multiple foreign keys from one table to another.
SQLAlchemy: Implement a hybrid file container that puts file metadata in a json column in database and and file data in file system. Fully supported by all protocols as a binary File.Value instance.
Implement an Xml Schema parser.
Import all model markers as well as the @rpc
, @srpc
, @mrpc
,
ServiceBase
and Application
to the root spyne
package.
Implement JsonP protocol.
Implement SpyneJsonRpc 1.0 protocol -- it supports request headers.
Sample request: {"ver":1, "body": {"div": [4,2]}, "head": {"id": 1234}}
Sample response: {"ver":1, "body": 2}
Sample request: {"ver":1, "body": {"div": {"dividend":4,"divisor":0]}}
Sample response: {"ver":1, "fault": {"faultcode": "Server", "faultstring": "Internal Error"}}}
Steal and integrate the experimental WebSocket tranport from Twisted.
Support Django natively using spyne.server.django.DjangoView
and
spyne.server.django.DjangoServer
.
It's now possible to override the JsonEncoder
class JsonDocument
uses.
Remove hard-coded utf-8 defaults from almost everywhere.
Remove hard-coded pytz.utc defaults from everywhere. Use spyne.LOCAL_TZ to configure the default time zone.
As a result of the above change, datetime
objects deserialized by Spyne
are forced to the above time zone during soft validation (nothing should have
changed from the user code perspective).
Add default_factory
to ModelBase customizer. It's a callable that produces
default values on demand. Suitable to be used with e.g. lambdas that return
mutable defaults.
New spyne.util.AttrDict
can be used for passing various dynamic
configuration data.
child_attrs
can now be passed to the ComplexModelBase customizer in order
to make object-specific in-place customizations to child types.
Add mapper between Django models and spyne.util.django.DjangoComplexModel
types.
Spyne now tracks subclasses and adds them to the interface if they are in the same namespace as their parent.
Simple dictionary protocol's hier_delim
default value is now '.'
Fixes support for XmlAttributes with max_occurs>1 referencing the same 'attribute_of' element in a ComplexModel subclass.
Renders spyne.model.File
as twisted.web.static.File
when using HttpRpc
over TwistedWebResource
. This lets twisted handle Http 1.1-specific
functionality like range requests.
Many, many, many bugs fixed.
Check the documentation at http://spyne.io/docs for changelogs of the older versions
FAQs
A transport and architecture agnostic rpc library that focuses on exposing public services with a well-defined API.
We found that spyne demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
Research
Security News
A malicious npm typosquat uses remote commands to silently delete entire project directories after a single mistyped install.
Research
Security News
Malicious PyPI package semantic-types steals Solana private keys via transitive dependency installs using monkey patching and blockchain exfiltration.