aioqzone 1.9.4.dev2__tar.gz → 1.9.4.dev6__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 (137) hide show
  1. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.github/workflows/auto-pr.yml +1 -1
  2. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.github/workflows/build.yml +2 -2
  3. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.github/workflows/codeql-analysis.yml +1 -1
  4. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.github/workflows/sphinx.yml +5 -3
  5. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.github/workflows/test.yml +3 -2
  6. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/PKG-INFO +1 -1
  7. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/pyproject.toml +3 -3
  8. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/api/feed.py +6 -1
  9. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/api/test_loginman.py +1 -2
  10. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/login_logic/test_captcha.py +1 -2
  11. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/login_logic/test_qr.py +1 -2
  12. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/login_logic/test_up.py +1 -2
  13. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/uv.lock +17 -6
  14. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.github/dependabot.yml +0 -0
  15. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.gitignore +0 -0
  16. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/.pre-commit-config.yaml +0 -0
  17. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/CONTRIBUTING.md +0 -0
  18. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/LICENSE +0 -0
  19. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/README.md +0 -0
  20. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/README_en.md +0 -0
  21. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/cliff.toml +0 -0
  22. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/_static/penguin-blob.webp +0 -0
  23. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/_static/teaencoder.ts +0 -0
  24. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/api/h5.rst +0 -0
  25. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/api/index.rst +0 -0
  26. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/api/login.rst +0 -0
  27. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/exception.rst +0 -0
  28. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/index.rst +0 -0
  29. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/messages.rst +0 -0
  30. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/model/api.rst +0 -0
  31. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/model/index.rst +0 -0
  32. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/model/protocol.rst +0 -0
  33. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/aioqzone/reference.rst +0 -0
  34. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/conf.py +0 -0
  35. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/disclaimers.rst +0 -0
  36. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/index.rst +0 -0
  37. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/h5.po +0 -0
  38. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/index.po +0 -0
  39. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/login.po +0 -0
  40. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/web.po +0 -0
  41. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/exception.po +0 -0
  42. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/index.po +0 -0
  43. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/messages.po +0 -0
  44. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/api.po +0 -0
  45. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/index.po +0 -0
  46. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/protocol.po +0 -0
  47. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/response.po +0 -0
  48. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/reference.po +0 -0
  49. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/disclaimers.po +0 -0
  50. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/index.po +0 -0
  51. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/base.po +0 -0
  52. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/exception.po +0 -0
  53. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/index.po +0 -0
  54. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/jsjson.po +0 -0
  55. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/qr/index.po +0 -0
  56. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/qr/login.po +0 -0
  57. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/qr/type.po +0 -0
  58. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/capsess.po +0 -0
  59. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/captcha.po +0 -0
  60. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/index.po +0 -0
  61. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/jigsaw.po +0 -0
  62. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/encrypt.po +0 -0
  63. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/index.po +0 -0
  64. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/login.po +0 -0
  65. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/type.po +0 -0
  66. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/locale/zh_CN/LC_MESSAGES/reference.po +0 -0
  67. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/base.rst +0 -0
  68. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/exception.rst +0 -0
  69. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/index.rst +0 -0
  70. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/jsjson.rst +0 -0
  71. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/qr/index.rst +0 -0
  72. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/qr/login.rst +0 -0
  73. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/qr/type.rst +0 -0
  74. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/captcha/capsess.rst +0 -0
  75. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/captcha/captcha.rst +0 -0
  76. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/captcha/index.rst +0 -0
  77. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/encrypt.rst +0 -0
  78. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/index.rst +0 -0
  79. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/login.rst +0 -0
  80. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/doc/source/qqqr/up/type.rst +0 -0
  81. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/__init__.py +0 -0
  82. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/api/__init__.py +0 -0
  83. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/api/h5/__init__.py +0 -0
  84. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/api/h5/model.py +0 -0
  85. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/api/login/__init__.py +0 -0
  86. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/api/login/_base.py +0 -0
  87. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/exception.py +0 -0
  88. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/message.py +0 -0
  89. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/__init__.py +0 -0
  90. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/api/__init__.py +0 -0
  91. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/api/profile.py +0 -0
  92. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/api/request.py +0 -0
  93. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/api/response.py +0 -0
  94. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/protocol/__init__.py +0 -0
  95. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/protocol/config.py +0 -0
  96. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/model/protocol/entity.py +0 -0
  97. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/utils/__init__.py +0 -0
  98. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/utils/entity.py +0 -0
  99. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/utils/regex.py +0 -0
  100. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/utils/retry.py +0 -0
  101. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/aioqzone/utils/time.py +0 -0
  102. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/__init__.py +0 -0
  103. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/base.py +0 -0
  104. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/constant.py +0 -0
  105. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/exception.py +0 -0
  106. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/message.py +0 -0
  107. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/py.typed +0 -0
  108. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/qr/__init__.py +0 -0
  109. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/qr/type.py +0 -0
  110. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/type.py +0 -0
  111. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/__init__.py +0 -0
  112. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/_model.py +0 -0
  113. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/__init__.py +0 -0
  114. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/_model.py +0 -0
  115. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/capsess.py +0 -0
  116. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/click/__init__.py +0 -0
  117. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/click/_types.py +0 -0
  118. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/pil_utils.py +0 -0
  119. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/select/__init__.py +0 -0
  120. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/select/_types.py +0 -0
  121. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/slide/__init__.py +0 -0
  122. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/captcha/slide/_types.py +0 -0
  123. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/encrypt.py +0 -0
  124. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/h5.py +0 -0
  125. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/up/web.py +0 -0
  126. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/utils/encrypt.py +0 -0
  127. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/utils/iter.py +0 -0
  128. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/utils/jsjson.py +0 -0
  129. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/src/qqqr/utils/net.py +0 -0
  130. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/api/__init__.py +0 -0
  131. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/api/conftest.py +0 -0
  132. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/api/test_h5.py +0 -0
  133. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/conftest.py +0 -0
  134. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/login_logic/__init__.py +0 -0
  135. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/utils/test_entity.py +0 -0
  136. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/utils/test_json.py +0 -0
  137. {aioqzone-1.9.4.dev2 → aioqzone-1.9.4.dev6}/test/utils/test_time.py +0 -0
@@ -21,7 +21,7 @@ jobs:
21
21
  permissions:
22
22
  pull-requests: write
23
23
  steps:
24
- - uses: actions/checkout@v4
24
+ - uses: actions/checkout@v5
25
25
  with:
26
26
  fetch-depth: 0
27
27
 
@@ -23,7 +23,7 @@ jobs:
23
23
  #----------------------------------------------
24
24
  # check-out repo and set-up python
25
25
  #----------------------------------------------
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
27
27
  - uses: astral-sh/setup-uv@v6
28
28
  #----------------------------------------------
29
29
  # -------- Build and release ---------
@@ -32,5 +32,5 @@ jobs:
32
32
  env:
33
33
  UV_PUBLISH_PASSWORD: ${{ secrets.PYPI_TOKEN }}
34
34
  run: |
35
- uv build
35
+ uv build --no-sources
36
36
  uv publish --username __token__
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  steps:
40
40
  - name: Checkout repository
41
- uses: actions/checkout@v4
41
+ uses: actions/checkout@v5
42
42
 
43
43
  # Initializes the CodeQL tools for scanning.
44
44
  - name: Initialize CodeQL
@@ -23,14 +23,16 @@ jobs:
23
23
  permissions:
24
24
  contents: read
25
25
  steps:
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
27
27
  - uses: actions/configure-pages@v5
28
28
  - uses: astral-sh/setup-uv@v6
29
+ with:
30
+ activate-environment: true
29
31
 
30
32
  - name: Install Library and Build HTML
31
33
  run: |
32
34
  echo "::group::Install Library"
33
- uv sync --group doc
35
+ uv sync --no-default-groups --group doc
34
36
  echo "::endgroup::"
35
37
 
36
38
  echo "::group::Build HTML"
@@ -45,7 +47,7 @@ jobs:
45
47
 
46
48
  - name: Upload artifact
47
49
  if: github.event_name == 'push'
48
- uses: actions/upload-pages-artifact@v3
50
+ uses: actions/upload-pages-artifact@v4
49
51
  with:
50
52
  path: doc/build/html
51
53
 
@@ -23,10 +23,11 @@ jobs:
23
23
  #----------------------------------------------
24
24
  # check-out repo and set-up python
25
25
  #----------------------------------------------
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
27
27
  - uses: astral-sh/setup-uv@v6
28
28
  with:
29
29
  python-version: ${{ matrix.python-version }}
30
+ activate-environment: true
30
31
  enable-cache: true
31
32
 
32
33
  - name: Install and Test
@@ -35,7 +36,7 @@ jobs:
35
36
  TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
36
37
  run: |
37
38
  echo "::group::Install Basic Dependencies"
38
- uv sync --group test
39
+ uv sync --no-default-groups --group test
39
40
  echo "::endgroup::"
40
41
 
41
42
  echo "::group::pytest outputs"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aioqzone
3
- Version: 1.9.4.dev2
3
+ Version: 1.9.4.dev6
4
4
  Summary: A Python wrapper for Qzone login and H5 APIs.
5
5
  Project-URL: Homepage, https://github.com/aioqzone/aioqzone
6
6
  Project-URL: Repository, https://github.com/aioqzone/aioqzone
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aioqzone"
3
- version = "1.9.4.dev2"
3
+ version = "1.9.4.dev6"
4
4
  description = "A Python wrapper for Qzone login and H5 APIs."
5
5
  authors = [{ name = "aioqzone" }]
6
6
  maintainers = [
@@ -37,7 +37,7 @@ Documentation = "https://aioqzone.github.io/aioqzone"
37
37
  "Discussion" = "https://t.me/aioqzone_chatroom"
38
38
 
39
39
  [dependency-groups]
40
- test = ["pytest>=8.2.0", "pytest-asyncio~=0.25.2"]
40
+ test = ["pytest>=8.2.0", "pytest-asyncio~=1.1.0"]
41
41
  dev = ["pre-commit", "ruff"]
42
42
  doc = [
43
43
  "Sphinx>=7.0.1; python_version>='3.9' and python_version<'3.11'",
@@ -67,7 +67,7 @@ requires = ["hatchling"]
67
67
  build-backend = "hatchling.build"
68
68
 
69
69
  [tool.hatch.build.targets.wheel]
70
- only-packages = true
70
+ skip-excluded-dirs = true
71
71
  packages = ["src/aioqzone", "src/qqqr"]
72
72
 
73
73
  [tool.pytest.ini_options]
@@ -96,7 +96,12 @@ class PhotoUrl(BaseModel):
96
96
  class PhotoUrls(RootModel[t.Set[PhotoUrl]]):
97
97
  @model_validator(mode="before")
98
98
  def unpack_urls(cls, v: dict):
99
- return list(v.values())
99
+ return list(
100
+ filter(
101
+ lambda d: isinstance(d, dict) and d.get("url"),
102
+ v.values(),
103
+ )
104
+ )
100
105
 
101
106
  @property
102
107
  def largest(self) -> PhotoUrl:
@@ -20,9 +20,8 @@ from qqqr.exception import TencentLoginError, UserBreak
20
20
  from qqqr.utils.net import ClientAdapter
21
21
 
22
22
  if TYPE_CHECKING:
23
- from test.conftest import test_env
24
-
25
23
  from qqqr.utils.net import ClientAdapter
24
+ from test.conftest import test_env
26
25
 
27
26
  pytestmark = pytest.mark.asyncio(loop_scope="module")
28
27
  skip_ci = pytest.mark.skipif(bool(environ.get("CI")), reason="Skip QR loop in CI")
@@ -11,10 +11,9 @@ from qqqr.up import UpH5Login
11
11
  from qqqr.up.captcha import Captcha, SelectCaptchaSession, TcaptchaSession
12
12
 
13
13
  if TYPE_CHECKING:
14
- from test.conftest import test_env
15
-
16
14
  from qqqr.up.web import UpWebSession
17
15
  from qqqr.utils.net import ClientAdapter
16
+ from test.conftest import test_env
18
17
 
19
18
  pytestmark = pytest.mark.asyncio(loop_scope="module")
20
19
 
@@ -17,9 +17,8 @@ pytestmark = pytest.mark.asyncio(loop_scope="module")
17
17
  skip_ci = pytest.mark.skipif(bool(environ.get("CI")), reason="Skip QR loop in CI")
18
18
 
19
19
  if TYPE_CHECKING:
20
- from test.conftest import test_env
21
-
22
20
  from qqqr.utils.net import ClientAdapter
21
+ from test.conftest import test_env
23
22
 
24
23
  NoneType = type(None)
25
24
 
@@ -11,9 +11,8 @@ from qqqr.exception import TencentLoginError
11
11
  from qqqr.up import UpH5Login, UpWebLogin
12
12
 
13
13
  if TYPE_CHECKING:
14
- from test.conftest import test_env
15
-
16
14
  from qqqr.utils.net import ClientAdapter
15
+ from test.conftest import test_env
17
16
 
18
17
  pytestmark = pytest.mark.asyncio(loop_scope="module")
19
18
  skip_ci = pytest.mark.skipif(bool(environ.get("CI")), reason="Skip QR loop in CI")
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 2
2
+ revision = 3
3
3
  requires-python = ">=3.9"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.11'",
@@ -116,7 +116,7 @@ wheels = [
116
116
 
117
117
  [[package]]
118
118
  name = "aioqzone"
119
- version = "1.9.4.dev2"
119
+ version = "1.9.4.dev6"
120
120
  source = { editable = "." }
121
121
  dependencies = [
122
122
  { name = "aiohttp" },
@@ -184,7 +184,7 @@ doc = [
184
184
  ]
185
185
  test = [
186
186
  { name = "pytest", specifier = ">=8.2.0" },
187
- { name = "pytest-asyncio", specifier = "~=0.25.2" },
187
+ { name = "pytest-asyncio", specifier = "~=1.1.0" },
188
188
  ]
189
189
 
190
190
  [[package]]
@@ -275,6 +275,15 @@ wheels = [
275
275
  { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" },
276
276
  ]
277
277
 
278
+ [[package]]
279
+ name = "backports-asyncio-runner"
280
+ version = "1.2.0"
281
+ source = { registry = "https://pypi.org/simple" }
282
+ sdist = { url = "https://files.pythonhosted.org/packages/8e/ff/70dca7d7cb1cbc0edb2c6cc0c38b65cba36cccc491eca64cabd5fe7f8670/backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162", size = 69893, upload-time = "2025-07-02T02:27:15.685Z" }
283
+ wheels = [
284
+ { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" },
285
+ ]
286
+
278
287
  [[package]]
279
288
  name = "beautifulsoup4"
280
289
  version = "4.13.4"
@@ -1378,14 +1387,16 @@ wheels = [
1378
1387
 
1379
1388
  [[package]]
1380
1389
  name = "pytest-asyncio"
1381
- version = "0.25.3"
1390
+ version = "1.1.0"
1382
1391
  source = { registry = "https://pypi.org/simple" }
1383
1392
  dependencies = [
1393
+ { name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" },
1384
1394
  { name = "pytest" },
1395
+ { name = "typing-extensions", marker = "python_full_version < '3.10'" },
1385
1396
  ]
1386
- sdist = { url = "https://files.pythonhosted.org/packages/f2/a8/ecbc8ede70921dd2f544ab1cadd3ff3bf842af27f87bbdea774c7baa1d38/pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a", size = 54239, upload-time = "2025-01-28T18:37:58.729Z" }
1397
+ sdist = { url = "https://files.pythonhosted.org/packages/4e/51/f8794af39eeb870e87a8c8068642fc07bce0c854d6865d7dd0f2a9d338c2/pytest_asyncio-1.1.0.tar.gz", hash = "sha256:796aa822981e01b68c12e4827b8697108f7205020f24b5793b3c41555dab68ea", size = 46652, upload-time = "2025-07-16T04:29:26.393Z" }
1387
1398
  wheels = [
1388
- { url = "https://files.pythonhosted.org/packages/67/17/3493c5624e48fd97156ebaec380dcaafee9506d7e2c46218ceebbb57d7de/pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3", size = 19467, upload-time = "2025-01-28T18:37:56.798Z" },
1399
+ { url = "https://files.pythonhosted.org/packages/c7/9d/bf86eddabf8c6c9cb1ea9a869d6873b46f105a5d292d3a6f7071f5b07935/pytest_asyncio-1.1.0-py3-none-any.whl", hash = "sha256:5fe2d69607b0bd75c656d1211f969cadba035030156745ee09e7d71740e58ecf", size = 15157, upload-time = "2025-07-16T04:29:24.929Z" },
1389
1400
  ]
1390
1401
 
1391
1402
  [[package]]
File without changes
File without changes
File without changes
File without changes