Metadata-Version: 2.1
Name: interface-proxy
Version: 0.2.1b0
Summary: A library that allows to import a module in one process (server) and use that module in another process (client).
Maintainer-email: SweepMe! GmbH <contact@sweep-me.net>
License: MIT License
        
        Copyright (c) 2024 SweepMe! GmbH (contact@sweep-me.net)
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Repository, https://github.com/SweepMe/interface-proxy
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: tblib ~=2.0.0
Requires-Dist: pywin32 ==306
Requires-Dist: six ~=1.16.0
Provides-Extra: dev
Requires-Dist: tox ~=4.12.1 ; extra == 'dev'
Requires-Dist: ruff ~=0.2.1 ; extra == 'dev'
Requires-Dist: black ~=24.1.1 ; extra == 'dev'
Requires-Dist: mypy ~=1.8.0 ; extra == 'dev'
Requires-Dist: pytest ~=8.0.0 ; extra == 'dev'
Provides-Extra: typed
Requires-Dist: types-six ~=1.16.21 ; extra == 'typed'
Requires-Dist: types-pywin32 ~=306.0.0 ; extra == 'typed'

# interface-proxy
A library that allows to import a module in one process (server) and use that module in another process (client).

## Use Cases
- You want to run your application on one computer, but a python module shall be run on another computer (remote control).
- You need to use a library which has conflicting dependencies with other components used by your application (DLL Hell), or is only available for another bitness.

## Features and Limitations
- The python module in the server can be used transparently, as if the module was imported on the client.
- Only primitive attributes and function calls are supported. Instantiating objects or calling methods on objects does not work and requires a wrapper on the server.
- Objects can be referenced and these references can be passed to functions as arguments.
- Client can automatically start and terminate the server if running on the same machine.
- **No Authentication support. When the computer can be reached from the outside, make sure your firewall only grants access from trusted sources.**
- Only supports Windows as OS

## Communication Protocols
- Via named pipes (client and server on the same machine).
- Via TCP connection.

## Examples
You can check the integration tests in the source code to find out how to use this library.
If you are interested in a collaborative project to evaluate the use of this library and implement it
in your application, feel free to contact us at <contact@sweep-me.net>.
