%global _empty_manifest_terminate_build 0 Name: python-hisock Version: 2.0.2 Release: 1 Summary: A higher-level extension of the socket module, with simpler and more efficient usages License: MIT URL: https://github.com/SSS-Says-Snek/hisock Source0: https://mirrors.aliyun.com/pypi/web/packages/0e/c9/4d06c6e5dcb96c3946b93e56071e7d8ee82caac5f7aeaa35d7d6d99d74b6/hisock-2.0.2.tar.gz BuildArch: noarch Requires: python3-pycryptodome %description To build the *bleeding-edge* version of hisock from GitHub, download the repository with your favorite way, `cd` into it, then type: ```shell $ python -m pip install -e . (WINDOWS) OR $ pip3 install -e . (MAC/LINUX) ``` Note that you **MUST** cd into the cloned directory for this to work. ## Code of Conduct and Contributing Guidelines: [Code of Conduct](.github/CODE_OF_CONDUCT.md) [Contributing Guidelines](.github/CONTRIBUTING.md) ## Examples hisock utilizes decorators as the core of receiving messages instead of having if statements handling all of the logic. More in-depth examples are located in the `examples` directory, including a tic-tac-toe game. Here is what a basic server script would look like using hisock: #### Server ```python import sys import time import random from hisock import start_server, get_local_ip ADDR = get_local_ip() PORT = 6969 if len(sys.argv) == 2: ADDR = sys.argv[1] if len(sys.argv) == 3: PORT = int(sys.argv[2]) print(f"Serving at {ADDR}") server = start_server((ADDR, PORT)) @server.on("join") def client_join(client_data): print(f"Cool, {client_data.ip_as_str} joined!") if client_data['name'] is not None: print(f" - With a sick name \"{client_data.name}\", very cool!") if client_data['group'] is not None: print(f" - In a sick group \"{client_data.group}\", cool!") print("I'm gonna send them a quick hello message") server.send_client(client_data['ip'], "hello_message", str(time.time()).encode()) @server.on("processing1") def process(client_data, process_request: str): print(f"\nAlright, looks like {client_data.ip_as_str} received the hello message, " "\nas now they're trying to compute something on the server, because they have " "potato computers") print("Their processing request is:", process_request) for _ in range(process_request.count("randnum")): randnum = str(random.randint(1, 100000000)) process_request = process_request.replace("randnum", randnum, 1) result = eval(process_request) # Insecure, but I'm lazy, so... print(f"Cool! The result is {result}! I'mma send it to the client") server.send_client(client_data, "something", str(result)) server.start() ``` #### Client ```python import time from hisock import connect, get_local_ip server_to_connect = input("Enter server IP to connect to (Press enter for default of your local IP): ") port = input("Enter Server port number (Press enter for default of 6969): ") if server_to_connect == '': server_to_connect = get_local_ip() if port == '': port = 6969 else: port = int(port) name = input("Name? (Press enter for no name) ") group = input("Group? (Press enter for no group) ") print("======================================= ESTABLISHING CONNECTION =======================================") if name == '': name = None if group == '': group = None client = connect( (server_to_connect, port), name=name, group=group ) join_time = time.time() @client.on("hello_message") def handle_hello(msg: str): print("Thanks, server, for sending a hello, just for me!") print(f"Looks like, the message was sent on timestamp {msg}, " f"which is just {round(float(msg) - join_time, 6) * 1000} milliseconds since the connection!") print("In response, I'm going to send the server a request to do some processing") client.send("processing1", b"randnum**2") result = client.recv("something", int) print(f"WHOAAA! The result is {result}! Thanks server!") client.start() ``` ## Contributors Special thanks to the following: - Sheepy0125, for refactoring the underhood code as well as the API - SSS-Says-Snek, for maintaining and developing the library - Ankith26, for helping me understand the usages of headers ###### Copyright SSS-Says-Snek, 2021-present %package -n python3-hisock Summary: A higher-level extension of the socket module, with simpler and more efficient usages Provides: python-hisock BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-hisock To build the *bleeding-edge* version of hisock from GitHub, download the repository with your favorite way, `cd` into it, then type: ```shell $ python -m pip install -e . (WINDOWS) OR $ pip3 install -e . (MAC/LINUX) ``` Note that you **MUST** cd into the cloned directory for this to work. ## Code of Conduct and Contributing Guidelines: [Code of Conduct](.github/CODE_OF_CONDUCT.md) [Contributing Guidelines](.github/CONTRIBUTING.md) ## Examples hisock utilizes decorators as the core of receiving messages instead of having if statements handling all of the logic. More in-depth examples are located in the `examples` directory, including a tic-tac-toe game. Here is what a basic server script would look like using hisock: #### Server ```python import sys import time import random from hisock import start_server, get_local_ip ADDR = get_local_ip() PORT = 6969 if len(sys.argv) == 2: ADDR = sys.argv[1] if len(sys.argv) == 3: PORT = int(sys.argv[2]) print(f"Serving at {ADDR}") server = start_server((ADDR, PORT)) @server.on("join") def client_join(client_data): print(f"Cool, {client_data.ip_as_str} joined!") if client_data['name'] is not None: print(f" - With a sick name \"{client_data.name}\", very cool!") if client_data['group'] is not None: print(f" - In a sick group \"{client_data.group}\", cool!") print("I'm gonna send them a quick hello message") server.send_client(client_data['ip'], "hello_message", str(time.time()).encode()) @server.on("processing1") def process(client_data, process_request: str): print(f"\nAlright, looks like {client_data.ip_as_str} received the hello message, " "\nas now they're trying to compute something on the server, because they have " "potato computers") print("Their processing request is:", process_request) for _ in range(process_request.count("randnum")): randnum = str(random.randint(1, 100000000)) process_request = process_request.replace("randnum", randnum, 1) result = eval(process_request) # Insecure, but I'm lazy, so... print(f"Cool! The result is {result}! I'mma send it to the client") server.send_client(client_data, "something", str(result)) server.start() ``` #### Client ```python import time from hisock import connect, get_local_ip server_to_connect = input("Enter server IP to connect to (Press enter for default of your local IP): ") port = input("Enter Server port number (Press enter for default of 6969): ") if server_to_connect == '': server_to_connect = get_local_ip() if port == '': port = 6969 else: port = int(port) name = input("Name? (Press enter for no name) ") group = input("Group? (Press enter for no group) ") print("======================================= ESTABLISHING CONNECTION =======================================") if name == '': name = None if group == '': group = None client = connect( (server_to_connect, port), name=name, group=group ) join_time = time.time() @client.on("hello_message") def handle_hello(msg: str): print("Thanks, server, for sending a hello, just for me!") print(f"Looks like, the message was sent on timestamp {msg}, " f"which is just {round(float(msg) - join_time, 6) * 1000} milliseconds since the connection!") print("In response, I'm going to send the server a request to do some processing") client.send("processing1", b"randnum**2") result = client.recv("something", int) print(f"WHOAAA! The result is {result}! Thanks server!") client.start() ``` ## Contributors Special thanks to the following: - Sheepy0125, for refactoring the underhood code as well as the API - SSS-Says-Snek, for maintaining and developing the library - Ankith26, for helping me understand the usages of headers ###### Copyright SSS-Says-Snek, 2021-present %package help Summary: Development documents and examples for hisock Provides: python3-hisock-doc %description help To build the *bleeding-edge* version of hisock from GitHub, download the repository with your favorite way, `cd` into it, then type: ```shell $ python -m pip install -e . (WINDOWS) OR $ pip3 install -e . (MAC/LINUX) ``` Note that you **MUST** cd into the cloned directory for this to work. ## Code of Conduct and Contributing Guidelines: [Code of Conduct](.github/CODE_OF_CONDUCT.md) [Contributing Guidelines](.github/CONTRIBUTING.md) ## Examples hisock utilizes decorators as the core of receiving messages instead of having if statements handling all of the logic. More in-depth examples are located in the `examples` directory, including a tic-tac-toe game. Here is what a basic server script would look like using hisock: #### Server ```python import sys import time import random from hisock import start_server, get_local_ip ADDR = get_local_ip() PORT = 6969 if len(sys.argv) == 2: ADDR = sys.argv[1] if len(sys.argv) == 3: PORT = int(sys.argv[2]) print(f"Serving at {ADDR}") server = start_server((ADDR, PORT)) @server.on("join") def client_join(client_data): print(f"Cool, {client_data.ip_as_str} joined!") if client_data['name'] is not None: print(f" - With a sick name \"{client_data.name}\", very cool!") if client_data['group'] is not None: print(f" - In a sick group \"{client_data.group}\", cool!") print("I'm gonna send them a quick hello message") server.send_client(client_data['ip'], "hello_message", str(time.time()).encode()) @server.on("processing1") def process(client_data, process_request: str): print(f"\nAlright, looks like {client_data.ip_as_str} received the hello message, " "\nas now they're trying to compute something on the server, because they have " "potato computers") print("Their processing request is:", process_request) for _ in range(process_request.count("randnum")): randnum = str(random.randint(1, 100000000)) process_request = process_request.replace("randnum", randnum, 1) result = eval(process_request) # Insecure, but I'm lazy, so... print(f"Cool! The result is {result}! I'mma send it to the client") server.send_client(client_data, "something", str(result)) server.start() ``` #### Client ```python import time from hisock import connect, get_local_ip server_to_connect = input("Enter server IP to connect to (Press enter for default of your local IP): ") port = input("Enter Server port number (Press enter for default of 6969): ") if server_to_connect == '': server_to_connect = get_local_ip() if port == '': port = 6969 else: port = int(port) name = input("Name? (Press enter for no name) ") group = input("Group? (Press enter for no group) ") print("======================================= ESTABLISHING CONNECTION =======================================") if name == '': name = None if group == '': group = None client = connect( (server_to_connect, port), name=name, group=group ) join_time = time.time() @client.on("hello_message") def handle_hello(msg: str): print("Thanks, server, for sending a hello, just for me!") print(f"Looks like, the message was sent on timestamp {msg}, " f"which is just {round(float(msg) - join_time, 6) * 1000} milliseconds since the connection!") print("In response, I'm going to send the server a request to do some processing") client.send("processing1", b"randnum**2") result = client.recv("something", int) print(f"WHOAAA! The result is {result}! Thanks server!") client.start() ``` ## Contributors Special thanks to the following: - Sheepy0125, for refactoring the underhood code as well as the API - SSS-Says-Snek, for maintaining and developing the library - Ankith26, for helping me understand the usages of headers ###### Copyright SSS-Says-Snek, 2021-present %prep %autosetup -n hisock-2.0.2 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-hisock -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 2.0.2-1 - Package Spec generated