City Proto Generated Python SDK
Project description
Protos
proto 文件仓库。
内容
city.agent
: 智能体city.cognition
: 认知city.comm
: 通信city.config
: 配置文件基本组件city.elec
: 电网city.event
: 城市事件city.geo
: 坐标体系city.map
: 地图city.routing
: 路径规划city.social
: 社交city.streetview
: 街景city.sync
: 全局同步器city.traffic
: 交通city.traffic_light
: 信控city.trip
: 出行与日程city.wargame
: 兵棋city.water
: 水网
STYLE
以buf作为 linter,按 buf 的要求作为标准。
另外,为避免二义性,所有不在完全相同命名空间下的跨文件引用均需要写出完成包名。
在相同命名空间下的,不要引入包名(主要是针对xxx.proto
与xxx_service.proto
)。
参考:
- https://developers.google.com/protocol-buffers/docs/style
- https://github.com/uber/prototool/blob/dev/style/README.md
关于 enum: prefer uber 的 style
- 独立定义 enum,不嵌入 message
- enum 的 item 名称加 enum name 作为前缀
约定
- 所有浮点数采用 double 精度。
- .proto 中不包含任何
option
,需要指定option
的目标语言采用buf managed mode进行管理。 - 采用聚合性质的 message 作为 mongodb collection 的语义表示,并便于开发 Golang 的数据读取代理。
BSON兼容性
完全支持通过 Golang struct tag 机制实现 bson
到 pb
的快速转换,并删去不能在 bson
中体现的语义:
- 所有的
oneof
由 optional 替代,oneof
的功能依靠约定实现。- 原因:struct tag 无法正确处理
oneof
,bson
无法体现oneof
语义,oneof
语义实际作用价值不大,目前主要体现在map_position
与departure
中。
- 原因:struct tag 无法正确处理
- 所有的
float
替换为double
。- 原因:
bson
中没有float32
,python
没有float32
,C++
在 64 位 CPU 上采用float32
与float64
计算速度相同。
- 原因:
- 所有的
uint32
替换为int32
。- 原因:
bson
中没有uint
,python
没有uint
,同时简化C++
与go
代码编写(统一用int32
)。
- 原因:
- 枚举在
bson
中存储由字符串替换为整数。- struct tag 无法正确处理字符串形式的枚举。
- 丰富
bson
中的 external 数据项,解决关联到原始数据的问题。
更新与Golang/Python库发布
完成git仓库修改后,执行以下命令:
git tag v${major}.${minor}.${patch} # 例如 v0.1.0,设置版本号
git push --tags # 推送版本号
Golang库使用
go get -u git.fiblab.net/sim/protos@v${major}.${minor}.${patch}
Python库使用
pip install pycityproto --extra-index-url https://__token__:glpat-fq6C-NTr45Z_Te4BV4kC@git.fiblab.net/api/v4/projects/26/packages/pypi/simple
安装 grpcio 的过程中,如果出现
pip install fails with "No such file or directory: 'c++': 'c++'"
代表缺少 C++相关依赖。在 Debian 镜像上,执行:
sudo apt install build-essential
在 alpine 镜像上,执行:
apk add g++
JS/TS
NPM
首先,保证项目已经能够正确访问NPM服务
npm config set @fiblab:registry https://git.fiblab.net/api/v4/projects/26/packages/npm/
npm config set -- '//git.fiblab.net/api/v4/projects/26/packages/npm/:_authToken' "glpat-sdKgi23Ns3KvfpyrREzy"
然后,使用npm install
命令安装SDK:
npm install @fiblab/cityproto
Yarn
首先,保证项目已经能够正确访问NPM服务
yarn config set @fiblab:registry https://git.fiblab.net/api/v4/projects/26/packages/npm/
# 以下未经测试
yarn config set -- '//git.fiblab.net/api/v4/projects/26/packages/npm/:_authToken' "glpat-sdKgi23Ns3KvfpyrREzy"
然后,使用npm install
命令安装SDK:
yarn add @fiblab/cityproto
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pycityproto-1.21.0.tar.gz
(98.6 kB
view hashes)
Built Distribution
pycityproto-1.21.0-py3-none-any.whl
(198.2 kB
view hashes)
Close
Hashes for pycityproto-1.21.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7d8e91f3b10d0fa0ac286af08e3491b7a393e0655b2d79c2a06ef71fc6518b9 |
|
MD5 | 99d9e23a01ff54c9c4f61993cb1b6f72 |
|
BLAKE2b-256 | 409840d58a1e71f86c33584776e8ecdab78b303979d76fb7cfda37ce244e81d4 |