pysteam-client 1.4.6__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.
Files changed (290) hide show
  1. pysteam_client-1.4.6/LICENSE +19 -0
  2. pysteam_client-1.4.6/PKG-INFO +225 -0
  3. pysteam_client-1.4.6/README.rst +194 -0
  4. pysteam_client-1.4.6/pyproject.toml +190 -0
  5. pysteam_client-1.4.6/scripts/__init__.py +7 -0
  6. pysteam_client-1.4.6/scripts/pb_compile.py +111 -0
  7. pysteam_client-1.4.6/scripts/pb_fetch.py +104 -0
  8. pysteam_client-1.4.6/scripts/pb_gen_enums.py +100 -0
  9. pysteam_client-1.4.6/scripts/pb_postprocess.py +71 -0
  10. pysteam_client-1.4.6/scripts/pb_services.py +69 -0
  11. pysteam_client-1.4.6/scripts/pb_update.py +36 -0
  12. pysteam_client-1.4.6/scripts/vcr_webapi.py +154 -0
  13. pysteam_client-1.4.6/scripts/vcr_webauth.py +229 -0
  14. pysteam_client-1.4.6/steam/__init__.py +13 -0
  15. pysteam_client-1.4.6/steam/client/__init__.py +698 -0
  16. pysteam_client-1.4.6/steam/client/builtins/__init__.py +17 -0
  17. pysteam_client-1.4.6/steam/client/builtins/apps.py +430 -0
  18. pysteam_client-1.4.6/steam/client/builtins/friends.py +232 -0
  19. pysteam_client-1.4.6/steam/client/builtins/gameservers.py +230 -0
  20. pysteam_client-1.4.6/steam/client/builtins/leaderboards.py +252 -0
  21. pysteam_client-1.4.6/steam/client/builtins/unified_messages.py +124 -0
  22. pysteam_client-1.4.6/steam/client/builtins/user.py +209 -0
  23. pysteam_client-1.4.6/steam/client/builtins/web.py +158 -0
  24. pysteam_client-1.4.6/steam/client/cdn.py +987 -0
  25. pysteam_client-1.4.6/steam/client/gc.py +120 -0
  26. pysteam_client-1.4.6/steam/client/user.py +169 -0
  27. pysteam_client-1.4.6/steam/core/__init__.py +0 -0
  28. pysteam_client-1.4.6/steam/core/cm.py +589 -0
  29. pysteam_client-1.4.6/steam/core/connection.py +207 -0
  30. pysteam_client-1.4.6/steam/core/crypto.py +106 -0
  31. pysteam_client-1.4.6/steam/core/manifest.py +319 -0
  32. pysteam_client-1.4.6/steam/core/msg/__init__.py +286 -0
  33. pysteam_client-1.4.6/steam/core/msg/headers.py +189 -0
  34. pysteam_client-1.4.6/steam/core/msg/structs.py +426 -0
  35. pysteam_client-1.4.6/steam/core/msg/unified.py +140 -0
  36. pysteam_client-1.4.6/steam/enums/__init__.py +109 -0
  37. pysteam_client-1.4.6/steam/enums/base.py +5 -0
  38. pysteam_client-1.4.6/steam/enums/common.py +1097 -0
  39. pysteam_client-1.4.6/steam/enums/emsg.py +1986 -0
  40. pysteam_client-1.4.6/steam/enums/proto.py +4127 -0
  41. pysteam_client-1.4.6/steam/exceptions.py +49 -0
  42. pysteam_client-1.4.6/steam/game_servers.py +674 -0
  43. pysteam_client-1.4.6/steam/globalid.py +93 -0
  44. pysteam_client-1.4.6/steam/guard.py +669 -0
  45. pysteam_client-1.4.6/steam/monkey.py +26 -0
  46. pysteam_client-1.4.6/steam/protobufs/__init__.py +0 -0
  47. pysteam_client-1.4.6/steam/protobufs/clientmetrics_pb2.py +45 -0
  48. pysteam_client-1.4.6/steam/protobufs/clientmetrics_pb2.pyi +182 -0
  49. pysteam_client-1.4.6/steam/protobufs/content_manifest_pb2.py +51 -0
  50. pysteam_client-1.4.6/steam/protobufs/content_manifest_pb2.pyi +239 -0
  51. pysteam_client-1.4.6/steam/protobufs/contenthubs_pb2.py +47 -0
  52. pysteam_client-1.4.6/steam/protobufs/contenthubs_pb2.pyi +156 -0
  53. pysteam_client-1.4.6/steam/protobufs/encrypted_app_ticket_pb2.py +37 -0
  54. pysteam_client-1.4.6/steam/protobufs/encrypted_app_ticket_pb2.pyi +47 -0
  55. pysteam_client-1.4.6/steam/protobufs/enums_clientserver_pb2.py +49 -0
  56. pysteam_client-1.4.6/steam/protobufs/enums_clientserver_pb2.pyi +3031 -0
  57. pysteam_client-1.4.6/steam/protobufs/enums_pb2.py +203 -0
  58. pysteam_client-1.4.6/steam/protobufs/enums_pb2.pyi +2235 -0
  59. pysteam_client-1.4.6/steam/protobufs/enums_productinfo_pb2.py +39 -0
  60. pysteam_client-1.4.6/steam/protobufs/enums_productinfo_pb2.pyi +89 -0
  61. pysteam_client-1.4.6/steam/protobufs/gc_pb2.py +38 -0
  62. pysteam_client-1.4.6/steam/protobufs/gc_pb2.pyi +84 -0
  63. pysteam_client-1.4.6/steam/protobufs/htmlmessages_pb2.py +372 -0
  64. pysteam_client-1.4.6/steam/protobufs/htmlmessages_pb2.pyi +4101 -0
  65. pysteam_client-1.4.6/steam/protobufs/offline_ticket_pb2.py +36 -0
  66. pysteam_client-1.4.6/steam/protobufs/offline_ticket_pb2.pyi +50 -0
  67. pysteam_client-1.4.6/steam/protobufs/steamdatagram_messages_auth_pb2.py +50 -0
  68. pysteam_client-1.4.6/steam/protobufs/steamdatagram_messages_auth_pb2.pyi +247 -0
  69. pysteam_client-1.4.6/steam/protobufs/steamdatagram_messages_sdr_pb2.py +149 -0
  70. pysteam_client-1.4.6/steam/protobufs/steamdatagram_messages_sdr_pb2.pyi +1872 -0
  71. pysteam_client-1.4.6/steam/protobufs/steammessages_accounthardware_pb2.py +122 -0
  72. pysteam_client-1.4.6/steam/protobufs/steammessages_accounthardware_pb2.pyi +872 -0
  73. pysteam_client-1.4.6/steam/protobufs/steammessages_appoverview_pb2.py +52 -0
  74. pysteam_client-1.4.6/steam/protobufs/steammessages_appoverview_pb2.pyi +455 -0
  75. pysteam_client-1.4.6/steam/protobufs/steammessages_auth_pb2.py +161 -0
  76. pysteam_client-1.4.6/steam/protobufs/steammessages_auth_pb2.pyi +1454 -0
  77. pysteam_client-1.4.6/steam/protobufs/steammessages_base_pb2.py +96 -0
  78. pysteam_client-1.4.6/steam/protobufs/steammessages_base_pb2.pyi +1268 -0
  79. pysteam_client-1.4.6/steam/protobufs/steammessages_broadcast_pb2.py +216 -0
  80. pysteam_client-1.4.6/steam/protobufs/steammessages_broadcast_pb2.pyi +2146 -0
  81. pysteam_client-1.4.6/steam/protobufs/steammessages_chat_pb2.py +376 -0
  82. pysteam_client-1.4.6/steam/protobufs/steammessages_chat_pb2.pyi +3944 -0
  83. pysteam_client-1.4.6/steam/protobufs/steammessages_childprocessquery_pb2.py +42 -0
  84. pysteam_client-1.4.6/steam/protobufs/steammessages_childprocessquery_pb2.pyi +100 -0
  85. pysteam_client-1.4.6/steam/protobufs/steammessages_client_objects_pb2.py +194 -0
  86. pysteam_client-1.4.6/steam/protobufs/steammessages_client_objects_pb2.pyi +2480 -0
  87. pysteam_client-1.4.6/steam/protobufs/steammessages_clientlanp2p_pb2.py +48 -0
  88. pysteam_client-1.4.6/steam/protobufs/steammessages_clientlanp2p_pb2.pyi +170 -0
  89. pysteam_client-1.4.6/steam/protobufs/steammessages_clientmetrics_pb2.py +106 -0
  90. pysteam_client-1.4.6/steam/protobufs/steammessages_clientmetrics_pb2.pyi +964 -0
  91. pysteam_client-1.4.6/steam/protobufs/steammessages_clientnotificationtypes_pb2.py +131 -0
  92. pysteam_client-1.4.6/steam/protobufs/steammessages_clientnotificationtypes_pb2.pyi +1132 -0
  93. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_2_pb2.py +270 -0
  94. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_2_pb2.pyi +2720 -0
  95. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_appinfo_pb2.py +78 -0
  96. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_appinfo_pb2.pyi +549 -0
  97. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_friends_pb2.py +116 -0
  98. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_friends_pb2.pyi +1044 -0
  99. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_gameservers_pb2.py +72 -0
  100. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_gameservers_pb2.pyi +601 -0
  101. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_lbs_pb2.py +54 -0
  102. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_lbs_pb2.pyi +271 -0
  103. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_login_pb2.py +68 -0
  104. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_login_pb2.pyi +594 -0
  105. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_mms_pb2.py +96 -0
  106. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_mms_pb2.pyi +892 -0
  107. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_pb2.py +145 -0
  108. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_pb2.pyi +1485 -0
  109. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_ucm_pb2.py +90 -0
  110. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_ucm_pb2.pyi +820 -0
  111. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_uds_pb2.py +74 -0
  112. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_uds_pb2.pyi +543 -0
  113. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_ufs_pb2.py +86 -0
  114. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_ufs_pb2.pyi +657 -0
  115. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_userstats_pb2.py +56 -0
  116. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_userstats_pb2.pyi +270 -0
  117. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_video_pb2.py +48 -0
  118. pysteam_client-1.4.6/steam/protobufs/steammessages_clientserver_video_pb2.pyi +217 -0
  119. pysteam_client-1.4.6/steam/protobufs/steammessages_clientsettings_pb2.py +587 -0
  120. pysteam_client-1.4.6/steam/protobufs/steammessages_clientsettings_pb2.pyi +1055 -0
  121. pysteam_client-1.4.6/steam/protobufs/steammessages_cloud_pb2.py +162 -0
  122. pysteam_client-1.4.6/steam/protobufs/steammessages_cloud_pb2.pyi +1530 -0
  123. pysteam_client-1.4.6/steam/protobufs/steammessages_community_pb2.py +179 -0
  124. pysteam_client-1.4.6/steam/protobufs/steammessages_community_pb2.pyi +1689 -0
  125. pysteam_client-1.4.6/steam/protobufs/steammessages_contentsystem_pb2.py +82 -0
  126. pysteam_client-1.4.6/steam/protobufs/steammessages_contentsystem_pb2.pyi +530 -0
  127. pysteam_client-1.4.6/steam/protobufs/steammessages_credentials_pb2.py +62 -0
  128. pysteam_client-1.4.6/steam/protobufs/steammessages_credentials_pb2.pyi +304 -0
  129. pysteam_client-1.4.6/steam/protobufs/steammessages_datapublisher_pb2.py +64 -0
  130. pysteam_client-1.4.6/steam/protobufs/steammessages_datapublisher_pb2.pyi +352 -0
  131. pysteam_client-1.4.6/steam/protobufs/steammessages_depotbuilder_pb2.py +68 -0
  132. pysteam_client-1.4.6/steam/protobufs/steammessages_depotbuilder_pb2.pyi +389 -0
  133. pysteam_client-1.4.6/steam/protobufs/steammessages_deviceauth_pb2.py +122 -0
  134. pysteam_client-1.4.6/steam/protobufs/steammessages_deviceauth_pb2.pyi +628 -0
  135. pysteam_client-1.4.6/steam/protobufs/steammessages_econ_pb2.py +86 -0
  136. pysteam_client-1.4.6/steam/protobufs/steammessages_econ_pb2.pyi +749 -0
  137. pysteam_client-1.4.6/steam/protobufs/steammessages_familygroups_pb2.py +193 -0
  138. pysteam_client-1.4.6/steam/protobufs/steammessages_familygroups_pb2.pyi +1728 -0
  139. pysteam_client-1.4.6/steam/protobufs/steammessages_friendmessages_pb2.py +93 -0
  140. pysteam_client-1.4.6/steam/protobufs/steammessages_friendmessages_pb2.pyi +639 -0
  141. pysteam_client-1.4.6/steam/protobufs/steammessages_gamenetworking_pb2.py +46 -0
  142. pysteam_client-1.4.6/steam/protobufs/steammessages_gamenetworking_pb2.pyi +87 -0
  143. pysteam_client-1.4.6/steam/protobufs/steammessages_gamenetworkingui_pb2.py +47 -0
  144. pysteam_client-1.4.6/steam/protobufs/steammessages_gamenetworkingui_pb2.pyi +225 -0
  145. pysteam_client-1.4.6/steam/protobufs/steammessages_gamenotifications_pb2.py +84 -0
  146. pysteam_client-1.4.6/steam/protobufs/steammessages_gamenotifications_pb2.pyi +481 -0
  147. pysteam_client-1.4.6/steam/protobufs/steammessages_gamerecording_objects_pb2.py +40 -0
  148. pysteam_client-1.4.6/steam/protobufs/steammessages_gamerecording_objects_pb2.pyi +81 -0
  149. pysteam_client-1.4.6/steam/protobufs/steammessages_gamerecording_pb2.py +75 -0
  150. pysteam_client-1.4.6/steam/protobufs/steammessages_gamerecording_pb2.pyi +374 -0
  151. pysteam_client-1.4.6/steam/protobufs/steammessages_gameservers_pb2.py +80 -0
  152. pysteam_client-1.4.6/steam/protobufs/steammessages_gameservers_pb2.pyi +460 -0
  153. pysteam_client-1.4.6/steam/protobufs/steammessages_hiddevices_pb2.py +83 -0
  154. pysteam_client-1.4.6/steam/protobufs/steammessages_hiddevices_pb2.pyi +590 -0
  155. pysteam_client-1.4.6/steam/protobufs/steammessages_inventory_pb2.py +90 -0
  156. pysteam_client-1.4.6/steam/protobufs/steammessages_inventory_pb2.pyi +594 -0
  157. pysteam_client-1.4.6/steam/protobufs/steammessages_linkfilter_pb2.py +52 -0
  158. pysteam_client-1.4.6/steam/protobufs/steammessages_linkfilter_pb2.pyi +144 -0
  159. pysteam_client-1.4.6/steam/protobufs/steammessages_lobbymatchmaking_pb2.py +46 -0
  160. pysteam_client-1.4.6/steam/protobufs/steammessages_lobbymatchmaking_pb2.pyi +91 -0
  161. pysteam_client-1.4.6/steam/protobufs/steammessages_market_pb2.py +44 -0
  162. pysteam_client-1.4.6/steam/protobufs/steammessages_market_pb2.pyi +71 -0
  163. pysteam_client-1.4.6/steam/protobufs/steammessages_marketingmessages_pb2.py +139 -0
  164. pysteam_client-1.4.6/steam/protobufs/steammessages_marketingmessages_pb2.pyi +1181 -0
  165. pysteam_client-1.4.6/steam/protobufs/steammessages_notifications_pb2.py +52 -0
  166. pysteam_client-1.4.6/steam/protobufs/steammessages_notifications_pb2.pyi +203 -0
  167. pysteam_client-1.4.6/steam/protobufs/steammessages_offline_pb2.py +51 -0
  168. pysteam_client-1.4.6/steam/protobufs/steammessages_offline_pb2.pyi +118 -0
  169. pysteam_client-1.4.6/steam/protobufs/steammessages_parental_objects_pb2.py +50 -0
  170. pysteam_client-1.4.6/steam/protobufs/steammessages_parental_objects_pb2.pyi +270 -0
  171. pysteam_client-1.4.6/steam/protobufs/steammessages_parental_pb2.py +113 -0
  172. pysteam_client-1.4.6/steam/protobufs/steammessages_parental_pb2.pyi +692 -0
  173. pysteam_client-1.4.6/steam/protobufs/steammessages_parties_pb2.py +66 -0
  174. pysteam_client-1.4.6/steam/protobufs/steammessages_parties_pb2.pyi +284 -0
  175. pysteam_client-1.4.6/steam/protobufs/steammessages_partnerapps_pb2.py +72 -0
  176. pysteam_client-1.4.6/steam/protobufs/steammessages_partnerapps_pb2.pyi +379 -0
  177. pysteam_client-1.4.6/steam/protobufs/steammessages_player_pb2.py +365 -0
  178. pysteam_client-1.4.6/steam/protobufs/steammessages_player_pb2.pyi +3734 -0
  179. pysteam_client-1.4.6/steam/protobufs/steammessages_publishedfile_pb2.py +247 -0
  180. pysteam_client-1.4.6/steam/protobufs/steammessages_publishedfile_pb2.pyi +2820 -0
  181. pysteam_client-1.4.6/steam/protobufs/steammessages_qms_pb2.py +68 -0
  182. pysteam_client-1.4.6/steam/protobufs/steammessages_qms_pb2.pyi +374 -0
  183. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_discovery_pb2.py +93 -0
  184. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_discovery_pb2.pyi +879 -0
  185. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_pb2.py +111 -0
  186. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_pb2.pyi +1000 -0
  187. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_service_messages_pb2.py +146 -0
  188. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_service_messages_pb2.pyi +1238 -0
  189. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_service_pb2.py +45 -0
  190. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteclient_service_pb2.pyi +8 -0
  191. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteplay_pb2.py +317 -0
  192. pysteam_client-1.4.6/steam/protobufs/steammessages_remoteplay_pb2.pyi +3543 -0
  193. pysteam_client-1.4.6/steam/protobufs/steammessages_secrets_pb2.py +48 -0
  194. pysteam_client-1.4.6/steam/protobufs/steammessages_secrets_pb2.pyi +119 -0
  195. pysteam_client-1.4.6/steam/protobufs/steammessages_shader_pb2.py +72 -0
  196. pysteam_client-1.4.6/steam/protobufs/steammessages_shader_pb2.pyi +365 -0
  197. pysteam_client-1.4.6/steam/protobufs/steammessages_site_license_pb2.py +74 -0
  198. pysteam_client-1.4.6/steam/protobufs/steammessages_site_license_pb2.pyi +354 -0
  199. pysteam_client-1.4.6/steam/protobufs/steammessages_sitelicenseclient_pb2.py +50 -0
  200. pysteam_client-1.4.6/steam/protobufs/steammessages_sitelicenseclient_pb2.pyi +160 -0
  201. pysteam_client-1.4.6/steam/protobufs/steammessages_siteserverui_pb2.py +84 -0
  202. pysteam_client-1.4.6/steam/protobufs/steammessages_siteserverui_pb2.pyi +529 -0
  203. pysteam_client-1.4.6/steam/protobufs/steammessages_star_pb2.py +92 -0
  204. pysteam_client-1.4.6/steam/protobufs/steammessages_star_pb2.pyi +237 -0
  205. pysteam_client-1.4.6/steam/protobufs/steammessages_steamtv_pb2.py +216 -0
  206. pysteam_client-1.4.6/steam/protobufs/steammessages_steamtv_pb2.pyi +2005 -0
  207. pysteam_client-1.4.6/steam/protobufs/steammessages_store_pb2.py +181 -0
  208. pysteam_client-1.4.6/steam/protobufs/steammessages_store_pb2.pyi +1676 -0
  209. pysteam_client-1.4.6/steam/protobufs/steammessages_storebrowse_pb2.py +169 -0
  210. pysteam_client-1.4.6/steam/protobufs/steammessages_storebrowse_pb2.pyi +2131 -0
  211. pysteam_client-1.4.6/steam/protobufs/steammessages_timedtrial_pb2.py +52 -0
  212. pysteam_client-1.4.6/steam/protobufs/steammessages_timedtrial_pb2.pyi +143 -0
  213. pysteam_client-1.4.6/steam/protobufs/steammessages_twofactor_pb2.py +80 -0
  214. pysteam_client-1.4.6/steam/protobufs/steammessages_twofactor_pb2.pyi +590 -0
  215. pysteam_client-1.4.6/steam/protobufs/steammessages_unified_base_pb2.py +42 -0
  216. pysteam_client-1.4.6/steam/protobufs/steammessages_unified_base_pb2.pyi +85 -0
  217. pysteam_client-1.4.6/steam/protobufs/steammessages_unified_test_pb2.py +66 -0
  218. pysteam_client-1.4.6/steam/protobufs/steammessages_unified_test_pb2.pyi +193 -0
  219. pysteam_client-1.4.6/steam/protobufs/steammessages_useraccount_pb2.py +106 -0
  220. pysteam_client-1.4.6/steam/protobufs/steammessages_useraccount_pb2.pyi +840 -0
  221. pysteam_client-1.4.6/steam/protobufs/steammessages_vac_pb2.py +48 -0
  222. pysteam_client-1.4.6/steam/protobufs/steammessages_vac_pb2.pyi +125 -0
  223. pysteam_client-1.4.6/steam/protobufs/steammessages_video_pb2.py +64 -0
  224. pysteam_client-1.4.6/steam/protobufs/steammessages_video_pb2.pyi +220 -0
  225. pysteam_client-1.4.6/steam/protobufs/steammessages_virtualcontroller_pb2.py +58 -0
  226. pysteam_client-1.4.6/steam/protobufs/steammessages_virtualcontroller_pb2.pyi +454 -0
  227. pysteam_client-1.4.6/steam/protobufs/steammessages_workshop_pb2.py +44 -0
  228. pysteam_client-1.4.6/steam/protobufs/steammessages_workshop_pb2.pyi +62 -0
  229. pysteam_client-1.4.6/steam/protobufs/steamnetworkingsockets_messages_certs_pb2.py +45 -0
  230. pysteam_client-1.4.6/steam/protobufs/steamnetworkingsockets_messages_certs_pb2.pyi +155 -0
  231. pysteam_client-1.4.6/steam/protobufs/steamnetworkingsockets_messages_pb2.py +72 -0
  232. pysteam_client-1.4.6/steam/protobufs/steamnetworkingsockets_messages_pb2.pyi +638 -0
  233. pysteam_client-1.4.6/steam/protobufs/steamnetworkingsockets_messages_udp_pb2.py +55 -0
  234. pysteam_client-1.4.6/steam/protobufs/steamnetworkingsockets_messages_udp_pb2.pyi +272 -0
  235. pysteam_client-1.4.6/steam/protobufs/test_messages_pb2.py +42 -0
  236. pysteam_client-1.4.6/steam/protobufs/test_messages_pb2.pyi +112 -0
  237. pysteam_client-1.4.6/steam/protobufs/webuimessages_achievements_pb2.py +48 -0
  238. pysteam_client-1.4.6/steam/protobufs/webuimessages_achievements_pb2.pyi +90 -0
  239. pysteam_client-1.4.6/steam/protobufs/webuimessages_audio_pb2.py +99 -0
  240. pysteam_client-1.4.6/steam/protobufs/webuimessages_audio_pb2.pyi +503 -0
  241. pysteam_client-1.4.6/steam/protobufs/webuimessages_base_pb2.py +42 -0
  242. pysteam_client-1.4.6/steam/protobufs/webuimessages_base_pb2.pyi +58 -0
  243. pysteam_client-1.4.6/steam/protobufs/webuimessages_bluetooth_pb2.py +101 -0
  244. pysteam_client-1.4.6/steam/protobufs/webuimessages_bluetooth_pb2.pyi +589 -0
  245. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamenotes_pb2.py +46 -0
  246. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamenotes_pb2.pyi +59 -0
  247. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamerecording_pb2.py +234 -0
  248. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamerecording_pb2.pyi +2067 -0
  249. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamerecordingfiles_pb2.py +64 -0
  250. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamerecordingfiles_pb2.pyi +444 -0
  251. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamescope_pb2.py +67 -0
  252. pysteam_client-1.4.6/steam/protobufs/webuimessages_gamescope_pb2.pyi +286 -0
  253. pysteam_client-1.4.6/steam/protobufs/webuimessages_hardwareupdate_pb2.py +77 -0
  254. pysteam_client-1.4.6/steam/protobufs/webuimessages_hardwareupdate_pb2.pyi +333 -0
  255. pysteam_client-1.4.6/steam/protobufs/webuimessages_leds_pb2.py +85 -0
  256. pysteam_client-1.4.6/steam/protobufs/webuimessages_leds_pb2.pyi +438 -0
  257. pysteam_client-1.4.6/steam/protobufs/webuimessages_screensaver_pb2.py +49 -0
  258. pysteam_client-1.4.6/steam/protobufs/webuimessages_screensaver_pb2.pyi +67 -0
  259. pysteam_client-1.4.6/steam/protobufs/webuimessages_sharedjscontext_pb2.py +49 -0
  260. pysteam_client-1.4.6/steam/protobufs/webuimessages_sharedjscontext_pb2.pyi +97 -0
  261. pysteam_client-1.4.6/steam/protobufs/webuimessages_sleep_pb2.py +67 -0
  262. pysteam_client-1.4.6/steam/protobufs/webuimessages_sleep_pb2.pyi +217 -0
  263. pysteam_client-1.4.6/steam/protobufs/webuimessages_steamengine_pb2.py +60 -0
  264. pysteam_client-1.4.6/steam/protobufs/webuimessages_steamengine_pb2.pyi +197 -0
  265. pysteam_client-1.4.6/steam/protobufs/webuimessages_steaminput_pb2.py +160 -0
  266. pysteam_client-1.4.6/steam/protobufs/webuimessages_steaminput_pb2.pyi +1484 -0
  267. pysteam_client-1.4.6/steam/protobufs/webuimessages_steamos_pb2.py +125 -0
  268. pysteam_client-1.4.6/steam/protobufs/webuimessages_steamos_pb2.pyi +788 -0
  269. pysteam_client-1.4.6/steam/protobufs/webuimessages_storagedevicemanager_pb2.py +79 -0
  270. pysteam_client-1.4.6/steam/protobufs/webuimessages_storagedevicemanager_pb2.pyi +402 -0
  271. pysteam_client-1.4.6/steam/protobufs/webuimessages_systemmanager_pb2.py +50 -0
  272. pysteam_client-1.4.6/steam/protobufs/webuimessages_systemmanager_pb2.pyi +80 -0
  273. pysteam_client-1.4.6/steam/protobufs/webuimessages_transport_pb2.py +48 -0
  274. pysteam_client-1.4.6/steam/protobufs/webuimessages_transport_pb2.pyi +63 -0
  275. pysteam_client-1.4.6/steam/protobufs/webuimessages_transportvalidation_pb2.py +104 -0
  276. pysteam_client-1.4.6/steam/protobufs/webuimessages_transportvalidation_pb2.pyi +525 -0
  277. pysteam_client-1.4.6/steam/protobufs/webuimessages_user_pb2.py +50 -0
  278. pysteam_client-1.4.6/steam/protobufs/webuimessages_user_pb2.pyi +93 -0
  279. pysteam_client-1.4.6/steam/py.typed +0 -0
  280. pysteam_client-1.4.6/steam/steamid.py +631 -0
  281. pysteam_client-1.4.6/steam/utils/__init__.py +98 -0
  282. pysteam_client-1.4.6/steam/utils/appcache.py +161 -0
  283. pysteam_client-1.4.6/steam/utils/binary.py +69 -0
  284. pysteam_client-1.4.6/steam/utils/proto.py +110 -0
  285. pysteam_client-1.4.6/steam/utils/throttle.py +64 -0
  286. pysteam_client-1.4.6/steam/utils/web.py +24 -0
  287. pysteam_client-1.4.6/steam/versions_report/__init__.py +55 -0
  288. pysteam_client-1.4.6/steam/versions_report/__main__.py +4 -0
  289. pysteam_client-1.4.6/steam/webapi.py +535 -0
  290. pysteam_client-1.4.6/steam/webauth.py +495 -0
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2015 Rossen Georgiev <rossen@rgp.io>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,225 @@
1
+ Metadata-Version: 2.1
2
+ Name: pysteam-client
3
+ Version: 1.4.6
4
+ Summary: Module for interacting with various Steam features
5
+ Home-page: https://github.com/ValvePython/steam
6
+ License: MIT
7
+ Keywords: valve,steam,steamid,api,webapi,steamcommunity
8
+ Author: Rossen Georgiev
9
+ Author-email: rossen@rgp.io
10
+ Requires-Python: >=3.13.11,<4.0.0
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Natural Language :: English
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Provides-Extra: client
19
+ Requires-Dist: cachetools (>=3.0.0)
20
+ Requires-Dist: gevent (>=1.5.0) ; extra == "client"
21
+ Requires-Dist: gevent-eventemitter (>=2.1) ; extra == "client"
22
+ Requires-Dist: protobuf (>=5.26,<7) ; extra == "client"
23
+ Requires-Dist: pycryptodomex (>=3.7.0)
24
+ Requires-Dist: requests (>=2.9.1)
25
+ Requires-Dist: six (>=1.10.0)
26
+ Requires-Dist: urllib3 (<2)
27
+ Requires-Dist: vdf (>=3.3)
28
+ Project-URL: Repository, https://github.com/H47R15/steam
29
+ Description-Content-Type: text/x-rst
30
+
31
+ steam
32
+ =====
33
+
34
+ Python client for the Steam network — CM protocol, PICS / CDN, WebAuth,
35
+ Web API, Steam Guard, SteamIDs, master-server queries.
36
+
37
+ **This is a fork of** `ValvePython/steam <https://github.com/ValvePython/steam>`_
38
+ maintained under `H47R15/steam <https://github.com/H47R15/steam>`_. The
39
+ upstream project is largely inactive; this fork exists to keep the library
40
+ working against modern Python and current Steam wire protocols.
41
+
42
+ What changed vs. upstream
43
+ -------------------------
44
+
45
+ * **Python 3.13+ only.** Dropped the py2 / py<3.4 compat shims (``six``,
46
+ ``six.moves``, ``raw_input``, ``xrange``, ``long``, ``win_inet_pton``,
47
+ ``backports.lzma``, ``enum34``, …).
48
+ * **Modern protobuf runtime + regenerated ``_pb2`` files.** Bumped from
49
+ ``protobuf==3.20.3`` to ``>=5.26,<7`` and re-ran ``protoc`` (v33.2) against
50
+ fresh SteamDB proto sources. The old per-message
51
+ ``_reflection.GeneratedProtocolMessageType`` codegen shrunk ~20× to the
52
+ modern ``_descriptor_pool.AddSerializedFile`` + ``_builder`` pattern
53
+ (``steammessages_base_pb2.py``: 2 200 → 96 lines).
54
+ * **Full ``.pyi`` type stubs** for every ``_pb2`` file via ``mypy-protobuf``
55
+ — ``msg.field`` accesses now type-check under Pylance / pyright.
56
+ * **Poetry-first workflow.** ``pip`` + ``Makefile`` + ``setup.py``
57
+ replaced by a single ``pyproject.toml``; regeneration steps registered as
58
+ ``poetry run pb-*`` console scripts (details below).
59
+ * **~50 new proto files** picked up from upstream since the fork was last
60
+ synced (family groups, game recording, remote client, SteamOS webui
61
+ messages, HTML messages, virtual controller, community messages, and
62
+ more). ``steam/enums/proto.py`` grew from 90 → 247 enums.
63
+ * Real latent bug fixes surfaced while porting — e.g. a ``list + map(...)``
64
+ ``TypeError`` in ``struct.py``, a tuple-vs-int mismatch in
65
+ ``MarketingMessage.flags``, ``hexlify(None)`` in avatar-URL fallback,
66
+ broken ``CookieJar`` iteration in ``WebAuth``.
67
+
68
+ Requirements
69
+ ------------
70
+
71
+ * Python **3.13.11** (pinned via ``pyproject.toml``). Any newer 3.13.x is
72
+ fine. Older Pythons are not supported.
73
+ * `Poetry <https://python-poetry.org/>`_ for dependency management.
74
+ * ``protoc`` on ``PATH`` — required only when regenerating the ``_pb2``
75
+ files (``poetry run pb-compile``). Install via ``brew install protobuf``
76
+ on macOS or the equivalent from your distro.
77
+
78
+ Install
79
+ -------
80
+
81
+ Clone the repo and install with poetry:
82
+
83
+ .. code:: bash
84
+
85
+ git clone https://github.com/H47R15/steam.git
86
+ cd steam
87
+ poetry install --with dev --extras client
88
+
89
+ The ``client`` extra pulls in ``gevent`` + ``protobuf`` + ``gevent-eventemitter``
90
+ — required by ``SteamClient`` and CDN. Without it, only the
91
+ ``requests``-based subset (WebAPI / WebAuth / SteamID / master-server
92
+ query) is functional.
93
+
94
+ Features
95
+ --------
96
+
97
+ * **SteamClient** — CM protocol client on top of gevent. Login flows
98
+ (password / QR / refresh token), PICS product info, friends list, chat,
99
+ game coordinator hooks.
100
+ * **CDNClient** — content depot downloads with manifest parsing.
101
+ * **WebAuth / MobileWebAuth** — obtain authenticated ``requests.Session``
102
+ cookies for ``store.steampowered.com`` / ``steamcommunity.com``.
103
+ * **WebAPI** — thin wrapper around Steam's ``api.steampowered.com`` that
104
+ introspects the interface catalogue at construction time.
105
+ * **SteamAuthenticator** — enable / disable / verify Steam Guard 2FA.
106
+ * **SteamID** — parse and convert between the 32-bit / 64-bit /
107
+ ``STEAM_X:Y:Z`` / community-URL representations.
108
+ * **Master server query protocol** — query masters directly or through
109
+ ``SteamClient``.
110
+
111
+ Dev workflow (poetry)
112
+ ---------------------
113
+
114
+ All commands run from the repo root.
115
+
116
+ .. code:: bash
117
+
118
+ poetry install --with dev --extras client # install everything
119
+ poetry run pytest # run the test suite (~83 tests, ~1s)
120
+ poetry run pytest -k test_webauth # filter to a subset
121
+ poetry run pytest --tb=short -q # concise output
122
+
123
+ poetry run pylint steam # optional lint pass
124
+
125
+ Regenerating protobufs
126
+ ----------------------
127
+
128
+ The ``_pb2.py`` and ``_pb2.pyi`` files under ``steam/protobufs`` are
129
+ generated from ``.proto`` sources under ``protobufs/``. Console scripts:
130
+
131
+ .. code:: bash
132
+
133
+ poetry run pb-fetch # download + normalize .proto files from SteamDB
134
+ poetry run pb-compile # protoc --python_out --mypy_out + post-process
135
+ poetry run pb-services # regenerate steam/core/msg/unified.py service map
136
+ poetry run pb-gen-enums # regenerate steam/enums/proto.py from *_pb2
137
+
138
+ poetry run pb-update # all four in sequence — the usual entry point
139
+
140
+ ``pb-fetch`` reads URLs from ``protobuf_list.txt`` (comments and blank
141
+ lines skipped) and downloads them into ``protobufs/``. Locally-maintained
142
+ ``.proto`` files (``gc.proto``, ``test_messages.proto``) are set aside via
143
+ ``.notouch`` rename before the fetch and restored after.
144
+
145
+ ``pb-compile`` wipes ``steam/protobufs/*_pb2.{py,pyi}`` first, then runs a
146
+ single ``protoc`` invocation over every ``.proto``. Post-processing:
147
+
148
+ * ``.py`` — sibling protobuf imports get the ``steam.protobufs.`` prefix
149
+ so runtime import works without ``steam/protobufs/`` on ``sys.path``.
150
+ * ``.pyi`` — ``DESCRIPTOR: _descriptor.Descriptor`` overrides inside each
151
+ message class are stripped (they trip
152
+ ``reportIncompatibleVariableOverride`` under types-protobuf 7.34+; the
153
+ parent ``Message`` class's union type is inherited instead).
154
+
155
+ VCR fixtures
156
+ ------------
157
+
158
+ Web-facing tests (``test_webapi.py``, ``test_webauth.py``,
159
+ ``test_steamid.py``) replay recorded HTTP fixtures from ``vcr/*.yaml`` in
160
+ ``RecordMode.NONE`` — no live network, no credentials needed for CI.
161
+
162
+ To regenerate the ``webapi.yaml`` cassette against a fresh Steam API
163
+ response, copy ``.env.example`` to ``.env`` and fill in ``STEAM_API_KEY``
164
+ (see the template for instructions on where to get one), then follow the
165
+ regen recipe at the top of ``tests/test_webapi.py``.
166
+
167
+ The ``webauth_*.yaml`` cassettes are regenerated by
168
+ ``tests/generete_webauth_vcr.py`` — needs real Steam credentials at run
169
+ time; run interactively when the anonymized replay drifts from live.
170
+
171
+ Live smoke test
172
+ ---------------
173
+
174
+ Beyond the unit suite, the CM handshake / anonymous-login / PICS-fetch
175
+ end-to-end flow can be smoke-tested against live Steam:
176
+
177
+ .. code:: python
178
+
179
+ from steam.client import SteamClient
180
+
181
+ client = SteamClient()
182
+ assert client.anonymous_login()
183
+ resp = client.get_product_info(apps=[553850], timeout=15) # Helldivers 2
184
+ print(resp['apps'][553850]['common']['name'])
185
+ client.logout()
186
+ client.disconnect()
187
+
188
+ Layout
189
+ ------
190
+
191
+ .. code::
192
+
193
+ steam/
194
+ ├── steam/ # library source
195
+ │ ├── client/ # SteamClient, CDN, builtins/*
196
+ │ ├── core/ # CM protocol, message framing
197
+ │ ├── enums/ # SteamIntEnum wrappers (common.py hand-written,
198
+ │ │ # proto.py auto-generated by pb-gen-enums)
199
+ │ ├── protobufs/ # generated *_pb2.py + *_pb2.pyi
200
+ │ └── utils/
201
+ ├── scripts/ # poetry console-script entry points (pb-*)
202
+ ├── protobufs/ # .proto sources (fetched by pb-fetch)
203
+ ├── typings/ # local pyright stubs (see typings/…/builder.pyi
204
+ │ # for the BuildServices typeshed override)
205
+ ├── tests/ # pytest suite
206
+ ├── vcr/ # recorded HTTP fixtures for offline test replay
207
+ ├── docs/ # Sphinx source (rendered at steam.readthedocs.io
208
+ │ # — kept in-tree but not currently deployed
209
+ │ # from this fork)
210
+ └── pyproject.toml # poetry config + [tool.pyright]
211
+
212
+ Upstream links (reference only — refer to this fork for maintained code):
213
+
214
+ * Upstream: https://github.com/ValvePython/steam
215
+ * Old docs: https://steam.readthedocs.io/en/latest/ (mostly still
216
+ applicable — the library shape has not diverged from upstream, only its
217
+ Python-runtime and protobuf-vintage baseline)
218
+ * Command-line companion (unmaintained upstream):
219
+ https://github.com/ValvePython/steamctl
220
+
221
+ License
222
+ -------
223
+
224
+ MIT (unchanged from upstream). See ``LICENSE``.
225
+
@@ -0,0 +1,194 @@
1
+ steam
2
+ =====
3
+
4
+ Python client for the Steam network — CM protocol, PICS / CDN, WebAuth,
5
+ Web API, Steam Guard, SteamIDs, master-server queries.
6
+
7
+ **This is a fork of** `ValvePython/steam <https://github.com/ValvePython/steam>`_
8
+ maintained under `H47R15/steam <https://github.com/H47R15/steam>`_. The
9
+ upstream project is largely inactive; this fork exists to keep the library
10
+ working against modern Python and current Steam wire protocols.
11
+
12
+ What changed vs. upstream
13
+ -------------------------
14
+
15
+ * **Python 3.13+ only.** Dropped the py2 / py<3.4 compat shims (``six``,
16
+ ``six.moves``, ``raw_input``, ``xrange``, ``long``, ``win_inet_pton``,
17
+ ``backports.lzma``, ``enum34``, …).
18
+ * **Modern protobuf runtime + regenerated ``_pb2`` files.** Bumped from
19
+ ``protobuf==3.20.3`` to ``>=5.26,<7`` and re-ran ``protoc`` (v33.2) against
20
+ fresh SteamDB proto sources. The old per-message
21
+ ``_reflection.GeneratedProtocolMessageType`` codegen shrunk ~20× to the
22
+ modern ``_descriptor_pool.AddSerializedFile`` + ``_builder`` pattern
23
+ (``steammessages_base_pb2.py``: 2 200 → 96 lines).
24
+ * **Full ``.pyi`` type stubs** for every ``_pb2`` file via ``mypy-protobuf``
25
+ — ``msg.field`` accesses now type-check under Pylance / pyright.
26
+ * **Poetry-first workflow.** ``pip`` + ``Makefile`` + ``setup.py``
27
+ replaced by a single ``pyproject.toml``; regeneration steps registered as
28
+ ``poetry run pb-*`` console scripts (details below).
29
+ * **~50 new proto files** picked up from upstream since the fork was last
30
+ synced (family groups, game recording, remote client, SteamOS webui
31
+ messages, HTML messages, virtual controller, community messages, and
32
+ more). ``steam/enums/proto.py`` grew from 90 → 247 enums.
33
+ * Real latent bug fixes surfaced while porting — e.g. a ``list + map(...)``
34
+ ``TypeError`` in ``struct.py``, a tuple-vs-int mismatch in
35
+ ``MarketingMessage.flags``, ``hexlify(None)`` in avatar-URL fallback,
36
+ broken ``CookieJar`` iteration in ``WebAuth``.
37
+
38
+ Requirements
39
+ ------------
40
+
41
+ * Python **3.13.11** (pinned via ``pyproject.toml``). Any newer 3.13.x is
42
+ fine. Older Pythons are not supported.
43
+ * `Poetry <https://python-poetry.org/>`_ for dependency management.
44
+ * ``protoc`` on ``PATH`` — required only when regenerating the ``_pb2``
45
+ files (``poetry run pb-compile``). Install via ``brew install protobuf``
46
+ on macOS or the equivalent from your distro.
47
+
48
+ Install
49
+ -------
50
+
51
+ Clone the repo and install with poetry:
52
+
53
+ .. code:: bash
54
+
55
+ git clone https://github.com/H47R15/steam.git
56
+ cd steam
57
+ poetry install --with dev --extras client
58
+
59
+ The ``client`` extra pulls in ``gevent`` + ``protobuf`` + ``gevent-eventemitter``
60
+ — required by ``SteamClient`` and CDN. Without it, only the
61
+ ``requests``-based subset (WebAPI / WebAuth / SteamID / master-server
62
+ query) is functional.
63
+
64
+ Features
65
+ --------
66
+
67
+ * **SteamClient** — CM protocol client on top of gevent. Login flows
68
+ (password / QR / refresh token), PICS product info, friends list, chat,
69
+ game coordinator hooks.
70
+ * **CDNClient** — content depot downloads with manifest parsing.
71
+ * **WebAuth / MobileWebAuth** — obtain authenticated ``requests.Session``
72
+ cookies for ``store.steampowered.com`` / ``steamcommunity.com``.
73
+ * **WebAPI** — thin wrapper around Steam's ``api.steampowered.com`` that
74
+ introspects the interface catalogue at construction time.
75
+ * **SteamAuthenticator** — enable / disable / verify Steam Guard 2FA.
76
+ * **SteamID** — parse and convert between the 32-bit / 64-bit /
77
+ ``STEAM_X:Y:Z`` / community-URL representations.
78
+ * **Master server query protocol** — query masters directly or through
79
+ ``SteamClient``.
80
+
81
+ Dev workflow (poetry)
82
+ ---------------------
83
+
84
+ All commands run from the repo root.
85
+
86
+ .. code:: bash
87
+
88
+ poetry install --with dev --extras client # install everything
89
+ poetry run pytest # run the test suite (~83 tests, ~1s)
90
+ poetry run pytest -k test_webauth # filter to a subset
91
+ poetry run pytest --tb=short -q # concise output
92
+
93
+ poetry run pylint steam # optional lint pass
94
+
95
+ Regenerating protobufs
96
+ ----------------------
97
+
98
+ The ``_pb2.py`` and ``_pb2.pyi`` files under ``steam/protobufs`` are
99
+ generated from ``.proto`` sources under ``protobufs/``. Console scripts:
100
+
101
+ .. code:: bash
102
+
103
+ poetry run pb-fetch # download + normalize .proto files from SteamDB
104
+ poetry run pb-compile # protoc --python_out --mypy_out + post-process
105
+ poetry run pb-services # regenerate steam/core/msg/unified.py service map
106
+ poetry run pb-gen-enums # regenerate steam/enums/proto.py from *_pb2
107
+
108
+ poetry run pb-update # all four in sequence — the usual entry point
109
+
110
+ ``pb-fetch`` reads URLs from ``protobuf_list.txt`` (comments and blank
111
+ lines skipped) and downloads them into ``protobufs/``. Locally-maintained
112
+ ``.proto`` files (``gc.proto``, ``test_messages.proto``) are set aside via
113
+ ``.notouch`` rename before the fetch and restored after.
114
+
115
+ ``pb-compile`` wipes ``steam/protobufs/*_pb2.{py,pyi}`` first, then runs a
116
+ single ``protoc`` invocation over every ``.proto``. Post-processing:
117
+
118
+ * ``.py`` — sibling protobuf imports get the ``steam.protobufs.`` prefix
119
+ so runtime import works without ``steam/protobufs/`` on ``sys.path``.
120
+ * ``.pyi`` — ``DESCRIPTOR: _descriptor.Descriptor`` overrides inside each
121
+ message class are stripped (they trip
122
+ ``reportIncompatibleVariableOverride`` under types-protobuf 7.34+; the
123
+ parent ``Message`` class's union type is inherited instead).
124
+
125
+ VCR fixtures
126
+ ------------
127
+
128
+ Web-facing tests (``test_webapi.py``, ``test_webauth.py``,
129
+ ``test_steamid.py``) replay recorded HTTP fixtures from ``vcr/*.yaml`` in
130
+ ``RecordMode.NONE`` — no live network, no credentials needed for CI.
131
+
132
+ To regenerate the ``webapi.yaml`` cassette against a fresh Steam API
133
+ response, copy ``.env.example`` to ``.env`` and fill in ``STEAM_API_KEY``
134
+ (see the template for instructions on where to get one), then follow the
135
+ regen recipe at the top of ``tests/test_webapi.py``.
136
+
137
+ The ``webauth_*.yaml`` cassettes are regenerated by
138
+ ``tests/generete_webauth_vcr.py`` — needs real Steam credentials at run
139
+ time; run interactively when the anonymized replay drifts from live.
140
+
141
+ Live smoke test
142
+ ---------------
143
+
144
+ Beyond the unit suite, the CM handshake / anonymous-login / PICS-fetch
145
+ end-to-end flow can be smoke-tested against live Steam:
146
+
147
+ .. code:: python
148
+
149
+ from steam.client import SteamClient
150
+
151
+ client = SteamClient()
152
+ assert client.anonymous_login()
153
+ resp = client.get_product_info(apps=[553850], timeout=15) # Helldivers 2
154
+ print(resp['apps'][553850]['common']['name'])
155
+ client.logout()
156
+ client.disconnect()
157
+
158
+ Layout
159
+ ------
160
+
161
+ .. code::
162
+
163
+ steam/
164
+ ├── steam/ # library source
165
+ │ ├── client/ # SteamClient, CDN, builtins/*
166
+ │ ├── core/ # CM protocol, message framing
167
+ │ ├── enums/ # SteamIntEnum wrappers (common.py hand-written,
168
+ │ │ # proto.py auto-generated by pb-gen-enums)
169
+ │ ├── protobufs/ # generated *_pb2.py + *_pb2.pyi
170
+ │ └── utils/
171
+ ├── scripts/ # poetry console-script entry points (pb-*)
172
+ ├── protobufs/ # .proto sources (fetched by pb-fetch)
173
+ ├── typings/ # local pyright stubs (see typings/…/builder.pyi
174
+ │ # for the BuildServices typeshed override)
175
+ ├── tests/ # pytest suite
176
+ ├── vcr/ # recorded HTTP fixtures for offline test replay
177
+ ├── docs/ # Sphinx source (rendered at steam.readthedocs.io
178
+ │ # — kept in-tree but not currently deployed
179
+ │ # from this fork)
180
+ └── pyproject.toml # poetry config + [tool.pyright]
181
+
182
+ Upstream links (reference only — refer to this fork for maintained code):
183
+
184
+ * Upstream: https://github.com/ValvePython/steam
185
+ * Old docs: https://steam.readthedocs.io/en/latest/ (mostly still
186
+ applicable — the library shape has not diverged from upstream, only its
187
+ Python-runtime and protobuf-vintage baseline)
188
+ * Command-line companion (unmaintained upstream):
189
+ https://github.com/ValvePython/steamctl
190
+
191
+ License
192
+ -------
193
+
194
+ MIT (unchanged from upstream). See ``LICENSE``.
@@ -0,0 +1,190 @@
1
+ [tool.poetry]
2
+ # ``name`` is the distribution name on PyPI (``pip install pysteam-client``);
3
+ # ``packages`` below keeps the import module ``steam`` unchanged so consumer
4
+ # code still writes ``from steam.client import SteamClient``. The upstream
5
+ # ``steam`` distribution name on PyPI is owned by ValvePython since 2013,
6
+ # so the fork lives under a scoped name here.
7
+ name = "pysteam-client"
8
+ version = "1.4.6"
9
+ description = "Module for interacting with various Steam features"
10
+ authors = ["Rossen Georgiev <rossen@rgp.io>"]
11
+ license = "MIT"
12
+ readme = "README.rst"
13
+ homepage = "https://github.com/ValvePython/steam"
14
+ repository = "https://github.com/H47R15/steam"
15
+ keywords = ["valve", "steam", "steamid", "api", "webapi", "steamcommunity"]
16
+ classifiers = [
17
+ "Development Status :: 5 - Production/Stable",
18
+ "Natural Language :: English",
19
+ "Intended Audience :: Developers",
20
+ "License :: OSI Approved :: MIT License",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3.13",
23
+ ]
24
+ packages = [
25
+ { include = "steam" },
26
+ # Dev-only helpers exposed as poetry console scripts (see
27
+ # ``[tool.poetry.scripts]`` below). Shipped alongside the runtime
28
+ # package so ``poetry install`` registers the ``pb-*`` entrypoints on
29
+ # PATH — the modules themselves are only imported when a script is
30
+ # explicitly invoked, so pulling them in has zero runtime cost for
31
+ # library consumers.
32
+ { include = "scripts" },
33
+ ]
34
+
35
+ # ─── console scripts ─────────────────────────────────────────────
36
+ #
37
+ # After ``poetry install`` these are on PATH inside the venv, so a
38
+ # maintainer can run e.g. ``poetry run pb-compile`` from the package
39
+ # root without spelling out the full ``python scripts/…`` path.
40
+ [tool.poetry.scripts]
41
+ pb-fetch = "scripts.pb_fetch:main"
42
+ pb-compile = "scripts.pb_compile:main"
43
+ pb-services = "scripts.pb_services:main"
44
+ pb-gen-enums = "scripts.pb_gen_enums:main"
45
+ pb-update = "scripts.pb_update:main"
46
+ vcr-webapi = "scripts.vcr_webapi:main" # regen vcr/webapi.yaml (needs STEAM_API_KEY)
47
+ vcr-webauth = "scripts.vcr_webauth:main" # regen vcr/webauth_*.yaml (interactive)
48
+
49
+ [tool.poetry.dependencies]
50
+ # Pinned to Python 3.13.11.
51
+ python = "^3.13.11"
52
+
53
+ # ─── runtime deps (from the original setup.py) ────────────────────
54
+ #
55
+ # The legacy ``win-inet-pton`` (py2.7 Windows shim) and
56
+ # ``enum34`` (py<3.4 stdlib backport) constraints from setup.py
57
+ # were dropped — this fork targets py3.13 only, both are provided
58
+ # by the modern stdlib.
59
+ pycryptodomex = ">=3.7.0"
60
+ requests = ">=2.9.1"
61
+ urllib3 = "<2"
62
+ vdf = ">=3.3"
63
+ cachetools = ">=3.0.0"
64
+ # ``six`` is a py2/py3 compat shim. Kept because the fork's
65
+ # source still imports it in a few places; harmless on py3.13.
66
+ six = ">=1.10.0"
67
+
68
+ # ─── client extra (optional deps) ─────────────────────────────────
69
+ #
70
+ # The ``client`` extra pulls in the gevent-based SteamClient — same
71
+ # split as the original setup.py's ``install_extras['client']``.
72
+ # Enable with: poetry install --extras client
73
+ #
74
+ # ``protobuf`` bumped from the original ``~=3.0`` to ``>=5.26,<7``.
75
+ # The fork's ``steam/protobufs/*_pb2.py`` were originally protoc-3.x
76
+ # generated (per-message ``_reflection.GeneratedProtocolMessageType``
77
+ # + ``_sym_db.RegisterMessage``); protoc-5.x/6.x emits far cleaner
78
+ # code (``_descriptor_pool.AddSerializedFile`` + ``_builder`` — 20×
79
+ # smaller files, zero descriptor-mutation, works cleanly under
80
+ # Pylance). Runtime protobuf 5.26+ has ``google.protobuf.runtime_version``
81
+ # which the modern codegen calls at import time to validate the
82
+ # generator/runtime pair — 5.26 is the earliest release that ships
83
+ # it, and py3.13 wheels ship from 5.28 onward. Upper bound ``<7``
84
+ # reserves the next major bump for a deliberate migration, not an
85
+ # accidental one.
86
+ gevent = { version = ">=1.5.0", optional = true }
87
+ protobuf = { version = ">=5.26,<7", optional = true }
88
+ gevent-eventemitter = { version = ">=2.1", optional = true }
89
+
90
+ [tool.poetry.extras]
91
+ client = ["gevent", "protobuf", "gevent-eventemitter"]
92
+
93
+ # ─── dev deps (from the original dev_requirements.txt) ────────────
94
+ #
95
+ # ``mock`` is part of the stdlib as ``unittest.mock`` on py3.3+,
96
+ # but the fork's test files still ``import mock`` (the
97
+ # py2.7-compatible pattern) so we keep the PyPI ``mock`` package
98
+ # as a dev dep — it's a stdlib passthrough on modern Python,
99
+ # harmless overhead, and rewriting the 7 test files to
100
+ # ``from unittest import mock`` would be pure churn.
101
+ # ``coveralls-python`` git fork was py2.7-specific and was dropped.
102
+ # Everything else was bumped past the py3.13 wheel cliff (vcrpy
103
+ # 2.x has no py3.13 wheels; 5.x does).
104
+ [tool.poetry.group.dev.dependencies]
105
+ mock = ">=5.0"
106
+ vcrpy = ">=5.0"
107
+ PyYAML = ">=6.0"
108
+ coverage = ">=7.0"
109
+ pytest = ">=8.0"
110
+ pytest-cov = ">=4.0"
111
+ coveralls = ">=3.3"
112
+ deptry = "^0.23.0"
113
+ # Typeshed stubs for the ``google.protobuf`` runtime — gives Pylance
114
+ # the base ``Message`` class's methods (``ParseFromString`` /
115
+ # ``SerializeToString`` / …) that the domain ``.pyi`` stubs below
116
+ # inherit from. Dev-only because it ships only ``.pyi`` files with
117
+ # no runtime impact.
118
+ types-protobuf = ">=4.24"
119
+ # ``mypy-protobuf`` ships a ``protoc-gen-mypy`` plugin that emits
120
+ # a ``.pyi`` companion next to every ``*_pb2.py`` when protoc is
121
+ # invoked with ``--mypy_out``. Dev-only — used by the ``pb_compile``
122
+ # Makefile target when regenerating from upstream ``.proto`` files;
123
+ # never imported at runtime.
124
+ #
125
+ # ``mypy-protobuf`` bumped to the modern line now that the runtime
126
+ # ``protobuf`` pin is ``>=5.26`` — 5.x mypy-protobuf matches the
127
+ # 5.x/6.x protoc + runtime that Pylance's typeshed stubs are
128
+ # generated against, so the emitted ``.pyi`` files line up with what
129
+ # static analysers already expect.
130
+ mypy-protobuf = ">=3.6"
131
+
132
+ # ─── deptry ignores ───────────────────────────────────────────────
133
+ #
134
+ # The client extras are legitimately optional runtime deps that the
135
+ # fork's non-client modules don't import — deptry's DEP002 (unused)
136
+ # would flag them under a default install, so ignore explicitly.
137
+ python-dotenv = "^1.2.2"
138
+ [tool.deptry.per_rule_ignores]
139
+ DEP002 = ["gevent", "protobuf", "gevent-eventemitter", "six", "types-protobuf", "mypy-protobuf"]
140
+
141
+ [tool.deptry.package_module_name_map]
142
+ # Underscore vs hyphen in the extras names.
143
+ gevent_eventemitter = "gevent-eventemitter"
144
+
145
+ # ─── pyright / Pylance ─────────────────────────────────
146
+ #
147
+ # ``stubPath = "typings"`` points pyright at our local stub overrides
148
+ # under ``typings/`` (default pyright convention, but must be enabled
149
+ # explicitly). Currently patches one typeshed bug:
150
+ # google/protobuf/internal/builder.pyi — ``BuildServices`` param typing
151
+ # See the stub file's docstring for the full rationale.
152
+ [tool.pyright]
153
+ stubPath = "typings"
154
+
155
+ # ─── semantic-release ──────────────────
156
+ [tool.semantic_release]
157
+ version_toml = [ "pyproject.toml:tool.poetry.version" ]
158
+ version_source = "toml"
159
+ branch = "master"
160
+ upload_to_PyPI = false
161
+ github_release = false
162
+ commit_author = "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
163
+ upload_to_release = false
164
+ tag_format = "steam-v{version}"
165
+
166
+ [tool.semantic_release.commit_parser_options]
167
+ allowed_tags = [
168
+ "build",
169
+ "chore",
170
+ "ci",
171
+ "docs",
172
+ "feat",
173
+ "fix",
174
+ "perf",
175
+ "style",
176
+ "refactor",
177
+ "test",
178
+ "MAJOR",
179
+ "BREAKING",
180
+ "breaking",
181
+ "BREAKING CHANGE",
182
+ "breaking change",
183
+ ]
184
+ minor_tags = ["feat"]
185
+ patch_tags = ["fix", "perf"]
186
+ major_tags = ["MAJOR", "BREAKING", "BREAKING CHANGE", "breaking change"]
187
+
188
+ [build-system]
189
+ requires = ["poetry-core"]
190
+ build-backend = "poetry.core.masonry.api"
@@ -0,0 +1,7 @@
1
+ """Dev-only helpers exposed as poetry console scripts.
2
+
3
+ See ``pyproject.toml``'s ``[tool.poetry.scripts]`` block for the console
4
+ entries (``pb-fetch`` / ``pb-compile`` / ``pb-services`` / ``pb-gen-enums``
5
+ / ``pb-update``). Each is a thin wrapper around one of this package's
6
+ ``main()`` functions.
7
+ """