Kaynağa Gözat

Track Chatto 0.4.3

Chatto HQ is now serving 0.4.3. Per the version-tracks-Chatto policy,
chattolib bumps to match.

Only upstream .proto delta is a docstring change on
chatto.api.v1.ListRoomMembersRequest (default page size doc raised
from 20 to 250 — no wire change). buf/validate/validate.proto also
had comment-only tweaks. Client code and generated bindings are
unchanged in shape.

Live-verified against chat.chatto.run (0.4.3) with the RoboChatto
account: login, me(), list_rooms(), get_motd(), list_roles() all
decode correctly. ruff + mypy --strict + pytest all clean.

Also lands the scrapped tokio-leak-investigation bean
(chattolib-vel8): after measurement, RSS plateaus around 85-91 MiB
after ~2500 RPCs and dips back down — bounded tokio pool footprint,
not an unbounded leak.
TheCodemancer 3 ay önce
ebeveyn
işleme
7d438573a1

+ 9 - 5
proto/buf/validate/validate.proto

@@ -4458,7 +4458,7 @@ message DurationRules {
   // ```proto
   // message MyDuration {
   //   // value must equal 5s
-  //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"];
+  //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = { seconds: 5 }];
   // }
   // ```
   optional google.protobuf.Duration const = 2 [(predefined).cel = {
@@ -4473,7 +4473,7 @@ message DurationRules {
     // ```proto
     // message MyDuration {
     //   // must be less than 5s
-    //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"];
+    //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 5 }];
     // }
     // ```
     google.protobuf.Duration lt = 3 [(predefined).cel = {
@@ -4490,7 +4490,7 @@ message DurationRules {
     // ```proto
     // message MyDuration {
     //   // must be less than or equal to 10s
-    //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"];
+    //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = { seconds: 10 }];
     // }
     // ```
     google.protobuf.Duration lte = 4 [(predefined).cel = {
@@ -4611,7 +4611,9 @@ message DurationRules {
   // ```proto
   // message MyDuration {
   //   // must be in list [1s, 2s, 3s]
-  //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]];
+  //   google.protobuf.Duration value = 1 [(buf.validate.field).duration = {
+  //     in: [{ seconds: 1 }, { seconds: 2 }, { seconds: 3 }]
+  //   }];
   // }
   // ```
   repeated google.protobuf.Duration in = 7 [(predefined).cel = {
@@ -4627,7 +4629,9 @@ message DurationRules {
   // ```proto
   // message MyDuration {
   //   // value must not be in list [1s, 2s, 3s]
-  //   google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]];
+  //   google.protobuf.Duration value = 1 [(buf.validate.field).duration = {
+  //     not_in: [{ seconds: 1 }, { seconds: 2 }, { seconds: 3 }]
+  //   }];
   // }
   // ```
   repeated google.protobuf.Duration not_in = 8 [(predefined).cel = {

+ 1 - 1
proto/chatto/api/v1/member_directory.proto

@@ -85,7 +85,7 @@ message ListRoomMembersRequest {
   string room_id = 1 [(buf.validate.field).string.min_len = 1];
   // Optional case-insensitive search against login and display name.
   string search = 2 [(buf.validate.field).string.max_len = 100];
-  // Page request. Defaults to 20 results when absent or limit is zero.
+  // Page request. Defaults to 250 results when absent or limit is zero.
   PageRequest page = 5;
 }
 

+ 1 - 1
pyproject.toml

@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
 
 [project]
 name = "chattolib"
-version = "0.4.2.post2"
+version = "0.4.3"
 description = "Async Python client library for the Chatto webchat Connect API"
 requires-python = ">=3.11"
 license = "MIT"