pando-vcs 3.3.0__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.
@@ -0,0 +1,5 @@
1
+ __pycache__/
2
+ .venv/
3
+ *.egg-info/
4
+ dist/
5
+ .pytest_cache/
@@ -0,0 +1,33 @@
1
+ Metadata-Version: 2.5
2
+ Name: pando-vcs
3
+ Version: 3.3.0
4
+ Summary: Python client for Pando, source control for monorepos at agent scale
5
+ Project-URL: Homepage, https://kabirnarang39.github.io/pando/
6
+ Project-URL: Repository, https://github.com/kabirnarang39/pando
7
+ License-Expression: Apache-2.0
8
+ Keywords: grpc,monorepo,pando,source-control,version-control
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Topic :: Software Development :: Version Control
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: blake3>=1.0
13
+ Requires-Dist: grpcio>=1.66
14
+ Requires-Dist: protobuf>=5.28
15
+ Description-Content-Type: text/markdown
16
+
17
+ # pando (Python)
18
+
19
+ Python client for [Pando](https://github.com/kabirnarang39/pando): read files, list
20
+ directories, search, and inspect history at any revision without cloning.
21
+
22
+ ```python
23
+ from pando import Client
24
+
25
+ repo = Client("http://127.0.0.1:7420", token=None)
26
+ print(repo.read_file("src/lib.rs").decode())
27
+ for cs in repo.log(path="src", limit=10):
28
+ print(cs.id[:12], cs.author, cs.summary)
29
+ print(repo.diff("main~1-id", "main")) # changeset ids or ref names
30
+ ```
31
+
32
+ Changeset contents are verified against their BLAKE3 ids (except changesets the server
33
+ redacted because of your read permissions, which are marked `redacted=True`).
@@ -0,0 +1,17 @@
1
+ # pando (Python)
2
+
3
+ Python client for [Pando](https://github.com/kabirnarang39/pando): read files, list
4
+ directories, search, and inspect history at any revision without cloning.
5
+
6
+ ```python
7
+ from pando import Client
8
+
9
+ repo = Client("http://127.0.0.1:7420", token=None)
10
+ print(repo.read_file("src/lib.rs").decode())
11
+ for cs in repo.log(path="src", limit=10):
12
+ print(cs.id[:12], cs.author, cs.summary)
13
+ print(repo.diff("main~1-id", "main")) # changeset ids or ref names
14
+ ```
15
+
16
+ Changeset contents are verified against their BLAKE3 ids (except changesets the server
17
+ redacted because of your read permissions, which are marked `redacted=True`).
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+ # Regenerate gRPC/protobuf stubs from ../../crates/pando-proto/proto (run after protocol changes).
3
+ set -euo pipefail
4
+ cd "$(dirname "$0")"
5
+ OUT=src/pando/_gen
6
+ uv run --group dev python -m grpc_tools.protoc -I ../../crates/pando-proto/proto \
7
+ --python_out=$OUT --grpc_python_out=$OUT --pyi_out=$OUT \
8
+ pando.proto pando_objects.proto
9
+ # grpc_tools emits absolute imports; make them package-relative.
10
+ sed -i.bak 's/^import pando_pb2 as/from . import pando_pb2 as/' $OUT/pando_pb2_grpc.py && rm $OUT/*.bak
11
+ rm -f $OUT/pando_objects_pb2_grpc.py # message-only file, no services
@@ -0,0 +1,24 @@
1
+ [project]
2
+ name = "pando-vcs"
3
+ version = "3.3.0"
4
+ description = "Python client for Pando, source control for monorepos at agent scale"
5
+ readme = "README.md"
6
+ license = "Apache-2.0"
7
+ requires-python = ">=3.10"
8
+ dependencies = ["grpcio>=1.66", "protobuf>=5.28", "blake3>=1.0"]
9
+ keywords = ["source-control", "version-control", "monorepo", "grpc", "pando"]
10
+ classifiers = ["Programming Language :: Python :: 3", "Topic :: Software Development :: Version Control"]
11
+
12
+ [project.urls]
13
+ Homepage = "https://kabirnarang39.github.io/pando/"
14
+ Repository = "https://github.com/kabirnarang39/pando"
15
+
16
+ [dependency-groups]
17
+ dev = ["pytest>=8", "grpcio-tools>=1.66"]
18
+
19
+ [build-system]
20
+ requires = ["hatchling"]
21
+ build-backend = "hatchling.build"
22
+
23
+ [tool.hatch.build.targets.wheel]
24
+ packages = ["src/pando"]
@@ -0,0 +1,5 @@
1
+ """Python client for Pando (https://github.com/kabirnarang39/pando)."""
2
+
3
+ from .client import Changeset, Client, DirEntry, FileChange, IntegrityError
4
+
5
+ __all__ = ["Client", "Changeset", "DirEntry", "FileChange", "IntegrityError"]
File without changes
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: pando_objects.proto
5
+ # Protobuf Python Version: 7.35.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 7,
15
+ 35,
16
+ 1,
17
+ '',
18
+ 'pando_objects.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13pando_objects.proto\x12\x10pando.objects.v1\"K\n\tTreeEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x04mode\x18\x02 \x01(\x0e\x32\x16.pando.objects.v1.Mode\x12\n\n\x02id\x18\x03 \x01(\x0c\"4\n\x04Tree\x12,\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x1b.pando.objects.v1.TreeEntry\"N\n\nFileChange\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04\x62lob\x18\x02 \x01(\x0c\x12$\n\x04mode\x18\x03 \x01(\x0e\x32\x16.pando.objects.v1.Mode\"\x82\x01\n\tChangeset\x12\x0f\n\x07parents\x18\x01 \x03(\x0c\x12-\n\x07\x63hanges\x18\x02 \x03(\x0b\x32\x1c.pando.objects.v1.FileChange\x12\x0e\n\x06\x61uthor\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x05 \x01(\x03\"#\n\x08\x43hunkRef\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0b\n\x03len\x18\x02 \x01(\x04\"D\n\x08Manifest\x12\x0c\n\x04size\x18\x01 \x01(\x04\x12*\n\x06\x63hunks\x18\x02 \x03(\x0b\x32\x1a.pando.objects.v1.ChunkRef*0\n\x04Mode\x12\x08\n\x04\x46ILE\x10\x00\x12\x08\n\x04\x45XEC\x10\x01\x12\x0b\n\x07SYMLINK\x10\x02\x12\x07\n\x03\x44IR\x10\x03\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pando_objects_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_MODE']._serialized_start=492
35
+ _globals['_MODE']._serialized_end=540
36
+ _globals['_TREEENTRY']._serialized_start=41
37
+ _globals['_TREEENTRY']._serialized_end=116
38
+ _globals['_TREE']._serialized_start=118
39
+ _globals['_TREE']._serialized_end=170
40
+ _globals['_FILECHANGE']._serialized_start=172
41
+ _globals['_FILECHANGE']._serialized_end=250
42
+ _globals['_CHANGESET']._serialized_start=253
43
+ _globals['_CHANGESET']._serialized_end=383
44
+ _globals['_CHUNKREF']._serialized_start=385
45
+ _globals['_CHUNKREF']._serialized_end=420
46
+ _globals['_MANIFEST']._serialized_start=422
47
+ _globals['_MANIFEST']._serialized_end=490
48
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,75 @@
1
+ from google.protobuf.internal import containers as _containers
2
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
3
+ from google.protobuf import descriptor as _descriptor
4
+ from google.protobuf import message as _message
5
+ from collections.abc import Iterable as _Iterable, Mapping as _Mapping
6
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
7
+
8
+ DESCRIPTOR: _descriptor.FileDescriptor
9
+
10
+ class Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
11
+ __slots__ = ()
12
+ FILE: _ClassVar[Mode]
13
+ EXEC: _ClassVar[Mode]
14
+ SYMLINK: _ClassVar[Mode]
15
+ DIR: _ClassVar[Mode]
16
+ FILE: Mode
17
+ EXEC: Mode
18
+ SYMLINK: Mode
19
+ DIR: Mode
20
+
21
+ class TreeEntry(_message.Message):
22
+ __slots__ = ("name", "mode", "id")
23
+ NAME_FIELD_NUMBER: _ClassVar[int]
24
+ MODE_FIELD_NUMBER: _ClassVar[int]
25
+ ID_FIELD_NUMBER: _ClassVar[int]
26
+ name: str
27
+ mode: Mode
28
+ id: bytes
29
+ def __init__(self, name: _Optional[str] = ..., mode: _Optional[_Union[Mode, str]] = ..., id: _Optional[bytes] = ...) -> None: ...
30
+
31
+ class Tree(_message.Message):
32
+ __slots__ = ("entries",)
33
+ ENTRIES_FIELD_NUMBER: _ClassVar[int]
34
+ entries: _containers.RepeatedCompositeFieldContainer[TreeEntry]
35
+ def __init__(self, entries: _Optional[_Iterable[_Union[TreeEntry, _Mapping]]] = ...) -> None: ...
36
+
37
+ class FileChange(_message.Message):
38
+ __slots__ = ("path", "blob", "mode")
39
+ PATH_FIELD_NUMBER: _ClassVar[int]
40
+ BLOB_FIELD_NUMBER: _ClassVar[int]
41
+ MODE_FIELD_NUMBER: _ClassVar[int]
42
+ path: str
43
+ blob: bytes
44
+ mode: Mode
45
+ def __init__(self, path: _Optional[str] = ..., blob: _Optional[bytes] = ..., mode: _Optional[_Union[Mode, str]] = ...) -> None: ...
46
+
47
+ class Changeset(_message.Message):
48
+ __slots__ = ("parents", "changes", "author", "message", "timestamp_ms")
49
+ PARENTS_FIELD_NUMBER: _ClassVar[int]
50
+ CHANGES_FIELD_NUMBER: _ClassVar[int]
51
+ AUTHOR_FIELD_NUMBER: _ClassVar[int]
52
+ MESSAGE_FIELD_NUMBER: _ClassVar[int]
53
+ TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
54
+ parents: _containers.RepeatedScalarFieldContainer[bytes]
55
+ changes: _containers.RepeatedCompositeFieldContainer[FileChange]
56
+ author: str
57
+ message: str
58
+ timestamp_ms: int
59
+ def __init__(self, parents: _Optional[_Iterable[bytes]] = ..., changes: _Optional[_Iterable[_Union[FileChange, _Mapping]]] = ..., author: _Optional[str] = ..., message: _Optional[str] = ..., timestamp_ms: _Optional[int] = ...) -> None: ...
60
+
61
+ class ChunkRef(_message.Message):
62
+ __slots__ = ("id", "len")
63
+ ID_FIELD_NUMBER: _ClassVar[int]
64
+ LEN_FIELD_NUMBER: _ClassVar[int]
65
+ id: bytes
66
+ len: int
67
+ def __init__(self, id: _Optional[bytes] = ..., len: _Optional[int] = ...) -> None: ...
68
+
69
+ class Manifest(_message.Message):
70
+ __slots__ = ("size", "chunks")
71
+ SIZE_FIELD_NUMBER: _ClassVar[int]
72
+ CHUNKS_FIELD_NUMBER: _ClassVar[int]
73
+ size: int
74
+ chunks: _containers.RepeatedCompositeFieldContainer[ChunkRef]
75
+ def __init__(self, size: _Optional[int] = ..., chunks: _Optional[_Iterable[_Union[ChunkRef, _Mapping]]] = ...) -> None: ...
@@ -0,0 +1,132 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: pando.proto
5
+ # Protobuf Python Version: 7.35.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 7,
15
+ 35,
16
+ 1,
17
+ '',
18
+ 'pando.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bpando.proto\x12\x08pando.v1\"\x07\n\x05\x45mpty\"\x13\n\x05IdMsg\x12\n\n\x02id\x18\x01 \x01(\x0c\"\x15\n\x06IdList\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\",\n\rObjectPayload\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\"$\n\x12PutObjectsResponse\x12\x0e\n\x06stored\x18\x01 \x01(\r\"6\n\nFileChange\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04\x62lob\x18\x02 \x01(\x0c\x12\x0c\n\x04mode\x18\x03 \x01(\x05\"e\n\rChangesetInfo\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x11\n\troot_tree\x18\x02 \x01(\x0c\x12\x12\n\ngeneration\x18\x03 \x01(\x04\x12\x0f\n\x07\x65ncoded\x18\x04 \x01(\x0c\x12\x10\n\x08redacted\x18\x05 \x01(\x08\"\x87\x01\n\x16\x43reateChangesetRequest\x12\x0f\n\x07parents\x18\x01 \x03(\x0c\x12%\n\x07\x63hanges\x18\x02 \x03(\x0b\x32\x14.pando.v1.FileChange\x12\x0e\n\x06\x61uthor\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x05 \x01(\x03\"\x1d\n\x0eResolveRequest\x12\x0b\n\x03rev\x18\x01 \x01(\t\"\x17\n\x07RefName\x12\x0c\n\x04name\x18\x01 \x01(\t\"&\n\x08RefValue\x12\x0e\n\x06\x65xists\x18\x01 \x01(\x08\x12\n\n\x02id\x18\x02 \x01(\x0c\"P\n\nCasRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rexpect_exists\x18\x02 \x01(\x08\x12\x10\n\x08\x65xpected\x18\x03 \x01(\x0c\x12\x0b\n\x03new\x18\x04 \x01(\x0c\"\x1e\n\x0b\x43\x61sResponse\x12\x0f\n\x07swapped\x18\x01 \x01(\x08\"$\n\x08RefEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x0c\"+\n\x07RefList\x12 \n\x04refs\x18\x01 \x03(\x0b\x32\x12.pando.v1.RefEntry\"-\n\x0bLandRequest\x12\x0b\n\x03ref\x18\x01 \x01(\t\x12\x11\n\tchangeset\x18\x02 \x01(\x0c\"A\n\x0cLandResponse\x12\x0e\n\x06landed\x18\x01 \x01(\x0c\x12\x0f\n\x07rebased\x18\x02 \x01(\x08\x12\x10\n\x08\x61ttempts\x18\x03 \x01(\r\"6\n\nLogRequest\x12\x0b\n\x03rev\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\r\n\x05limit\x18\x03 \x01(\r\")\n\x0c\x42lameRequest\x12\x0b\n\x03rev\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\",\n\tBlameLine\x12\x11\n\tchangeset\x18\x01 \x01(\x0c\x12\x0c\n\x04text\x18\x02 \x01(\t\"3\n\rBlameResponse\x12\"\n\x05lines\x18\x01 \x03(\x0b\x32\x13.pando.v1.BlameLine\"\'\n\x0b\x44iffRequest\x12\x0c\n\x04\x66rom\x18\x01 \x01(\t\x12\n\n\x02to\x18\x02 \x01(\t\"5\n\x0c\x44iffResponse\x12%\n\x07\x63hanges\x18\x01 \x03(\x0b\x32\x14.pando.v1.FileChange\"(\n\x10MergeBaseRequest\x12\t\n\x01\x61\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\t\".\n\x11MergeBaseResponse\x12\r\n\x05\x66ound\x18\x01 \x01(\x08\x12\n\n\x02id\x18\x02 \x01(\x0c\"*\n\rBrowseRequest\x12\x0b\n\x03rev\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"2\n\x08\x44irEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04mode\x18\x02 \x01(\x05\x12\n\n\x02id\x18\x03 \x01(\x0c\"6\n\x0fListDirResponse\x12#\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x12.pando.v1.DirEntry\"=\n\x10ReadFileResponse\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x12\x0c\n\x04mode\x18\x02 \x01(\x05\x12\n\n\x02id\x18\x03 \x01(\x0c\":\n\x0b\x46indRequest\x12\x0b\n\x03rev\x18\x01 \x01(\t\x12\x0f\n\x07pattern\x18\x02 \x01(\t\x12\r\n\x05limit\x18\x03 \x01(\r\"0\n\x0c\x46indResponse\x12\r\n\x05paths\x18\x01 \x03(\t\x12\x11\n\ttruncated\x18\x02 \x01(\x08\"-\n\x0f\x43heckoutRequest\x12\x0b\n\x03rev\x18\x01 \x01(\t\x12\r\n\x05paths\x18\x02 \x03(\t\"S\n\rCheckoutPiece\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04mode\x18\x02 \x01(\x05\x12\n\n\x02id\x18\x03 \x01(\x0c\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0c\n\x04last\x18\x05 \x01(\x08\"M\n\x0eWhoAmIResponse\x12\x11\n\tprincipal\x18\x01 \x01(\t\x12\x11\n\tfull_read\x18\x02 \x01(\x08\x12\x15\n\rread_prefixes\x18\x03 \x03(\t\"\x1b\n\x0bLockRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\",\n\rUnlockRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\r\n\x05\x66orce\x18\x02 \x01(\x08\"\"\n\x10ListLocksRequest\x12\x0e\n\x06prefix\x18\x01 \x01(\t\"=\n\x08LockInfo\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x14\n\x0clocked_at_ms\x18\x03 \x01(\x03\"-\n\x08LockList\x12!\n\x05locks\x18\x01 \x03(\x0b\x32\x12.pando.v1.LockInfo2\xac\x01\n\x07Objects\x12\x32\n\x03Get\x12\x10.pando.v1.IdList\x1a\x17.pando.v1.ObjectPayload0\x01\x12>\n\x03Put\x12\x17.pando.v1.ObjectPayload\x1a\x1c.pando.v1.PutObjectsResponse(\x01\x12-\n\x07Missing\x12\x10.pando.v1.IdList\x1a\x10.pando.v1.IdList2\x8b\x01\n\nChangesets\x12\x43\n\x06\x43reate\x12 .pando.v1.CreateChangesetRequest\x1a\x17.pando.v1.ChangesetInfo\x12\x38\n\x03Get\x12\x18.pando.v1.ResolveRequest\x1a\x17.pando.v1.ChangesetInfo2\x9f\x01\n\x04Refs\x12,\n\x03Get\x12\x11.pando.v1.RefName\x1a\x12.pando.v1.RefValue\x12=\n\x0e\x43ompareAndSwap\x12\x14.pando.v1.CasRequest\x1a\x15.pando.v1.CasResponse\x12*\n\x04List\x12\x0f.pando.v1.Empty\x1a\x11.pando.v1.RefList2=\n\x04Land\x12\x35\n\x04Land\x12\x15.pando.v1.LandRequest\x1a\x16.pando.v1.LandResponse2{\n\x07History\x12\x36\n\x03Log\x12\x14.pando.v1.LogRequest\x1a\x17.pando.v1.ChangesetInfo0\x01\x12\x38\n\x05\x42lame\x12\x16.pando.v1.BlameRequest\x1a\x17.pando.v1.BlameResponse2=\n\x04\x44iff\x12\x35\n\x04\x44iff\x12\x15.pando.v1.DiffRequest\x1a\x16.pando.v1.DiffResponse2Q\n\tMergeBase\x12\x44\n\tMergeBase\x12\x1a.pando.v1.MergeBaseRequest\x1a\x1b.pando.v1.MergeBaseResponse2\x81\x02\n\x06\x42rowse\x12=\n\x07ListDir\x12\x17.pando.v1.BrowseRequest\x1a\x19.pando.v1.ListDirResponse\x12?\n\x08ReadFile\x12\x17.pando.v1.BrowseRequest\x1a\x1a.pando.v1.ReadFileResponse\x12\x35\n\x04\x46ind\x12\x15.pando.v1.FindRequest\x1a\x16.pando.v1.FindResponse\x12@\n\x08\x43heckout\x12\x19.pando.v1.CheckoutRequest\x1a\x17.pando.v1.CheckoutPiece0\x01\x32=\n\x06\x41\x63\x63\x65ss\x12\x33\n\x06WhoAmI\x12\x0f.pando.v1.Empty\x1a\x18.pando.v1.WhoAmIResponse2\xa6\x01\n\x05Locks\x12\x31\n\x04Lock\x12\x15.pando.v1.LockRequest\x1a\x12.pando.v1.LockInfo\x12\x32\n\x06Unlock\x12\x17.pando.v1.UnlockRequest\x1a\x0f.pando.v1.Empty\x12\x36\n\x04List\x12\x1a.pando.v1.ListLocksRequest\x1a\x12.pando.v1.LockListb\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pando_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_EMPTY']._serialized_start=25
35
+ _globals['_EMPTY']._serialized_end=32
36
+ _globals['_IDMSG']._serialized_start=34
37
+ _globals['_IDMSG']._serialized_end=53
38
+ _globals['_IDLIST']._serialized_start=55
39
+ _globals['_IDLIST']._serialized_end=76
40
+ _globals['_OBJECTPAYLOAD']._serialized_start=78
41
+ _globals['_OBJECTPAYLOAD']._serialized_end=122
42
+ _globals['_PUTOBJECTSRESPONSE']._serialized_start=124
43
+ _globals['_PUTOBJECTSRESPONSE']._serialized_end=160
44
+ _globals['_FILECHANGE']._serialized_start=162
45
+ _globals['_FILECHANGE']._serialized_end=216
46
+ _globals['_CHANGESETINFO']._serialized_start=218
47
+ _globals['_CHANGESETINFO']._serialized_end=319
48
+ _globals['_CREATECHANGESETREQUEST']._serialized_start=322
49
+ _globals['_CREATECHANGESETREQUEST']._serialized_end=457
50
+ _globals['_RESOLVEREQUEST']._serialized_start=459
51
+ _globals['_RESOLVEREQUEST']._serialized_end=488
52
+ _globals['_REFNAME']._serialized_start=490
53
+ _globals['_REFNAME']._serialized_end=513
54
+ _globals['_REFVALUE']._serialized_start=515
55
+ _globals['_REFVALUE']._serialized_end=553
56
+ _globals['_CASREQUEST']._serialized_start=555
57
+ _globals['_CASREQUEST']._serialized_end=635
58
+ _globals['_CASRESPONSE']._serialized_start=637
59
+ _globals['_CASRESPONSE']._serialized_end=667
60
+ _globals['_REFENTRY']._serialized_start=669
61
+ _globals['_REFENTRY']._serialized_end=705
62
+ _globals['_REFLIST']._serialized_start=707
63
+ _globals['_REFLIST']._serialized_end=750
64
+ _globals['_LANDREQUEST']._serialized_start=752
65
+ _globals['_LANDREQUEST']._serialized_end=797
66
+ _globals['_LANDRESPONSE']._serialized_start=799
67
+ _globals['_LANDRESPONSE']._serialized_end=864
68
+ _globals['_LOGREQUEST']._serialized_start=866
69
+ _globals['_LOGREQUEST']._serialized_end=920
70
+ _globals['_BLAMEREQUEST']._serialized_start=922
71
+ _globals['_BLAMEREQUEST']._serialized_end=963
72
+ _globals['_BLAMELINE']._serialized_start=965
73
+ _globals['_BLAMELINE']._serialized_end=1009
74
+ _globals['_BLAMERESPONSE']._serialized_start=1011
75
+ _globals['_BLAMERESPONSE']._serialized_end=1062
76
+ _globals['_DIFFREQUEST']._serialized_start=1064
77
+ _globals['_DIFFREQUEST']._serialized_end=1103
78
+ _globals['_DIFFRESPONSE']._serialized_start=1105
79
+ _globals['_DIFFRESPONSE']._serialized_end=1158
80
+ _globals['_MERGEBASEREQUEST']._serialized_start=1160
81
+ _globals['_MERGEBASEREQUEST']._serialized_end=1200
82
+ _globals['_MERGEBASERESPONSE']._serialized_start=1202
83
+ _globals['_MERGEBASERESPONSE']._serialized_end=1248
84
+ _globals['_BROWSEREQUEST']._serialized_start=1250
85
+ _globals['_BROWSEREQUEST']._serialized_end=1292
86
+ _globals['_DIRENTRY']._serialized_start=1294
87
+ _globals['_DIRENTRY']._serialized_end=1344
88
+ _globals['_LISTDIRRESPONSE']._serialized_start=1346
89
+ _globals['_LISTDIRRESPONSE']._serialized_end=1400
90
+ _globals['_READFILERESPONSE']._serialized_start=1402
91
+ _globals['_READFILERESPONSE']._serialized_end=1463
92
+ _globals['_FINDREQUEST']._serialized_start=1465
93
+ _globals['_FINDREQUEST']._serialized_end=1523
94
+ _globals['_FINDRESPONSE']._serialized_start=1525
95
+ _globals['_FINDRESPONSE']._serialized_end=1573
96
+ _globals['_CHECKOUTREQUEST']._serialized_start=1575
97
+ _globals['_CHECKOUTREQUEST']._serialized_end=1620
98
+ _globals['_CHECKOUTPIECE']._serialized_start=1622
99
+ _globals['_CHECKOUTPIECE']._serialized_end=1705
100
+ _globals['_WHOAMIRESPONSE']._serialized_start=1707
101
+ _globals['_WHOAMIRESPONSE']._serialized_end=1784
102
+ _globals['_LOCKREQUEST']._serialized_start=1786
103
+ _globals['_LOCKREQUEST']._serialized_end=1813
104
+ _globals['_UNLOCKREQUEST']._serialized_start=1815
105
+ _globals['_UNLOCKREQUEST']._serialized_end=1859
106
+ _globals['_LISTLOCKSREQUEST']._serialized_start=1861
107
+ _globals['_LISTLOCKSREQUEST']._serialized_end=1895
108
+ _globals['_LOCKINFO']._serialized_start=1897
109
+ _globals['_LOCKINFO']._serialized_end=1958
110
+ _globals['_LOCKLIST']._serialized_start=1960
111
+ _globals['_LOCKLIST']._serialized_end=2005
112
+ _globals['_OBJECTS']._serialized_start=2008
113
+ _globals['_OBJECTS']._serialized_end=2180
114
+ _globals['_CHANGESETS']._serialized_start=2183
115
+ _globals['_CHANGESETS']._serialized_end=2322
116
+ _globals['_REFS']._serialized_start=2325
117
+ _globals['_REFS']._serialized_end=2484
118
+ _globals['_LAND']._serialized_start=2486
119
+ _globals['_LAND']._serialized_end=2547
120
+ _globals['_HISTORY']._serialized_start=2549
121
+ _globals['_HISTORY']._serialized_end=2672
122
+ _globals['_DIFF']._serialized_start=2674
123
+ _globals['_DIFF']._serialized_end=2735
124
+ _globals['_MERGEBASE']._serialized_start=2737
125
+ _globals['_MERGEBASE']._serialized_end=2818
126
+ _globals['_BROWSE']._serialized_start=2821
127
+ _globals['_BROWSE']._serialized_end=3078
128
+ _globals['_ACCESS']._serialized_start=3080
129
+ _globals['_ACCESS']._serialized_end=3141
130
+ _globals['_LOCKS']._serialized_start=3144
131
+ _globals['_LOCKS']._serialized_end=3310
132
+ # @@protoc_insertion_point(module_scope)