Package: gyr
<!---Copyright 2016 Adam BeckmeyerThis file is part of Gyr.Gyr is free software: you can redistribute it and/or modify it under the termsof the GNU General Public License as published by the Free Software Foundation,either version 3 of the License, or (at your option) any later version.Gyr is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR APARTICULAR PURPOSE.  See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along withGyr. If not, see <http://www.gnu.org/licenses/>.--># GyrCome talk with us about Gyr on matrix at[#gyr:matrix.org](https://matrix.to/#/#gyr:matrix.org)!Gyr is a framework for quickly developing [matrix](https://matrix.org)[applicationservices](http://matrix.org/docs/spec/application_service/unstable.html) inpython3. It provides a WSGI application and several other utilities for workingwith matrix.Gyr is designed to be a fairly thin layer of abstraction over applicationservice api--just enough to make things easy without pushing you so far from thespec that you get confused.# InstallationPlease install gyr with pip (in a virtualenv if you prefer):```shpip install gyr```# UsageI'll try to show a bunch of functionality here, but see examples directory forfurther usage examples.```pythonfrom gyr import server, matrix_objectsapplication = server.Application("http://localhost:8008", "foobar")as_user = matrix_objects.MatrixUser("@example_as:example.com", application.Api)room = as_user.create_room(alias="#foo:example.com", is_public=True)def rm_hndlr(room_id):# Gyr will create a user for you if this returns true!return Falsedef user_hndlr(user_id):# Gyr will create the room for you if this returns true!return Falsedef txn_hndlr(events):for event in events:room.send_notice("Received event type {} in room {} from user {}".format(event.type,event.room,event.user))return Trueapplication.add_handlers(room_handler=rm_hndlr, transaction_handler=txn_hndlr,user_handler=user_hndlr)```Save as example.py. Then from the commandline:```shgunicorn example:application```# StatusVery alpha! Most of the main functionality I'd envisioned is present, howeverthere's poor to non-existent documentation and no unit tests. Contributions arewelcome.# Projects Using Gyr* [matrix_relay](https://github.com/non-Jedi/matrix_relay)* Open a PR or [ping me on matrix](https://matrix.to/#/@abeckmeyer:matrix.org)with your project. I'd love to hear about anyone building on gyr!# Modules## gyr.server`server` provides the WSGI application class. An instance ofgyr.server.Application functions as the WSGI app and will automaticallyparse the request and call any handlers provided to the Applicationinstance.## gyr.api`api` provides a helpful wrapper for[matrix-python-sdk](https://github.com/matrix-org/matrix-python-sdk)'sapi, changing the parts of the api that are different for applicationservices until such time as similiar changes are merged upstream. Pullrequests for these changes have been submitted, and some changes alreadymerged into master.For working with the api, I recommend using the wrappers built aroundspecific objects which are available in gyr.matrix_objects.## gyr.matrix_objects`matrix_objects` provides helpful wrapper classes around matrix users,events and rooms. It is not designed to be easily used for the normalclient-server api but should provide most necessary functionality forthe manipulation of users and rooms that an application service mightneed to do.Pull requests enriching the functionality of these classes are verywelcome.