naeural-client 2.1.3__tar.gz → 2.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {naeural_client-2.1.3 → naeural_client-2.1.4}/.github/workflows/python-publish.yml +4 -1
- {naeural_client-2.1.3 → naeural_client-2.1.4}/PKG-INFO +1 -1
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/_ver.py +1 -1
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/base.py +18 -3
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/payload.py +4 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/pyproject.toml +1 -1
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/.example_env +2 -0
- naeural_client-2.1.4/tutorials/ex11_telegram_blackjack_bot.py +203 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/.devcontainer/Dockerfile +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/.devcontainer/devcontainer.json +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/.gitattributes +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/.gitignore +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/.vscode/launch.json +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/LICENSE +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/README.md +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/TODOs.md +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/distributed_custom_code_presets.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/generic_session.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/instance.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/payload/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/payload/payload.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/pipeline.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/plugin_template.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/responses.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/transaction.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base_decentra_object.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/bc/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/bc/base.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/bc/chain.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/bc/ec.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/certs/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/code_cheker/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/code_cheker/base.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/code_cheker/checker.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/comm/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/comm/amqp_wrapper.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/comm/mqtt_wrapper.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/README.md +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/apps.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/comms.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/environment.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/formatter.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/heartbeat.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/const/misc.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/custom_web_app_01_plugin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/session/mqtt_session.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/base/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/base/base_formatter.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/a_dummy.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/aixp1.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/default.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/base_logger.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/small_logger.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/tzlocal/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/tzlocal/unix.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/tzlocal/utils.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/tzlocal/win32.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/plugins_manager_mixin.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/utils/__init__.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/utils/comm_utils.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/utils/dotenv.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/requirements.txt +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/_example_pk_sdk.pem +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex01_part1_connect.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex01_part2_filter.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex02_first_deploy.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex08_custom_web_app.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex10_telegram_echo_bot.py +0 -0
- /naeural_client-2.1.3/tutorials/ex11_telegram_smart_bot.py → /naeural_client-2.1.4/tutorials/ex12_telegram_smart_bot.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/winrun.bat +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/.example_env +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/README.md +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/_archive/test.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/_tutorials/3. simple_real_time_custom_code.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/_tutorials/4. real_time_custom_code_2.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/_tutorials/8. chatbot.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/attach_example.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/decentralized/chain_dist_example.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/ex1.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/hello.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/remote_exec.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/save_images.py +0 -0
- {naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/utils/get_documentation.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: naeural_client
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.4
|
4
4
|
Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
|
5
5
|
Project-URL: Homepage, https://github.com/Naeural Edge ProtocolEdgeProtocol/naeural_client
|
6
6
|
Project-URL: Bug Tracker, https://github.com/Naeural Edge ProtocolEdgeProtocol/naeural_client/issues
|
@@ -2,6 +2,17 @@ EE_ID = 'EE_ID'
|
|
2
2
|
SB_ID = 'SB_ID' # change to SB_ID = EE_ID post mod from sb to ee
|
3
3
|
|
4
4
|
|
5
|
+
class DCT_TYPES:
|
6
|
+
VOID_PIPELINE = 'Void'
|
7
|
+
NETWORK_LISTENER = 'NetworkListener'
|
8
|
+
METASTREAM_PIPELINE = 'MetaStream'
|
9
|
+
|
10
|
+
|
11
|
+
class DCT_OPTIONS:
|
12
|
+
NETWORK_LISTENER_PATH_FILTER = "PATH_FILTER"
|
13
|
+
NETWORK_LISTENER_MESSAGE_FILTER = "MESSAGE_FILTER"
|
14
|
+
ADMIN_PIPELINE_VER = 'ADMIN_PIPELINE_VER'
|
15
|
+
|
5
16
|
class CONFIG_STREAM:
|
6
17
|
K_URL = 'URL'
|
7
18
|
K_TYPE = 'TYPE'
|
@@ -22,7 +33,7 @@ class CONFIG_STREAM:
|
|
22
33
|
K_PIPELINE_COMMAND = 'PIPELINE_COMMAND'
|
23
34
|
K_USE_LOCAL_COMMS_ONLY = 'USE_LOCAL_COMMS_ONLY'
|
24
35
|
|
25
|
-
METASTREAM =
|
36
|
+
METASTREAM = DCT_TYPES.METASTREAM_PIPELINE
|
26
37
|
|
27
38
|
INITIATOR_ID = K_INITIATOR_ID
|
28
39
|
SESSION_ID = K_SESSION_ID
|
@@ -53,10 +64,14 @@ class CONFIG_STREAM:
|
|
53
64
|
|
54
65
|
MANDATORY = [K_NAME, K_TYPE]
|
55
66
|
|
56
|
-
VOID_STREAM =
|
67
|
+
VOID_STREAM = DCT_TYPES.VOID_PIPELINE
|
68
|
+
|
69
|
+
DEFAULT_ADMIN_PIPELINE_TYPE = DCT_TYPES.NETWORK_LISTENER
|
57
70
|
|
58
71
|
NO_DATA_STREAMS = [VOID_STREAM]
|
59
|
-
|
72
|
+
|
73
|
+
PIPELINE_OPTIONS = DCT_OPTIONS
|
74
|
+
PIPELINE_TYPES = DCT_TYPES
|
60
75
|
|
61
76
|
class BIZ_PLUGIN_DATA:
|
62
77
|
INSTANCE_ID = 'INSTANCE_ID'
|
@@ -181,6 +181,8 @@ class PAYLOAD_DATA:
|
|
181
181
|
EE_SENDER = BC_CT.SENDER
|
182
182
|
EE_HASH = BC_CT.HASH
|
183
183
|
EE_SIGN = BC_CT.SIGN
|
184
|
+
|
185
|
+
EE_DESTINATION = "EE_DEST"
|
184
186
|
|
185
187
|
NOTIFICATION = 'NOTIFICATION'
|
186
188
|
INFO = 'INFO'
|
@@ -188,3 +190,5 @@ class PAYLOAD_DATA:
|
|
188
190
|
TAGS = 'TAGS'
|
189
191
|
|
190
192
|
ID_TAGS = 'ID_TAGS'
|
193
|
+
|
194
|
+
|
@@ -0,0 +1,203 @@
|
|
1
|
+
import os
|
2
|
+
import time
|
3
|
+
|
4
|
+
from naeural_client import Session, CustomPluginTemplate
|
5
|
+
|
6
|
+
def reply(plugin, message: str, user: str):
|
7
|
+
# Define the deck of cards and their values
|
8
|
+
cards = ['2', '3', '4', '5', '6', '7', '8', '9', '10',
|
9
|
+
'Jack', 'Queen', 'King', 'Ace']
|
10
|
+
card_values = {
|
11
|
+
'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7,
|
12
|
+
'8': 8, '9': 9, '10': 10,
|
13
|
+
'Jack': 10, 'Queen': 10, 'King': 10,
|
14
|
+
'Ace': 11 # Ace is treated as 11 initially; we'll adjust as needed
|
15
|
+
}
|
16
|
+
|
17
|
+
# Initialize user state if not already present
|
18
|
+
if user not in plugin.obj_cache or plugin.obj_cache[user] is None:
|
19
|
+
plugin.obj_cache[user] = {
|
20
|
+
'state': 'NOT_STARTED',
|
21
|
+
'wins': 0,
|
22
|
+
'losses': 0
|
23
|
+
}
|
24
|
+
|
25
|
+
# Retrieve the user's game state
|
26
|
+
user_cache = plugin.obj_cache[user]
|
27
|
+
message = message.strip().lower() # Normalize the input message
|
28
|
+
|
29
|
+
if user_cache.get('state') == 'NOT_STARTED':
|
30
|
+
if message == 'card' or message == 'start':
|
31
|
+
# Start a new game
|
32
|
+
user_cache['hand'] = [] # Initialize player's hand
|
33
|
+
user_cache['state'] = 'PLAYING'
|
34
|
+
|
35
|
+
# Deal the first card
|
36
|
+
card = plugin.np.random.choice(cards)
|
37
|
+
user_cache['hand'].append(card)
|
38
|
+
|
39
|
+
# Calculate hand value
|
40
|
+
total = 0
|
41
|
+
aces = 0 # Count of aces in hand
|
42
|
+
for c in user_cache['hand']:
|
43
|
+
if c == 'Ace':
|
44
|
+
aces += 1
|
45
|
+
else:
|
46
|
+
total += card_values[c]
|
47
|
+
# Adjust for aces
|
48
|
+
for _ in range(aces):
|
49
|
+
if total + 11 <= 21:
|
50
|
+
total += 11 # Count ace as 11 if it doesn't cause bust
|
51
|
+
else:
|
52
|
+
total += 1 # Otherwise, count ace as 1
|
53
|
+
|
54
|
+
# Return the initial game message
|
55
|
+
return (f"Welcome to a new game of Black Jack, you have a {card}. "
|
56
|
+
f"Your total is {total}. Type 'card' to get another card, or 'stop' to hold.")
|
57
|
+
else:
|
58
|
+
# Prompt user to start a new game
|
59
|
+
return "Welcome to Black Jack. Type 'card' to start a new game."
|
60
|
+
|
61
|
+
elif user_cache.get('state') == 'PLAYING':
|
62
|
+
if message == 'card':
|
63
|
+
# Player chooses to draw another card
|
64
|
+
card = plugin.np.random.choice(cards)
|
65
|
+
user_cache['hand'].append(card)
|
66
|
+
|
67
|
+
# Recalculate hand value
|
68
|
+
total = 0
|
69
|
+
aces = 0
|
70
|
+
for c in user_cache['hand']:
|
71
|
+
if c == 'Ace':
|
72
|
+
aces += 1
|
73
|
+
else:
|
74
|
+
total += card_values[c]
|
75
|
+
for _ in range(aces):
|
76
|
+
if total + 11 <= 21:
|
77
|
+
total += 11
|
78
|
+
else:
|
79
|
+
total += 1
|
80
|
+
|
81
|
+
hand_str = ', '.join(user_cache['hand']) # Format hand as a string
|
82
|
+
|
83
|
+
if total > 21:
|
84
|
+
# Player busts
|
85
|
+
user_cache['state'] = 'BUST'
|
86
|
+
user_cache['losses'] += 1 # Increment losses
|
87
|
+
return (f"You are given a {card}. Your hand: {hand_str}. "
|
88
|
+
f"Your total is {total}. Bust! You lose.\n"
|
89
|
+
f"Total Wins: {user_cache['wins']}, Total Losses: {user_cache['losses']}")
|
90
|
+
elif total == 21:
|
91
|
+
# Player hits Black Jack
|
92
|
+
user_cache['state'] = 'BLACKJACK'
|
93
|
+
user_cache['wins'] += 1 # Increment wins
|
94
|
+
return (f"You are given a {card}. Black Jack! Congratulations, you win! "
|
95
|
+
f"Your hand: {hand_str}.\n"
|
96
|
+
f"Total Wins: {user_cache['wins']}, Total Losses: {user_cache['losses']}")
|
97
|
+
else:
|
98
|
+
# Continue playing
|
99
|
+
return (f"You are given a {card}. Your hand: {hand_str}. "
|
100
|
+
f"Your total is {total}. Type 'card' to get another card, or 'stop' to hold.")
|
101
|
+
elif message == 'stop':
|
102
|
+
# Player chooses to hold; dealer's turn
|
103
|
+
dealer_hand = []
|
104
|
+
dealer_total = 0
|
105
|
+
dealer_aces = 0
|
106
|
+
|
107
|
+
# Dealer draws cards until total >= 17
|
108
|
+
while True:
|
109
|
+
dealer_card = plugin.np.random.choice(cards)
|
110
|
+
dealer_hand.append(dealer_card)
|
111
|
+
|
112
|
+
# Update dealer's total
|
113
|
+
if dealer_card == 'Ace':
|
114
|
+
dealer_aces += 1
|
115
|
+
else:
|
116
|
+
dealer_total += card_values[dealer_card]
|
117
|
+
|
118
|
+
# Calculate dealer's total considering aces
|
119
|
+
temp_total = dealer_total
|
120
|
+
aces = dealer_aces
|
121
|
+
for _ in range(aces):
|
122
|
+
if temp_total + 11 <= 21:
|
123
|
+
temp_total += 11
|
124
|
+
else:
|
125
|
+
temp_total += 1
|
126
|
+
|
127
|
+
dealer_total_with_aces = temp_total
|
128
|
+
|
129
|
+
# Dealer stops hitting when total >= 17
|
130
|
+
if dealer_total_with_aces >= 17:
|
131
|
+
dealer_total = dealer_total_with_aces
|
132
|
+
break
|
133
|
+
else:
|
134
|
+
dealer_total = dealer_total_with_aces
|
135
|
+
|
136
|
+
# Calculate player's total
|
137
|
+
player_total = 0
|
138
|
+
player_aces = 0
|
139
|
+
for c in user_cache['hand']:
|
140
|
+
if c == 'Ace':
|
141
|
+
player_aces += 1
|
142
|
+
else:
|
143
|
+
player_total += card_values[c]
|
144
|
+
for _ in range(player_aces):
|
145
|
+
if player_total + 11 <= 21:
|
146
|
+
player_total += 11
|
147
|
+
else:
|
148
|
+
player_total += 1
|
149
|
+
|
150
|
+
user_cache['state'] = 'GAME_OVER' # Update game state
|
151
|
+
|
152
|
+
# Determine the outcome
|
153
|
+
if dealer_total > 21:
|
154
|
+
result = "Dealer busts! You win!"
|
155
|
+
user_cache['wins'] += 1
|
156
|
+
elif player_total > dealer_total:
|
157
|
+
result = "You win!"
|
158
|
+
user_cache['wins'] += 1
|
159
|
+
elif player_total == dealer_total:
|
160
|
+
result = "It's a tie!"
|
161
|
+
# Ties are not counted as wins or losses
|
162
|
+
else:
|
163
|
+
result = "You lose!"
|
164
|
+
user_cache['losses'] += 1
|
165
|
+
|
166
|
+
player_hand_str = ', '.join(user_cache['hand'])
|
167
|
+
dealer_hand_str = ', '.join(dealer_hand)
|
168
|
+
|
169
|
+
# Return the game result with total wins and losses
|
170
|
+
return (f"You stopped with {player_total}. Your hand: {player_hand_str}.\n"
|
171
|
+
f"Dealer's hand: {dealer_hand_str} (Total: {dealer_total}).\n"
|
172
|
+
f"{result}\nTotal Wins: {user_cache['wins']}, Total Losses: {user_cache['losses']}")
|
173
|
+
else:
|
174
|
+
# Invalid input during playing
|
175
|
+
return "Invalid input. Please type 'card' to get another card, or 'stop' to hold."
|
176
|
+
|
177
|
+
elif user_cache.get('state') in ['BUST', 'BLACKJACK', 'GAME_OVER']:
|
178
|
+
# Game is over; reset state for a new game
|
179
|
+
user_cache['state'] = 'NOT_STARTED'
|
180
|
+
return "Game over. Type 'card' to start a new game."
|
181
|
+
|
182
|
+
else:
|
183
|
+
# Catch-all for unexpected state
|
184
|
+
return "An error occurred. Please start a new game."
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
if __name__ == "__main__":
|
189
|
+
my_node = os.getenv("TARGET_NODE") # we can specify a node here, if we want to connect to a specific
|
190
|
+
|
191
|
+
session = Session() # assume .env is available and will be used for the connection and tokens
|
192
|
+
session.wait_for_node(my_node) # wait for the node to be active
|
193
|
+
|
194
|
+
|
195
|
+
pipeline, _ = session.create_telegram_simple_bot(
|
196
|
+
node=my_node,
|
197
|
+
name="telegram_bot_blackjack",
|
198
|
+
message_handler=reply,
|
199
|
+
)
|
200
|
+
|
201
|
+
pipeline.deploy() # we deploy the pipeline
|
202
|
+
|
203
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/base/distributed_custom_code_presets.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/instance/net_mon_01_plugin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/default/session/mqtt_session.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/base/base_formatter.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/__init__.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/a_dummy.py
RENAMED
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/default/default.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/io_formatter/io_formatter_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/datetime_mixin.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/download_mixin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/process_mixin.py
RENAMED
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/timers_mixin.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/upload_mixin.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/naeural_client/logging/logger_mixins/utils_mixin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/8. custom_code_fastapi_assets/index.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex03_custom_code_on_one_remote__example_1.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex04_custom_code_on_one_remote__example_2.py
RENAMED
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/ex05_custom_code_on_one_remote__example_3.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/tutorials/video_presentation/1. hello_world.ipynb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/_tutorials/4. real_time_custom_code_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/decentralized/chain_dist_example.py
RENAMED
File without changes
|
File without changes
|
{naeural_client-2.1.3 → naeural_client-2.1.4}/xperimental/decentralized/chain_dist_example_worker.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|