Metadata-Version: 2.1
Name: connio
Version: 0.2.0
Summary: Concurrency agnostic socket API
Home-page: https://tiagocoutinho.github.io/connio/
Author: Jose Tiago Macara Coutinho
Author-email: coutinhotiago@gmail.com
License: GPLv3+
Project-URL: Documentation, https://tiagocoutinho.github.io/connio/
Project-URL: Source, https://github.com/tiagocoutinho/connio/
Description: # connio
        
        ![Pypi version][pypi]
        
        A python concurrency agnostic communication library.
        
        Pass a URL to the single point API function `connio.connection_for_url()`
        and it will return a communication object with a common generic API.
        
        Helpful when dealing with instrumentation which work over serial line or TCP
        (and in future USB) with simple REQ-REP communication protocols (example:
        [SCPI](https://en.m.wikipedia.org/wiki/Standard_Commands_for_Programmable_Instruments)).
        
        The request for a communication object is forwarded to the corresponding
        [serialio][serialio] or [sockio][sockio] libraries depending on the
        URL you give.
        
        Written in asyncio with support for different concurrency models:
        
        * asyncio
        * classic blocking API
        * future based API
        * python 2 compatible blocking API (for those pour souls stuck with python 2)
        
        
        
        ## Installation
        
        From within your favorite python environment:
        
        ```console
        pip install connio
        ```
        
        ## Usage
        
        ```python
        import asyncio
        from connio import connection_for_url
        
        async def main():
        
            # A local async serial line
            sl = connection_for_url("serial:///dev/ttyS0", parity="E")
            print(await sl.write_readline(b"*IDN?\n"))
        
            # An async serial line over telnet server
            sl = connection_for_url("rfc2217://moxa.acme.org:7890", parity="E")
            print(await sl.write_readline(b"*IDN?\n"))
        
            # An async TCP connection
            tcp = connection_for_url("tcp://gepace.acme.org:5025")
            print(await tcp.write_readline(b"*IDN?\n"))
        
            # An sync TCP connection
            tcp = connection_for_url("tcp://gepace.acme.org:5025", concurrency="sync")
            print(tcp.write_readline(b"*IDN?\n"))
        
        asyncio.run(main())
        ```
        
        [pypi]: https://img.shields.io/pypi/pyversions/connio.svg
        [serialio]: https://github.com/tiagocoutinho/serialio
        [sockio]: https://github.com/tiagocoutinho/sockio
        
Keywords: socket,tcp,ser2net,serial,rs232,rfc2217,asyncio
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.5
Description-Content-Type: text/markdown
