ferogram 0.5.2b1__tar.gz → 0.5.3__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 (112) hide show
  1. {ferogram-0.5.2b1 → ferogram-0.5.3}/.github/workflows/publish.yml +40 -15
  2. {ferogram-0.5.2b1 → ferogram-0.5.3}/CHANGELOG.md +18 -4
  3. {ferogram-0.5.2b1 → ferogram-0.5.3}/Cargo.lock +49 -17
  4. {ferogram-0.5.2b1 → ferogram-0.5.3}/Cargo.toml +9 -6
  5. {ferogram-0.5.2b1 → ferogram-0.5.3}/PKG-INFO +2 -2
  6. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/__init__.py +1 -1
  7. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/client.py +845 -239
  8. ferogram-0.5.3/ferogram/logging.py +176 -0
  9. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/codegen.py +104 -48
  10. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/_base.py +13 -9
  11. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/stories.py +4 -0
  12. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/proxy.py +79 -10
  13. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/tl.py +163 -73
  14. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/types.py +18 -1
  15. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/updates.py +4 -2
  16. {ferogram-0.5.2b1 → ferogram-0.5.3}/pyproject.toml +2 -2
  17. ferogram-0.5.3/src/connection.rs +789 -0
  18. ferogram-0.5.3/src/lib.rs +118 -0
  19. ferogram-0.5.3/src/message_box.rs +311 -0
  20. {ferogram-0.5.2b1 → ferogram-0.5.3}/src/pipelined.rs +4 -1
  21. ferogram-0.5.2b1/ferogram/logging.py +0 -52
  22. ferogram-0.5.2b1/src/connection.rs +0 -400
  23. ferogram-0.5.2b1/src/lib.rs +0 -38
  24. {ferogram-0.5.2b1 → ferogram-0.5.3}/.github/workflows/compile-check.yml +0 -0
  25. {ferogram-0.5.2b1 → ferogram-0.5.3}/.gitignore +0 -0
  26. {ferogram-0.5.2b1 → ferogram-0.5.3}/.readthedocs.yaml +0 -0
  27. {ferogram-0.5.2b1 → ferogram-0.5.3}/FEATURES.md +0 -0
  28. {ferogram-0.5.2b1 → ferogram-0.5.3}/LICENSE-APACHE +0 -0
  29. {ferogram-0.5.2b1 → ferogram-0.5.3}/LICENSE-MIT +0 -0
  30. {ferogram-0.5.2b1 → ferogram-0.5.3}/Makefile +0 -0
  31. {ferogram-0.5.2b1 → ferogram-0.5.3}/README.md +0 -0
  32. {ferogram-0.5.2b1 → ferogram-0.5.3}/assets/architecture.svg +0 -0
  33. {ferogram-0.5.2b1 → ferogram-0.5.3}/build.rs +0 -0
  34. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/admin_tools.py +0 -0
  35. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/command_bot.py +0 -0
  36. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/echo_bot.py +0 -0
  37. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/group_management.py +0 -0
  38. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/media_bot.py +0 -0
  39. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/raw_invoke.py +0 -0
  40. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/rich_message.py +0 -0
  41. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/search_bot.py +0 -0
  42. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/send_hi.py +0 -0
  43. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/send_media.py +0 -0
  44. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/send_message.py +0 -0
  45. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/update_handlers.py +0 -0
  46. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/user_management.py +0 -0
  47. {ferogram-0.5.2b1 → ferogram-0.5.3}/examples/userbot.py +0 -0
  48. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/api.tl +0 -0
  49. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/filters.py +0 -0
  50. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/keyboards.py +0 -0
  51. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/py.typed +0 -0
  52. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/__init__.py +0 -0
  53. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/api/__init__.py +0 -0
  54. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/api/functions.py +0 -0
  55. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/api/types.py +0 -0
  56. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/__init__.py +0 -0
  57. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/_tl_schema.py +0 -0
  58. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/__init__.py +0 -0
  59. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/account.py +0 -0
  60. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/aicompose.py +0 -0
  61. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/auth.py +0 -0
  62. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/bots.py +0 -0
  63. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/channels.py +0 -0
  64. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/chatlists.py +0 -0
  65. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/communities.py +0 -0
  66. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/contacts.py +0 -0
  67. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/ephemeral.py +0 -0
  68. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/folders.py +0 -0
  69. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/fragment.py +0 -0
  70. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/help.py +0 -0
  71. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/langpack.py +0 -0
  72. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/messages.py +0 -0
  73. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/payments.py +0 -0
  74. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/phone.py +0 -0
  75. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/photos.py +0 -0
  76. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/premium.py +0 -0
  77. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/smsjobs.py +0 -0
  78. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/stats.py +0 -0
  79. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/stickers.py +0 -0
  80. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/stories.py +0 -0
  81. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/updates.py +0 -0
  82. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/upload.py +0 -0
  83. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/functions/users.py +0 -0
  84. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/__init__.py +0 -0
  85. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/account.py +0 -0
  86. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/aicompose.py +0 -0
  87. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/auth.py +0 -0
  88. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/bots.py +0 -0
  89. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/channels.py +0 -0
  90. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/chatlists.py +0 -0
  91. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/communities.py +0 -0
  92. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/contacts.py +0 -0
  93. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/fragment.py +0 -0
  94. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/help.py +0 -0
  95. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/messages.py +0 -0
  96. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/payments.py +0 -0
  97. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/phone.py +0 -0
  98. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/photos.py +0 -0
  99. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/premium.py +0 -0
  100. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/smsjobs.py +0 -0
  101. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/stats.py +0 -0
  102. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/stickers.py +0 -0
  103. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/storage.py +0 -0
  104. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/updates.py +0 -0
  105. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/upload.py +0 -0
  106. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/raw/generated/types/users.py +0 -0
  107. {ferogram-0.5.2b1 → ferogram-0.5.3}/ferogram/rich.py +0 -0
  108. {ferogram-0.5.2b1 → ferogram-0.5.3}/src/raw.rs +0 -0
  109. {ferogram-0.5.2b1 → ferogram-0.5.3}/src/session.rs +0 -0
  110. {ferogram-0.5.2b1 → ferogram-0.5.3}/src/srp.rs +0 -0
  111. {ferogram-0.5.2b1 → ferogram-0.5.3}/tests/test_rich.py +0 -0
  112. {ferogram-0.5.2b1 → ferogram-0.5.3}/tests/test_tl_roundtrip.py +0 -0
@@ -15,7 +15,7 @@ on:
15
15
  - linux
16
16
  - macos
17
17
  - windows
18
- - android
18
+ - android-termux
19
19
  - sdist
20
20
  publish:
21
21
  description: "Upload to PyPI after build"
@@ -102,8 +102,14 @@ jobs:
102
102
  name: wheels-windows
103
103
  path: dist
104
104
 
105
- android:
106
- if: github.event_name == 'push' || inputs.job == 'all' || inputs.job == 'android'
105
+ # Builds for Termux (the terminal app), not for embedding inside a
106
+ # general Android APK. This links against Termux's own Python package
107
+ # and Termux's runtime library layout - a wheel from this job is only
108
+ # installable via `pip install` inside Termux. It will not work with
109
+ # app-embedded interpreters like Chaquopy or python-for-android; those
110
+ # bundle their own CPython and need a separate build target entirely.
111
+ android-termux:
112
+ if: github.event_name == 'push' || inputs.job == 'all' || inputs.job == 'android-termux'
107
113
  runs-on: ubuntu-latest
108
114
  strategy:
109
115
  fail-fast: false
@@ -128,7 +134,7 @@ jobs:
128
134
  with:
129
135
  python-version: "3.13"
130
136
 
131
- - name: Setup Android NDK r26d
137
+ - name: Setup Android NDK r26d (cross-compiler for the Termux target)
132
138
  uses: nttld/setup-ndk@v1
133
139
  id: ndk
134
140
  with:
@@ -190,7 +196,7 @@ jobs:
190
196
  echo "TERMUX_PYVER=$PYVER" >> $GITHUB_ENV
191
197
  echo "Linking against Termux libpython $PYVER ($SO_FILE)"
192
198
 
193
- - name: Build Android wheel
199
+ - name: Build Termux wheel
194
200
  env:
195
201
  ANDROID_NDK_HOME: ${{ steps.ndk.outputs.ndk-path }}
196
202
  ANDROID_API_LEVEL: ${{ matrix.api }}
@@ -217,14 +223,13 @@ jobs:
217
223
  export AR_${TARGET_LOWER}=$NDK_BIN/llvm-ar
218
224
  export CARGO_TARGET_${TARGET_UPPER}_LINKER=$NDK_BIN/${CLANG_PREFIX}-clang
219
225
 
220
- # Link against Termux's real libpython<version>.so (not an empty
221
- # stub). This embeds DT_NEEDED: libpython<version>.so in the
222
- # extension, so bionic resolves all Python symbols explicitly at
223
- # dlopen time via Termux's LD_LIBRARY_PATH - instead of relying on
224
- # global namespace propagation, which Android's linker does not
225
- # guarantee. The version is whatever Termux's apt repo currently
226
- # ships (see the fetch step above), not a fixed constant.
227
- export RUSTFLAGS="-L native=$TERMUX_LIBDIR"
226
+ # Link against Termux's real libpython<version>.so, and embed the
227
+ # rpath Termux's own binaries carry (/data/data/com.termux/files/usr/lib)
228
+ # so the loader actually searches that directory at dlopen time.
229
+ # Without this, DT_NEEDED entries resolve to nothing even when the
230
+ # target file exists right there, since bionic doesn't search
231
+ # $PREFIX/lib by default the way it does system paths.
232
+ export RUSTFLAGS="-L native=$TERMUX_LIBDIR -C link-arg=-Wl,-rpath=/data/data/com.termux/files/usr/lib"
228
233
 
229
234
  maturin build \
230
235
  --release \
@@ -232,9 +237,29 @@ jobs:
232
237
  --compatibility off \
233
238
  --out dist
234
239
 
240
+ - name: Rewrite libpython dependency to be version-agnostic
241
+ run: |
242
+ which patchelf >/dev/null 2>&1 || (sudo apt-get update && sudo apt-get install -y patchelf)
243
+ for whl in dist/*.whl; do
244
+ whl_abs=$(readlink -f "$whl")
245
+ workdir=$(mktemp -d)
246
+ unzip -q "$whl_abs" -d "$workdir"
247
+ so_file=$(find "$workdir" -name "_ferogram*.so" | head -1)
248
+ if [ -z "$so_file" ]; then
249
+ echo "::error::No _ferogram*.so found inside $whl"
250
+ exit 1
251
+ fi
252
+ patchelf --replace-needed "libpython${TERMUX_PYVER}.so" "libpython3.so" "$so_file"
253
+ echo "Patched $so_file: DT_NEEDED libpython${TERMUX_PYVER}.so -> libpython3.so"
254
+
255
+ rm -f "$whl_abs"
256
+ (cd "$workdir" && zip -qr "$whl_abs" .)
257
+ rm -rf "$workdir"
258
+ done
259
+
235
260
  - uses: actions/upload-artifact@v4
236
261
  with:
237
- name: wheels-android-${{ matrix.target }}
262
+ name: wheels-android-termux-${{ matrix.target }}
238
263
  path: dist
239
264
 
240
265
  sdist:
@@ -252,7 +277,7 @@ jobs:
252
277
  path: dist
253
278
 
254
279
  publish:
255
- needs: [linux, macos, windows, android, sdist]
280
+ needs: [linux, macos, windows, android-termux, sdist]
256
281
  if: |
257
282
  always() &&
258
283
  (github.event_name == 'push' || inputs.publish == true) &&
@@ -1,10 +1,24 @@
1
- ## Unreleased
1
+ ## 0.5.3 (2026-07-25)
2
+
3
+ - Added `Chat.is_community` and `Dialog.community_id`/`Dialog.is_community` for community support.
4
+ - `get_dialogs()` and `get_pinned_dialogs()` now handle `dialogCommunity` via `community_id` instead of assuming a `peer` field is present.
5
+ - Peer cache now tracks communities separately from channels instead of collapsing them together. `chatEmpty` is no longer cached as a basic chat, and a stored non-zero access hash can no longer get overwritten by a zero one.
6
+ - `serialize_object` now dispatches to the generated `to_bytes()` implementation before falling back to generic field serialization, about 1.7x faster. Output verified byte-identical across all 2,437 constructors in the schema.
7
+ - Fixed a TL codegen bug where a constructor's `flags:#` word was assumed to always be first on the wire and hoisted to the front of `from_bytes()`/`to_bytes()` unconditionally. `poll#966e2dbf`, `wallPaper#a437c3ed`, and `wallPaperNoFile#e0804116` declare `id:long` before `flags:#`, so those fields got read and written swapped, producing a garbage flags word and eventually overrunning the buffer. This was the root cause of the corruption seen in `updates.getDifference`. Codegen now tracks each flag marker's real position in the schema instead of assuming it comes first.
8
+ - Fixed a related codegen bug: `exportedChatlistInvite` and `stories.allStoriesNotModified` declare `flags:#` with no field gated on it. Codegen treated "no field uses this flag group" as "no flags word on the wire" and silently dropped 4 bytes, misaligning every field after it. Flag group presence is now determined from declared markers, not field usage.
9
+ - `ferogram/raw/tl.py`'s runtime fallback interpreter (`_read_value`/`serialize_object`) had the same "flags always first" bug. Fixed to read and write each flag group at its correct wire position.
10
+ - Regenerated all 1,642 generated types and 795 functions from `api.tl`. `tests/test_tl_roundtrip.py` (4,874 constructor x optional-field combinations) now passes.
11
+ - Fixed `join_chat()` and `join_invite_link()` assuming a bare `Updates` response, breaking on `messages.ChatInviteJoinResult`. The `Ok` variant now resolves and caches the joined peer; the `WebView` variant returns `None` since it needs an interactive bot flow that isn't supported yet.
12
+ - Fixed `promote_participant(rights=...)` merging requested rights into a fixed base set instead of replacing it, so limited admin permissions could never actually be granted. It now replaces the requested rights as intended.
13
+ - Fixed `send_message()`, `edit_message()`, and `forward_messages()` ignoring caller-supplied values for `no_webpage`, `silent`, `schedule_date`, and `send_as` in favor of hardcoded defaults. These are now respected.
14
+ - Fixed `send_invoice(test=...)`, `add_contact(add_phone_privacy_exception=...)`, and `get_blocked_users(my_stories_from=...)` ignoring the supplied value and always sending a hardcoded default.
15
+
16
+ ## 0.5.2 (2026-07-17)
2
17
 
3
18
  - Added `Client.get_chat_photos(peer, limit)`: photo/avatar history for groups and channels (`get_profile_photos` only ever worked for users). Current photo comes from the chat's full info, so it survives message deletion; older photos come from `messageActionChatEditPhoto` search history.
4
19
  - Added fast re-auth support: `sign_out()` captures a `future_auth_token` when Telegram returns one and persists it via a new `DcConnection.get_future_auth_token`/`set_future_auth_token` pair (rides along in the existing session blob, no new session format code needed here). `request_login_code()` replays it automatically, so a returning session can skip code entry entirely (`auth.sentCodeSuccess`).
5
- - Depends on `ferogram-session` 0.6.4 (not yet published) for the `future_auth_token` field on `PersistedSession`; the Rust-side accessors are written but won't compile until that dependency is bumped.
6
- - Also pending on that same bump: an MTProto handshake fix upstream (dc-tagged `p_q_inner_data` was being rejected by Telegram with RPC 444 outside DC2), pulled in transitively via `ferogram-mtsender`.
7
-
20
+ - MTProto handshake fix upstream (dc-tagged `p_q_inner_data` was being rejected by Telegram with RPC 444 outside DC2), pulled in transitively via `ferogram-mtsender`.
21
+ - Layer Upgrade to 228
8
22
  ## 0.5.1 (2026-06-29)
9
23
 
10
24
  ## What's Changed
@@ -52,6 +52,15 @@ version = "1.0.102"
52
52
  source = "registry+https://github.com/rust-lang/crates.io-index"
53
53
  checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
54
54
 
55
+ [[package]]
56
+ name = "arc-swap"
57
+ version = "1.9.2"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b"
60
+ dependencies = [
61
+ "rustversion",
62
+ ]
63
+
55
64
  [[package]]
56
65
  name = "async-stream"
57
66
  version = "0.3.6"
@@ -392,8 +401,8 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
392
401
 
393
402
  [[package]]
394
403
  name = "ferogram-connect"
395
- version = "0.6.3"
396
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
404
+ version = "0.6.4"
405
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
397
406
  dependencies = [
398
407
  "ferogram-crypto",
399
408
  "ferogram-mtproto",
@@ -408,8 +417,8 @@ dependencies = [
408
417
 
409
418
  [[package]]
410
419
  name = "ferogram-crypto"
411
- version = "0.6.3"
412
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
420
+ version = "0.6.4"
421
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
413
422
  dependencies = [
414
423
  "aes",
415
424
  "ctr",
@@ -423,10 +432,19 @@ dependencies = [
423
432
  "tracing",
424
433
  ]
425
434
 
435
+ [[package]]
436
+ name = "ferogram-msgbox"
437
+ version = "0.6.4"
438
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
439
+ dependencies = [
440
+ "ferogram-tl-types",
441
+ "tracing",
442
+ ]
443
+
426
444
  [[package]]
427
445
  name = "ferogram-mtproto"
428
- version = "0.6.3"
429
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
446
+ version = "0.6.4"
447
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
430
448
  dependencies = [
431
449
  "ferogram-crypto",
432
450
  "ferogram-tl-types",
@@ -438,8 +456,8 @@ dependencies = [
438
456
 
439
457
  [[package]]
440
458
  name = "ferogram-mtsender"
441
- version = "0.6.3"
442
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
459
+ version = "0.6.4"
460
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
443
461
  dependencies = [
444
462
  "ferogram-connect",
445
463
  "ferogram-crypto",
@@ -453,25 +471,28 @@ dependencies = [
453
471
 
454
472
  [[package]]
455
473
  name = "ferogram-py"
456
- version = "0.5.2"
474
+ version = "0.5.3"
457
475
  dependencies = [
458
476
  "base64 0.22.1",
459
477
  "ferogram-connect",
460
478
  "ferogram-crypto",
479
+ "ferogram-msgbox",
461
480
  "ferogram-mtsender",
462
481
  "ferogram-session",
463
482
  "ferogram-tl-types",
464
483
  "getrandom 0.2.17",
484
+ "log",
465
485
  "pyo3",
466
486
  "pyo3-async-runtimes",
467
487
  "pyo3-build-config",
488
+ "pyo3-log",
468
489
  "tokio",
469
490
  ]
470
491
 
471
492
  [[package]]
472
493
  name = "ferogram-session"
473
- version = "0.6.3"
474
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
494
+ version = "0.6.4"
495
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
475
496
  dependencies = [
476
497
  "base64 0.22.1",
477
498
  "libsql",
@@ -483,21 +504,21 @@ dependencies = [
483
504
 
484
505
  [[package]]
485
506
  name = "ferogram-tl-gen"
486
- version = "0.6.3"
487
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
507
+ version = "0.6.4"
508
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
488
509
  dependencies = [
489
510
  "ferogram-tl-parser",
490
511
  ]
491
512
 
492
513
  [[package]]
493
514
  name = "ferogram-tl-parser"
494
- version = "0.6.3"
495
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
515
+ version = "0.6.4"
516
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
496
517
 
497
518
  [[package]]
498
519
  name = "ferogram-tl-types"
499
- version = "0.6.3"
500
- source = "git+https://github.com/ankit-chaubey/ferogram?rev=e173765ecc4066f88a4a87ae5f393462a7757b91#e173765ecc4066f88a4a87ae5f393462a7757b91"
520
+ version = "0.6.4"
521
+ source = "git+https://github.com/ankit-chaubey/ferogram?rev=358ee50#358ee5013befb4a288d4363d81bda0e4e38ef7e1"
501
522
  dependencies = [
502
523
  "ferogram-tl-gen",
503
524
  "ferogram-tl-parser",
@@ -1423,6 +1444,17 @@ dependencies = [
1423
1444
  "pyo3-build-config",
1424
1445
  ]
1425
1446
 
1447
+ [[package]]
1448
+ name = "pyo3-log"
1449
+ version = "0.12.4"
1450
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1451
+ checksum = "45192e5e4a4d2505587e27806c7b710c231c40c56f3bfc19535d0bb25df52264"
1452
+ dependencies = [
1453
+ "arc-swap",
1454
+ "log",
1455
+ "pyo3",
1456
+ ]
1457
+
1426
1458
  [[package]]
1427
1459
  name = "pyo3-macros"
1428
1460
  version = "0.24.2"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "ferogram-py"
3
- version = "0.5.2"
3
+ version = "0.5.3"
4
4
  edition = "2024"
5
5
  description = "Python MTProto client based on ferogram (Rust MTProto)"
6
6
  build = "build.rs"
@@ -12,16 +12,19 @@ name = "_ferogram"
12
12
  crate-type = ["cdylib"]
13
13
 
14
14
  [dependencies]
15
- ferogram-mtsender = { git = "https://github.com/ankit-chaubey/ferogram", rev = "e173765ecc4066f88a4a87ae5f393462a7757b91" }
16
- ferogram-session = { git = "https://github.com/ankit-chaubey/ferogram", rev = "e173765ecc4066f88a4a87ae5f393462a7757b91", features = ["sqlite-session", "libsql-session"] }
17
- ferogram-connect = { git = "https://github.com/ankit-chaubey/ferogram", rev = "e173765ecc4066f88a4a87ae5f393462a7757b91" }
18
- ferogram-tl-types = { git = "https://github.com/ankit-chaubey/ferogram", rev = "e173765ecc4066f88a4a87ae5f393462a7757b91" }
19
- ferogram-crypto = { git = "https://github.com/ankit-chaubey/ferogram", rev = "e173765ecc4066f88a4a87ae5f393462a7757b91" }
15
+ ferogram-mtsender = { git = "https://github.com/ankit-chaubey/ferogram", rev = "358ee50" }
16
+ ferogram-session = { git = "https://github.com/ankit-chaubey/ferogram", rev = "358ee50", features = ["sqlite-session", "libsql-session"] }
17
+ ferogram-connect = { git = "https://github.com/ankit-chaubey/ferogram", rev = "358ee50" }
18
+ ferogram-tl-types = { git = "https://github.com/ankit-chaubey/ferogram", rev = "358ee50" }
19
+ ferogram-crypto = { git = "https://github.com/ankit-chaubey/ferogram", rev = "358ee50" }
20
+ ferogram-msgbox = { git = "https://github.com/ankit-chaubey/ferogram", rev = "358ee50" }
20
21
  getrandom = "0.2"
21
22
  base64 = "0.22"
22
23
  pyo3 = { version = "0.24", features = ["extension-module", "abi3-py39"] }
23
24
  pyo3-async-runtimes = { version = "0.24", features = ["tokio-runtime"] }
24
25
  tokio = { version = "1", features = ["full"] }
26
+ pyo3-log = "0.12"
27
+ log = "0.4"
25
28
 
26
29
  [profile.release]
27
30
  strip = true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ferogram
3
- Version: 0.5.2b1
3
+ Version: 0.5.3
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -10,7 +10,7 @@ Classifier: Topic :: Communications :: Chat
10
10
  Classifier: Topic :: Software Development :: Libraries
11
11
  License-File: LICENSE-APACHE
12
12
  License-File: LICENSE-MIT
13
- Summary: A modern, elegant, asynchronous MTProto framework for building Telegram user clients and bots in Python.
13
+ Summary: A modern, elegant, asynchronous MTProto framework for building Telegram clients and bots in Python.
14
14
  Keywords: telegram,mtproto,rust,client,bot,ferogram
15
15
  Author-email: Ankit Chaubey <ankitchaubey.dev@gmail.com>
16
16
  License: MIT OR Apache-2.0
@@ -35,7 +35,7 @@ from ._ferogram import (
35
35
  SqliteSession, LibSqlSession, CustomSession,
36
36
  )
37
37
 
38
- # All types now pure Python
38
+ # Types are pure Python
39
39
  from .types import User, Message, Chat, Dialog, ChatMember, UserFull
40
40
  from .types import Authorization, ForumTopic, BotInfo
41
41
  from .types import InviteLinkMember, ReadParticipant, AdminLogEvent