%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 <Python_Bot@openeuler.org> - 2.0.2-1
- Package Spec generated