Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/google/cloud/firestore_v1/types/document.py: 97%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

30 statements  

1# -*- coding: utf-8 -*- 

2# Copyright 2025 Google LLC 

3# 

4# Licensed under the Apache License, Version 2.0 (the "License"); 

5# you may not use this file except in compliance with the License. 

6# You may obtain a copy of the License at 

7# 

8# http://www.apache.org/licenses/LICENSE-2.0 

9# 

10# Unless required by applicable law or agreed to in writing, software 

11# distributed under the License is distributed on an "AS IS" BASIS, 

12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

13# See the License for the specific language governing permissions and 

14# limitations under the License. 

15# 

16from __future__ import annotations 

17 

18from typing import MutableMapping, MutableSequence 

19 

20import proto # type: ignore 

21 

22from google.protobuf import struct_pb2 # type: ignore 

23from google.protobuf import timestamp_pb2 # type: ignore 

24from google.type import latlng_pb2 # type: ignore 

25 

26 

27__protobuf__ = proto.module( 

28 package="google.firestore.v1", 

29 manifest={ 

30 "Document", 

31 "Value", 

32 "ArrayValue", 

33 "MapValue", 

34 }, 

35) 

36 

37 

38class Document(proto.Message): 

39 r"""A Firestore document. 

40 

41 Must not exceed 1 MiB - 4 bytes. 

42 

43 Attributes: 

44 name (str): 

45 The resource name of the document, for example 

46 ``projects/{project_id}/databases/{database_id}/documents/{document_path}``. 

47 fields (MutableMapping[str, google.cloud.firestore_v1.types.Value]): 

48 The document's fields. 

49 

50 The map keys represent field names. 

51 

52 Field names matching the regular expression ``__.*__`` are 

53 reserved. Reserved field names are forbidden except in 

54 certain documented contexts. The field names, represented as 

55 UTF-8, must not exceed 1,500 bytes and cannot be empty. 

56 

57 Field paths may be used in other contexts to refer to 

58 structured fields defined here. For ``map_value``, the field 

59 path is represented by a dot-delimited (``.``) string of 

60 segments. Each segment is either a simple field name 

61 (defined below) or a quoted field name. For example, the 

62 structured field 

63 ``"foo" : { map_value: { "x&y" : { string_value: "hello" }}}`` 

64 would be represented by the field path 

65 :literal:`foo.`x&y\``. 

66 

67 A simple field name contains only characters ``a`` to ``z``, 

68 ``A`` to ``Z``, ``0`` to ``9``, or ``_``, and must not start 

69 with ``0`` to ``9``. For example, ``foo_bar_17``. 

70 

71 A quoted field name starts and ends with :literal:`\`` and 

72 may contain any character. Some characters, including 

73 :literal:`\``, must be escaped using a ``\``. For example, 

74 :literal:`\`x&y\`` represents ``x&y`` and 

75 :literal:`\`bak\`tik\`` represents :literal:`bak`tik`. 

76 create_time (google.protobuf.timestamp_pb2.Timestamp): 

77 Output only. The time at which the document was created. 

78 

79 This value increases monotonically when a document is 

80 deleted then recreated. It can also be compared to values 

81 from other documents and the ``read_time`` of a query. 

82 update_time (google.protobuf.timestamp_pb2.Timestamp): 

83 Output only. The time at which the document was last 

84 changed. 

85 

86 This value is initially set to the ``create_time`` then 

87 increases monotonically with each change to the document. It 

88 can also be compared to values from other documents and the 

89 ``read_time`` of a query. 

90 """ 

91 

92 name: str = proto.Field( 

93 proto.STRING, 

94 number=1, 

95 ) 

96 fields: MutableMapping[str, "Value"] = proto.MapField( 

97 proto.STRING, 

98 proto.MESSAGE, 

99 number=2, 

100 message="Value", 

101 ) 

102 create_time: timestamp_pb2.Timestamp = proto.Field( 

103 proto.MESSAGE, 

104 number=3, 

105 message=timestamp_pb2.Timestamp, 

106 ) 

107 update_time: timestamp_pb2.Timestamp = proto.Field( 

108 proto.MESSAGE, 

109 number=4, 

110 message=timestamp_pb2.Timestamp, 

111 ) 

112 

113 

114class Value(proto.Message): 

115 r"""A message that can hold any of the supported value types. 

116 

117 This message has `oneof`_ fields (mutually exclusive fields). 

118 For each oneof, at most one member field can be set at the same time. 

119 Setting any member of the oneof automatically clears all other 

120 members. 

121 

122 .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields 

123 

124 Attributes: 

125 null_value (google.protobuf.struct_pb2.NullValue): 

126 A null value. 

127 

128 This field is a member of `oneof`_ ``value_type``. 

129 boolean_value (bool): 

130 A boolean value. 

131 

132 This field is a member of `oneof`_ ``value_type``. 

133 integer_value (int): 

134 An integer value. 

135 

136 This field is a member of `oneof`_ ``value_type``. 

137 double_value (float): 

138 A double value. 

139 

140 This field is a member of `oneof`_ ``value_type``. 

141 timestamp_value (google.protobuf.timestamp_pb2.Timestamp): 

142 A timestamp value. 

143 

144 Precise only to microseconds. When stored, any 

145 additional precision is rounded down. 

146 

147 This field is a member of `oneof`_ ``value_type``. 

148 string_value (str): 

149 A string value. 

150 

151 The string, represented as UTF-8, must not 

152 exceed 1 MiB - 89 bytes. Only the first 1,500 

153 bytes of the UTF-8 representation are considered 

154 by queries. 

155 

156 This field is a member of `oneof`_ ``value_type``. 

157 bytes_value (bytes): 

158 A bytes value. 

159 

160 Must not exceed 1 MiB - 89 bytes. 

161 Only the first 1,500 bytes are considered by 

162 queries. 

163 

164 This field is a member of `oneof`_ ``value_type``. 

165 reference_value (str): 

166 A reference to a document. For example: 

167 ``projects/{project_id}/databases/{database_id}/documents/{document_path}``. 

168 

169 This field is a member of `oneof`_ ``value_type``. 

170 geo_point_value (google.type.latlng_pb2.LatLng): 

171 A geo point value representing a point on the 

172 surface of Earth. 

173 

174 This field is a member of `oneof`_ ``value_type``. 

175 array_value (google.cloud.firestore_v1.types.ArrayValue): 

176 An array value. 

177 

178 Cannot directly contain another array value, 

179 though can contain a map which contains another 

180 array. 

181 

182 This field is a member of `oneof`_ ``value_type``. 

183 map_value (google.cloud.firestore_v1.types.MapValue): 

184 A map value. 

185 

186 This field is a member of `oneof`_ ``value_type``. 

187 """ 

188 

189 null_value: struct_pb2.NullValue = proto.Field( 

190 proto.ENUM, 

191 number=11, 

192 oneof="value_type", 

193 enum=struct_pb2.NullValue, 

194 ) 

195 boolean_value: bool = proto.Field( 

196 proto.BOOL, 

197 number=1, 

198 oneof="value_type", 

199 ) 

200 integer_value: int = proto.Field( 

201 proto.INT64, 

202 number=2, 

203 oneof="value_type", 

204 ) 

205 double_value: float = proto.Field( 

206 proto.DOUBLE, 

207 number=3, 

208 oneof="value_type", 

209 ) 

210 timestamp_value: timestamp_pb2.Timestamp = proto.Field( 

211 proto.MESSAGE, 

212 number=10, 

213 oneof="value_type", 

214 message=timestamp_pb2.Timestamp, 

215 ) 

216 string_value: str = proto.Field( 

217 proto.STRING, 

218 number=17, 

219 oneof="value_type", 

220 ) 

221 bytes_value: bytes = proto.Field( 

222 proto.BYTES, 

223 number=18, 

224 oneof="value_type", 

225 ) 

226 reference_value: str = proto.Field( 

227 proto.STRING, 

228 number=5, 

229 oneof="value_type", 

230 ) 

231 geo_point_value: latlng_pb2.LatLng = proto.Field( 

232 proto.MESSAGE, 

233 number=8, 

234 oneof="value_type", 

235 message=latlng_pb2.LatLng, 

236 ) 

237 array_value: "ArrayValue" = proto.Field( 

238 proto.MESSAGE, 

239 number=9, 

240 oneof="value_type", 

241 message="ArrayValue", 

242 ) 

243 map_value: "MapValue" = proto.Field( 

244 proto.MESSAGE, 

245 number=6, 

246 oneof="value_type", 

247 message="MapValue", 

248 ) 

249 

250 

251class ArrayValue(proto.Message): 

252 r"""An array value. 

253 

254 Attributes: 

255 values (MutableSequence[google.cloud.firestore_v1.types.Value]): 

256 Values in the array. 

257 """ 

258 

259 values: MutableSequence["Value"] = proto.RepeatedField( 

260 proto.MESSAGE, 

261 number=1, 

262 message="Value", 

263 ) 

264 

265 

266class MapValue(proto.Message): 

267 r"""A map value. 

268 

269 Attributes: 

270 fields (MutableMapping[str, google.cloud.firestore_v1.types.Value]): 

271 The map's fields. 

272 

273 The map keys represent field names. Field names matching the 

274 regular expression ``__.*__`` are reserved. Reserved field 

275 names are forbidden except in certain documented contexts. 

276 The map keys, represented as UTF-8, must not exceed 1,500 

277 bytes and cannot be empty. 

278 """ 

279 

280 fields: MutableMapping[str, "Value"] = proto.MapField( 

281 proto.STRING, 

282 proto.MESSAGE, 

283 number=1, 

284 message="Value", 

285 ) 

286 

287 

288__all__ = tuple(sorted(__protobuf__.manifest))