22
33import json
44from dataclasses import dataclass , field
5- from datetime import datetime , timezone
5+ from datetime import datetime
66from typing import Optional , Dict , Any
77
88
@@ -76,21 +76,31 @@ def to_redis_hash(self) -> Dict[str, str]:
7676 "name" : self .name ,
7777 "created_at" : self .created_at .isoformat (),
7878 "enabled" : "true" if self .enabled else "false" ,
79- "rate_limits_per_second" : str (self .rate_limits .per_second )
80- if self .rate_limits .per_second is not None
81- else "" ,
82- "rate_limits_per_minute" : str (self .rate_limits .per_minute )
83- if self .rate_limits .per_minute is not None
84- else "" ,
85- "rate_limits_hourly" : str (self .rate_limits .hourly )
86- if self .rate_limits .hourly is not None
87- else "" ,
88- "rate_limits_daily" : str (self .rate_limits .daily )
89- if self .rate_limits .daily is not None
90- else "" ,
91- "rate_limits_monthly" : str (self .rate_limits .monthly )
92- if self .rate_limits .monthly is not None
93- else "" ,
79+ "rate_limits_per_second" : (
80+ str (self .rate_limits .per_second )
81+ if self .rate_limits .per_second is not None
82+ else ""
83+ ),
84+ "rate_limits_per_minute" : (
85+ str (self .rate_limits .per_minute )
86+ if self .rate_limits .per_minute is not None
87+ else ""
88+ ),
89+ "rate_limits_hourly" : (
90+ str (self .rate_limits .hourly )
91+ if self .rate_limits .hourly is not None
92+ else ""
93+ ),
94+ "rate_limits_daily" : (
95+ str (self .rate_limits .daily )
96+ if self .rate_limits .daily is not None
97+ else ""
98+ ),
99+ "rate_limits_monthly" : (
100+ str (self .rate_limits .monthly )
101+ if self .rate_limits .monthly is not None
102+ else ""
103+ ),
94104 "metadata" : json .dumps (self .metadata ),
95105 "last_used_at" : self .last_used_at .isoformat () if self .last_used_at else "" ,
96106 "usage_count" : str (self .usage_count ),
@@ -101,31 +111,39 @@ def from_redis_hash(cls, data: Dict[bytes, bytes]) -> "ApiKeyRecord":
101111 """Create from Redis hash data (bytes keys/values)."""
102112 # Decode bytes to strings
103113 decoded = {
104- k .decode ()
105- if isinstance (k , bytes )
106- else k : v .decode ()
107- if isinstance (v , bytes )
108- else v
114+ k .decode () if isinstance (k , bytes ) else k : (
115+ v .decode () if isinstance (v , bytes ) else v
116+ )
109117 for k , v in data .items ()
110118 }
111119
112120 # Parse rate limits
113121 rate_limits = RateLimits (
114- per_second = int (decoded ["rate_limits_per_second" ])
115- if decoded .get ("rate_limits_per_second" )
116- else None ,
117- per_minute = int (decoded ["rate_limits_per_minute" ])
118- if decoded .get ("rate_limits_per_minute" )
119- else None ,
120- hourly = int (decoded ["rate_limits_hourly" ])
121- if decoded .get ("rate_limits_hourly" )
122- else None ,
123- daily = int (decoded ["rate_limits_daily" ])
124- if decoded .get ("rate_limits_daily" )
125- else None ,
126- monthly = int (decoded ["rate_limits_monthly" ])
127- if decoded .get ("rate_limits_monthly" )
128- else None ,
122+ per_second = (
123+ int (decoded ["rate_limits_per_second" ])
124+ if decoded .get ("rate_limits_per_second" )
125+ else None
126+ ),
127+ per_minute = (
128+ int (decoded ["rate_limits_per_minute" ])
129+ if decoded .get ("rate_limits_per_minute" )
130+ else None
131+ ),
132+ hourly = (
133+ int (decoded ["rate_limits_hourly" ])
134+ if decoded .get ("rate_limits_hourly" )
135+ else None
136+ ),
137+ daily = (
138+ int (decoded ["rate_limits_daily" ])
139+ if decoded .get ("rate_limits_daily" )
140+ else None
141+ ),
142+ monthly = (
143+ int (decoded ["rate_limits_monthly" ])
144+ if decoded .get ("rate_limits_monthly" )
145+ else None
146+ ),
129147 )
130148
131149 # Parse timestamps
@@ -158,9 +176,9 @@ def to_display_dict(self) -> Dict[str, Any]:
158176 "name" : self .name ,
159177 "enabled" : self .enabled ,
160178 "created_at" : self .created_at .isoformat (),
161- "last_used_at" : self . last_used_at . isoformat ()
162- if self .last_used_at
163- else None ,
179+ "last_used_at" : (
180+ self . last_used_at . isoformat () if self .last_used_at else None
181+ ) ,
164182 "usage_count" : self .usage_count ,
165183 "rate_limits" : {
166184 "hourly" : self .rate_limits .hourly ,
0 commit comments