• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

bin/H23-Nov-2020-606468

doc/H23-Nov-2020-4,6733,297

examples/H23-Nov-2020-8,5414,387

requirements/H03-May-2022-

spyne/H23-Nov-2020-55,68738,604

spyne.egg-info/H03-May-2022-313274

.coveragercH A D24-Sep-201926 32

.gitignoreH A D24-Sep-2019896 7462

.landscape.yamlH A D04-Sep-2015122 87

.travis.ymlH A D24-Sep-2019387 1917

CHANGELOG.rstH A D23-Nov-202012.1 KiB278243

CONTRIBUTING.rstH A D24-Sep-20195.9 KiB148108

LICENSEH A D24-Sep-201931 KiB631522

PEOPLEH A D04-Sep-2015330 1611

PKG-INFOH A D23-Nov-202015.7 KiB313274

README.rstH A D23-Nov-20205.7 KiB150109

run_tests.shH A D23-Nov-20205.6 KiB207115

setup.cfgH A D23-Nov-202038 53

setup.pyH A D23-Nov-20208.4 KiB308224

tox.iniH A D23-Apr-20203.5 KiB159124

README.rst

1If you like and use Spyne, star it on `Github <https://github.com/arskom/spyne>`_!
2
3About
4=====
5
6Spyne aims to save the protocol implementers the hassle of implementing their
7own remote procedure call api and the application programmers the hassle of
8jumping through hoops just to expose their services using multiple protocols and
9transports.
10
11In other words, Spyne is a framework for building distributed
12solutions that strictly follow the MVC pattern, where Model = `spyne.model`,
13View = `spyne.protocol` and Controller = `user code`.
14
15Spyne comes with the implementations of popular transport, protocol and
16interface document standards along with a well-defined API that lets you
17build on existing functionality.
18
19The following are the primary sources of information about spyne:
20
21* Spyne's home page is: http://spyne.io/
22* The latest documentation for all releases of Spyne can be found at: http://spyne.io/docs
23* The official source code repository is at: https://github.com/arskom/spyne
24* The official spyne discussion forum is at: people at spyne dot io. Subscribe
25  either via http://lists.spyne.io/listinfo/people or by sending an empty
26  message to: people-subscribe at spyne dot io.
27* You can download Spyne releases from
28  `Github <https://github.com/arskom/spyne/downloads>`_ or
29  `PyPi <http://pypi.python.org/pypi/spyne>`_.
30* Continuous Integration: https://jenkins.arskom.com.tr/job/spyne/
31
32Requirements
33============
34
35Spyne source distribution is a collection of highly decoupled components, which
36makes it a bit difficult to put a simple list of requirements, as literally
37everything except ``pytz`` is optional.
38
39Python version
40--------------
41
42Spyne 2.13 supports Python 2.7, 3.6, 3.7 and 3.8.
43
44Libraries
45---------
46
47Additionally the following software packages are needed for various subsystems
48of Spyne:
49
50* A Wsgi server of your choice is needed to wrap
51  ``spyne.server.wsgi.WsgiApplication``
52* `lxml>=3.2.5 <http://lxml.de>`_ is needed for any xml-related protocol.
53* `lxml>=3.4.1 <http://lxml.de>`_ is needed for any html-related protocol.
54* `SQLAlchemy <http://sqlalchemy.org>`_ is needed for
55  ``spyne.model.complex.TTableModel``.
56* `pyzmq <https://github.com/zeromq/pyzmq>`_ is needed for
57  ``spyne.client.zeromq.ZeroMQClient`` and
58  ``spyne.server.zeromq.ZeroMQServer``.
59* `Werkzeug <http://werkzeug.pocoo.org/>`_ is needed for using
60  ``spyne.protocol.http.HttpRpc`` under a wsgi transport.
61* `PyParsing <http://pypi.python.org/pypi/pyparsing>`_ is needed for
62  using ``HttpPattern``'s with ``spyne.protocol.http.HttpRpc``\.
63* `Twisted <http://twistedmatrix.com/>`_ is needed for anything in
64  ``spyne.server.twisted`` and ``spyne.client.twisted``.
65* `Django <http://djangoproject.com/>`_ (tested with 1.8 and up) is needed for
66  anything in ``spyne.server.django``.
67* `Pyramid <http://pylonsproject.org/>`_ is needed for
68  ``spyne.server.pyramid.PyramidApplication``.
69* `msgpack>=1.0.0 <http://github.com/msgpack/msgpack-python/>`_ is needed for
70  ``spyne.protocol.msgpack``.
71* `PyYaml <https://bitbucket.org/xi/pyyaml>`_ is needed for
72  ``spyne.protocol.yaml``.
73* `simplejson <http://github.com/simplejson/simplejson>`_ is used when found
74  for ``spyne.protocol.json``.
75
76You are advised to add these as requirements to your own projects, as these are
77only optional dependencies of Spyne, thus not handled in its setup script.
78
79Installing
80==========
81
82You first need to have package manager (pip, easy_install) installed. Spyne
83ships with a setuptools bootstrapper, so if setup.py refuses to run because it
84can't find setuptools, do:
85
86    bin/distribute_setup.py
87
88You can add append --user to get it installed with $HOME/.local as prefix.
89
90You can get spyne via pypi: ::
91
92    easy_install [--user] spyne
93
94or you can clone the latest master tree from Github: ::
95
96    git clone git://github.com/arskom/spyne.git
97
98To install from source distribution, you can run the setup script as usual: ::
99
100    python setup.py install [--user]
101
102If you want to make any changes to the Spyne code, just use ::
103
104    python setup.py develop [--user]
105
106so that you can painlessly test your patches.
107
108Finally, to run the tests, you need to first install every single library that
109Spyne integrates with, along with additional packages like ``pytest`` or ``tox``
110that are only needed when running Spyne testsuite. An up-to-date list is
111maintained in the ``requirements/`` directory, in separate files for both
112Python 2.7 and >=3.6. To install everything, run: ::
113
114    pip install [--user] -r requirements/test_requirements.txt
115
116If you are still stuck on Python 2.x however, you should use: ::
117
118    pip install [--user] -r requirements/test_requirements_py27.txt
119
120Assuming all dependencies are installed without any issues, the following
121command will run the whole test suite: ::
122
123    python setup.py test
124
125Spyne's test harness has evolved a lot in the 10+ years the project has been
126active. It has 3 main stages: Traditional unit tests, tests that perform
127end-to-end testing by starting actual daemons that listen on real TCP sockets
128on hard-coded ports, and finally Django tests that are managed by tox. Naively
129running pytest etc in the root directory will fail as their auto-discovery
130mechanism was not implemented with Spyne's requirements in mind.
131
132Getting Support
133===============
134
135The official mailing list for both users and developers alike can be found at:
136http://lists.spyne.io/listinfo/people.
137
138You can also use the 'spyne' tag to ask questions on
139`Stack Overflow <https://stackoverflow.com/questions/tagged/spyne>`_.
140
141Please don't use the issue tracker for asking questions. It's a database that
142holds the most important information for the project, so we must avoid
143cluttering it as much as possible.
144
145Contributing
146============
147
148If you feel like helping out, see the CONTRIBUTING.rst file in the Spyne source
149distribution for starting points and general guidelines.
150