dublib 0.23.2__tar.gz → 0.23.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.
Files changed (41) hide show
  1. {dublib-0.23.2/src/dublib.egg-info → dublib-0.23.4}/PKG-INFO +1 -1
  2. {dublib-0.23.2 → dublib-0.23.4}/pyproject.toml +1 -1
  3. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/Terminalyzer.py +5 -4
  4. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/WebRequestor.py +49 -30
  5. {dublib-0.23.2 → dublib-0.23.4/src/dublib.egg-info}/PKG-INFO +1 -1
  6. {dublib-0.23.2 → dublib-0.23.4}/LICENSE +0 -0
  7. {dublib-0.23.2 → dublib-0.23.4}/README.md +0 -0
  8. {dublib-0.23.2 → dublib-0.23.4}/setup.cfg +0 -0
  9. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/Templates/Bus.py +0 -0
  10. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/Templates/__init__.py +0 -0
  11. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/TextStyler/Codes.py +0 -0
  12. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/TextStyler/Escapes.py +0 -0
  13. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/TextStyler/FastStyler.py +0 -0
  14. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/TextStyler/__init__.py +0 -0
  15. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/CLI/readline.py +0 -0
  16. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Core.py +0 -0
  17. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Engine/Bus.py +0 -0
  18. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Engine/Configurator.py +0 -0
  19. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Engine/GetText.py +0 -0
  20. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Engine/Patcher.py +0 -0
  21. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Exceptions/CLI.py +0 -0
  22. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Exceptions/TelebotUtils.py +0 -0
  23. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Exceptions/WebRequestor.py +0 -0
  24. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Exceptions/__init__.py +0 -0
  25. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Methods/Data.py +0 -0
  26. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Methods/Decorators.py +0 -0
  27. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Methods/Filesystem.py +0 -0
  28. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Methods/System.py +0 -0
  29. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Polyglot/HTML.py +0 -0
  30. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Polyglot/Markdown.py +0 -0
  31. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/Polyglot/__init__.py +0 -0
  32. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/TelebotUtils/Cache.py +0 -0
  33. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/TelebotUtils/Master/Decorators.py +0 -0
  34. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/TelebotUtils/Master/__init__.py +0 -0
  35. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/TelebotUtils/Users.py +0 -0
  36. {dublib-0.23.2 → dublib-0.23.4}/src/dublib/TelebotUtils/__init__.py +0 -0
  37. {dublib-0.23.2 → dublib-0.23.4}/src/dublib.egg-info/SOURCES.txt +0 -0
  38. {dublib-0.23.2 → dublib-0.23.4}/src/dublib.egg-info/dependency_links.txt +0 -0
  39. {dublib-0.23.2 → dublib-0.23.4}/src/dublib.egg-info/requires.txt +0 -0
  40. {dublib-0.23.2 → dublib-0.23.4}/src/dublib.egg-info/top_level.txt +0 -0
  41. {dublib-0.23.2 → dublib-0.23.4}/tests/test_Polyglot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dublib
3
- Version: 0.23.2
3
+ Version: 0.23.4
4
4
  Summary: Коллекция полезных модулей от DUB1401.
5
5
  Author-email: DUB1401 <vlad.milosta@outlook.com>
6
6
  License: This is free and unencumbered software released into the public domain.
@@ -3,7 +3,7 @@ requires = ["setuptools"]
3
3
 
4
4
  [project]
5
5
  name = "dublib"
6
- version = "0.23.2"
6
+ version = "0.23.4"
7
7
  description = "Коллекция полезных модулей от DUB1401."
8
8
  authors = [
9
9
  {name = "DUB1401", email = "vlad.milosta@outlook.com"}
@@ -880,7 +880,7 @@ class Helper:
880
880
 
881
881
  #---> Получение данных.
882
882
  #==========================================================================================#
883
- CommandsCategories = {
883
+ CommandsCategories: dict[None | str, list[Command]] = {
884
884
  None: []
885
885
  }
886
886
 
@@ -906,7 +906,9 @@ class Helper:
906
906
  "Descriptions": []
907
907
  }
908
908
 
909
- for CurrentCommand in CommandsCategories[Category]:
909
+ Commands = sorted(CommandsCategories[Category], key = lambda Element: Element.name)
910
+
911
+ for CurrentCommand in Commands:
910
912
  HelpTable["Commands"].append(" " + CurrentCommand.name)
911
913
  HelpTable["Descriptions"].append(CurrentCommand.description or "")
912
914
 
@@ -919,8 +921,7 @@ class Helper:
919
921
  TableObject.add_column(Buffer, HelpTable[ColumnName])
920
922
 
921
923
  TableObject.align = "l"
922
- TableString += TableObject.get_string(header = False)
923
- if len(CommandsCategories.keys()) > 1: TableString = TableString.lstrip()
924
+ TableString += TableObject.get_string(header = False).strip()
924
925
  TableString += "\n\n"
925
926
 
926
927
  self.__Callback(TableString.rstrip())
@@ -563,6 +563,12 @@ class WebResponse:
563
563
 
564
564
  return self.__JSON
565
565
 
566
+ @property
567
+ def ok(self) -> bool:
568
+ """Состояние: можно ли считать запрос успешным."""
569
+
570
+ return self.status_code in self.__GoodCodes
571
+
566
572
  @property
567
573
  def status_code(self) -> int | None:
568
574
  """Код ответа."""
@@ -596,15 +602,22 @@ class WebResponse:
596
602
  # >>>>> ПУБЛИЧНЫЕ МЕТОДЫ <<<<< #
597
603
  #==========================================================================================#
598
604
 
599
- def __init__(self):
605
+ def __init__(self, config: WebConfig | None = None):
600
606
  """Унифицированный контейнер ответа на веб-запросы."""
601
607
 
608
+ self.__GoodCodes = config.good_codes or WebConfig().good_codes
609
+
602
610
  self.__StatusCode = None
603
611
  self.__Content = None
604
612
  self.__JSON = None
605
613
  self.__Text = None
606
614
  self.__Exceptions = list()
607
615
 
616
+ def __bool__(self) -> bool:
617
+ """Интерпретирует ответ в логическое значение: успешен ли запрос."""
618
+
619
+ return self.ok
620
+
608
621
  def __str__(self) -> str:
609
622
  """Интерпретирует ответ в строку."""
610
623
 
@@ -724,10 +737,12 @@ class WebRequestor:
724
737
  # >>>>> МЕТОДЫ ЗАПРОСОВ БИБЛИОТЕКИ CURL_CFFI <<<<< #
725
738
  #==========================================================================================#
726
739
 
727
- def __curl_cffi_GET(self, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None) -> curl_cffi_requests.Response:
740
+ def __curl_cffi_GET(self, response: WebResponse, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None) -> curl_cffi_requests.Response:
728
741
  """
729
742
  Отправляет GET запрос через библиотеку **curl_cffi**.
730
743
 
744
+ :param response: Контейнер ответа.
745
+ :type response: WebResponse
731
746
  :param url: Адрес запроса.
732
747
  :type url: str
733
748
  :param proxy: Данные прокси.
@@ -742,10 +757,9 @@ class WebRequestor:
742
757
  :rtype: requests.Response
743
758
  """
744
759
 
745
- Response = WebResponse()
746
760
  headers = self.__MergeHeaders(headers)
747
761
 
748
- Response.parse_response(self.__Session.get(
762
+ response.parse_response(self.__Session.get(
749
763
  url = url,
750
764
  params = params,
751
765
  headers = headers,
@@ -754,12 +768,14 @@ class WebRequestor:
754
768
  verify = self.__Config.verify_ssl
755
769
  ))
756
770
 
757
- return Response
771
+ return response
758
772
 
759
- def __curl_cffi_POST(self, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None, data: Any = None, json: dict | None = None) -> curl_cffi_requests.Response:
773
+ def __curl_cffi_POST(self, response: WebResponse, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None, data: Any = None, json: dict | None = None) -> curl_cffi_requests.Response:
760
774
  """
761
775
  Отправляет POST запрос через библиотеку **curl_cffi**.
762
776
 
777
+ :param response: Контейнер ответа.
778
+ :type response: WebResponse
763
779
  :param url: Адрес запроса.
764
780
  :type url: str
765
781
  :param proxy: Данные прокси.
@@ -778,10 +794,9 @@ class WebRequestor:
778
794
  :rtype: requests.Response
779
795
  """
780
796
 
781
- Response = WebResponse()
782
797
  headers = self.__MergeHeaders(headers)
783
798
 
784
- Response.parse_response(self.__Session.post(
799
+ response.parse_response(self.__Session.post(
785
800
  url = url,
786
801
  params = params,
787
802
  headers = headers,
@@ -792,16 +807,18 @@ class WebRequestor:
792
807
  verify = self.__Config.verify_ssl
793
808
  ))
794
809
 
795
- return Response
810
+ return response
796
811
 
797
812
  #==========================================================================================#
798
813
  # >>>>> МЕТОДЫ ЗАПРОСОВ БИБЛИОТЕКИ HTTPX <<<<< #
799
814
  #==========================================================================================#
800
815
 
801
- def __httpx_GET(self, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None) -> httpx.Response:
816
+ def __httpx_GET(self, response: WebResponse, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None) -> httpx.Response:
802
817
  """
803
818
  Отправляет GET запрос через библиотеку **httpx**.
804
819
 
820
+ :param response: Контейнер ответа.
821
+ :type response: WebResponse
805
822
  :param url: Адрес запроса.
806
823
  :type url: str
807
824
  :param proxy: Данные прокси.
@@ -816,7 +833,6 @@ class WebRequestor:
816
833
  :rtype: requests.Response
817
834
  """
818
835
 
819
- Response = WebResponse()
820
836
  headers = self.__MergeHeaders(headers)
821
837
  CurrentCookies = self.cookies or dict()
822
838
  cookies = cookies or dict()
@@ -831,14 +847,16 @@ class WebRequestor:
831
847
  verify = self.__Config.verify_ssl
832
848
  )
833
849
 
834
- Response.parse_response(self.__Session.get(url))
850
+ response.parse_response(self.__Session.get(url))
835
851
 
836
- return Response
852
+ return response
837
853
 
838
- def __httpx_POST(self, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None, data: Any = None, json: dict | None = None) -> httpx.Response:
854
+ def __httpx_POST(self, response: WebResponse, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None, data: Any = None, json: dict | None = None) -> httpx.Response:
839
855
  """
840
856
  Отправляет POST запрос через библиотеку **httpx**.
841
857
 
858
+ :param response: Контейнер ответа.
859
+ :type response: WebResponse
842
860
  :param url: Адрес запроса.
843
861
  :type url: str
844
862
  :param proxy: Данные прокси.
@@ -857,7 +875,6 @@ class WebRequestor:
857
875
  :rtype: requests.Response
858
876
  """
859
877
 
860
- Response = WebResponse()
861
878
  headers = self.__MergeHeaders(headers)
862
879
  CurrentCookies = self.cookies or dict()
863
880
  cookies = cookies or dict()
@@ -874,18 +891,20 @@ class WebRequestor:
874
891
  verify = self.__Config.verify_ssl
875
892
  )
876
893
 
877
- Response.parse_response(self.__Session.post(url, data = data, json = json))
894
+ response.parse_response(self.__Session.post(url, data = data, json = json))
878
895
 
879
- return Response
896
+ return response
880
897
 
881
898
  #==========================================================================================#
882
899
  # >>>>> МЕТОДЫ ЗАПРОСОВ БИБЛИОТЕКИ REQUESTS <<<<< #
883
900
  #==========================================================================================#
884
901
 
885
- def __requests_GET(self, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None) -> requests.Response:
902
+ def __requests_GET(self, response: WebResponse, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None) -> requests.Response:
886
903
  """
887
904
  Отправляет GET запрос через библиотеку **requests**.
888
905
 
906
+ :param response: Контейнер ответа.
907
+ :type response: WebResponse
889
908
  :param url: Адрес запроса.
890
909
  :type url: str
891
910
  :param proxy: Данные прокси.
@@ -900,10 +919,9 @@ class WebRequestor:
900
919
  :rtype: requests.Response
901
920
  """
902
921
 
903
- Response = WebResponse()
904
922
  headers = self.__MergeHeaders(headers)
905
923
 
906
- Response.parse_response(self.__Session.get(
924
+ response.parse_response(self.__Session.get(
907
925
  url = url,
908
926
  params = params,
909
927
  headers = headers,
@@ -913,12 +931,14 @@ class WebRequestor:
913
931
  verify = self.__Config.verify_ssl
914
932
  ))
915
933
 
916
- return Response
934
+ return response
917
935
 
918
- def __requests_POST(self, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None, data: Any = None, json: dict | None = None) -> requests.Response:
936
+ def __requests_POST(self, response: WebResponse, url: str, proxy: Proxy | None = None, params: dict | None = None, headers: dict | None = None, cookies: dict | None = None, data: Any = None, json: dict | None = None) -> requests.Response:
919
937
  """
920
938
  Отправляет POST запрос через библиотеку **requests**.
921
939
 
940
+ :param response: Контейнер ответа.
941
+ :type response: WebResponse
922
942
  :param url: Адрес запроса.
923
943
  :type url: str
924
944
  :param proxy: Данные прокси.
@@ -937,10 +957,9 @@ class WebRequestor:
937
957
  :rtype: requests.Response
938
958
  """
939
959
 
940
- Response = WebResponse()
941
960
  headers = self.__MergeHeaders(headers)
942
961
 
943
- Response.parse_response(self.__Session.get(
962
+ response.parse_response(self.__Session.get(
944
963
  url = url,
945
964
  params = params,
946
965
  headers = headers,
@@ -952,7 +971,7 @@ class WebRequestor:
952
971
  verify = self.__Config.verify_ssl
953
972
  ))
954
973
 
955
- return Response
974
+ return response
956
975
 
957
976
  #==========================================================================================#
958
977
  # >>>>> ОБЩИЕ МЕТОДЫ <<<<< #
@@ -1024,17 +1043,17 @@ class WebRequestor:
1024
1043
  """
1025
1044
 
1026
1045
  tries = 1 + self.__Config.retries
1027
- Response = WebResponse()
1046
+ Response = WebResponse(self.__Config)
1028
1047
  Try = 0
1029
1048
  LibName = self.__Config.lib.value
1030
1049
 
1031
- while Try < tries and Response.status_code not in self.__Config.good_codes:
1050
+ while Try < tries and not Response.ok:
1032
1051
  if Try > 0: sleep(self.__Config.delay)
1033
1052
  Try += 1
1034
1053
 
1035
1054
  try:
1036
1055
  CurrentProxy = random.choice(self.__Proxies) if self.__Proxies else None
1037
- Response: WebResponse = self.__RequestsMethods[request_type][self.__Config.lib](url, CurrentProxy, **kwargs)
1056
+ self.__RequestsMethods[request_type][self.__Config.lib](Response, url, CurrentProxy, **kwargs)
1038
1057
 
1039
1058
  #---> Переключение HTTP/HTTPS протоколов прокси при неудачном запросе.
1040
1059
  #==========================================================================================#
@@ -1047,7 +1066,7 @@ class WebRequestor:
1047
1066
  case Protocols.HTTP: CurrentProxy.set_protocol(Protocols.HTTPS)
1048
1067
  case Protocols.HTTPS: CurrentProxy.set_protocol(Protocols.HTTP)
1049
1068
 
1050
- NewResponse: WebResponse = self.__RequestsMethods[request_type][self.__Config.lib](url, CurrentProxy, **kwargs)
1069
+ NewResponse: WebResponse = self.__RequestsMethods[request_type][self.__Config.lib](NewResponse, url, CurrentProxy, **kwargs)
1051
1070
  if NewResponse.status_code in self.__Config.good_codes: Response = NewResponse
1052
1071
 
1053
1072
  except Exception as ExceptionData:
@@ -1098,4 +1117,4 @@ class WebRequestor:
1098
1117
  :rtype: WebResponse
1099
1118
  """
1100
1119
 
1101
- return self.request(RequestsTypes.POST, url, params = params, headers = headers, cookies = cookies, data = data, json = json)
1120
+ return self.request(RequestsTypes.POST, url, params = params, headers = headers, cookies = cookies, data = data, json = json)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dublib
3
- Version: 0.23.2
3
+ Version: 0.23.4
4
4
  Summary: Коллекция полезных модулей от DUB1401.
5
5
  Author-email: DUB1401 <vlad.milosta@outlook.com>
6
6
  License: This is free and unencumbered software released into the public domain.
File without changes
File without changes
File without changes
File without changes
File without changes