diff --git a/Makefile b/Makefile index f8919819a..8f883e454 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,7 @@ ENVIRONMENT := development OS := $(shell uname -s) .PHONY: build -build: - cd proto && $(MAKE) build +build: verify-dev-env cd go && $(MAKE) build-all ENVIRONMENT=$(ENVIRONMENT) cd python && $(MAKE) build diff --git a/go/go.mod b/go/go.mod index 903de56c9..3972dc053 100644 --- a/go/go.mod +++ b/go/go.mod @@ -11,7 +11,6 @@ require ( github.com/go-bindata/go-bindata v3.1.2+incompatible github.com/golang/protobuf v1.4.3 github.com/golangci/golangci-lint v1.32.2 - github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible // indirect github.com/hashicorp/go-uuid v1.0.2 github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d github.com/logrusorgru/aurora v2.0.3+incompatible @@ -33,8 +32,8 @@ require ( golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect golang.org/x/tools v0.0.0-20201121010211-780cb80bd7fb - google.golang.org/api v0.29.0 - google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece + google.golang.org/api v0.32.0 + google.golang.org/genproto v0.0.0-20200921151605-7abf4a1a14d5 google.golang.org/grpc v1.33.2 google.golang.org/protobuf v1.25.0 gotest.tools/gotestsum v0.5.2 diff --git a/go/go.sum b/go/go.sum index a15043fe2..40932f612 100644 --- a/go/go.sum +++ b/go/go.sum @@ -19,9 +19,8 @@ cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.66.0 h1:DZeAkuQGQqnm9Xv36SbMJEU8aFBz4wL04UpMWPWwjzg= cloud.google.com/go v0.66.0/go.mod h1:dgqGAjKCDxyhGTtC9dAREQGUJpkceNm1yt590Qno0Ko= -cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0 h1:xE3CPsOgttP4ACBePh79zTKALtXwn/Edhcr16R5hMWU= @@ -74,10 +73,6 @@ github.com/araddon/dateparse v0.0.0-20200409225146-d820a6159ab1/go.mod h1:SLqhdZ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/ashanbrown/forbidigo v1.0.0 h1:QdNXBduDUopc3GW+YVYZn8jzmIMklQiCfdN2N5+dQeE= -github.com/ashanbrown/forbidigo v1.0.0/go.mod h1:PH+zMRWE15yW69fYfe7Kn8nYR6yYyafc3ntEGh2BBAg= -github.com/ashanbrown/makezero v0.0.0-20201205152432-7b7cdbb3025a h1:/U9tbJzDRof4fOR51vwzWdIBsIH6R2yU0KG1MBRM2Js= -github.com/ashanbrown/makezero v0.0.0-20201205152432-7b7cdbb3025a/go.mod h1:oG9Dnez7/ESBqc4EdrdNlryeo7d0KcW1ftXHm7nU/UU= github.com/aws/aws-sdk-go v1.36.16 h1:ycOrUsbKiBydQ3tM29Gu5abM4SyPKyjR4huOG/k3f8A= github.com/aws/aws-sdk-go v1.36.16/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -105,13 +100,13 @@ github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/daixiang0/gci v0.2.7 h1:bosLNficubzJZICsVzxuyNc6oAbdz0zcqLG2G/RxtY4= -github.com/daixiang0/gci v0.2.7/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= +github.com/daixiang0/gci v0.2.4 h1:BUCKk5nlK2m+kRIsoj+wb/5hazHvHeZieBKWd9Afa8Q= +github.com/daixiang0/gci v0.2.4/go.mod h1:+AV8KmHTGxxwp/pY84TLQfFKp2vuKXXJVzF3kD/hfR4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denis-tingajkin/go-header v0.4.2 h1:jEeSF4sdv8/3cT/WY8AgDHUoItNSoEZ7qg9dX7pc218= -github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA= +github.com/denis-tingajkin/go-header v0.3.1 h1:ymEpSiFjeItCy1FOP+x0M2KdCELdEAHUsNa8F+hHc6w= +github.com/denis-tingajkin/go-header v0.3.1/go.mod h1:sq/2IxMhaZX+RRcgHfCRx/m0M5na0fBt4/CRe7Lrji0= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= @@ -218,12 +213,14 @@ github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6 h1:YYWNAGTKWhKpc github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw= github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d h1:pXTK/gkVNs7Zyy7WKgLXmpQ5bHTrq5GDsp8R9Qs67g0= github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.34.1 h1:xf1yVlLBNeCIoOHWXhwqnUeaqzONllRSgiLSahNt0Mw= -github.com/golangci/golangci-lint v1.34.1/go.mod h1:6Bnn7T0JYin7uukitgL6f9E9auQatlT0RMNOKG9lSHU= +github.com/golangci/golangci-lint v1.32.2 h1:CgIeFWTLJ3Nt1w/WU1RO351j/CjN6LIVjppbJfI9nMk= +github.com/golangci/golangci-lint v1.32.2/go.mod h1:ydr+IqtIVyAh72L16aK0bNdNg/YGa+AEgdbKj9MluzI= github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc h1:gLLhTLMk2/SutryVJ6D4VZCU3CUqr8YloG7FPIBWFpI= github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= @@ -251,15 +248,10 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -268,7 +260,6 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200905233945-acf8798be1f7/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -285,12 +276,8 @@ github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.m github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.1.0 h1:E4c8Y1EQURbBEAHoXc/jBTK7Np14ArT8NPUiSFOl9yc= github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= -github.com/gostaticanalysis/analysisutil v0.4.1 h1:/7clKqrVfiVwiBQLM0Uke4KvXnO6JcCTS7HwF2D6wG8= -github.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0= github.com/gostaticanalysis/comment v1.3.0 h1:wTVgynbFu8/nz6SGgywA0TcyIoAVsYc7ai/Zp5xNGlw= github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= -github.com/gostaticanalysis/comment v1.4.1 h1:xHopR5L2lRz6OsjH4R2HG5wRhW9ySl3FsHIvi5pcXwc= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -319,11 +306,8 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3 h1:7nkB9fLPMwtn/R6qfPcHileL/x9ydlhw8XyDrLI1ZXg= -github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYPNLe3d8smommaoQlK7LOA5ESyUJJ+Wf79ZtA7Vp4= @@ -371,12 +355,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.1.0 h1:ig1EW6yhDiRNN3dplbhdsW2gTvbxTz9i4q5Rr/tRfpk= -github.com/kulti/thelper v0.1.0/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= -github.com/kunwardeep/paralleltest v1.0.2 h1:/jJRv0TiqPoEy/Y8dQxCFJhD56uS/pnvtatgTZBHokU= -github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2GhLxSfY+oqUsvG30= -github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= -github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= +github.com/kyoh86/exportloopref v0.1.7 h1:u+iHuTbkbTS2D/JP7fCuZDo/t3rBVGo3Hf58Rc+lQVY= +github.com/kyoh86/exportloopref v0.1.7/go.mod h1:h1rDl2Kdj97+Kwh4gdz3ujE7XHmH51Q0lUiZ1z4NLj8= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= @@ -474,8 +454,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v0.0.0-20201127212506-19bd8db6546f h1:xAw10KgJqG5NJDfmRqJ05Z0IFblKumjtMeyiOLxj3+4= -github.com/polyfloyd/go-errorlint v0.0.0-20201127212506-19bd8db6546f/go.mod h1:wi9BfjxjF/bwiZ701TzmfKu6UKC357IOAtNr0Td0Lvw= +github.com/polyfloyd/go-errorlint v0.0.0-20201006195004-351e25ade6e3 h1:Amgs0nbayPhBNGh1qPqqr2e7B2qNAcBgRjnBH/lmn8k= +github.com/polyfloyd/go-errorlint v0.0.0-20201006195004-351e25ade6e3/go.mod h1:wi9BfjxjF/bwiZ701TzmfKu6UKC357IOAtNr0Td0Lvw= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -495,10 +475,10 @@ github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:r github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.2.0 h1:YWfhGOrXwLGiqcC/u5EqG6YeS8nh+1fw0HEc85CVZro= -github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= +github.com/ryancurrah/gomodguard v1.1.0 h1:DWbye9KyMgytn8uYpuHkwf0RHqAYO6Ay/D0TbCpPtVU= +github.com/ryancurrah/gomodguard v1.1.0/go.mod h1:4O8tr7hBODaGE6VIhfJDHcwzh5GUccKSJBU0UMXJFVM= github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw= github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -565,15 +545,15 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2 h1:Xr9gkxfOP0KQWXKNqmwe8vEeSUiUj4Rlee9CMVX2ZUQ= github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tetafro/godot v1.3.2 h1:HzWC3XjadkyeuBZxkfAFNY20UVvle0YD51I6zf6RKlU= -github.com/tetafro/godot v1.3.2/go.mod h1:ah7jjYmOMnIjS9ku2krapvGQrFNtTLo9Z/qB3dGU1eU= +github.com/tetafro/godot v0.4.9 h1:dSOiuasshpevY73eeI3+zaqFnXSBKJ3mvxbyhh54VRo= +github.com/tetafro/godot v0.4.9/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q= github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomarrell/wrapcheck v0.0.0-20200807122107-df9e8bcb914d h1:3EZyvNUMsGD1QA8cu0STNn1L7I77rvhf2IhOcHYQhSw= github.com/tomarrell/wrapcheck v0.0.0-20200807122107-df9e8bcb914d/go.mod h1:yiFB6fFoV7saXirUGfuK+cPtUh4NX/Hf5y2WC2lehu0= -github.com/tommy-muehle/go-mnd v1.3.1-0.20201008215730-16041ac3fe65 h1:Y0bLA422kvb32uZI4fy/Plop/Tbld0l9pSzl+j1FWok= -github.com/tommy-muehle/go-mnd v1.3.1-0.20201008215730-16041ac3fe65/go.mod h1:T22e7iRN4LsFPZGyRLRXeF+DWVXFuV9thsyO7NjbbTI= +github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa h1:RC4maTWLKKwb7p1cnoygsbKIgNlJqSYBeAFON3Ar8As= +github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4= github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -605,8 +585,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5 h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -653,8 +631,6 @@ golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -694,7 +670,6 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -767,8 +742,8 @@ golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 h1:kzM6+9dur93BcC2kVlYl34cHU+TYZLanmpSJHVMmL64= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -777,8 +752,6 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -789,6 +762,7 @@ golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -808,7 +782,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -831,8 +804,8 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200321224714-0d839f3cf2ed/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4 h1:kDtqNkeBrZb8B+atrj50B5XLHpzXXqcCdZPP/ApQ5NY= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200410194907-79a7a3126eef/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -843,14 +816,13 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200731060945-b5fad4ed8dd6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= @@ -861,12 +833,9 @@ golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4X golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201007032633-0806396f153e/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201011145850-ed2f50202694/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201013201025-64a9e34f3752/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201121010211-780cb80bd7fb h1:z5+u0pkAUPUWd3taoTialQ2JAMo4Wo1Z3L25U4ZV9r0= golang.org/x/tools v0.0.0-20201121010211-780cb80bd7fb/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a h1:+77BOOi9CMFjpy3D2P/OnfSSmC/Hx/fGAQJUAQaM2gc= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -891,11 +860,8 @@ google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo= +google.golang.org/api v0.32.0 h1:Le77IccnTqEa8ryp9wIpX5W3zYm7Gf9LhOp9PHcwFts= google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0 h1:l2Nfbl2GPXdWorv+dT2XfinX2jOOw4zv1VhLstx+6rE= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -904,8 +870,6 @@ google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpC google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -941,10 +905,8 @@ google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d h1:92D1fum1bJLKSdr11OJ+54YeCMCGYIygTA7R/YZxH5M= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200914193844-75d14daec038/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200921151605-7abf4a1a14d5 h1:B9nroC8SSX5GtbVvxPF9tYIVkaCpjhVLOrlAY8ONzm8= google.golang.org/genproto v0.0.0-20200921151605-7abf4a1a14d5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e h1:wYR00/Ht+i/79g/gzhdehBgLIJCklKoc8Q/NebdzzpY= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -957,6 +919,10 @@ google.golang.org/grpc v1.28.0 h1:bO/TA4OxCOummhSf10siHuG7vJOiwh7SpRpFZDkOgl4= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -993,16 +959,12 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/gotestsum v0.6.0 h1:0zIxynXq9gkAcRpboAi3qOQIkZkCt/stfQzd7ab7Czs= -gotest.tools/gotestsum v0.6.0/go.mod h1:LEX+ioCVdeWhZc8GYfiBRag360eBhwixWJ62R9eDQtI= +gotest.tools/gotestsum v0.5.2 h1:sSKWtEFqorHhuBCHU6MeUl50cq9U2J3d1m5NlQTVrbY= +gotest.tools/gotestsum v0.5.2/go.mod h1:hC9TQserDVTWcJuARh76Ydp3ZwuE+pIIWpt2BzDLD6M= gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1013,8 +975,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.6 h1:W18jzjh8mfPez+AwGLxmOImucz/IFjpNlrKVnaj2YVc= honnef.co/go/tools v0.0.1-2020.1.6/go.mod h1:pyyisuGw24ruLjrr1ddx39WE0y9OooInRzEYLhQB2YY= -mvdan.cc/gofumpt v0.0.0-20201129102820-5c11c50e9475 h1:5ZmJGYyuTlhdlIpRxSFhdJqkXQweXETFCEaLhRAX3e8= -mvdan.cc/gofumpt v0.0.0-20201129102820-5c11c50e9475/go.mod h1:E4LOcu9JQEtnYXtB1Y51drqh2Qr2Ngk9J3YrRCwcbd0= +mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d h1:t8TAw9WgTLghti7RYkpPmqk4JtQ3+wcP5GgZqgWeWLQ= +mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d/go.mod h1:bzrjFmaD6+xqohD3KYP0H2FEuxknnBmyyOxdhLdaIws= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= diff --git a/go/pkg/config/load.go b/go/pkg/config/load.go index 8befe7028..691d65389 100644 --- a/go/pkg/config/load.go +++ b/go/pkg/config/load.go @@ -31,8 +31,7 @@ func FindConfigInWorkingDir(overrideDir string) (conf *Config, projectDir string if overrideDir != "" { conf, err := LoadConfig(path.Join(overrideDir, global.ConfigFilenames[0])) if err != nil { - if _, ok := err.(*configNotFoundError); ok { - + if errors.IsConfigNotFound(err) { // Try to locate replicate.yml conf, err := LoadConfig(path.Join(overrideDir, global.ConfigFilenames[1])) if err != nil { diff --git a/go/pkg/errors/errors.go b/go/pkg/errors/errors.go index 2c51fa51b..a677817f1 100644 --- a/go/pkg/errors/errors.go +++ b/go/pkg/errors/errors.go @@ -35,6 +35,10 @@ func IsDoesNotExist(err error) bool { return Code(err) == CodeDoesNotExist } +func IsConfigNotFound(err error) bool { + return Code(err) == CodeConfigNotFound +} + func DoesNotExist(msg string) error { return &codedError{code: CodeDoesNotExist, msg: msg} } func ReadError(msg string) error { return &codedError{code: CodeReadError, msg: msg} } func WriteError(msg string) error { return &codedError{code: CodeWriteError, msg: msg} } diff --git a/go/pkg/param/value.go b/go/pkg/param/value.go index 2a13ce87b..5a16ab4ec 100644 --- a/go/pkg/param/value.go +++ b/go/pkg/param/value.go @@ -18,6 +18,12 @@ const ( TypeBool Type = "bool" TypeObject Type = "object" TypeNone Type = "none" + + // hack in nan, +inf and -inf since json doesn't support + // them natively. + JsonNaN = `"[NaN]"` + JsonPositiveInfinity = `"[+Infinity]"` + JsonNegativeInfinity = `"[-Infinity]"` ) // TODO(bfirsh): could complexity be reduced here if it were implemented as interface{}? @@ -39,6 +45,15 @@ func (v Value) MarshalJSON() ([]byte, error) { case v.intVal != nil: return json.Marshal(v.intVal) case v.floatVal != nil: + if math.IsNaN(*v.floatVal) { + return []byte(JsonNaN), nil + } + if math.IsInf(*v.floatVal, 1) { + return []byte(JsonPositiveInfinity), nil + } + if math.IsInf(*v.floatVal, -1) { + return []byte(JsonNegativeInfinity), nil + } return json.Marshal(v.floatVal) case v.stringVal != nil: return json.Marshal(v.stringVal) @@ -71,6 +86,21 @@ func (v *Value) UnmarshalJSON(data []byte) error { v.isNone = true return nil } + if string(data) == JsonNaN { + f := math.NaN() + v.floatVal = &f + return nil + } + if string(data) == JsonPositiveInfinity { + f := math.Inf(1) + v.floatVal = &f + return nil + } + if string(data) == JsonNegativeInfinity { + f := math.Inf(-1) + v.floatVal = &f + return nil + } if s := new(string); json.Unmarshal(data, s) == nil { v.stringVal = s return nil @@ -83,6 +113,7 @@ func (v *Value) UnmarshalJSON(data []byte) error { func ParseFromString(s string) Value { data := []byte(s) v := Value{} + if s == "null" || s == "None" { v.isNone = true return v diff --git a/go/pkg/project/heartbeat.go b/go/pkg/project/heartbeat.go index be208484a..da0483d7e 100644 --- a/go/pkg/project/heartbeat.go +++ b/go/pkg/project/heartbeat.go @@ -34,6 +34,10 @@ func CreateHeartbeat(repo repository.Repository, experimentID string, t time.Tim return repo.Put(path.Join("metadata", "heartbeats", experimentID+".json"), data) } +func DeleteHeartbeat(repo repository.Repository, experimentID string) error { + return repo.Delete(path.Join("metadata", "heartbeats", experimentID+".json")) +} + func listHeartbeats(repo repository.Repository) ([]*Heartbeat, error) { paths, err := repo.List("metadata/heartbeats/") if err != nil { diff --git a/go/pkg/project/project.go b/go/pkg/project/project.go index 3f487b99e..89fded203 100644 --- a/go/pkg/project/project.go +++ b/go/pkg/project/project.go @@ -312,6 +312,14 @@ func (p *Project) RefreshHeartbeat(experimentID string) error { return CreateHeartbeat(p.repository, experimentID, time.Now().UTC()) } +func (p *Project) StopExperiment(experimentID string) error { + if err := DeleteHeartbeat(p.repository, experimentID); err != nil { + return err + } + p.invalidateCache() + return nil +} + func (p *Project) invalidateCache() { p.hasLoaded = false } diff --git a/go/pkg/repository/s3_test.go b/go/pkg/repository/s3_test.go index a86d9d435..1d9b1a872 100644 --- a/go/pkg/repository/s3_test.go +++ b/go/pkg/repository/s3_test.go @@ -1,3 +1,5 @@ +// +build external + package repository import ( diff --git a/go/pkg/servicepb/service.pb.go b/go/pkg/servicepb/replicate.pb.go similarity index 71% rename from go/pkg/servicepb/service.pb.go rename to go/pkg/servicepb/replicate.pb.go index 4f54e0505..52ac2b628 100644 --- a/go/pkg/servicepb/service.pb.go +++ b/go/pkg/servicepb/replicate.pb.go @@ -2,18 +2,17 @@ // versions: // protoc-gen-go v1.25.0 // protoc v3.14.0 -// source: service.proto +// source: replicate.proto package servicepb import ( - reflect "reflect" - sync "sync" - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) const ( @@ -27,59 +26,50 @@ const ( // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 -type Exception_Type int32 +type GetExperimentStatusReply_Status int32 const ( - Exception_DOES_NOT_EXIST Exception_Type = 0 - Exception_UNKNOWN_REPOSITORY_SCHEME Exception_Type = 1 - Exception_CONFIG_NOT_FOUND Exception_Type = 2 - Exception_NEWER_REPOSITORY_VERSION Exception_Type = 3 - Exception_CORRUPTED_PROJECT_SPEC Exception_Type = 4 + GetExperimentStatusReply_RUNNING GetExperimentStatusReply_Status = 0 + GetExperimentStatusReply_STOPPED GetExperimentStatusReply_Status = 1 ) -// Enum value maps for Exception_Type. +// Enum value maps for GetExperimentStatusReply_Status. var ( - Exception_Type_name = map[int32]string{ - 0: "DOES_NOT_EXIST", - 1: "UNKNOWN_REPOSITORY_SCHEME", - 2: "CONFIG_NOT_FOUND", - 3: "NEWER_REPOSITORY_VERSION", - 4: "CORRUPTED_PROJECT_SPEC", - } - Exception_Type_value = map[string]int32{ - "DOES_NOT_EXIST": 0, - "UNKNOWN_REPOSITORY_SCHEME": 1, - "CONFIG_NOT_FOUND": 2, - "NEWER_REPOSITORY_VERSION": 3, - "CORRUPTED_PROJECT_SPEC": 4, + GetExperimentStatusReply_Status_name = map[int32]string{ + 0: "RUNNING", + 1: "STOPPED", + } + GetExperimentStatusReply_Status_value = map[string]int32{ + "RUNNING": 0, + "STOPPED": 1, } ) -func (x Exception_Type) Enum() *Exception_Type { - p := new(Exception_Type) +func (x GetExperimentStatusReply_Status) Enum() *GetExperimentStatusReply_Status { + p := new(GetExperimentStatusReply_Status) *p = x return p } -func (x Exception_Type) String() string { +func (x GetExperimentStatusReply_Status) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Exception_Type) Descriptor() protoreflect.EnumDescriptor { - return file_service_proto_enumTypes[0].Descriptor() +func (GetExperimentStatusReply_Status) Descriptor() protoreflect.EnumDescriptor { + return file_replicate_proto_enumTypes[0].Descriptor() } -func (Exception_Type) Type() protoreflect.EnumType { - return &file_service_proto_enumTypes[0] +func (GetExperimentStatusReply_Status) Type() protoreflect.EnumType { + return &file_replicate_proto_enumTypes[0] } -func (x Exception_Type) Number() protoreflect.EnumNumber { +func (x GetExperimentStatusReply_Status) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Exception_Type.Descriptor instead. -func (Exception_Type) EnumDescriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{16, 0} +// Deprecated: Use GetExperimentStatusReply_Status.Descriptor instead. +func (GetExperimentStatusReply_Status) EnumDescriptor() ([]byte, []int) { + return file_replicate_proto_rawDescGZIP(), []int{17, 0} } type PrimaryMetric_Goal int32 @@ -112,11 +102,11 @@ func (x PrimaryMetric_Goal) String() string { } func (PrimaryMetric_Goal) Descriptor() protoreflect.EnumDescriptor { - return file_service_proto_enumTypes[1].Descriptor() + return file_replicate_proto_enumTypes[1].Descriptor() } func (PrimaryMetric_Goal) Type() protoreflect.EnumType { - return &file_service_proto_enumTypes[1] + return &file_replicate_proto_enumTypes[1] } func (x PrimaryMetric_Goal) Number() protoreflect.EnumNumber { @@ -125,7 +115,7 @@ func (x PrimaryMetric_Goal) Number() protoreflect.EnumNumber { // Deprecated: Use PrimaryMetric_Goal.Descriptor instead. func (PrimaryMetric_Goal) EnumDescriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{20, 0} + return file_replicate_proto_rawDescGZIP(), []int{21, 0} } type CreateExperimentRequest struct { @@ -140,7 +130,7 @@ type CreateExperimentRequest struct { func (x *CreateExperimentRequest) Reset() { *x = CreateExperimentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[0] + mi := &file_replicate_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -153,7 +143,7 @@ func (x *CreateExperimentRequest) String() string { func (*CreateExperimentRequest) ProtoMessage() {} func (x *CreateExperimentRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[0] + mi := &file_replicate_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -166,7 +156,7 @@ func (x *CreateExperimentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExperimentRequest.ProtoReflect.Descriptor instead. func (*CreateExperimentRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{0} + return file_replicate_proto_rawDescGZIP(), []int{0} } func (x *CreateExperimentRequest) GetExperiment() *Experiment { @@ -189,13 +179,12 @@ type CreateExperimentReply struct { unknownFields protoimpl.UnknownFields Experiment *Experiment `protobuf:"bytes,1,opt,name=experiment,proto3" json:"experiment,omitempty"` - Exception *Exception `protobuf:"bytes,2,opt,name=exception,proto3" json:"exception,omitempty"` } func (x *CreateExperimentReply) Reset() { *x = CreateExperimentReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[1] + mi := &file_replicate_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -208,7 +197,7 @@ func (x *CreateExperimentReply) String() string { func (*CreateExperimentReply) ProtoMessage() {} func (x *CreateExperimentReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[1] + mi := &file_replicate_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -221,7 +210,7 @@ func (x *CreateExperimentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExperimentReply.ProtoReflect.Descriptor instead. func (*CreateExperimentReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{1} + return file_replicate_proto_rawDescGZIP(), []int{1} } func (x *CreateExperimentReply) GetExperiment() *Experiment { @@ -231,13 +220,6 @@ func (x *CreateExperimentReply) GetExperiment() *Experiment { return nil } -func (x *CreateExperimentReply) GetException() *Exception { - if x != nil { - return x.Exception - } - return nil -} - type CreateCheckpointRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -249,7 +231,7 @@ type CreateCheckpointRequest struct { func (x *CreateCheckpointRequest) Reset() { *x = CreateCheckpointRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[2] + mi := &file_replicate_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -262,7 +244,7 @@ func (x *CreateCheckpointRequest) String() string { func (*CreateCheckpointRequest) ProtoMessage() {} func (x *CreateCheckpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[2] + mi := &file_replicate_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -275,7 +257,7 @@ func (x *CreateCheckpointRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCheckpointRequest.ProtoReflect.Descriptor instead. func (*CreateCheckpointRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{2} + return file_replicate_proto_rawDescGZIP(), []int{2} } func (x *CreateCheckpointRequest) GetCheckpoint() *Checkpoint { @@ -296,7 +278,7 @@ type CreateCheckpointReply struct { func (x *CreateCheckpointReply) Reset() { *x = CreateCheckpointReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[3] + mi := &file_replicate_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -309,7 +291,7 @@ func (x *CreateCheckpointReply) String() string { func (*CreateCheckpointReply) ProtoMessage() {} func (x *CreateCheckpointReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[3] + mi := &file_replicate_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -322,7 +304,7 @@ func (x *CreateCheckpointReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCheckpointReply.ProtoReflect.Descriptor instead. func (*CreateCheckpointReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{3} + return file_replicate_proto_rawDescGZIP(), []int{3} } func (x *CreateCheckpointReply) GetCheckpoint() *Checkpoint { @@ -343,7 +325,7 @@ type SaveExperimentRequest struct { func (x *SaveExperimentRequest) Reset() { *x = SaveExperimentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[4] + mi := &file_replicate_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -356,7 +338,7 @@ func (x *SaveExperimentRequest) String() string { func (*SaveExperimentRequest) ProtoMessage() {} func (x *SaveExperimentRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[4] + mi := &file_replicate_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -369,7 +351,7 @@ func (x *SaveExperimentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveExperimentRequest.ProtoReflect.Descriptor instead. func (*SaveExperimentRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{4} + return file_replicate_proto_rawDescGZIP(), []int{4} } func (x *SaveExperimentRequest) GetExperiment() *Experiment { @@ -390,7 +372,7 @@ type SaveExperimentReply struct { func (x *SaveExperimentReply) Reset() { *x = SaveExperimentReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[5] + mi := &file_replicate_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -403,7 +385,7 @@ func (x *SaveExperimentReply) String() string { func (*SaveExperimentReply) ProtoMessage() {} func (x *SaveExperimentReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[5] + mi := &file_replicate_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -416,7 +398,7 @@ func (x *SaveExperimentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveExperimentReply.ProtoReflect.Descriptor instead. func (*SaveExperimentReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{5} + return file_replicate_proto_rawDescGZIP(), []int{5} } func (x *SaveExperimentReply) GetExperiment() *Experiment { @@ -437,7 +419,7 @@ type StopExperimentRequest struct { func (x *StopExperimentRequest) Reset() { *x = StopExperimentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[6] + mi := &file_replicate_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -450,7 +432,7 @@ func (x *StopExperimentRequest) String() string { func (*StopExperimentRequest) ProtoMessage() {} func (x *StopExperimentRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[6] + mi := &file_replicate_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -463,7 +445,7 @@ func (x *StopExperimentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopExperimentRequest.ProtoReflect.Descriptor instead. func (*StopExperimentRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{6} + return file_replicate_proto_rawDescGZIP(), []int{6} } func (x *StopExperimentRequest) GetExperimentID() string { @@ -482,7 +464,7 @@ type StopExperimentReply struct { func (x *StopExperimentReply) Reset() { *x = StopExperimentReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[7] + mi := &file_replicate_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -495,7 +477,7 @@ func (x *StopExperimentReply) String() string { func (*StopExperimentReply) ProtoMessage() {} func (x *StopExperimentReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[7] + mi := &file_replicate_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -508,7 +490,7 @@ func (x *StopExperimentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use StopExperimentReply.ProtoReflect.Descriptor instead. func (*StopExperimentReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{7} + return file_replicate_proto_rawDescGZIP(), []int{7} } type GetExperimentRequest struct { @@ -522,7 +504,7 @@ type GetExperimentRequest struct { func (x *GetExperimentRequest) Reset() { *x = GetExperimentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[8] + mi := &file_replicate_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -535,7 +517,7 @@ func (x *GetExperimentRequest) String() string { func (*GetExperimentRequest) ProtoMessage() {} func (x *GetExperimentRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[8] + mi := &file_replicate_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -548,7 +530,7 @@ func (x *GetExperimentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExperimentRequest.ProtoReflect.Descriptor instead. func (*GetExperimentRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{8} + return file_replicate_proto_rawDescGZIP(), []int{8} } func (x *GetExperimentRequest) GetExperimentIDPrefix() string { @@ -569,7 +551,7 @@ type GetExperimentReply struct { func (x *GetExperimentReply) Reset() { *x = GetExperimentReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[9] + mi := &file_replicate_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -582,7 +564,7 @@ func (x *GetExperimentReply) String() string { func (*GetExperimentReply) ProtoMessage() {} func (x *GetExperimentReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[9] + mi := &file_replicate_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -595,7 +577,7 @@ func (x *GetExperimentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExperimentReply.ProtoReflect.Descriptor instead. func (*GetExperimentReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{9} + return file_replicate_proto_rawDescGZIP(), []int{9} } func (x *GetExperimentReply) GetExperiment() *Experiment { @@ -614,7 +596,7 @@ type ListExperimentsRequest struct { func (x *ListExperimentsRequest) Reset() { *x = ListExperimentsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[10] + mi := &file_replicate_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -627,7 +609,7 @@ func (x *ListExperimentsRequest) String() string { func (*ListExperimentsRequest) ProtoMessage() {} func (x *ListExperimentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[10] + mi := &file_replicate_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -640,7 +622,7 @@ func (x *ListExperimentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExperimentsRequest.ProtoReflect.Descriptor instead. func (*ListExperimentsRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{10} + return file_replicate_proto_rawDescGZIP(), []int{10} } type ListExperimentsReply struct { @@ -654,7 +636,7 @@ type ListExperimentsReply struct { func (x *ListExperimentsReply) Reset() { *x = ListExperimentsReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[11] + mi := &file_replicate_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -667,7 +649,7 @@ func (x *ListExperimentsReply) String() string { func (*ListExperimentsReply) ProtoMessage() {} func (x *ListExperimentsReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[11] + mi := &file_replicate_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -680,7 +662,7 @@ func (x *ListExperimentsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExperimentsReply.ProtoReflect.Descriptor instead. func (*ListExperimentsReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{11} + return file_replicate_proto_rawDescGZIP(), []int{11} } func (x *ListExperimentsReply) GetExperiments() []*Experiment { @@ -701,7 +683,7 @@ type DeleteExperimentRequest struct { func (x *DeleteExperimentRequest) Reset() { *x = DeleteExperimentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[12] + mi := &file_replicate_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -714,7 +696,7 @@ func (x *DeleteExperimentRequest) String() string { func (*DeleteExperimentRequest) ProtoMessage() {} func (x *DeleteExperimentRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[12] + mi := &file_replicate_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -727,7 +709,7 @@ func (x *DeleteExperimentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteExperimentRequest.ProtoReflect.Descriptor instead. func (*DeleteExperimentRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{12} + return file_replicate_proto_rawDescGZIP(), []int{12} } func (x *DeleteExperimentRequest) GetExperimentID() string { @@ -746,7 +728,7 @@ type DeleteExperimentReply struct { func (x *DeleteExperimentReply) Reset() { *x = DeleteExperimentReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[13] + mi := &file_replicate_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +741,7 @@ func (x *DeleteExperimentReply) String() string { func (*DeleteExperimentReply) ProtoMessage() {} func (x *DeleteExperimentReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[13] + mi := &file_replicate_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +754,7 @@ func (x *DeleteExperimentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteExperimentReply.ProtoReflect.Descriptor instead. func (*DeleteExperimentReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{13} + return file_replicate_proto_rawDescGZIP(), []int{13} } type CheckoutCheckpointRequest struct { @@ -787,7 +769,7 @@ type CheckoutCheckpointRequest struct { func (x *CheckoutCheckpointRequest) Reset() { *x = CheckoutCheckpointRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[14] + mi := &file_replicate_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -800,7 +782,7 @@ func (x *CheckoutCheckpointRequest) String() string { func (*CheckoutCheckpointRequest) ProtoMessage() {} func (x *CheckoutCheckpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[14] + mi := &file_replicate_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -813,7 +795,7 @@ func (x *CheckoutCheckpointRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckoutCheckpointRequest.ProtoReflect.Descriptor instead. func (*CheckoutCheckpointRequest) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{14} + return file_replicate_proto_rawDescGZIP(), []int{14} } func (x *CheckoutCheckpointRequest) GetCheckpointIDPrefix() string { @@ -839,7 +821,7 @@ type CheckoutCheckpointReply struct { func (x *CheckoutCheckpointReply) Reset() { *x = CheckoutCheckpointReply{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[15] + mi := &file_replicate_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -852,7 +834,7 @@ func (x *CheckoutCheckpointReply) String() string { func (*CheckoutCheckpointReply) ProtoMessage() {} func (x *CheckoutCheckpointReply) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[15] + mi := &file_replicate_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -865,35 +847,34 @@ func (x *CheckoutCheckpointReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckoutCheckpointReply.ProtoReflect.Descriptor instead. func (*CheckoutCheckpointReply) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{15} + return file_replicate_proto_rawDescGZIP(), []int{15} } -type Exception struct { +type GetExperimentStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Type Exception_Type `protobuf:"varint,1,opt,name=type,proto3,enum=service.Exception_Type" json:"type,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` + ExperimentID string `protobuf:"bytes,1,opt,name=experimentID,proto3" json:"experimentID,omitempty"` } -func (x *Exception) Reset() { - *x = Exception{} +func (x *GetExperimentStatusRequest) Reset() { + *x = GetExperimentStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[16] + mi := &file_replicate_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Exception) String() string { +func (x *GetExperimentStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Exception) ProtoMessage() {} +func (*GetExperimentStatusRequest) ProtoMessage() {} -func (x *Exception) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[16] +func (x *GetExperimentStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_replicate_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -904,23 +885,63 @@ func (x *Exception) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Exception.ProtoReflect.Descriptor instead. -func (*Exception) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{16} +// Deprecated: Use GetExperimentStatusRequest.ProtoReflect.Descriptor instead. +func (*GetExperimentStatusRequest) Descriptor() ([]byte, []int) { + return file_replicate_proto_rawDescGZIP(), []int{16} } -func (x *Exception) GetType() Exception_Type { +func (x *GetExperimentStatusRequest) GetExperimentID() string { if x != nil { - return x.Type + return x.ExperimentID + } + return "" +} + +type GetExperimentStatusReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status GetExperimentStatusReply_Status `protobuf:"varint,1,opt,name=status,proto3,enum=service.GetExperimentStatusReply_Status" json:"status,omitempty"` +} + +func (x *GetExperimentStatusReply) Reset() { + *x = GetExperimentStatusReply{} + if protoimpl.UnsafeEnabled { + mi := &file_replicate_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExperimentStatusReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExperimentStatusReply) ProtoMessage() {} + +func (x *GetExperimentStatusReply) ProtoReflect() protoreflect.Message { + mi := &file_replicate_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Exception_DOES_NOT_EXIST + return mi.MessageOf(x) } -func (x *Exception) GetText() string { +// Deprecated: Use GetExperimentStatusReply.ProtoReflect.Descriptor instead. +func (*GetExperimentStatusReply) Descriptor() ([]byte, []int) { + return file_replicate_proto_rawDescGZIP(), []int{17} +} + +func (x *GetExperimentStatusReply) GetStatus() GetExperimentStatusReply_Status { if x != nil { - return x.Text + return x.Status } - return "" + return GetExperimentStatusReply_RUNNING } type Experiment struct { @@ -937,14 +958,15 @@ type Experiment struct { Command string `protobuf:"bytes,7,opt,name=command,proto3" json:"command,omitempty"` Path string `protobuf:"bytes,8,opt,name=path,proto3" json:"path,omitempty"` PythonPackages map[string]string `protobuf:"bytes,9,rep,name=pythonPackages,proto3" json:"pythonPackages,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Checkpoints []*Checkpoint `protobuf:"bytes,10,rep,name=checkpoints,proto3" json:"checkpoints,omitempty"` - ReplicateVersion string `protobuf:"bytes,11,opt,name=replicateVersion,proto3" json:"replicateVersion,omitempty"` + PythonVersion string `protobuf:"bytes,10,opt,name=pythonVersion,proto3" json:"pythonVersion,omitempty"` + Checkpoints []*Checkpoint `protobuf:"bytes,11,rep,name=checkpoints,proto3" json:"checkpoints,omitempty"` + ReplicateVersion string `protobuf:"bytes,12,opt,name=replicateVersion,proto3" json:"replicateVersion,omitempty"` } func (x *Experiment) Reset() { *x = Experiment{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[17] + mi := &file_replicate_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -957,7 +979,7 @@ func (x *Experiment) String() string { func (*Experiment) ProtoMessage() {} func (x *Experiment) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[17] + mi := &file_replicate_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -970,7 +992,7 @@ func (x *Experiment) ProtoReflect() protoreflect.Message { // Deprecated: Use Experiment.ProtoReflect.Descriptor instead. func (*Experiment) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{17} + return file_replicate_proto_rawDescGZIP(), []int{18} } func (x *Experiment) GetId() string { @@ -1036,6 +1058,13 @@ func (x *Experiment) GetPythonPackages() map[string]string { return nil } +func (x *Experiment) GetPythonVersion() string { + if x != nil { + return x.PythonVersion + } + return "" +} + func (x *Experiment) GetCheckpoints() []*Checkpoint { if x != nil { return x.Checkpoints @@ -1063,7 +1092,7 @@ type Config struct { func (x *Config) Reset() { *x = Config{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[18] + mi := &file_replicate_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1076,7 +1105,7 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[18] + mi := &file_replicate_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1089,7 +1118,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{18} + return file_replicate_proto_rawDescGZIP(), []int{19} } func (x *Config) GetRepository() string { @@ -1122,7 +1151,7 @@ type Checkpoint struct { func (x *Checkpoint) Reset() { *x = Checkpoint{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[19] + mi := &file_replicate_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1135,7 +1164,7 @@ func (x *Checkpoint) String() string { func (*Checkpoint) ProtoMessage() {} func (x *Checkpoint) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[19] + mi := &file_replicate_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1148,7 +1177,7 @@ func (x *Checkpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use Checkpoint.ProtoReflect.Descriptor instead. func (*Checkpoint) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{19} + return file_replicate_proto_rawDescGZIP(), []int{20} } func (x *Checkpoint) GetId() string { @@ -1205,7 +1234,7 @@ type PrimaryMetric struct { func (x *PrimaryMetric) Reset() { *x = PrimaryMetric{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[20] + mi := &file_replicate_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1218,7 +1247,7 @@ func (x *PrimaryMetric) String() string { func (*PrimaryMetric) ProtoMessage() {} func (x *PrimaryMetric) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[20] + mi := &file_replicate_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1231,7 +1260,7 @@ func (x *PrimaryMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use PrimaryMetric.ProtoReflect.Descriptor instead. func (*PrimaryMetric) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{20} + return file_replicate_proto_rawDescGZIP(), []int{21} } func (x *PrimaryMetric) GetName() string { @@ -1265,7 +1294,7 @@ type ParamType struct { func (x *ParamType) Reset() { *x = ParamType{} if protoimpl.UnsafeEnabled { - mi := &file_service_proto_msgTypes[21] + mi := &file_replicate_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1278,7 +1307,7 @@ func (x *ParamType) String() string { func (*ParamType) ProtoMessage() {} func (x *ParamType) ProtoReflect() protoreflect.Message { - mi := &file_service_proto_msgTypes[21] + mi := &file_replicate_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1291,7 +1320,7 @@ func (x *ParamType) ProtoReflect() protoreflect.Message { // Deprecated: Use ParamType.ProtoReflect.Descriptor instead. func (*ParamType) Descriptor() ([]byte, []int) { - return file_service_proto_rawDescGZIP(), []int{21} + return file_replicate_proto_rawDescGZIP(), []int{22} } func (m *ParamType) GetValue() isParamType_Value { @@ -1370,29 +1399,26 @@ func (*ParamType_StringValue) isParamType_Value() {} func (*ParamType_ObjectValueJson) isParamType_Value() {} -var File_service_proto protoreflect.FileDescriptor - -var file_service_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7a, 0x0a, 0x17, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x72, - 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0x7e, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, - 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, +var File_replicate_proto protoreflect.FileDescriptor + +var file_replicate_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7a, 0x0a, 0x17, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0x4c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x33, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, @@ -1447,47 +1473,48 @@ var file_service_proto_rawDesc = []byte{ 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xd8, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x78, - 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, - 0x54, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x45, - 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4e, 0x4f, 0x54, - 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x45, 0x57, 0x45, - 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x56, 0x45, 0x52, - 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x52, 0x52, 0x55, 0x50, - 0x54, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x50, 0x45, 0x43, - 0x10, 0x04, 0x22, 0xd0, 0x04, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x4f, 0x0a, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x79, 0x74, - 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x40, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x80, 0x01, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x22, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, + 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x22, 0xf6, 0x04, 0x0a, + 0x0a, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x4f, 0x0a, 0x0e, 0x70, 0x79, 0x74, + 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x79, 0x74, 0x68, + 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x79, + 0x74, 0x68, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x63, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x4d, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, @@ -1543,7 +1570,7 @@ var file_service_proto_rawDesc = []byte{ 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x32, 0xb6, 0x05, 0x0a, 0x06, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x10, + 0x65, 0x32, 0x97, 0x06, 0x0a, 0x06, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, @@ -1586,87 +1613,94 @@ var file_service_proto_rawDesc = []byte{ 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2f, 0x67, 0x6f, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2f, 0x67, 0x6f, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_service_proto_rawDescOnce sync.Once - file_service_proto_rawDescData = file_service_proto_rawDesc + file_replicate_proto_rawDescOnce sync.Once + file_replicate_proto_rawDescData = file_replicate_proto_rawDesc ) -func file_service_proto_rawDescGZIP() []byte { - file_service_proto_rawDescOnce.Do(func() { - file_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_proto_rawDescData) +func file_replicate_proto_rawDescGZIP() []byte { + file_replicate_proto_rawDescOnce.Do(func() { + file_replicate_proto_rawDescData = protoimpl.X.CompressGZIP(file_replicate_proto_rawDescData) }) - return file_service_proto_rawDescData -} - -var file_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_service_proto_msgTypes = make([]protoimpl.MessageInfo, 25) -var file_service_proto_goTypes = []interface{}{ - (Exception_Type)(0), // 0: service.Exception.Type - (PrimaryMetric_Goal)(0), // 1: service.PrimaryMetric.Goal - (*CreateExperimentRequest)(nil), // 2: service.CreateExperimentRequest - (*CreateExperimentReply)(nil), // 3: service.CreateExperimentReply - (*CreateCheckpointRequest)(nil), // 4: service.CreateCheckpointRequest - (*CreateCheckpointReply)(nil), // 5: service.CreateCheckpointReply - (*SaveExperimentRequest)(nil), // 6: service.SaveExperimentRequest - (*SaveExperimentReply)(nil), // 7: service.SaveExperimentReply - (*StopExperimentRequest)(nil), // 8: service.StopExperimentRequest - (*StopExperimentReply)(nil), // 9: service.StopExperimentReply - (*GetExperimentRequest)(nil), // 10: service.GetExperimentRequest - (*GetExperimentReply)(nil), // 11: service.GetExperimentReply - (*ListExperimentsRequest)(nil), // 12: service.ListExperimentsRequest - (*ListExperimentsReply)(nil), // 13: service.ListExperimentsReply - (*DeleteExperimentRequest)(nil), // 14: service.DeleteExperimentRequest - (*DeleteExperimentReply)(nil), // 15: service.DeleteExperimentReply - (*CheckoutCheckpointRequest)(nil), // 16: service.CheckoutCheckpointRequest - (*CheckoutCheckpointReply)(nil), // 17: service.CheckoutCheckpointReply - (*Exception)(nil), // 18: service.Exception - (*Experiment)(nil), // 19: service.Experiment - (*Config)(nil), // 20: service.Config - (*Checkpoint)(nil), // 21: service.Checkpoint - (*PrimaryMetric)(nil), // 22: service.PrimaryMetric - (*ParamType)(nil), // 23: service.ParamType - nil, // 24: service.Experiment.ParamsEntry - nil, // 25: service.Experiment.PythonPackagesEntry - nil, // 26: service.Checkpoint.MetricsEntry - (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp -} -var file_service_proto_depIdxs = []int32{ - 19, // 0: service.CreateExperimentRequest.experiment:type_name -> service.Experiment - 19, // 1: service.CreateExperimentReply.experiment:type_name -> service.Experiment - 18, // 2: service.CreateExperimentReply.exception:type_name -> service.Exception - 21, // 3: service.CreateCheckpointRequest.checkpoint:type_name -> service.Checkpoint - 21, // 4: service.CreateCheckpointReply.checkpoint:type_name -> service.Checkpoint - 19, // 5: service.SaveExperimentRequest.experiment:type_name -> service.Experiment - 19, // 6: service.SaveExperimentReply.experiment:type_name -> service.Experiment - 19, // 7: service.GetExperimentReply.experiment:type_name -> service.Experiment - 19, // 8: service.ListExperimentsReply.experiments:type_name -> service.Experiment - 0, // 9: service.Exception.type:type_name -> service.Exception.Type - 27, // 10: service.Experiment.created:type_name -> google.protobuf.Timestamp - 24, // 11: service.Experiment.params:type_name -> service.Experiment.ParamsEntry - 20, // 12: service.Experiment.config:type_name -> service.Config - 25, // 13: service.Experiment.pythonPackages:type_name -> service.Experiment.PythonPackagesEntry - 21, // 14: service.Experiment.checkpoints:type_name -> service.Checkpoint - 27, // 15: service.Checkpoint.created:type_name -> google.protobuf.Timestamp - 26, // 16: service.Checkpoint.metrics:type_name -> service.Checkpoint.MetricsEntry - 22, // 17: service.Checkpoint.primaryMetric:type_name -> service.PrimaryMetric - 1, // 18: service.PrimaryMetric.goal:type_name -> service.PrimaryMetric.Goal - 23, // 19: service.Experiment.ParamsEntry.value:type_name -> service.ParamType - 23, // 20: service.Checkpoint.MetricsEntry.value:type_name -> service.ParamType - 2, // 21: service.Daemon.CreateExperiment:input_type -> service.CreateExperimentRequest - 4, // 22: service.Daemon.CreateCheckpoint:input_type -> service.CreateCheckpointRequest - 6, // 23: service.Daemon.SaveExperiment:input_type -> service.SaveExperimentRequest - 8, // 24: service.Daemon.StopExperiment:input_type -> service.StopExperimentRequest - 10, // 25: service.Daemon.GetExperiment:input_type -> service.GetExperimentRequest - 12, // 26: service.Daemon.ListExperiments:input_type -> service.ListExperimentsRequest - 14, // 27: service.Daemon.DeleteExperiment:input_type -> service.DeleteExperimentRequest - 16, // 28: service.Daemon.CheckoutCheckpoint:input_type -> service.CheckoutCheckpointRequest + return file_replicate_proto_rawDescData +} + +var file_replicate_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_replicate_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_replicate_proto_goTypes = []interface{}{ + (GetExperimentStatusReply_Status)(0), // 0: service.GetExperimentStatusReply.Status + (PrimaryMetric_Goal)(0), // 1: service.PrimaryMetric.Goal + (*CreateExperimentRequest)(nil), // 2: service.CreateExperimentRequest + (*CreateExperimentReply)(nil), // 3: service.CreateExperimentReply + (*CreateCheckpointRequest)(nil), // 4: service.CreateCheckpointRequest + (*CreateCheckpointReply)(nil), // 5: service.CreateCheckpointReply + (*SaveExperimentRequest)(nil), // 6: service.SaveExperimentRequest + (*SaveExperimentReply)(nil), // 7: service.SaveExperimentReply + (*StopExperimentRequest)(nil), // 8: service.StopExperimentRequest + (*StopExperimentReply)(nil), // 9: service.StopExperimentReply + (*GetExperimentRequest)(nil), // 10: service.GetExperimentRequest + (*GetExperimentReply)(nil), // 11: service.GetExperimentReply + (*ListExperimentsRequest)(nil), // 12: service.ListExperimentsRequest + (*ListExperimentsReply)(nil), // 13: service.ListExperimentsReply + (*DeleteExperimentRequest)(nil), // 14: service.DeleteExperimentRequest + (*DeleteExperimentReply)(nil), // 15: service.DeleteExperimentReply + (*CheckoutCheckpointRequest)(nil), // 16: service.CheckoutCheckpointRequest + (*CheckoutCheckpointReply)(nil), // 17: service.CheckoutCheckpointReply + (*GetExperimentStatusRequest)(nil), // 18: service.GetExperimentStatusRequest + (*GetExperimentStatusReply)(nil), // 19: service.GetExperimentStatusReply + (*Experiment)(nil), // 20: service.Experiment + (*Config)(nil), // 21: service.Config + (*Checkpoint)(nil), // 22: service.Checkpoint + (*PrimaryMetric)(nil), // 23: service.PrimaryMetric + (*ParamType)(nil), // 24: service.ParamType + nil, // 25: service.Experiment.ParamsEntry + nil, // 26: service.Experiment.PythonPackagesEntry + nil, // 27: service.Checkpoint.MetricsEntry + (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp +} +var file_replicate_proto_depIdxs = []int32{ + 20, // 0: service.CreateExperimentRequest.experiment:type_name -> service.Experiment + 20, // 1: service.CreateExperimentReply.experiment:type_name -> service.Experiment + 22, // 2: service.CreateCheckpointRequest.checkpoint:type_name -> service.Checkpoint + 22, // 3: service.CreateCheckpointReply.checkpoint:type_name -> service.Checkpoint + 20, // 4: service.SaveExperimentRequest.experiment:type_name -> service.Experiment + 20, // 5: service.SaveExperimentReply.experiment:type_name -> service.Experiment + 20, // 6: service.GetExperimentReply.experiment:type_name -> service.Experiment + 20, // 7: service.ListExperimentsReply.experiments:type_name -> service.Experiment + 0, // 8: service.GetExperimentStatusReply.status:type_name -> service.GetExperimentStatusReply.Status + 28, // 9: service.Experiment.created:type_name -> google.protobuf.Timestamp + 25, // 10: service.Experiment.params:type_name -> service.Experiment.ParamsEntry + 21, // 11: service.Experiment.config:type_name -> service.Config + 26, // 12: service.Experiment.pythonPackages:type_name -> service.Experiment.PythonPackagesEntry + 22, // 13: service.Experiment.checkpoints:type_name -> service.Checkpoint + 28, // 14: service.Checkpoint.created:type_name -> google.protobuf.Timestamp + 27, // 15: service.Checkpoint.metrics:type_name -> service.Checkpoint.MetricsEntry + 23, // 16: service.Checkpoint.primaryMetric:type_name -> service.PrimaryMetric + 1, // 17: service.PrimaryMetric.goal:type_name -> service.PrimaryMetric.Goal + 24, // 18: service.Experiment.ParamsEntry.value:type_name -> service.ParamType + 24, // 19: service.Checkpoint.MetricsEntry.value:type_name -> service.ParamType + 2, // 20: service.Daemon.CreateExperiment:input_type -> service.CreateExperimentRequest + 4, // 21: service.Daemon.CreateCheckpoint:input_type -> service.CreateCheckpointRequest + 6, // 22: service.Daemon.SaveExperiment:input_type -> service.SaveExperimentRequest + 8, // 23: service.Daemon.StopExperiment:input_type -> service.StopExperimentRequest + 10, // 24: service.Daemon.GetExperiment:input_type -> service.GetExperimentRequest + 12, // 25: service.Daemon.ListExperiments:input_type -> service.ListExperimentsRequest + 14, // 26: service.Daemon.DeleteExperiment:input_type -> service.DeleteExperimentRequest + 16, // 27: service.Daemon.CheckoutCheckpoint:input_type -> service.CheckoutCheckpointRequest + 18, // 28: service.Daemon.GetExperimentStatus:input_type -> service.GetExperimentStatusRequest 3, // 29: service.Daemon.CreateExperiment:output_type -> service.CreateExperimentReply 5, // 30: service.Daemon.CreateCheckpoint:output_type -> service.CreateCheckpointReply 7, // 31: service.Daemon.SaveExperiment:output_type -> service.SaveExperimentReply @@ -1675,20 +1709,21 @@ var file_service_proto_depIdxs = []int32{ 13, // 34: service.Daemon.ListExperiments:output_type -> service.ListExperimentsReply 15, // 35: service.Daemon.DeleteExperiment:output_type -> service.DeleteExperimentReply 17, // 36: service.Daemon.CheckoutCheckpoint:output_type -> service.CheckoutCheckpointReply - 29, // [29:37] is the sub-list for method output_type - 21, // [21:29] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 19, // 37: service.Daemon.GetExperimentStatus:output_type -> service.GetExperimentStatusReply + 29, // [29:38] is the sub-list for method output_type + 20, // [20:29] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } -func init() { file_service_proto_init() } -func file_service_proto_init() { - if File_service_proto != nil { +func init() { file_replicate_proto_init() } +func file_replicate_proto_init() { + if File_replicate_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateExperimentRequest); i { case 0: return &v.state @@ -1700,7 +1735,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateExperimentReply); i { case 0: return &v.state @@ -1712,7 +1747,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateCheckpointRequest); i { case 0: return &v.state @@ -1724,7 +1759,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateCheckpointReply); i { case 0: return &v.state @@ -1736,7 +1771,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveExperimentRequest); i { case 0: return &v.state @@ -1748,7 +1783,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveExperimentReply); i { case 0: return &v.state @@ -1760,7 +1795,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopExperimentRequest); i { case 0: return &v.state @@ -1772,7 +1807,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopExperimentReply); i { case 0: return &v.state @@ -1784,7 +1819,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetExperimentRequest); i { case 0: return &v.state @@ -1796,7 +1831,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetExperimentReply); i { case 0: return &v.state @@ -1808,7 +1843,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListExperimentsRequest); i { case 0: return &v.state @@ -1820,7 +1855,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListExperimentsReply); i { case 0: return &v.state @@ -1832,7 +1867,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteExperimentRequest); i { case 0: return &v.state @@ -1844,7 +1879,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteExperimentReply); i { case 0: return &v.state @@ -1856,7 +1891,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckoutCheckpointRequest); i { case 0: return &v.state @@ -1868,7 +1903,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckoutCheckpointReply); i { case 0: return &v.state @@ -1880,8 +1915,20 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Exception); i { + file_replicate_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExperimentStatusRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_replicate_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExperimentStatusReply); i { case 0: return &v.state case 1: @@ -1892,7 +1939,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Experiment); i { case 0: return &v.state @@ -1904,7 +1951,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Config); i { case 0: return &v.state @@ -1916,7 +1963,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Checkpoint); i { case 0: return &v.state @@ -1928,7 +1975,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrimaryMetric); i { case 0: return &v.state @@ -1940,7 +1987,7 @@ func file_service_proto_init() { return nil } } - file_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_replicate_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParamType); i { case 0: return &v.state @@ -1953,7 +2000,7 @@ func file_service_proto_init() { } } } - file_service_proto_msgTypes[21].OneofWrappers = []interface{}{ + file_replicate_proto_msgTypes[22].OneofWrappers = []interface{}{ (*ParamType_BoolValue)(nil), (*ParamType_IntValue)(nil), (*ParamType_FloatValue)(nil), @@ -1964,19 +2011,19 @@ func file_service_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_service_proto_rawDesc, + RawDescriptor: file_replicate_proto_rawDesc, NumEnums: 2, - NumMessages: 25, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_service_proto_goTypes, - DependencyIndexes: file_service_proto_depIdxs, - EnumInfos: file_service_proto_enumTypes, - MessageInfos: file_service_proto_msgTypes, + GoTypes: file_replicate_proto_goTypes, + DependencyIndexes: file_replicate_proto_depIdxs, + EnumInfos: file_replicate_proto_enumTypes, + MessageInfos: file_replicate_proto_msgTypes, }.Build() - File_service_proto = out.File - file_service_proto_rawDesc = nil - file_service_proto_goTypes = nil - file_service_proto_depIdxs = nil + File_replicate_proto = out.File + file_replicate_proto_rawDesc = nil + file_replicate_proto_goTypes = nil + file_replicate_proto_depIdxs = nil } diff --git a/go/pkg/servicepb/service_grpc.pb.go b/go/pkg/servicepb/replicate_grpc.pb.go similarity index 89% rename from go/pkg/servicepb/service_grpc.pb.go rename to go/pkg/servicepb/replicate_grpc.pb.go index 5615ea699..aad4a4edf 100644 --- a/go/pkg/servicepb/service_grpc.pb.go +++ b/go/pkg/servicepb/replicate_grpc.pb.go @@ -4,7 +4,6 @@ package servicepb import ( context "context" - grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -26,6 +25,7 @@ type DaemonClient interface { ListExperiments(ctx context.Context, in *ListExperimentsRequest, opts ...grpc.CallOption) (*ListExperimentsReply, error) DeleteExperiment(ctx context.Context, in *DeleteExperimentRequest, opts ...grpc.CallOption) (*DeleteExperimentReply, error) CheckoutCheckpoint(ctx context.Context, in *CheckoutCheckpointRequest, opts ...grpc.CallOption) (*CheckoutCheckpointReply, error) + GetExperimentStatus(ctx context.Context, in *GetExperimentStatusRequest, opts ...grpc.CallOption) (*GetExperimentStatusReply, error) } type daemonClient struct { @@ -108,6 +108,15 @@ func (c *daemonClient) CheckoutCheckpoint(ctx context.Context, in *CheckoutCheck return out, nil } +func (c *daemonClient) GetExperimentStatus(ctx context.Context, in *GetExperimentStatusRequest, opts ...grpc.CallOption) (*GetExperimentStatusReply, error) { + out := new(GetExperimentStatusReply) + err := c.cc.Invoke(ctx, "/service.Daemon/GetExperimentStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // DaemonServer is the server API for Daemon service. // All implementations must embed UnimplementedDaemonServer // for forward compatibility @@ -120,6 +129,7 @@ type DaemonServer interface { ListExperiments(context.Context, *ListExperimentsRequest) (*ListExperimentsReply, error) DeleteExperiment(context.Context, *DeleteExperimentRequest) (*DeleteExperimentReply, error) CheckoutCheckpoint(context.Context, *CheckoutCheckpointRequest) (*CheckoutCheckpointReply, error) + GetExperimentStatus(context.Context, *GetExperimentStatusRequest) (*GetExperimentStatusReply, error) mustEmbedUnimplementedDaemonServer() } @@ -151,6 +161,9 @@ func (UnimplementedDaemonServer) DeleteExperiment(context.Context, *DeleteExperi func (UnimplementedDaemonServer) CheckoutCheckpoint(context.Context, *CheckoutCheckpointRequest) (*CheckoutCheckpointReply, error) { return nil, status.Errorf(codes.Unimplemented, "method CheckoutCheckpoint not implemented") } +func (UnimplementedDaemonServer) GetExperimentStatus(context.Context, *GetExperimentStatusRequest) (*GetExperimentStatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetExperimentStatus not implemented") +} func (UnimplementedDaemonServer) mustEmbedUnimplementedDaemonServer() {} // UnsafeDaemonServer may be embedded to opt out of forward compatibility for this service. @@ -308,6 +321,24 @@ func _Daemon_CheckoutCheckpoint_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Daemon_GetExperimentStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetExperimentStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DaemonServer).GetExperimentStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/service.Daemon/GetExperimentStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DaemonServer).GetExperimentStatus(ctx, req.(*GetExperimentStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Daemon_serviceDesc = grpc.ServiceDesc{ ServiceName: "service.Daemon", HandlerType: (*DaemonServer)(nil), @@ -344,7 +375,11 @@ var _Daemon_serviceDesc = grpc.ServiceDesc{ MethodName: "CheckoutCheckpoint", Handler: _Daemon_CheckoutCheckpoint_Handler, }, + { + MethodName: "GetExperimentStatus", + Handler: _Daemon_GetExperimentStatus_Handler, + }, }, Streams: []grpc.StreamDesc{}, - Metadata: "service.proto", + Metadata: "replicate.proto", } diff --git a/go/pkg/shared/pb_convert.go b/go/pkg/shared/pb_convert.go index 395d0a158..92de6cf6d 100644 --- a/go/pkg/shared/pb_convert.go +++ b/go/pkg/shared/pb_convert.go @@ -46,6 +46,7 @@ func experimentFromPb(expPb *servicepb.Experiment) *project.Experiment { Command: expPb.Command, Path: expPb.Path, PythonPackages: expPb.PythonPackages, + PythonVersion: expPb.PythonVersion, Checkpoints: checkpointsFromPb(expPb.Checkpoints), ReplicateVersion: expPb.ReplicateVersion, } @@ -125,6 +126,7 @@ func experimentToPb(exp *project.Experiment) *servicepb.Experiment { Command: exp.Command, Path: exp.Path, PythonPackages: exp.PythonPackages, + PythonVersion: exp.PythonVersion, ReplicateVersion: exp.ReplicateVersion, Checkpoints: checkpointsToPb(exp.Checkpoints), } @@ -208,6 +210,8 @@ func valueToPb(v param.Value) *servicepb.ParamType { return &servicepb.ParamType{Value: &servicepb.ParamType_StringValue{StringValue: v.StringVal()}} case param.TypeObject: return &servicepb.ParamType{Value: &servicepb.ParamType_ObjectValueJson{ObjectValueJson: v.String()}} + case param.TypeNone: + return &servicepb.ParamType{Value: &servicepb.ParamType_ObjectValueJson{ObjectValueJson: "null"}} } panic("Uninitiazlied param.Value") // should never happen } diff --git a/go/pkg/shared/serve.go b/go/pkg/shared/serve.go index 9ffbddb93..05c0bd7c8 100644 --- a/go/pkg/shared/serve.go +++ b/go/pkg/shared/serve.go @@ -96,6 +96,13 @@ func (s *server) StopExperiment(ctx context.Context, req *servicepb.StopExperime s.heartbeatsByExperimentID[req.ExperimentID].Kill() delete(s.heartbeatsByExperimentID, req.ExperimentID) } + proj, err := s.getProject() + if err != nil { + return nil, handleError(err) + } + if err := proj.StopExperiment(req.ExperimentID); err != nil { + return nil, handleError(err) + } return &servicepb.StopExperimentReply{}, nil } @@ -164,6 +171,24 @@ func (s *server) CheckoutCheckpoint(ctx context.Context, req *servicepb.Checkout return &servicepb.CheckoutCheckpointReply{}, nil } +func (s *server) GetExperimentStatus(ctx context.Context, req *servicepb.GetExperimentStatusRequest) (*servicepb.GetExperimentStatusReply, error) { + proj, err := s.getProject() + if err != nil { + return nil, handleError(err) + } + isRunning, err := proj.ExperimentIsRunning(req.ExperimentID) + if err != nil { + return nil, handleError(err) + } + var status servicepb.GetExperimentStatusReply_Status + if isRunning { + status = servicepb.GetExperimentStatusReply_RUNNING + } else { + status = servicepb.GetExperimentStatusReply_STOPPED + } + return &servicepb.GetExperimentStatusReply{Status: status}, nil +} + func (s *server) getProject() (*project.Project, error) { // we get the project lazily so that we can return a protobuf exception to the client // as part of a request flow diff --git a/proto/Makefile b/proto/Makefile index e8d50cf15..d42432e56 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -5,7 +5,7 @@ GO_OUTPUT_DIR=../go/pkg/servicepb PYTHON_OUTPUT_DIR=../python/replicate/servicepb -PROTO_NAME=service +PROTO_NAME=replicate SERVICE_PROTO=$(PROTO_NAME).proto .PHONY: build @@ -18,6 +18,7 @@ build: --go-grpc_out=$(GO_OUTPUT_DIR) \ --go-grpc_opt=paths=source_relative \ --experimental_allow_proto3_optional \ + --mypy_out=$(PYTHON_OUTPUT_DIR) \ $(SERVICE_PROTO) python -m grpc_tools.protoc \ --python_out=$(PYTHON_OUTPUT_DIR) \ @@ -28,3 +29,4 @@ build: # need to post-process python-generated protobuf to make the import relative # TODO(andreas): remove this when https://github.com/protocolbuffers/protobuf/pull/7470 is merged sed -E -i '' 's/^import $(PROTO_NAME)_pb2 as $(PROTO_NAME)__pb2$$/from . import $(PROTO_NAME)_pb2 as $(PROTO_NAME)__pb2/' $(PYTHON_OUTPUT_DIR)/$(PROTO_NAME)_pb2_grpc.py + touch $(PYTHON_OUTPUT_DIR)/__init__.py diff --git a/proto/service.proto b/proto/replicate.proto similarity index 87% rename from proto/service.proto rename to proto/replicate.proto index d342208be..bd874539f 100644 --- a/proto/service.proto +++ b/proto/replicate.proto @@ -17,6 +17,7 @@ service Daemon { rpc ListExperiments (ListExperimentsRequest) returns (ListExperimentsReply) {} rpc DeleteExperiment (DeleteExperimentRequest) returns (DeleteExperimentReply) {} rpc CheckoutCheckpoint (CheckoutCheckpointRequest) returns (CheckoutCheckpointReply) {} + rpc GetExperimentStatus (GetExperimentStatusRequest) returns (GetExperimentStatusReply) {} } message CreateExperimentRequest { @@ -26,7 +27,6 @@ message CreateExperimentRequest { message CreateExperimentReply { Experiment experiment = 1; - Exception exception = 2; } message CreateCheckpointRequest { @@ -82,6 +82,18 @@ message CheckoutCheckpointRequest { message CheckoutCheckpointReply { } +message GetExperimentStatusRequest { + string experimentID = 1; +} + +message GetExperimentStatusReply { + enum Status { + RUNNING = 0; + STOPPED = 1; + }; + Status status = 1; +} + message Experiment { string id = 1; google.protobuf.Timestamp created = 2; @@ -92,8 +104,9 @@ message Experiment { string command = 7; string path = 8; map pythonPackages = 9; - repeated Checkpoint checkpoints = 10; - string replicateVersion = 11; + string pythonVersion = 10; + repeated Checkpoint checkpoints = 11; + string replicateVersion = 12; } message Config { diff --git a/python/.mypy.ini b/python/.mypy.ini index 98f8134a6..7d3410dc7 100644 --- a/python/.mypy.ini +++ b/python/.mypy.ini @@ -5,3 +5,6 @@ ignore_errors = True [mypy-replicate._vendor.*] ignore_errors = True + +[mypy-replicate.servicepb.*] +ignore_errors = True diff --git a/python/pyproject.toml b/python/pyproject.toml index 54e77e86d..58f9d9d53 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,5 +1,5 @@ [tool.black] -exclude = '(\.eggs|\.git|\.hg|\.mypy|_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|_vendor)' +exclude = '(\.eggs|\.git|\.hg|\.mypy|_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|_vendor|servicepb)' [tool.vendoring] destination = "replicate/_vendor/" diff --git a/python/replicate/config.py b/python/replicate/config.py deleted file mode 100644 index 4ab771f13..000000000 --- a/python/replicate/config.py +++ /dev/null @@ -1,105 +0,0 @@ -import os -from typing import List, Dict, Any - -from ._vendor import yaml - -from . import console, constants -from .exceptions import ConfigNotFoundError - - -class ConfigValidationError(Exception): - def __str__(self): - return ( - super().__str__() - + "\n\nSee the documentation for more details: " - + constants.YAML_REFERENCE_DOCS_URL - ) - - -def load_config(project_dir: str) -> Dict[str, Any]: - """ - Loads config from directory - """ - data_found = False - for filename in ["replicate.yaml", "replicate.yml"]: - if os.path.isfile(os.path.join(project_dir, filename)): - data_found = True - with open(os.path.join(project_dir, filename)) as fh: - data = yaml.safe_load(fh) - - if data_found: - break - - if not data_found: - raise ConfigNotFoundError( - "replicate.yaml was not found in {}".format(project_dir) - ) - # Empty file - if data is None: - data = {} - - # if replicate is running inside docker and repository is disk, - # REPLICATE_REPOSITORY is mounted to the value of repository: in - # replicate.yaml - if "REPLICATE_REPOSITORY" in os.environ: - data["repository"] = os.environ["REPLICATE_REPOSITORY"] - - return validate_and_set_defaults(data, project_dir) - - -# This should be rigorously validated, see https://github.com/replicate/replicate/issues/330 -VALID_KEYS = [ - "repository", - "storage", # deprecated -] -REQUIRED_KEYS: List[str] = ["repository"] - - -def validate_and_set_defaults(data: Dict[str, Any], project_dir: str) -> Dict[str, Any]: - if data.get("storage"): - if data.get("repository"): - raise ConfigValidationError( - "Both 'storage' (deprecated) and 'repository' are defined in replicate.yaml, please only use 'repository'" - ) - - console.warn( - "'storage' is deprecated in replicate.yaml, please use 'repository'" - ) - data["repository"] = data["storage"] - del data["storage"] - - defaults = get_default_config() - - for key, value in defaults.items(): - if key not in data: - data[key] = value - - for key, value in data.items(): - if key not in VALID_KEYS: - raise ConfigValidationError( - "The option '{}' is in replicate.yaml, but it is not supported.".format( - key - ) - ) - - if key == "repository": - if not isinstance(value, str): - raise ConfigValidationError( - "The option 'repository' in replicate.yaml needs to be a string." - ) - - # check for required keys last since repository is set from - # storage for backwards compatibility - for key in REQUIRED_KEYS: - if key not in data: - raise ConfigValidationError( - "The option '{}' is required in replicate.yaml, but you have not set it.".format( - key - ) - ) - - return data - - -def get_default_config() -> Dict[str, Any]: - return {} diff --git a/python/replicate/constants.py b/python/replicate/constants.py index 5c0a1ddc8..d8be88138 100644 --- a/python/replicate/constants.py +++ b/python/replicate/constants.py @@ -3,6 +3,3 @@ PYTHON_REFERENCE_DOCS_URL = DOCS_URL + "/reference/python" YAML_REFERENCE_DOCS_URL = DOCS_URL + "/reference/yaml" REPOSITORY_VERSION = 1 -HEARTBEAT_MISS_TOLERANCE = 3 -EXPERIMENT_STATUS_RUNNING = "running" -EXPERIMENT_STATUS_STOPPED = "stopped" diff --git a/python/replicate/daemon.py b/python/replicate/daemon.py index 0940c9d80..3287081d3 100644 --- a/python/replicate/daemon.py +++ b/python/replicate/daemon.py @@ -11,8 +11,8 @@ import grpc # type: ignore from google.rpc import status_pb2, error_details_pb2 # type: ignore -from .servicepb.service_pb2_grpc import DaemonStub # type: ignore -from .servicepb import service_pb2 as pb # type: ignore +from .servicepb.replicate_pb2_grpc import DaemonStub +from .servicepb import replicate_pb2 as pb from . import pb_convert from .experiment import Experiment from .checkpoint import Checkpoint, PrimaryMetric @@ -119,6 +119,7 @@ def create_experiment( params: Optional[Dict[str, Any]], command: Optional[str], python_packages: Dict[str, str], + python_version: str, quiet: bool, disable_hearbeat: bool, ) -> Experiment: @@ -127,6 +128,7 @@ def create_experiment( path=path, command=command, pythonPackages=python_packages, + pythonVersion=python_version, ) ret = self.stub.CreateExperiment( pb.CreateExperimentRequest( @@ -198,3 +200,10 @@ def checkout_checkpoint( outputDirectory=output_directory, ), ) + + @handle_error + def experiment_is_running(self, experiment_id: str) -> str: + ret = self.stub.GetExperimentStatus( + pb.GetExperimentStatusRequest(experimentID=experiment_id) + ) + return ret.status == pb.GetExperimentStatusReply.Status.RUNNING diff --git a/python/replicate/experiment.py b/python/replicate/experiment.py index 0cabb8ec8..41a7bfaf0 100644 --- a/python/replicate/experiment.py +++ b/python/replicate/experiment.py @@ -28,31 +28,16 @@ PrimaryMetric, CheckpointList, ) -from .heartbeat import DEFAULT_REFRESH_INTERVAL from .metadata import rfc3339_datetime, parse_rfc3339 from .packages import get_imported_packages from .system import get_python_version from .validate import check_path from .version import version -from .constants import ( - HEARTBEAT_MISS_TOLERANCE, - EXPERIMENT_STATUS_RUNNING, - EXPERIMENT_STATUS_STOPPED, -) if TYPE_CHECKING: from .project import Project -def experiment_fields_from_json(data: Dict[str, Any]) -> Dict[str, Any]: - data = data.copy() - data["created"] = parse_rfc3339(data["created"]) - data["checkpoints"] = CheckpointList( - [Checkpoint.from_json(d) for d in data.get("checkpoints", [])] - ) - return data - - @dataclass class Experiment: """ @@ -160,26 +145,21 @@ def refresh(self): """ Update this experiment with the latest data from the repository. """ - repository = self._project._get_repository() - data = json.loads( - repository.get("metadata/experiments/{}.json".format(self.id)) - ) - fields = experiment_fields_from_json(data) - for k, v in fields.items(): - setattr(self, k, v) + exp = self._project._daemon().get_experiment(experiment_id_prefix=self.id,) + self.created = exp.created + self.user = exp.user + self.host = exp.host + self.command = exp.command + self.config = exp.config + self.path = exp.path + self.params = exp.params + self.python_version = exp.python_version + self.python_packages = exp.python_packages + self.replicate_version = exp.replicate_version + self.checkpoints = exp.checkpoints for chk in self.checkpoints: chk._experiment = self - @classmethod - def from_json(cls, project: "Project", data: Dict[str, Any]) -> "Experiment": - data = data.copy() - data["created"] = parse_rfc3339(data["created"]) - data["checkpoints"] = CheckpointList( - [Checkpoint.from_json(d) for d in data.get("checkpoints", [])] - ) - experiment = Experiment(project=project, **data) - return experiment - def to_json(self) -> Dict[str, Any]: return { "id": self.id, @@ -273,34 +253,7 @@ def is_running(self) -> bool: In case the heartbeat metadata file is not present which means the experiment was stopped the function returns False. """ - try: - repository = self._project._get_repository() - heartbeat_metadata_bytes = repository.get(self._heartbeat_path()) - heartbeat_metadata = json.loads(heartbeat_metadata_bytes) - except DoesNotExistError as e: - return False - except Exception as e: - console.warn( - "Failed to load heartbeat metadata from {}: {}".format( - self._heartbeat_path(), e - ) - ) - return False - now = datetime.datetime.utcnow() - last_heartbeat = parse_rfc3339(heartbeat_metadata["last_heartbeat"]) - last_tolerable_heartbeat = ( - now - DEFAULT_REFRESH_INTERVAL * HEARTBEAT_MISS_TOLERANCE - ) - return last_tolerable_heartbeat < last_heartbeat - - def _heartbeat_path(self) -> str: - return "metadata/heartbeats/{}.json".format(self.id) - - def _repository_tar_path(self) -> str: - return "experiments/{}.tar.gz".format(self.id) - - def _metadata_path(self) -> str: - return "metadata/experiments/{}.json".format(self.id) + return self._project._daemon().experiment_is_running(self.id) def primary_metric(self) -> str: """ diff --git a/python/replicate/pb_convert.py b/python/replicate/pb_convert.py index 45b50161a..6c470babc 100644 --- a/python/replicate/pb_convert.py +++ b/python/replicate/pb_convert.py @@ -1,10 +1,11 @@ import datetime import json -from typing import List, Dict, Any, Optional +from typing import List, Dict, Any, Optional, MutableMapping from google.protobuf import timestamp_pb2 +from google.protobuf.internal.containers import RepeatedCompositeFieldContainer -from .servicepb import service_pb2 as pb # type: ignore +from .servicepb import replicate_pb2 as pb from .experiment import Experiment from .checkpoint import Checkpoint, PrimaryMetric, CheckpointList @@ -37,7 +38,7 @@ def timestamp_from_pb(t: timestamp_pb2.Timestamp) -> datetime.datetime: def checkpoints_from_pb( - experiment: Experiment, checkpoints_pb: List[pb.Checkpoint], + experiment: Experiment, checkpoints_pb: RepeatedCompositeFieldContainer[pb.Checkpoint], ) -> CheckpointList: lst = CheckpointList() for chk_pb in checkpoints_pb: @@ -79,6 +80,7 @@ def experiment_from_pb(project, exp_pb: pb.Experiment) -> Experiment: path=noneable(exp_pb.path), params=value_map_from_pb(exp_pb.params), python_packages=noneable(exp_pb.pythonPackages), + python_version=noneable(exp_pb.pythonVersion), replicate_version=noneable(exp_pb.replicateVersion), ) exp.checkpoints = checkpoints_from_pb(exp, exp_pb.checkpoints) @@ -104,7 +106,7 @@ def primary_metric_from_pb(pm_pb: pb.PrimaryMetric,) -> Optional[PrimaryMetric]: return PrimaryMetric(name=pm_pb.name, goal=goal,) -def value_map_from_pb(vm_pb: Dict[str, pb.ParamType]) -> Optional[Dict[str, Any]]: +def value_map_from_pb(vm_pb: MutableMapping[str, pb.ParamType]) -> Optional[Dict[str, Any]]: if not vm_pb: return None return {k: value_from_pb(v) for k, v in vm_pb.items()} @@ -141,6 +143,7 @@ def experiment_to_pb(exp: Experiment) -> pb.Experiment: path=exp.path, params=value_map_to_pb(exp.params), pythonPackages=exp.python_packages, + pythonVersion=exp.python_version, replicateVersion=exp.replicate_version, checkpoints=checkpoints_to_pb(exp.checkpoints), ) @@ -201,6 +204,8 @@ def value_to_pb(v: Any) -> pb.ParamType: return pb.ParamType(objectValueJson=json.dumps(v)) if isinstance(v, dict): return pb.ParamType(objectValueJson=json.dumps(v)) + if v is None: + return pb.ParamType(objectValueJson=json.dumps(v)) else: raise ValueError("Invalid value: %s", v) diff --git a/python/replicate/servicepb/__init__.py b/python/replicate/servicepb/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/python/replicate/servicepb/replicate_pb2.py b/python/replicate/servicepb/replicate_pb2.py new file mode 100644 index 000000000..47e396536 --- /dev/null +++ b/python/replicate/servicepb/replicate_pb2.py @@ -0,0 +1,1437 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: replicate.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='replicate.proto', + package='service', + syntax='proto3', + serialized_options=b'Z/github.com/replicate/replicate/go/pkg/servicepb', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x0freplicate.proto\x12\x07service\x1a\x1fgoogle/protobuf/timestamp.proto\"\\\n\x17\x43reateExperimentRequest\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\x12\x18\n\x10\x64isableHeartbeat\x18\x02 \x01(\x08\"@\n\x15\x43reateExperimentReply\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\"B\n\x17\x43reateCheckpointRequest\x12\'\n\ncheckpoint\x18\x01 \x01(\x0b\x32\x13.service.Checkpoint\"@\n\x15\x43reateCheckpointReply\x12\'\n\ncheckpoint\x18\x01 \x01(\x0b\x32\x13.service.Checkpoint\"@\n\x15SaveExperimentRequest\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\">\n\x13SaveExperimentReply\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\"-\n\x15StopExperimentRequest\x12\x14\n\x0c\x65xperimentID\x18\x01 \x01(\t\"\x15\n\x13StopExperimentReply\"2\n\x14GetExperimentRequest\x12\x1a\n\x12\x65xperimentIDPrefix\x18\x01 \x01(\t\"=\n\x12GetExperimentReply\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\"\x18\n\x16ListExperimentsRequest\"@\n\x14ListExperimentsReply\x12(\n\x0b\x65xperiments\x18\x01 \x03(\x0b\x32\x13.service.Experiment\"/\n\x17\x44\x65leteExperimentRequest\x12\x14\n\x0c\x65xperimentID\x18\x01 \x01(\t\"\x17\n\x15\x44\x65leteExperimentReply\"P\n\x19\x43heckoutCheckpointRequest\x12\x1a\n\x12\x63heckpointIDPrefix\x18\x01 \x01(\t\x12\x17\n\x0foutputDirectory\x18\x02 \x01(\t\"\x19\n\x17\x43heckoutCheckpointReply\"2\n\x1aGetExperimentStatusRequest\x12\x14\n\x0c\x65xperimentID\x18\x01 \x01(\t\"x\n\x18GetExperimentStatusReply\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.service.GetExperimentStatusReply.Status\"\"\n\x06Status\x12\x0b\n\x07RUNNING\x10\x00\x12\x0b\n\x07STOPPED\x10\x01\"\xe8\x03\n\nExperiment\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x07\x63reated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x06params\x18\x03 \x03(\x0b\x32\x1f.service.Experiment.ParamsEntry\x12\x0c\n\x04host\x18\x04 \x01(\t\x12\x0c\n\x04user\x18\x05 \x01(\t\x12\x1f\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x0f.service.Config\x12\x0f\n\x07\x63ommand\x18\x07 \x01(\t\x12\x0c\n\x04path\x18\x08 \x01(\t\x12?\n\x0epythonPackages\x18\t \x03(\x0b\x32\'.service.Experiment.PythonPackagesEntry\x12\x15\n\rpythonVersion\x18\n \x01(\t\x12(\n\x0b\x63heckpoints\x18\x0b \x03(\x0b\x32\x13.service.Checkpoint\x12\x18\n\x10replicateVersion\x18\x0c \x01(\t\x1a\x41\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.service.ParamType:\x02\x38\x01\x1a\x35\n\x13PythonPackagesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"-\n\x06\x43onfig\x12\x12\n\nrepository\x18\x01 \x01(\t\x12\x0f\n\x07storage\x18\x02 \x01(\t\"\x87\x02\n\nCheckpoint\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x07\x63reated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x07metrics\x18\x03 \x03(\x0b\x32 .service.Checkpoint.MetricsEntry\x12\x0c\n\x04step\x18\x04 \x01(\x03\x12\x0c\n\x04path\x18\x05 \x01(\t\x12-\n\rprimaryMetric\x18\x06 \x01(\x0b\x32\x16.service.PrimaryMetric\x1a\x42\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.service.ParamType:\x02\x38\x01\"l\n\rPrimaryMetric\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x04goal\x18\x02 \x01(\x0e\x32\x1b.service.PrimaryMetric.Goal\"\"\n\x04Goal\x12\x0c\n\x08MAXIMIZE\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\"\x85\x01\n\tParamType\x12\x13\n\tboolValue\x18\x01 \x01(\x08H\x00\x12\x12\n\x08intValue\x18\x02 \x01(\x03H\x00\x12\x14\n\nfloatValue\x18\x03 \x01(\x01H\x00\x12\x15\n\x0bstringValue\x18\x04 \x01(\tH\x00\x12\x19\n\x0fobjectValueJson\x18\x05 \x01(\tH\x00\x42\x07\n\x05value2\x97\x06\n\x06\x44\x61\x65mon\x12V\n\x10\x43reateExperiment\x12 .service.CreateExperimentRequest\x1a\x1e.service.CreateExperimentReply\"\x00\x12V\n\x10\x43reateCheckpoint\x12 .service.CreateCheckpointRequest\x1a\x1e.service.CreateCheckpointReply\"\x00\x12P\n\x0eSaveExperiment\x12\x1e.service.SaveExperimentRequest\x1a\x1c.service.SaveExperimentReply\"\x00\x12P\n\x0eStopExperiment\x12\x1e.service.StopExperimentRequest\x1a\x1c.service.StopExperimentReply\"\x00\x12M\n\rGetExperiment\x12\x1d.service.GetExperimentRequest\x1a\x1b.service.GetExperimentReply\"\x00\x12S\n\x0fListExperiments\x12\x1f.service.ListExperimentsRequest\x1a\x1d.service.ListExperimentsReply\"\x00\x12V\n\x10\x44\x65leteExperiment\x12 .service.DeleteExperimentRequest\x1a\x1e.service.DeleteExperimentReply\"\x00\x12\\\n\x12\x43heckoutCheckpoint\x12\".service.CheckoutCheckpointRequest\x1a .service.CheckoutCheckpointReply\"\x00\x12_\n\x13GetExperimentStatus\x12#.service.GetExperimentStatusRequest\x1a!.service.GetExperimentStatusReply\"\x00\x42\x31Z/github.com/replicate/replicate/go/pkg/servicepbb\x06proto3' + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + + + +_GETEXPERIMENTSTATUSREPLY_STATUS = _descriptor.EnumDescriptor( + name='Status', + full_name='service.GetExperimentStatusReply.Status', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='RUNNING', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='STOPPED', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=1083, + serialized_end=1117, +) +_sym_db.RegisterEnumDescriptor(_GETEXPERIMENTSTATUSREPLY_STATUS) + +_PRIMARYMETRIC_GOAL = _descriptor.EnumDescriptor( + name='Goal', + full_name='service.PrimaryMetric.Goal', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='MAXIMIZE', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MINIMIZE', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=1997, + serialized_end=2031, +) +_sym_db.RegisterEnumDescriptor(_PRIMARYMETRIC_GOAL) + + +_CREATEEXPERIMENTREQUEST = _descriptor.Descriptor( + name='CreateExperimentRequest', + full_name='service.CreateExperimentRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experiment', full_name='service.CreateExperimentRequest.experiment', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='disableHeartbeat', full_name='service.CreateExperimentRequest.disableHeartbeat', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=61, + serialized_end=153, +) + + +_CREATEEXPERIMENTREPLY = _descriptor.Descriptor( + name='CreateExperimentReply', + full_name='service.CreateExperimentReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experiment', full_name='service.CreateExperimentReply.experiment', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=155, + serialized_end=219, +) + + +_CREATECHECKPOINTREQUEST = _descriptor.Descriptor( + name='CreateCheckpointRequest', + full_name='service.CreateCheckpointRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='checkpoint', full_name='service.CreateCheckpointRequest.checkpoint', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=221, + serialized_end=287, +) + + +_CREATECHECKPOINTREPLY = _descriptor.Descriptor( + name='CreateCheckpointReply', + full_name='service.CreateCheckpointReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='checkpoint', full_name='service.CreateCheckpointReply.checkpoint', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=289, + serialized_end=353, +) + + +_SAVEEXPERIMENTREQUEST = _descriptor.Descriptor( + name='SaveExperimentRequest', + full_name='service.SaveExperimentRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experiment', full_name='service.SaveExperimentRequest.experiment', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=355, + serialized_end=419, +) + + +_SAVEEXPERIMENTREPLY = _descriptor.Descriptor( + name='SaveExperimentReply', + full_name='service.SaveExperimentReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experiment', full_name='service.SaveExperimentReply.experiment', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=421, + serialized_end=483, +) + + +_STOPEXPERIMENTREQUEST = _descriptor.Descriptor( + name='StopExperimentRequest', + full_name='service.StopExperimentRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experimentID', full_name='service.StopExperimentRequest.experimentID', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=485, + serialized_end=530, +) + + +_STOPEXPERIMENTREPLY = _descriptor.Descriptor( + name='StopExperimentReply', + full_name='service.StopExperimentReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=532, + serialized_end=553, +) + + +_GETEXPERIMENTREQUEST = _descriptor.Descriptor( + name='GetExperimentRequest', + full_name='service.GetExperimentRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experimentIDPrefix', full_name='service.GetExperimentRequest.experimentIDPrefix', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=555, + serialized_end=605, +) + + +_GETEXPERIMENTREPLY = _descriptor.Descriptor( + name='GetExperimentReply', + full_name='service.GetExperimentReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experiment', full_name='service.GetExperimentReply.experiment', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=607, + serialized_end=668, +) + + +_LISTEXPERIMENTSREQUEST = _descriptor.Descriptor( + name='ListExperimentsRequest', + full_name='service.ListExperimentsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=670, + serialized_end=694, +) + + +_LISTEXPERIMENTSREPLY = _descriptor.Descriptor( + name='ListExperimentsReply', + full_name='service.ListExperimentsReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experiments', full_name='service.ListExperimentsReply.experiments', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=696, + serialized_end=760, +) + + +_DELETEEXPERIMENTREQUEST = _descriptor.Descriptor( + name='DeleteExperimentRequest', + full_name='service.DeleteExperimentRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experimentID', full_name='service.DeleteExperimentRequest.experimentID', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=762, + serialized_end=809, +) + + +_DELETEEXPERIMENTREPLY = _descriptor.Descriptor( + name='DeleteExperimentReply', + full_name='service.DeleteExperimentReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=811, + serialized_end=834, +) + + +_CHECKOUTCHECKPOINTREQUEST = _descriptor.Descriptor( + name='CheckoutCheckpointRequest', + full_name='service.CheckoutCheckpointRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='checkpointIDPrefix', full_name='service.CheckoutCheckpointRequest.checkpointIDPrefix', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='outputDirectory', full_name='service.CheckoutCheckpointRequest.outputDirectory', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=836, + serialized_end=916, +) + + +_CHECKOUTCHECKPOINTREPLY = _descriptor.Descriptor( + name='CheckoutCheckpointReply', + full_name='service.CheckoutCheckpointReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=918, + serialized_end=943, +) + + +_GETEXPERIMENTSTATUSREQUEST = _descriptor.Descriptor( + name='GetExperimentStatusRequest', + full_name='service.GetExperimentStatusRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='experimentID', full_name='service.GetExperimentStatusRequest.experimentID', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=945, + serialized_end=995, +) + + +_GETEXPERIMENTSTATUSREPLY = _descriptor.Descriptor( + name='GetExperimentStatusReply', + full_name='service.GetExperimentStatusReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='status', full_name='service.GetExperimentStatusReply.status', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _GETEXPERIMENTSTATUSREPLY_STATUS, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=997, + serialized_end=1117, +) + + +_EXPERIMENT_PARAMSENTRY = _descriptor.Descriptor( + name='ParamsEntry', + full_name='service.Experiment.ParamsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='service.Experiment.ParamsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='service.Experiment.ParamsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1488, + serialized_end=1553, +) + +_EXPERIMENT_PYTHONPACKAGESENTRY = _descriptor.Descriptor( + name='PythonPackagesEntry', + full_name='service.Experiment.PythonPackagesEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='service.Experiment.PythonPackagesEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='service.Experiment.PythonPackagesEntry.value', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1555, + serialized_end=1608, +) + +_EXPERIMENT = _descriptor.Descriptor( + name='Experiment', + full_name='service.Experiment', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='service.Experiment.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='created', full_name='service.Experiment.created', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='params', full_name='service.Experiment.params', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='host', full_name='service.Experiment.host', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='user', full_name='service.Experiment.user', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='config', full_name='service.Experiment.config', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='command', full_name='service.Experiment.command', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='path', full_name='service.Experiment.path', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pythonPackages', full_name='service.Experiment.pythonPackages', index=8, + number=9, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pythonVersion', full_name='service.Experiment.pythonVersion', index=9, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='checkpoints', full_name='service.Experiment.checkpoints', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='replicateVersion', full_name='service.Experiment.replicateVersion', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_EXPERIMENT_PARAMSENTRY, _EXPERIMENT_PYTHONPACKAGESENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1120, + serialized_end=1608, +) + + +_CONFIG = _descriptor.Descriptor( + name='Config', + full_name='service.Config', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='repository', full_name='service.Config.repository', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='storage', full_name='service.Config.storage', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1610, + serialized_end=1655, +) + + +_CHECKPOINT_METRICSENTRY = _descriptor.Descriptor( + name='MetricsEntry', + full_name='service.Checkpoint.MetricsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='service.Checkpoint.MetricsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='service.Checkpoint.MetricsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1855, + serialized_end=1921, +) + +_CHECKPOINT = _descriptor.Descriptor( + name='Checkpoint', + full_name='service.Checkpoint', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='service.Checkpoint.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='created', full_name='service.Checkpoint.created', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='metrics', full_name='service.Checkpoint.metrics', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='step', full_name='service.Checkpoint.step', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='path', full_name='service.Checkpoint.path', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='primaryMetric', full_name='service.Checkpoint.primaryMetric', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_CHECKPOINT_METRICSENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1658, + serialized_end=1921, +) + + +_PRIMARYMETRIC = _descriptor.Descriptor( + name='PrimaryMetric', + full_name='service.PrimaryMetric', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='service.PrimaryMetric.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='goal', full_name='service.PrimaryMetric.goal', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _PRIMARYMETRIC_GOAL, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1923, + serialized_end=2031, +) + + +_PARAMTYPE = _descriptor.Descriptor( + name='ParamType', + full_name='service.ParamType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='boolValue', full_name='service.ParamType.boolValue', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='intValue', full_name='service.ParamType.intValue', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='floatValue', full_name='service.ParamType.floatValue', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='stringValue', full_name='service.ParamType.stringValue', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='objectValueJson', full_name='service.ParamType.objectValueJson', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='value', full_name='service.ParamType.value', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=2034, + serialized_end=2167, +) + +_CREATEEXPERIMENTREQUEST.fields_by_name['experiment'].message_type = _EXPERIMENT +_CREATEEXPERIMENTREPLY.fields_by_name['experiment'].message_type = _EXPERIMENT +_CREATECHECKPOINTREQUEST.fields_by_name['checkpoint'].message_type = _CHECKPOINT +_CREATECHECKPOINTREPLY.fields_by_name['checkpoint'].message_type = _CHECKPOINT +_SAVEEXPERIMENTREQUEST.fields_by_name['experiment'].message_type = _EXPERIMENT +_SAVEEXPERIMENTREPLY.fields_by_name['experiment'].message_type = _EXPERIMENT +_GETEXPERIMENTREPLY.fields_by_name['experiment'].message_type = _EXPERIMENT +_LISTEXPERIMENTSREPLY.fields_by_name['experiments'].message_type = _EXPERIMENT +_GETEXPERIMENTSTATUSREPLY.fields_by_name['status'].enum_type = _GETEXPERIMENTSTATUSREPLY_STATUS +_GETEXPERIMENTSTATUSREPLY_STATUS.containing_type = _GETEXPERIMENTSTATUSREPLY +_EXPERIMENT_PARAMSENTRY.fields_by_name['value'].message_type = _PARAMTYPE +_EXPERIMENT_PARAMSENTRY.containing_type = _EXPERIMENT +_EXPERIMENT_PYTHONPACKAGESENTRY.containing_type = _EXPERIMENT +_EXPERIMENT.fields_by_name['created'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_EXPERIMENT.fields_by_name['params'].message_type = _EXPERIMENT_PARAMSENTRY +_EXPERIMENT.fields_by_name['config'].message_type = _CONFIG +_EXPERIMENT.fields_by_name['pythonPackages'].message_type = _EXPERIMENT_PYTHONPACKAGESENTRY +_EXPERIMENT.fields_by_name['checkpoints'].message_type = _CHECKPOINT +_CHECKPOINT_METRICSENTRY.fields_by_name['value'].message_type = _PARAMTYPE +_CHECKPOINT_METRICSENTRY.containing_type = _CHECKPOINT +_CHECKPOINT.fields_by_name['created'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_CHECKPOINT.fields_by_name['metrics'].message_type = _CHECKPOINT_METRICSENTRY +_CHECKPOINT.fields_by_name['primaryMetric'].message_type = _PRIMARYMETRIC +_PRIMARYMETRIC.fields_by_name['goal'].enum_type = _PRIMARYMETRIC_GOAL +_PRIMARYMETRIC_GOAL.containing_type = _PRIMARYMETRIC +_PARAMTYPE.oneofs_by_name['value'].fields.append( + _PARAMTYPE.fields_by_name['boolValue']) +_PARAMTYPE.fields_by_name['boolValue'].containing_oneof = _PARAMTYPE.oneofs_by_name['value'] +_PARAMTYPE.oneofs_by_name['value'].fields.append( + _PARAMTYPE.fields_by_name['intValue']) +_PARAMTYPE.fields_by_name['intValue'].containing_oneof = _PARAMTYPE.oneofs_by_name['value'] +_PARAMTYPE.oneofs_by_name['value'].fields.append( + _PARAMTYPE.fields_by_name['floatValue']) +_PARAMTYPE.fields_by_name['floatValue'].containing_oneof = _PARAMTYPE.oneofs_by_name['value'] +_PARAMTYPE.oneofs_by_name['value'].fields.append( + _PARAMTYPE.fields_by_name['stringValue']) +_PARAMTYPE.fields_by_name['stringValue'].containing_oneof = _PARAMTYPE.oneofs_by_name['value'] +_PARAMTYPE.oneofs_by_name['value'].fields.append( + _PARAMTYPE.fields_by_name['objectValueJson']) +_PARAMTYPE.fields_by_name['objectValueJson'].containing_oneof = _PARAMTYPE.oneofs_by_name['value'] +DESCRIPTOR.message_types_by_name['CreateExperimentRequest'] = _CREATEEXPERIMENTREQUEST +DESCRIPTOR.message_types_by_name['CreateExperimentReply'] = _CREATEEXPERIMENTREPLY +DESCRIPTOR.message_types_by_name['CreateCheckpointRequest'] = _CREATECHECKPOINTREQUEST +DESCRIPTOR.message_types_by_name['CreateCheckpointReply'] = _CREATECHECKPOINTREPLY +DESCRIPTOR.message_types_by_name['SaveExperimentRequest'] = _SAVEEXPERIMENTREQUEST +DESCRIPTOR.message_types_by_name['SaveExperimentReply'] = _SAVEEXPERIMENTREPLY +DESCRIPTOR.message_types_by_name['StopExperimentRequest'] = _STOPEXPERIMENTREQUEST +DESCRIPTOR.message_types_by_name['StopExperimentReply'] = _STOPEXPERIMENTREPLY +DESCRIPTOR.message_types_by_name['GetExperimentRequest'] = _GETEXPERIMENTREQUEST +DESCRIPTOR.message_types_by_name['GetExperimentReply'] = _GETEXPERIMENTREPLY +DESCRIPTOR.message_types_by_name['ListExperimentsRequest'] = _LISTEXPERIMENTSREQUEST +DESCRIPTOR.message_types_by_name['ListExperimentsReply'] = _LISTEXPERIMENTSREPLY +DESCRIPTOR.message_types_by_name['DeleteExperimentRequest'] = _DELETEEXPERIMENTREQUEST +DESCRIPTOR.message_types_by_name['DeleteExperimentReply'] = _DELETEEXPERIMENTREPLY +DESCRIPTOR.message_types_by_name['CheckoutCheckpointRequest'] = _CHECKOUTCHECKPOINTREQUEST +DESCRIPTOR.message_types_by_name['CheckoutCheckpointReply'] = _CHECKOUTCHECKPOINTREPLY +DESCRIPTOR.message_types_by_name['GetExperimentStatusRequest'] = _GETEXPERIMENTSTATUSREQUEST +DESCRIPTOR.message_types_by_name['GetExperimentStatusReply'] = _GETEXPERIMENTSTATUSREPLY +DESCRIPTOR.message_types_by_name['Experiment'] = _EXPERIMENT +DESCRIPTOR.message_types_by_name['Config'] = _CONFIG +DESCRIPTOR.message_types_by_name['Checkpoint'] = _CHECKPOINT +DESCRIPTOR.message_types_by_name['PrimaryMetric'] = _PRIMARYMETRIC +DESCRIPTOR.message_types_by_name['ParamType'] = _PARAMTYPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +CreateExperimentRequest = _reflection.GeneratedProtocolMessageType('CreateExperimentRequest', (_message.Message,), { + 'DESCRIPTOR' : _CREATEEXPERIMENTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.CreateExperimentRequest) + }) +_sym_db.RegisterMessage(CreateExperimentRequest) + +CreateExperimentReply = _reflection.GeneratedProtocolMessageType('CreateExperimentReply', (_message.Message,), { + 'DESCRIPTOR' : _CREATEEXPERIMENTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.CreateExperimentReply) + }) +_sym_db.RegisterMessage(CreateExperimentReply) + +CreateCheckpointRequest = _reflection.GeneratedProtocolMessageType('CreateCheckpointRequest', (_message.Message,), { + 'DESCRIPTOR' : _CREATECHECKPOINTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.CreateCheckpointRequest) + }) +_sym_db.RegisterMessage(CreateCheckpointRequest) + +CreateCheckpointReply = _reflection.GeneratedProtocolMessageType('CreateCheckpointReply', (_message.Message,), { + 'DESCRIPTOR' : _CREATECHECKPOINTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.CreateCheckpointReply) + }) +_sym_db.RegisterMessage(CreateCheckpointReply) + +SaveExperimentRequest = _reflection.GeneratedProtocolMessageType('SaveExperimentRequest', (_message.Message,), { + 'DESCRIPTOR' : _SAVEEXPERIMENTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.SaveExperimentRequest) + }) +_sym_db.RegisterMessage(SaveExperimentRequest) + +SaveExperimentReply = _reflection.GeneratedProtocolMessageType('SaveExperimentReply', (_message.Message,), { + 'DESCRIPTOR' : _SAVEEXPERIMENTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.SaveExperimentReply) + }) +_sym_db.RegisterMessage(SaveExperimentReply) + +StopExperimentRequest = _reflection.GeneratedProtocolMessageType('StopExperimentRequest', (_message.Message,), { + 'DESCRIPTOR' : _STOPEXPERIMENTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.StopExperimentRequest) + }) +_sym_db.RegisterMessage(StopExperimentRequest) + +StopExperimentReply = _reflection.GeneratedProtocolMessageType('StopExperimentReply', (_message.Message,), { + 'DESCRIPTOR' : _STOPEXPERIMENTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.StopExperimentReply) + }) +_sym_db.RegisterMessage(StopExperimentReply) + +GetExperimentRequest = _reflection.GeneratedProtocolMessageType('GetExperimentRequest', (_message.Message,), { + 'DESCRIPTOR' : _GETEXPERIMENTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.GetExperimentRequest) + }) +_sym_db.RegisterMessage(GetExperimentRequest) + +GetExperimentReply = _reflection.GeneratedProtocolMessageType('GetExperimentReply', (_message.Message,), { + 'DESCRIPTOR' : _GETEXPERIMENTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.GetExperimentReply) + }) +_sym_db.RegisterMessage(GetExperimentReply) + +ListExperimentsRequest = _reflection.GeneratedProtocolMessageType('ListExperimentsRequest', (_message.Message,), { + 'DESCRIPTOR' : _LISTEXPERIMENTSREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.ListExperimentsRequest) + }) +_sym_db.RegisterMessage(ListExperimentsRequest) + +ListExperimentsReply = _reflection.GeneratedProtocolMessageType('ListExperimentsReply', (_message.Message,), { + 'DESCRIPTOR' : _LISTEXPERIMENTSREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.ListExperimentsReply) + }) +_sym_db.RegisterMessage(ListExperimentsReply) + +DeleteExperimentRequest = _reflection.GeneratedProtocolMessageType('DeleteExperimentRequest', (_message.Message,), { + 'DESCRIPTOR' : _DELETEEXPERIMENTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.DeleteExperimentRequest) + }) +_sym_db.RegisterMessage(DeleteExperimentRequest) + +DeleteExperimentReply = _reflection.GeneratedProtocolMessageType('DeleteExperimentReply', (_message.Message,), { + 'DESCRIPTOR' : _DELETEEXPERIMENTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.DeleteExperimentReply) + }) +_sym_db.RegisterMessage(DeleteExperimentReply) + +CheckoutCheckpointRequest = _reflection.GeneratedProtocolMessageType('CheckoutCheckpointRequest', (_message.Message,), { + 'DESCRIPTOR' : _CHECKOUTCHECKPOINTREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.CheckoutCheckpointRequest) + }) +_sym_db.RegisterMessage(CheckoutCheckpointRequest) + +CheckoutCheckpointReply = _reflection.GeneratedProtocolMessageType('CheckoutCheckpointReply', (_message.Message,), { + 'DESCRIPTOR' : _CHECKOUTCHECKPOINTREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.CheckoutCheckpointReply) + }) +_sym_db.RegisterMessage(CheckoutCheckpointReply) + +GetExperimentStatusRequest = _reflection.GeneratedProtocolMessageType('GetExperimentStatusRequest', (_message.Message,), { + 'DESCRIPTOR' : _GETEXPERIMENTSTATUSREQUEST, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.GetExperimentStatusRequest) + }) +_sym_db.RegisterMessage(GetExperimentStatusRequest) + +GetExperimentStatusReply = _reflection.GeneratedProtocolMessageType('GetExperimentStatusReply', (_message.Message,), { + 'DESCRIPTOR' : _GETEXPERIMENTSTATUSREPLY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.GetExperimentStatusReply) + }) +_sym_db.RegisterMessage(GetExperimentStatusReply) + +Experiment = _reflection.GeneratedProtocolMessageType('Experiment', (_message.Message,), { + + 'ParamsEntry' : _reflection.GeneratedProtocolMessageType('ParamsEntry', (_message.Message,), { + 'DESCRIPTOR' : _EXPERIMENT_PARAMSENTRY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.Experiment.ParamsEntry) + }) + , + + 'PythonPackagesEntry' : _reflection.GeneratedProtocolMessageType('PythonPackagesEntry', (_message.Message,), { + 'DESCRIPTOR' : _EXPERIMENT_PYTHONPACKAGESENTRY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.Experiment.PythonPackagesEntry) + }) + , + 'DESCRIPTOR' : _EXPERIMENT, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.Experiment) + }) +_sym_db.RegisterMessage(Experiment) +_sym_db.RegisterMessage(Experiment.ParamsEntry) +_sym_db.RegisterMessage(Experiment.PythonPackagesEntry) + +Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), { + 'DESCRIPTOR' : _CONFIG, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.Config) + }) +_sym_db.RegisterMessage(Config) + +Checkpoint = _reflection.GeneratedProtocolMessageType('Checkpoint', (_message.Message,), { + + 'MetricsEntry' : _reflection.GeneratedProtocolMessageType('MetricsEntry', (_message.Message,), { + 'DESCRIPTOR' : _CHECKPOINT_METRICSENTRY, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.Checkpoint.MetricsEntry) + }) + , + 'DESCRIPTOR' : _CHECKPOINT, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.Checkpoint) + }) +_sym_db.RegisterMessage(Checkpoint) +_sym_db.RegisterMessage(Checkpoint.MetricsEntry) + +PrimaryMetric = _reflection.GeneratedProtocolMessageType('PrimaryMetric', (_message.Message,), { + 'DESCRIPTOR' : _PRIMARYMETRIC, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.PrimaryMetric) + }) +_sym_db.RegisterMessage(PrimaryMetric) + +ParamType = _reflection.GeneratedProtocolMessageType('ParamType', (_message.Message,), { + 'DESCRIPTOR' : _PARAMTYPE, + '__module__' : 'replicate_pb2' + # @@protoc_insertion_point(class_scope:service.ParamType) + }) +_sym_db.RegisterMessage(ParamType) + + +DESCRIPTOR._options = None +_EXPERIMENT_PARAMSENTRY._options = None +_EXPERIMENT_PYTHONPACKAGESENTRY._options = None +_CHECKPOINT_METRICSENTRY._options = None + +_DAEMON = _descriptor.ServiceDescriptor( + name='Daemon', + full_name='service.Daemon', + file=DESCRIPTOR, + index=0, + serialized_options=None, + create_key=_descriptor._internal_create_key, + serialized_start=2170, + serialized_end=2961, + methods=[ + _descriptor.MethodDescriptor( + name='CreateExperiment', + full_name='service.Daemon.CreateExperiment', + index=0, + containing_service=None, + input_type=_CREATEEXPERIMENTREQUEST, + output_type=_CREATEEXPERIMENTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='CreateCheckpoint', + full_name='service.Daemon.CreateCheckpoint', + index=1, + containing_service=None, + input_type=_CREATECHECKPOINTREQUEST, + output_type=_CREATECHECKPOINTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='SaveExperiment', + full_name='service.Daemon.SaveExperiment', + index=2, + containing_service=None, + input_type=_SAVEEXPERIMENTREQUEST, + output_type=_SAVEEXPERIMENTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='StopExperiment', + full_name='service.Daemon.StopExperiment', + index=3, + containing_service=None, + input_type=_STOPEXPERIMENTREQUEST, + output_type=_STOPEXPERIMENTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='GetExperiment', + full_name='service.Daemon.GetExperiment', + index=4, + containing_service=None, + input_type=_GETEXPERIMENTREQUEST, + output_type=_GETEXPERIMENTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='ListExperiments', + full_name='service.Daemon.ListExperiments', + index=5, + containing_service=None, + input_type=_LISTEXPERIMENTSREQUEST, + output_type=_LISTEXPERIMENTSREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='DeleteExperiment', + full_name='service.Daemon.DeleteExperiment', + index=6, + containing_service=None, + input_type=_DELETEEXPERIMENTREQUEST, + output_type=_DELETEEXPERIMENTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='CheckoutCheckpoint', + full_name='service.Daemon.CheckoutCheckpoint', + index=7, + containing_service=None, + input_type=_CHECKOUTCHECKPOINTREQUEST, + output_type=_CHECKOUTCHECKPOINTREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='GetExperimentStatus', + full_name='service.Daemon.GetExperimentStatus', + index=8, + containing_service=None, + input_type=_GETEXPERIMENTSTATUSREQUEST, + output_type=_GETEXPERIMENTSTATUSREPLY, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), +]) +_sym_db.RegisterServiceDescriptor(_DAEMON) + +DESCRIPTOR.services_by_name['Daemon'] = _DAEMON + +# @@protoc_insertion_point(module_scope) diff --git a/python/replicate/servicepb/replicate_pb2.pyi b/python/replicate/servicepb/replicate_pb2.pyi new file mode 100644 index 000000000..a38d0396e --- /dev/null +++ b/python/replicate/servicepb/replicate_pb2.pyi @@ -0,0 +1,441 @@ +# @generated by generate_proto_mypy_stubs.py. Do not edit! +import sys +from google.protobuf.descriptor import ( + Descriptor as google___protobuf___descriptor___Descriptor, + EnumDescriptor as google___protobuf___descriptor___EnumDescriptor, + FileDescriptor as google___protobuf___descriptor___FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer, +) + +from google.protobuf.internal.enum_type_wrapper import ( + _EnumTypeWrapper as google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper, +) + +from google.protobuf.message import ( + Message as google___protobuf___message___Message, +) + +from google.protobuf.timestamp_pb2 import ( + Timestamp as google___protobuf___timestamp_pb2___Timestamp, +) + +from typing import ( + Iterable as typing___Iterable, + Mapping as typing___Mapping, + MutableMapping as typing___MutableMapping, + NewType as typing___NewType, + Optional as typing___Optional, + Text as typing___Text, + cast as typing___cast, +) + +from typing_extensions import ( + Literal as typing_extensions___Literal, +) + + +builtin___bool = bool +builtin___bytes = bytes +builtin___float = float +builtin___int = int + + +DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ... + +class CreateExperimentRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + disableHeartbeat: builtin___bool = ... + + @property + def experiment(self) -> type___Experiment: ... + + def __init__(self, + *, + experiment : typing___Optional[type___Experiment] = None, + disableHeartbeat : typing___Optional[builtin___bool] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"disableHeartbeat",b"disableHeartbeat",u"experiment",b"experiment"]) -> None: ... +type___CreateExperimentRequest = CreateExperimentRequest + +class CreateExperimentReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def experiment(self) -> type___Experiment: ... + + def __init__(self, + *, + experiment : typing___Optional[type___Experiment] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> None: ... +type___CreateExperimentReply = CreateExperimentReply + +class CreateCheckpointRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def checkpoint(self) -> type___Checkpoint: ... + + def __init__(self, + *, + checkpoint : typing___Optional[type___Checkpoint] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"checkpoint",b"checkpoint"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"checkpoint",b"checkpoint"]) -> None: ... +type___CreateCheckpointRequest = CreateCheckpointRequest + +class CreateCheckpointReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def checkpoint(self) -> type___Checkpoint: ... + + def __init__(self, + *, + checkpoint : typing___Optional[type___Checkpoint] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"checkpoint",b"checkpoint"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"checkpoint",b"checkpoint"]) -> None: ... +type___CreateCheckpointReply = CreateCheckpointReply + +class SaveExperimentRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def experiment(self) -> type___Experiment: ... + + def __init__(self, + *, + experiment : typing___Optional[type___Experiment] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> None: ... +type___SaveExperimentRequest = SaveExperimentRequest + +class SaveExperimentReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def experiment(self) -> type___Experiment: ... + + def __init__(self, + *, + experiment : typing___Optional[type___Experiment] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> None: ... +type___SaveExperimentReply = SaveExperimentReply + +class StopExperimentRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + experimentID: typing___Text = ... + + def __init__(self, + *, + experimentID : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experimentID",b"experimentID"]) -> None: ... +type___StopExperimentRequest = StopExperimentRequest + +class StopExperimentReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + def __init__(self, + ) -> None: ... +type___StopExperimentReply = StopExperimentReply + +class GetExperimentRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + experimentIDPrefix: typing___Text = ... + + def __init__(self, + *, + experimentIDPrefix : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experimentIDPrefix",b"experimentIDPrefix"]) -> None: ... +type___GetExperimentRequest = GetExperimentRequest + +class GetExperimentReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def experiment(self) -> type___Experiment: ... + + def __init__(self, + *, + experiment : typing___Optional[type___Experiment] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experiment",b"experiment"]) -> None: ... +type___GetExperimentReply = GetExperimentReply + +class ListExperimentsRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + def __init__(self, + ) -> None: ... +type___ListExperimentsRequest = ListExperimentsRequest + +class ListExperimentsReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + @property + def experiments(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___Experiment]: ... + + def __init__(self, + *, + experiments : typing___Optional[typing___Iterable[type___Experiment]] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experiments",b"experiments"]) -> None: ... +type___ListExperimentsReply = ListExperimentsReply + +class DeleteExperimentRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + experimentID: typing___Text = ... + + def __init__(self, + *, + experimentID : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experimentID",b"experimentID"]) -> None: ... +type___DeleteExperimentRequest = DeleteExperimentRequest + +class DeleteExperimentReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + def __init__(self, + ) -> None: ... +type___DeleteExperimentReply = DeleteExperimentReply + +class CheckoutCheckpointRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + checkpointIDPrefix: typing___Text = ... + outputDirectory: typing___Text = ... + + def __init__(self, + *, + checkpointIDPrefix : typing___Optional[typing___Text] = None, + outputDirectory : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"checkpointIDPrefix",b"checkpointIDPrefix",u"outputDirectory",b"outputDirectory"]) -> None: ... +type___CheckoutCheckpointRequest = CheckoutCheckpointRequest + +class CheckoutCheckpointReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + + def __init__(self, + ) -> None: ... +type___CheckoutCheckpointReply = CheckoutCheckpointReply + +class GetExperimentStatusRequest(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + experimentID: typing___Text = ... + + def __init__(self, + *, + experimentID : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"experimentID",b"experimentID"]) -> None: ... +type___GetExperimentStatusRequest = GetExperimentStatusRequest + +class GetExperimentStatusReply(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + StatusValue = typing___NewType('StatusValue', builtin___int) + type___StatusValue = StatusValue + Status: _Status + class _Status(google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper[GetExperimentStatusReply.StatusValue]): + DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ... + RUNNING = typing___cast(GetExperimentStatusReply.StatusValue, 0) + STOPPED = typing___cast(GetExperimentStatusReply.StatusValue, 1) + RUNNING = typing___cast(GetExperimentStatusReply.StatusValue, 0) + STOPPED = typing___cast(GetExperimentStatusReply.StatusValue, 1) + type___Status = Status + + status: type___GetExperimentStatusReply.StatusValue = ... + + def __init__(self, + *, + status : typing___Optional[type___GetExperimentStatusReply.StatusValue] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"status",b"status"]) -> None: ... +type___GetExperimentStatusReply = GetExperimentStatusReply + +class Experiment(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + class ParamsEntry(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + key: typing___Text = ... + + @property + def value(self) -> type___ParamType: ... + + def __init__(self, + *, + key : typing___Optional[typing___Text] = None, + value : typing___Optional[type___ParamType] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ... + type___ParamsEntry = ParamsEntry + + class PythonPackagesEntry(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + key: typing___Text = ... + value: typing___Text = ... + + def __init__(self, + *, + key : typing___Optional[typing___Text] = None, + value : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ... + type___PythonPackagesEntry = PythonPackagesEntry + + id: typing___Text = ... + host: typing___Text = ... + user: typing___Text = ... + command: typing___Text = ... + path: typing___Text = ... + pythonVersion: typing___Text = ... + replicateVersion: typing___Text = ... + + @property + def created(self) -> google___protobuf___timestamp_pb2___Timestamp: ... + + @property + def params(self) -> typing___MutableMapping[typing___Text, type___ParamType]: ... + + @property + def config(self) -> type___Config: ... + + @property + def pythonPackages(self) -> typing___MutableMapping[typing___Text, typing___Text]: ... + + @property + def checkpoints(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___Checkpoint]: ... + + def __init__(self, + *, + id : typing___Optional[typing___Text] = None, + created : typing___Optional[google___protobuf___timestamp_pb2___Timestamp] = None, + params : typing___Optional[typing___Mapping[typing___Text, type___ParamType]] = None, + host : typing___Optional[typing___Text] = None, + user : typing___Optional[typing___Text] = None, + config : typing___Optional[type___Config] = None, + command : typing___Optional[typing___Text] = None, + path : typing___Optional[typing___Text] = None, + pythonPackages : typing___Optional[typing___Mapping[typing___Text, typing___Text]] = None, + pythonVersion : typing___Optional[typing___Text] = None, + checkpoints : typing___Optional[typing___Iterable[type___Checkpoint]] = None, + replicateVersion : typing___Optional[typing___Text] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"config",b"config",u"created",b"created"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"checkpoints",b"checkpoints",u"command",b"command",u"config",b"config",u"created",b"created",u"host",b"host",u"id",b"id",u"params",b"params",u"path",b"path",u"pythonPackages",b"pythonPackages",u"pythonVersion",b"pythonVersion",u"replicateVersion",b"replicateVersion",u"user",b"user"]) -> None: ... +type___Experiment = Experiment + +class Config(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + repository: typing___Text = ... + storage: typing___Text = ... + + def __init__(self, + *, + repository : typing___Optional[typing___Text] = None, + storage : typing___Optional[typing___Text] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"repository",b"repository",u"storage",b"storage"]) -> None: ... +type___Config = Config + +class Checkpoint(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + class MetricsEntry(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + key: typing___Text = ... + + @property + def value(self) -> type___ParamType: ... + + def __init__(self, + *, + key : typing___Optional[typing___Text] = None, + value : typing___Optional[type___ParamType] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ... + type___MetricsEntry = MetricsEntry + + id: typing___Text = ... + step: builtin___int = ... + path: typing___Text = ... + + @property + def created(self) -> google___protobuf___timestamp_pb2___Timestamp: ... + + @property + def metrics(self) -> typing___MutableMapping[typing___Text, type___ParamType]: ... + + @property + def primaryMetric(self) -> type___PrimaryMetric: ... + + def __init__(self, + *, + id : typing___Optional[typing___Text] = None, + created : typing___Optional[google___protobuf___timestamp_pb2___Timestamp] = None, + metrics : typing___Optional[typing___Mapping[typing___Text, type___ParamType]] = None, + step : typing___Optional[builtin___int] = None, + path : typing___Optional[typing___Text] = None, + primaryMetric : typing___Optional[type___PrimaryMetric] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"created",b"created",u"primaryMetric",b"primaryMetric"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"created",b"created",u"id",b"id",u"metrics",b"metrics",u"path",b"path",u"primaryMetric",b"primaryMetric",u"step",b"step"]) -> None: ... +type___Checkpoint = Checkpoint + +class PrimaryMetric(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + GoalValue = typing___NewType('GoalValue', builtin___int) + type___GoalValue = GoalValue + Goal: _Goal + class _Goal(google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper[PrimaryMetric.GoalValue]): + DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ... + MAXIMIZE = typing___cast(PrimaryMetric.GoalValue, 0) + MINIMIZE = typing___cast(PrimaryMetric.GoalValue, 1) + MAXIMIZE = typing___cast(PrimaryMetric.GoalValue, 0) + MINIMIZE = typing___cast(PrimaryMetric.GoalValue, 1) + type___Goal = Goal + + name: typing___Text = ... + goal: type___PrimaryMetric.GoalValue = ... + + def __init__(self, + *, + name : typing___Optional[typing___Text] = None, + goal : typing___Optional[type___PrimaryMetric.GoalValue] = None, + ) -> None: ... + def ClearField(self, field_name: typing_extensions___Literal[u"goal",b"goal",u"name",b"name"]) -> None: ... +type___PrimaryMetric = PrimaryMetric + +class ParamType(google___protobuf___message___Message): + DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + boolValue: builtin___bool = ... + intValue: builtin___int = ... + floatValue: builtin___float = ... + stringValue: typing___Text = ... + objectValueJson: typing___Text = ... + + def __init__(self, + *, + boolValue : typing___Optional[builtin___bool] = None, + intValue : typing___Optional[builtin___int] = None, + floatValue : typing___Optional[builtin___float] = None, + stringValue : typing___Optional[typing___Text] = None, + objectValueJson : typing___Optional[typing___Text] = None, + ) -> None: ... + def HasField(self, field_name: typing_extensions___Literal[u"boolValue",b"boolValue",u"floatValue",b"floatValue",u"intValue",b"intValue",u"objectValueJson",b"objectValueJson",u"stringValue",b"stringValue",u"value",b"value"]) -> builtin___bool: ... + def ClearField(self, field_name: typing_extensions___Literal[u"boolValue",b"boolValue",u"floatValue",b"floatValue",u"intValue",b"intValue",u"objectValueJson",b"objectValueJson",u"stringValue",b"stringValue",u"value",b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions___Literal[u"value",b"value"]) -> typing_extensions___Literal["boolValue","intValue","floatValue","stringValue","objectValueJson"]: ... +type___ParamType = ParamType diff --git a/python/replicate/servicepb/replicate_pb2_grpc.py b/python/replicate/servicepb/replicate_pb2_grpc.py new file mode 100644 index 000000000..870804a4f --- /dev/null +++ b/python/replicate/servicepb/replicate_pb2_grpc.py @@ -0,0 +1,330 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from . import replicate_pb2 as replicate__pb2 + + +class DaemonStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateExperiment = channel.unary_unary( + '/service.Daemon/CreateExperiment', + request_serializer=replicate__pb2.CreateExperimentRequest.SerializeToString, + response_deserializer=replicate__pb2.CreateExperimentReply.FromString, + ) + self.CreateCheckpoint = channel.unary_unary( + '/service.Daemon/CreateCheckpoint', + request_serializer=replicate__pb2.CreateCheckpointRequest.SerializeToString, + response_deserializer=replicate__pb2.CreateCheckpointReply.FromString, + ) + self.SaveExperiment = channel.unary_unary( + '/service.Daemon/SaveExperiment', + request_serializer=replicate__pb2.SaveExperimentRequest.SerializeToString, + response_deserializer=replicate__pb2.SaveExperimentReply.FromString, + ) + self.StopExperiment = channel.unary_unary( + '/service.Daemon/StopExperiment', + request_serializer=replicate__pb2.StopExperimentRequest.SerializeToString, + response_deserializer=replicate__pb2.StopExperimentReply.FromString, + ) + self.GetExperiment = channel.unary_unary( + '/service.Daemon/GetExperiment', + request_serializer=replicate__pb2.GetExperimentRequest.SerializeToString, + response_deserializer=replicate__pb2.GetExperimentReply.FromString, + ) + self.ListExperiments = channel.unary_unary( + '/service.Daemon/ListExperiments', + request_serializer=replicate__pb2.ListExperimentsRequest.SerializeToString, + response_deserializer=replicate__pb2.ListExperimentsReply.FromString, + ) + self.DeleteExperiment = channel.unary_unary( + '/service.Daemon/DeleteExperiment', + request_serializer=replicate__pb2.DeleteExperimentRequest.SerializeToString, + response_deserializer=replicate__pb2.DeleteExperimentReply.FromString, + ) + self.CheckoutCheckpoint = channel.unary_unary( + '/service.Daemon/CheckoutCheckpoint', + request_serializer=replicate__pb2.CheckoutCheckpointRequest.SerializeToString, + response_deserializer=replicate__pb2.CheckoutCheckpointReply.FromString, + ) + self.GetExperimentStatus = channel.unary_unary( + '/service.Daemon/GetExperimentStatus', + request_serializer=replicate__pb2.GetExperimentStatusRequest.SerializeToString, + response_deserializer=replicate__pb2.GetExperimentStatusReply.FromString, + ) + + +class DaemonServicer(object): + """Missing associated documentation comment in .proto file.""" + + def CreateExperiment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateCheckpoint(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SaveExperiment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def StopExperiment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetExperiment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListExperiments(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteExperiment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CheckoutCheckpoint(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetExperimentStatus(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DaemonServicer_to_server(servicer, server): + rpc_method_handlers = { + 'CreateExperiment': grpc.unary_unary_rpc_method_handler( + servicer.CreateExperiment, + request_deserializer=replicate__pb2.CreateExperimentRequest.FromString, + response_serializer=replicate__pb2.CreateExperimentReply.SerializeToString, + ), + 'CreateCheckpoint': grpc.unary_unary_rpc_method_handler( + servicer.CreateCheckpoint, + request_deserializer=replicate__pb2.CreateCheckpointRequest.FromString, + response_serializer=replicate__pb2.CreateCheckpointReply.SerializeToString, + ), + 'SaveExperiment': grpc.unary_unary_rpc_method_handler( + servicer.SaveExperiment, + request_deserializer=replicate__pb2.SaveExperimentRequest.FromString, + response_serializer=replicate__pb2.SaveExperimentReply.SerializeToString, + ), + 'StopExperiment': grpc.unary_unary_rpc_method_handler( + servicer.StopExperiment, + request_deserializer=replicate__pb2.StopExperimentRequest.FromString, + response_serializer=replicate__pb2.StopExperimentReply.SerializeToString, + ), + 'GetExperiment': grpc.unary_unary_rpc_method_handler( + servicer.GetExperiment, + request_deserializer=replicate__pb2.GetExperimentRequest.FromString, + response_serializer=replicate__pb2.GetExperimentReply.SerializeToString, + ), + 'ListExperiments': grpc.unary_unary_rpc_method_handler( + servicer.ListExperiments, + request_deserializer=replicate__pb2.ListExperimentsRequest.FromString, + response_serializer=replicate__pb2.ListExperimentsReply.SerializeToString, + ), + 'DeleteExperiment': grpc.unary_unary_rpc_method_handler( + servicer.DeleteExperiment, + request_deserializer=replicate__pb2.DeleteExperimentRequest.FromString, + response_serializer=replicate__pb2.DeleteExperimentReply.SerializeToString, + ), + 'CheckoutCheckpoint': grpc.unary_unary_rpc_method_handler( + servicer.CheckoutCheckpoint, + request_deserializer=replicate__pb2.CheckoutCheckpointRequest.FromString, + response_serializer=replicate__pb2.CheckoutCheckpointReply.SerializeToString, + ), + 'GetExperimentStatus': grpc.unary_unary_rpc_method_handler( + servicer.GetExperimentStatus, + request_deserializer=replicate__pb2.GetExperimentStatusRequest.FromString, + response_serializer=replicate__pb2.GetExperimentStatusReply.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'service.Daemon', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class Daemon(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def CreateExperiment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/CreateExperiment', + replicate__pb2.CreateExperimentRequest.SerializeToString, + replicate__pb2.CreateExperimentReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CreateCheckpoint(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/CreateCheckpoint', + replicate__pb2.CreateCheckpointRequest.SerializeToString, + replicate__pb2.CreateCheckpointReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def SaveExperiment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/SaveExperiment', + replicate__pb2.SaveExperimentRequest.SerializeToString, + replicate__pb2.SaveExperimentReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def StopExperiment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/StopExperiment', + replicate__pb2.StopExperimentRequest.SerializeToString, + replicate__pb2.StopExperimentReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetExperiment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/GetExperiment', + replicate__pb2.GetExperimentRequest.SerializeToString, + replicate__pb2.GetExperimentReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ListExperiments(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/ListExperiments', + replicate__pb2.ListExperimentsRequest.SerializeToString, + replicate__pb2.ListExperimentsReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeleteExperiment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/DeleteExperiment', + replicate__pb2.DeleteExperimentRequest.SerializeToString, + replicate__pb2.DeleteExperimentReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CheckoutCheckpoint(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/CheckoutCheckpoint', + replicate__pb2.CheckoutCheckpointRequest.SerializeToString, + replicate__pb2.CheckoutCheckpointReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetExperimentStatus(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/service.Daemon/GetExperimentStatus', + replicate__pb2.GetExperimentStatusRequest.SerializeToString, + replicate__pb2.GetExperimentStatusReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/python/replicate/servicepb/service_pb2.py b/python/replicate/servicepb/service_pb2.py deleted file mode 100644 index 39ac42026..000000000 --- a/python/replicate/servicepb/service_pb2.py +++ /dev/null @@ -1,2056 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: service.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name="service.proto", - package="service", - syntax="proto3", - serialized_options=b"Z/github.com/replicate/replicate/go/pkg/servicepb", - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\rservice.proto\x12\x07service\x1a\x1fgoogle/protobuf/timestamp.proto"\\\n\x17\x43reateExperimentRequest\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\x12\x18\n\x10\x64isableHeartbeat\x18\x02 \x01(\x08"g\n\x15\x43reateExperimentReply\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment\x12%\n\texception\x18\x02 \x01(\x0b\x32\x12.service.Exception"B\n\x17\x43reateCheckpointRequest\x12\'\n\ncheckpoint\x18\x01 \x01(\x0b\x32\x13.service.Checkpoint"@\n\x15\x43reateCheckpointReply\x12\'\n\ncheckpoint\x18\x01 \x01(\x0b\x32\x13.service.Checkpoint"@\n\x15SaveExperimentRequest\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment">\n\x13SaveExperimentReply\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment"-\n\x15StopExperimentRequest\x12\x14\n\x0c\x65xperimentID\x18\x01 \x01(\t"\x15\n\x13StopExperimentReply"2\n\x14GetExperimentRequest\x12\x1a\n\x12\x65xperimentIDPrefix\x18\x01 \x01(\t"=\n\x12GetExperimentReply\x12\'\n\nexperiment\x18\x01 \x01(\x0b\x32\x13.service.Experiment"\x18\n\x16ListExperimentsRequest"@\n\x14ListExperimentsReply\x12(\n\x0b\x65xperiments\x18\x01 \x03(\x0b\x32\x13.service.Experiment"/\n\x17\x44\x65leteExperimentRequest\x12\x14\n\x0c\x65xperimentID\x18\x01 \x01(\t"\x17\n\x15\x44\x65leteExperimentReply"P\n\x19\x43heckoutCheckpointRequest\x12\x1a\n\x12\x63heckpointIDPrefix\x18\x01 \x01(\t\x12\x17\n\x0foutputDirectory\x18\x02 \x01(\t"\x19\n\x17\x43heckoutCheckpointReply"\xcc\x01\n\tException\x12%\n\x04type\x18\x01 \x01(\x0e\x32\x17.service.Exception.Type\x12\x0c\n\x04text\x18\x02 \x01(\t"\x89\x01\n\x04Type\x12\x12\n\x0e\x44OES_NOT_EXIST\x10\x00\x12\x1d\n\x19UNKNOWN_REPOSITORY_SCHEME\x10\x01\x12\x14\n\x10\x43ONFIG_NOT_FOUND\x10\x02\x12\x1c\n\x18NEWER_REPOSITORY_VERSION\x10\x03\x12\x1a\n\x16\x43ORRUPTED_PROJECT_SPEC\x10\x04"\xd1\x03\n\nExperiment\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x07\x63reated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x06params\x18\x03 \x03(\x0b\x32\x1f.service.Experiment.ParamsEntry\x12\x0c\n\x04host\x18\x04 \x01(\t\x12\x0c\n\x04user\x18\x05 \x01(\t\x12\x1f\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x0f.service.Config\x12\x0f\n\x07\x63ommand\x18\x07 \x01(\t\x12\x0c\n\x04path\x18\x08 \x01(\t\x12?\n\x0epythonPackages\x18\t \x03(\x0b\x32\'.service.Experiment.PythonPackagesEntry\x12(\n\x0b\x63heckpoints\x18\n \x03(\x0b\x32\x13.service.Checkpoint\x12\x18\n\x10replicateVersion\x18\x0b \x01(\t\x1a\x41\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.service.ParamType:\x02\x38\x01\x1a\x35\n\x13PythonPackagesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"-\n\x06\x43onfig\x12\x12\n\nrepository\x18\x01 \x01(\t\x12\x0f\n\x07storage\x18\x02 \x01(\t"\x87\x02\n\nCheckpoint\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x07\x63reated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x07metrics\x18\x03 \x03(\x0b\x32 .service.Checkpoint.MetricsEntry\x12\x0c\n\x04step\x18\x04 \x01(\x03\x12\x0c\n\x04path\x18\x05 \x01(\t\x12-\n\rprimaryMetric\x18\x06 \x01(\x0b\x32\x16.service.PrimaryMetric\x1a\x42\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.service.ParamType:\x02\x38\x01"l\n\rPrimaryMetric\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x04goal\x18\x02 \x01(\x0e\x32\x1b.service.PrimaryMetric.Goal""\n\x04Goal\x12\x0c\n\x08MAXIMIZE\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01"\x85\x01\n\tParamType\x12\x13\n\tboolValue\x18\x01 \x01(\x08H\x00\x12\x12\n\x08intValue\x18\x02 \x01(\x03H\x00\x12\x14\n\nfloatValue\x18\x03 \x01(\x01H\x00\x12\x15\n\x0bstringValue\x18\x04 \x01(\tH\x00\x12\x19\n\x0fobjectValueJson\x18\x05 \x01(\tH\x00\x42\x07\n\x05value2\xb6\x05\n\x06\x44\x61\x65mon\x12V\n\x10\x43reateExperiment\x12 .service.CreateExperimentRequest\x1a\x1e.service.CreateExperimentReply"\x00\x12V\n\x10\x43reateCheckpoint\x12 .service.CreateCheckpointRequest\x1a\x1e.service.CreateCheckpointReply"\x00\x12P\n\x0eSaveExperiment\x12\x1e.service.SaveExperimentRequest\x1a\x1c.service.SaveExperimentReply"\x00\x12P\n\x0eStopExperiment\x12\x1e.service.StopExperimentRequest\x1a\x1c.service.StopExperimentReply"\x00\x12M\n\rGetExperiment\x12\x1d.service.GetExperimentRequest\x1a\x1b.service.GetExperimentReply"\x00\x12S\n\x0fListExperiments\x12\x1f.service.ListExperimentsRequest\x1a\x1d.service.ListExperimentsReply"\x00\x12V\n\x10\x44\x65leteExperiment\x12 .service.DeleteExperimentRequest\x1a\x1e.service.DeleteExperimentReply"\x00\x12\\\n\x12\x43heckoutCheckpoint\x12".service.CheckoutCheckpointRequest\x1a .service.CheckoutCheckpointReply"\x00\x42\x31Z/github.com/replicate/replicate/go/pkg/servicepbb\x06proto3', - dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,], -) - - -_EXCEPTION_TYPE = _descriptor.EnumDescriptor( - name="Type", - full_name="service.Exception.Type", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="DOES_NOT_EXIST", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNKNOWN_REPOSITORY_SCHEME", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CONFIG_NOT_FOUND", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="NEWER_REPOSITORY_VERSION", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CORRUPTED_PROJECT_SPEC", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=1050, - serialized_end=1187, -) -_sym_db.RegisterEnumDescriptor(_EXCEPTION_TYPE) - -_PRIMARYMETRIC_GOAL = _descriptor.EnumDescriptor( - name="Goal", - full_name="service.PrimaryMetric.Goal", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="MAXIMIZE", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="MINIMIZE", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=2044, - serialized_end=2078, -) -_sym_db.RegisterEnumDescriptor(_PRIMARYMETRIC_GOAL) - - -_CREATEEXPERIMENTREQUEST = _descriptor.Descriptor( - name="CreateExperimentRequest", - full_name="service.CreateExperimentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experiment", - full_name="service.CreateExperimentRequest.experiment", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disableHeartbeat", - full_name="service.CreateExperimentRequest.disableHeartbeat", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=59, - serialized_end=151, -) - - -_CREATEEXPERIMENTREPLY = _descriptor.Descriptor( - name="CreateExperimentReply", - full_name="service.CreateExperimentReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experiment", - full_name="service.CreateExperimentReply.experiment", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="exception", - full_name="service.CreateExperimentReply.exception", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=153, - serialized_end=256, -) - - -_CREATECHECKPOINTREQUEST = _descriptor.Descriptor( - name="CreateCheckpointRequest", - full_name="service.CreateCheckpointRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="checkpoint", - full_name="service.CreateCheckpointRequest.checkpoint", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=258, - serialized_end=324, -) - - -_CREATECHECKPOINTREPLY = _descriptor.Descriptor( - name="CreateCheckpointReply", - full_name="service.CreateCheckpointReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="checkpoint", - full_name="service.CreateCheckpointReply.checkpoint", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=326, - serialized_end=390, -) - - -_SAVEEXPERIMENTREQUEST = _descriptor.Descriptor( - name="SaveExperimentRequest", - full_name="service.SaveExperimentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experiment", - full_name="service.SaveExperimentRequest.experiment", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=392, - serialized_end=456, -) - - -_SAVEEXPERIMENTREPLY = _descriptor.Descriptor( - name="SaveExperimentReply", - full_name="service.SaveExperimentReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experiment", - full_name="service.SaveExperimentReply.experiment", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=458, - serialized_end=520, -) - - -_STOPEXPERIMENTREQUEST = _descriptor.Descriptor( - name="StopExperimentRequest", - full_name="service.StopExperimentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experimentID", - full_name="service.StopExperimentRequest.experimentID", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=522, - serialized_end=567, -) - - -_STOPEXPERIMENTREPLY = _descriptor.Descriptor( - name="StopExperimentReply", - full_name="service.StopExperimentReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=569, - serialized_end=590, -) - - -_GETEXPERIMENTREQUEST = _descriptor.Descriptor( - name="GetExperimentRequest", - full_name="service.GetExperimentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experimentIDPrefix", - full_name="service.GetExperimentRequest.experimentIDPrefix", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=592, - serialized_end=642, -) - - -_GETEXPERIMENTREPLY = _descriptor.Descriptor( - name="GetExperimentReply", - full_name="service.GetExperimentReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experiment", - full_name="service.GetExperimentReply.experiment", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=644, - serialized_end=705, -) - - -_LISTEXPERIMENTSREQUEST = _descriptor.Descriptor( - name="ListExperimentsRequest", - full_name="service.ListExperimentsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=707, - serialized_end=731, -) - - -_LISTEXPERIMENTSREPLY = _descriptor.Descriptor( - name="ListExperimentsReply", - full_name="service.ListExperimentsReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experiments", - full_name="service.ListExperimentsReply.experiments", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=733, - serialized_end=797, -) - - -_DELETEEXPERIMENTREQUEST = _descriptor.Descriptor( - name="DeleteExperimentRequest", - full_name="service.DeleteExperimentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="experimentID", - full_name="service.DeleteExperimentRequest.experimentID", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=799, - serialized_end=846, -) - - -_DELETEEXPERIMENTREPLY = _descriptor.Descriptor( - name="DeleteExperimentReply", - full_name="service.DeleteExperimentReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=848, - serialized_end=871, -) - - -_CHECKOUTCHECKPOINTREQUEST = _descriptor.Descriptor( - name="CheckoutCheckpointRequest", - full_name="service.CheckoutCheckpointRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="checkpointIDPrefix", - full_name="service.CheckoutCheckpointRequest.checkpointIDPrefix", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outputDirectory", - full_name="service.CheckoutCheckpointRequest.outputDirectory", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=873, - serialized_end=953, -) - - -_CHECKOUTCHECKPOINTREPLY = _descriptor.Descriptor( - name="CheckoutCheckpointReply", - full_name="service.CheckoutCheckpointReply", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=955, - serialized_end=980, -) - - -_EXCEPTION = _descriptor.Descriptor( - name="Exception", - full_name="service.Exception", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="type", - full_name="service.Exception.type", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="text", - full_name="service.Exception.text", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_EXCEPTION_TYPE,], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=983, - serialized_end=1187, -) - - -_EXPERIMENT_PARAMSENTRY = _descriptor.Descriptor( - name="ParamsEntry", - full_name="service.Experiment.ParamsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="service.Experiment.ParamsEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="service.Experiment.ParamsEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1535, - serialized_end=1600, -) - -_EXPERIMENT_PYTHONPACKAGESENTRY = _descriptor.Descriptor( - name="PythonPackagesEntry", - full_name="service.Experiment.PythonPackagesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="service.Experiment.PythonPackagesEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="service.Experiment.PythonPackagesEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1602, - serialized_end=1655, -) - -_EXPERIMENT = _descriptor.Descriptor( - name="Experiment", - full_name="service.Experiment", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="id", - full_name="service.Experiment.id", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="created", - full_name="service.Experiment.created", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="params", - full_name="service.Experiment.params", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="host", - full_name="service.Experiment.host", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="user", - full_name="service.Experiment.user", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="config", - full_name="service.Experiment.config", - index=5, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="command", - full_name="service.Experiment.command", - index=6, - number=7, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="path", - full_name="service.Experiment.path", - index=7, - number=8, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pythonPackages", - full_name="service.Experiment.pythonPackages", - index=8, - number=9, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="checkpoints", - full_name="service.Experiment.checkpoints", - index=9, - number=10, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="replicateVersion", - full_name="service.Experiment.replicateVersion", - index=10, - number=11, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_EXPERIMENT_PARAMSENTRY, _EXPERIMENT_PYTHONPACKAGESENTRY,], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1190, - serialized_end=1655, -) - - -_CONFIG = _descriptor.Descriptor( - name="Config", - full_name="service.Config", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="repository", - full_name="service.Config.repository", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="storage", - full_name="service.Config.storage", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1657, - serialized_end=1702, -) - - -_CHECKPOINT_METRICSENTRY = _descriptor.Descriptor( - name="MetricsEntry", - full_name="service.Checkpoint.MetricsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="service.Checkpoint.MetricsEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="service.Checkpoint.MetricsEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1902, - serialized_end=1968, -) - -_CHECKPOINT = _descriptor.Descriptor( - name="Checkpoint", - full_name="service.Checkpoint", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="id", - full_name="service.Checkpoint.id", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="created", - full_name="service.Checkpoint.created", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="metrics", - full_name="service.Checkpoint.metrics", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="step", - full_name="service.Checkpoint.step", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="path", - full_name="service.Checkpoint.path", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="primaryMetric", - full_name="service.Checkpoint.primaryMetric", - index=5, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_CHECKPOINT_METRICSENTRY,], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1705, - serialized_end=1968, -) - - -_PRIMARYMETRIC = _descriptor.Descriptor( - name="PrimaryMetric", - full_name="service.PrimaryMetric", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="name", - full_name="service.PrimaryMetric.name", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="goal", - full_name="service.PrimaryMetric.goal", - index=1, - number=2, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_PRIMARYMETRIC_GOAL,], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1970, - serialized_end=2078, -) - - -_PARAMTYPE = _descriptor.Descriptor( - name="ParamType", - full_name="service.ParamType", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="boolValue", - full_name="service.ParamType.boolValue", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="intValue", - full_name="service.ParamType.intValue", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="floatValue", - full_name="service.ParamType.floatValue", - index=2, - number=3, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="stringValue", - full_name="service.ParamType.stringValue", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="objectValueJson", - full_name="service.ParamType.objectValueJson", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="value", - full_name="service.ParamType.value", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ), - ], - serialized_start=2081, - serialized_end=2214, -) - -_CREATEEXPERIMENTREQUEST.fields_by_name["experiment"].message_type = _EXPERIMENT -_CREATEEXPERIMENTREPLY.fields_by_name["experiment"].message_type = _EXPERIMENT -_CREATEEXPERIMENTREPLY.fields_by_name["exception"].message_type = _EXCEPTION -_CREATECHECKPOINTREQUEST.fields_by_name["checkpoint"].message_type = _CHECKPOINT -_CREATECHECKPOINTREPLY.fields_by_name["checkpoint"].message_type = _CHECKPOINT -_SAVEEXPERIMENTREQUEST.fields_by_name["experiment"].message_type = _EXPERIMENT -_SAVEEXPERIMENTREPLY.fields_by_name["experiment"].message_type = _EXPERIMENT -_GETEXPERIMENTREPLY.fields_by_name["experiment"].message_type = _EXPERIMENT -_LISTEXPERIMENTSREPLY.fields_by_name["experiments"].message_type = _EXPERIMENT -_EXCEPTION.fields_by_name["type"].enum_type = _EXCEPTION_TYPE -_EXCEPTION_TYPE.containing_type = _EXCEPTION -_EXPERIMENT_PARAMSENTRY.fields_by_name["value"].message_type = _PARAMTYPE -_EXPERIMENT_PARAMSENTRY.containing_type = _EXPERIMENT -_EXPERIMENT_PYTHONPACKAGESENTRY.containing_type = _EXPERIMENT -_EXPERIMENT.fields_by_name[ - "created" -].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP -_EXPERIMENT.fields_by_name["params"].message_type = _EXPERIMENT_PARAMSENTRY -_EXPERIMENT.fields_by_name["config"].message_type = _CONFIG -_EXPERIMENT.fields_by_name[ - "pythonPackages" -].message_type = _EXPERIMENT_PYTHONPACKAGESENTRY -_EXPERIMENT.fields_by_name["checkpoints"].message_type = _CHECKPOINT -_CHECKPOINT_METRICSENTRY.fields_by_name["value"].message_type = _PARAMTYPE -_CHECKPOINT_METRICSENTRY.containing_type = _CHECKPOINT -_CHECKPOINT.fields_by_name[ - "created" -].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP -_CHECKPOINT.fields_by_name["metrics"].message_type = _CHECKPOINT_METRICSENTRY -_CHECKPOINT.fields_by_name["primaryMetric"].message_type = _PRIMARYMETRIC -_PRIMARYMETRIC.fields_by_name["goal"].enum_type = _PRIMARYMETRIC_GOAL -_PRIMARYMETRIC_GOAL.containing_type = _PRIMARYMETRIC -_PARAMTYPE.oneofs_by_name["value"].fields.append(_PARAMTYPE.fields_by_name["boolValue"]) -_PARAMTYPE.fields_by_name["boolValue"].containing_oneof = _PARAMTYPE.oneofs_by_name[ - "value" -] -_PARAMTYPE.oneofs_by_name["value"].fields.append(_PARAMTYPE.fields_by_name["intValue"]) -_PARAMTYPE.fields_by_name["intValue"].containing_oneof = _PARAMTYPE.oneofs_by_name[ - "value" -] -_PARAMTYPE.oneofs_by_name["value"].fields.append( - _PARAMTYPE.fields_by_name["floatValue"] -) -_PARAMTYPE.fields_by_name["floatValue"].containing_oneof = _PARAMTYPE.oneofs_by_name[ - "value" -] -_PARAMTYPE.oneofs_by_name["value"].fields.append( - _PARAMTYPE.fields_by_name["stringValue"] -) -_PARAMTYPE.fields_by_name["stringValue"].containing_oneof = _PARAMTYPE.oneofs_by_name[ - "value" -] -_PARAMTYPE.oneofs_by_name["value"].fields.append( - _PARAMTYPE.fields_by_name["objectValueJson"] -) -_PARAMTYPE.fields_by_name[ - "objectValueJson" -].containing_oneof = _PARAMTYPE.oneofs_by_name["value"] -DESCRIPTOR.message_types_by_name["CreateExperimentRequest"] = _CREATEEXPERIMENTREQUEST -DESCRIPTOR.message_types_by_name["CreateExperimentReply"] = _CREATEEXPERIMENTREPLY -DESCRIPTOR.message_types_by_name["CreateCheckpointRequest"] = _CREATECHECKPOINTREQUEST -DESCRIPTOR.message_types_by_name["CreateCheckpointReply"] = _CREATECHECKPOINTREPLY -DESCRIPTOR.message_types_by_name["SaveExperimentRequest"] = _SAVEEXPERIMENTREQUEST -DESCRIPTOR.message_types_by_name["SaveExperimentReply"] = _SAVEEXPERIMENTREPLY -DESCRIPTOR.message_types_by_name["StopExperimentRequest"] = _STOPEXPERIMENTREQUEST -DESCRIPTOR.message_types_by_name["StopExperimentReply"] = _STOPEXPERIMENTREPLY -DESCRIPTOR.message_types_by_name["GetExperimentRequest"] = _GETEXPERIMENTREQUEST -DESCRIPTOR.message_types_by_name["GetExperimentReply"] = _GETEXPERIMENTREPLY -DESCRIPTOR.message_types_by_name["ListExperimentsRequest"] = _LISTEXPERIMENTSREQUEST -DESCRIPTOR.message_types_by_name["ListExperimentsReply"] = _LISTEXPERIMENTSREPLY -DESCRIPTOR.message_types_by_name["DeleteExperimentRequest"] = _DELETEEXPERIMENTREQUEST -DESCRIPTOR.message_types_by_name["DeleteExperimentReply"] = _DELETEEXPERIMENTREPLY -DESCRIPTOR.message_types_by_name[ - "CheckoutCheckpointRequest" -] = _CHECKOUTCHECKPOINTREQUEST -DESCRIPTOR.message_types_by_name["CheckoutCheckpointReply"] = _CHECKOUTCHECKPOINTREPLY -DESCRIPTOR.message_types_by_name["Exception"] = _EXCEPTION -DESCRIPTOR.message_types_by_name["Experiment"] = _EXPERIMENT -DESCRIPTOR.message_types_by_name["Config"] = _CONFIG -DESCRIPTOR.message_types_by_name["Checkpoint"] = _CHECKPOINT -DESCRIPTOR.message_types_by_name["PrimaryMetric"] = _PRIMARYMETRIC -DESCRIPTOR.message_types_by_name["ParamType"] = _PARAMTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -CreateExperimentRequest = _reflection.GeneratedProtocolMessageType( - "CreateExperimentRequest", - (_message.Message,), - { - "DESCRIPTOR": _CREATEEXPERIMENTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.CreateExperimentRequest) - }, -) -_sym_db.RegisterMessage(CreateExperimentRequest) - -CreateExperimentReply = _reflection.GeneratedProtocolMessageType( - "CreateExperimentReply", - (_message.Message,), - { - "DESCRIPTOR": _CREATEEXPERIMENTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.CreateExperimentReply) - }, -) -_sym_db.RegisterMessage(CreateExperimentReply) - -CreateCheckpointRequest = _reflection.GeneratedProtocolMessageType( - "CreateCheckpointRequest", - (_message.Message,), - { - "DESCRIPTOR": _CREATECHECKPOINTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.CreateCheckpointRequest) - }, -) -_sym_db.RegisterMessage(CreateCheckpointRequest) - -CreateCheckpointReply = _reflection.GeneratedProtocolMessageType( - "CreateCheckpointReply", - (_message.Message,), - { - "DESCRIPTOR": _CREATECHECKPOINTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.CreateCheckpointReply) - }, -) -_sym_db.RegisterMessage(CreateCheckpointReply) - -SaveExperimentRequest = _reflection.GeneratedProtocolMessageType( - "SaveExperimentRequest", - (_message.Message,), - { - "DESCRIPTOR": _SAVEEXPERIMENTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.SaveExperimentRequest) - }, -) -_sym_db.RegisterMessage(SaveExperimentRequest) - -SaveExperimentReply = _reflection.GeneratedProtocolMessageType( - "SaveExperimentReply", - (_message.Message,), - { - "DESCRIPTOR": _SAVEEXPERIMENTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.SaveExperimentReply) - }, -) -_sym_db.RegisterMessage(SaveExperimentReply) - -StopExperimentRequest = _reflection.GeneratedProtocolMessageType( - "StopExperimentRequest", - (_message.Message,), - { - "DESCRIPTOR": _STOPEXPERIMENTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.StopExperimentRequest) - }, -) -_sym_db.RegisterMessage(StopExperimentRequest) - -StopExperimentReply = _reflection.GeneratedProtocolMessageType( - "StopExperimentReply", - (_message.Message,), - { - "DESCRIPTOR": _STOPEXPERIMENTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.StopExperimentReply) - }, -) -_sym_db.RegisterMessage(StopExperimentReply) - -GetExperimentRequest = _reflection.GeneratedProtocolMessageType( - "GetExperimentRequest", - (_message.Message,), - { - "DESCRIPTOR": _GETEXPERIMENTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.GetExperimentRequest) - }, -) -_sym_db.RegisterMessage(GetExperimentRequest) - -GetExperimentReply = _reflection.GeneratedProtocolMessageType( - "GetExperimentReply", - (_message.Message,), - { - "DESCRIPTOR": _GETEXPERIMENTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.GetExperimentReply) - }, -) -_sym_db.RegisterMessage(GetExperimentReply) - -ListExperimentsRequest = _reflection.GeneratedProtocolMessageType( - "ListExperimentsRequest", - (_message.Message,), - { - "DESCRIPTOR": _LISTEXPERIMENTSREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.ListExperimentsRequest) - }, -) -_sym_db.RegisterMessage(ListExperimentsRequest) - -ListExperimentsReply = _reflection.GeneratedProtocolMessageType( - "ListExperimentsReply", - (_message.Message,), - { - "DESCRIPTOR": _LISTEXPERIMENTSREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.ListExperimentsReply) - }, -) -_sym_db.RegisterMessage(ListExperimentsReply) - -DeleteExperimentRequest = _reflection.GeneratedProtocolMessageType( - "DeleteExperimentRequest", - (_message.Message,), - { - "DESCRIPTOR": _DELETEEXPERIMENTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.DeleteExperimentRequest) - }, -) -_sym_db.RegisterMessage(DeleteExperimentRequest) - -DeleteExperimentReply = _reflection.GeneratedProtocolMessageType( - "DeleteExperimentReply", - (_message.Message,), - { - "DESCRIPTOR": _DELETEEXPERIMENTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.DeleteExperimentReply) - }, -) -_sym_db.RegisterMessage(DeleteExperimentReply) - -CheckoutCheckpointRequest = _reflection.GeneratedProtocolMessageType( - "CheckoutCheckpointRequest", - (_message.Message,), - { - "DESCRIPTOR": _CHECKOUTCHECKPOINTREQUEST, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.CheckoutCheckpointRequest) - }, -) -_sym_db.RegisterMessage(CheckoutCheckpointRequest) - -CheckoutCheckpointReply = _reflection.GeneratedProtocolMessageType( - "CheckoutCheckpointReply", - (_message.Message,), - { - "DESCRIPTOR": _CHECKOUTCHECKPOINTREPLY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.CheckoutCheckpointReply) - }, -) -_sym_db.RegisterMessage(CheckoutCheckpointReply) - -Exception = _reflection.GeneratedProtocolMessageType( - "Exception", - (_message.Message,), - { - "DESCRIPTOR": _EXCEPTION, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Exception) - }, -) -_sym_db.RegisterMessage(Exception) - -Experiment = _reflection.GeneratedProtocolMessageType( - "Experiment", - (_message.Message,), - { - "ParamsEntry": _reflection.GeneratedProtocolMessageType( - "ParamsEntry", - (_message.Message,), - { - "DESCRIPTOR": _EXPERIMENT_PARAMSENTRY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Experiment.ParamsEntry) - }, - ), - "PythonPackagesEntry": _reflection.GeneratedProtocolMessageType( - "PythonPackagesEntry", - (_message.Message,), - { - "DESCRIPTOR": _EXPERIMENT_PYTHONPACKAGESENTRY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Experiment.PythonPackagesEntry) - }, - ), - "DESCRIPTOR": _EXPERIMENT, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Experiment) - }, -) -_sym_db.RegisterMessage(Experiment) -_sym_db.RegisterMessage(Experiment.ParamsEntry) -_sym_db.RegisterMessage(Experiment.PythonPackagesEntry) - -Config = _reflection.GeneratedProtocolMessageType( - "Config", - (_message.Message,), - { - "DESCRIPTOR": _CONFIG, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Config) - }, -) -_sym_db.RegisterMessage(Config) - -Checkpoint = _reflection.GeneratedProtocolMessageType( - "Checkpoint", - (_message.Message,), - { - "MetricsEntry": _reflection.GeneratedProtocolMessageType( - "MetricsEntry", - (_message.Message,), - { - "DESCRIPTOR": _CHECKPOINT_METRICSENTRY, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Checkpoint.MetricsEntry) - }, - ), - "DESCRIPTOR": _CHECKPOINT, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.Checkpoint) - }, -) -_sym_db.RegisterMessage(Checkpoint) -_sym_db.RegisterMessage(Checkpoint.MetricsEntry) - -PrimaryMetric = _reflection.GeneratedProtocolMessageType( - "PrimaryMetric", - (_message.Message,), - { - "DESCRIPTOR": _PRIMARYMETRIC, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.PrimaryMetric) - }, -) -_sym_db.RegisterMessage(PrimaryMetric) - -ParamType = _reflection.GeneratedProtocolMessageType( - "ParamType", - (_message.Message,), - { - "DESCRIPTOR": _PARAMTYPE, - "__module__": "service_pb2" - # @@protoc_insertion_point(class_scope:service.ParamType) - }, -) -_sym_db.RegisterMessage(ParamType) - - -DESCRIPTOR._options = None -_EXPERIMENT_PARAMSENTRY._options = None -_EXPERIMENT_PYTHONPACKAGESENTRY._options = None -_CHECKPOINT_METRICSENTRY._options = None - -_DAEMON = _descriptor.ServiceDescriptor( - name="Daemon", - full_name="service.Daemon", - file=DESCRIPTOR, - index=0, - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_start=2217, - serialized_end=2911, - methods=[ - _descriptor.MethodDescriptor( - name="CreateExperiment", - full_name="service.Daemon.CreateExperiment", - index=0, - containing_service=None, - input_type=_CREATEEXPERIMENTREQUEST, - output_type=_CREATEEXPERIMENTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="CreateCheckpoint", - full_name="service.Daemon.CreateCheckpoint", - index=1, - containing_service=None, - input_type=_CREATECHECKPOINTREQUEST, - output_type=_CREATECHECKPOINTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SaveExperiment", - full_name="service.Daemon.SaveExperiment", - index=2, - containing_service=None, - input_type=_SAVEEXPERIMENTREQUEST, - output_type=_SAVEEXPERIMENTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="StopExperiment", - full_name="service.Daemon.StopExperiment", - index=3, - containing_service=None, - input_type=_STOPEXPERIMENTREQUEST, - output_type=_STOPEXPERIMENTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetExperiment", - full_name="service.Daemon.GetExperiment", - index=4, - containing_service=None, - input_type=_GETEXPERIMENTREQUEST, - output_type=_GETEXPERIMENTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListExperiments", - full_name="service.Daemon.ListExperiments", - index=5, - containing_service=None, - input_type=_LISTEXPERIMENTSREQUEST, - output_type=_LISTEXPERIMENTSREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DeleteExperiment", - full_name="service.Daemon.DeleteExperiment", - index=6, - containing_service=None, - input_type=_DELETEEXPERIMENTREQUEST, - output_type=_DELETEEXPERIMENTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="CheckoutCheckpoint", - full_name="service.Daemon.CheckoutCheckpoint", - index=7, - containing_service=None, - input_type=_CHECKOUTCHECKPOINTREQUEST, - output_type=_CHECKOUTCHECKPOINTREPLY, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - ], -) -_sym_db.RegisterServiceDescriptor(_DAEMON) - -DESCRIPTOR.services_by_name["Daemon"] = _DAEMON - -# @@protoc_insertion_point(module_scope) diff --git a/python/replicate/servicepb/service_pb2_grpc.py b/python/replicate/servicepb/service_pb2_grpc.py deleted file mode 100644 index 54fa09ebb..000000000 --- a/python/replicate/servicepb/service_pb2_grpc.py +++ /dev/null @@ -1,394 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc - -from . import service_pb2 as service__pb2 - - -class DaemonStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.CreateExperiment = channel.unary_unary( - "/service.Daemon/CreateExperiment", - request_serializer=service__pb2.CreateExperimentRequest.SerializeToString, - response_deserializer=service__pb2.CreateExperimentReply.FromString, - ) - self.CreateCheckpoint = channel.unary_unary( - "/service.Daemon/CreateCheckpoint", - request_serializer=service__pb2.CreateCheckpointRequest.SerializeToString, - response_deserializer=service__pb2.CreateCheckpointReply.FromString, - ) - self.SaveExperiment = channel.unary_unary( - "/service.Daemon/SaveExperiment", - request_serializer=service__pb2.SaveExperimentRequest.SerializeToString, - response_deserializer=service__pb2.SaveExperimentReply.FromString, - ) - self.StopExperiment = channel.unary_unary( - "/service.Daemon/StopExperiment", - request_serializer=service__pb2.StopExperimentRequest.SerializeToString, - response_deserializer=service__pb2.StopExperimentReply.FromString, - ) - self.GetExperiment = channel.unary_unary( - "/service.Daemon/GetExperiment", - request_serializer=service__pb2.GetExperimentRequest.SerializeToString, - response_deserializer=service__pb2.GetExperimentReply.FromString, - ) - self.ListExperiments = channel.unary_unary( - "/service.Daemon/ListExperiments", - request_serializer=service__pb2.ListExperimentsRequest.SerializeToString, - response_deserializer=service__pb2.ListExperimentsReply.FromString, - ) - self.DeleteExperiment = channel.unary_unary( - "/service.Daemon/DeleteExperiment", - request_serializer=service__pb2.DeleteExperimentRequest.SerializeToString, - response_deserializer=service__pb2.DeleteExperimentReply.FromString, - ) - self.CheckoutCheckpoint = channel.unary_unary( - "/service.Daemon/CheckoutCheckpoint", - request_serializer=service__pb2.CheckoutCheckpointRequest.SerializeToString, - response_deserializer=service__pb2.CheckoutCheckpointReply.FromString, - ) - - -class DaemonServicer(object): - """Missing associated documentation comment in .proto file.""" - - def CreateExperiment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def CreateCheckpoint(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def SaveExperiment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def StopExperiment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def GetExperiment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def ListExperiments(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def DeleteExperiment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - def CheckoutCheckpoint(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - - -def add_DaemonServicer_to_server(servicer, server): - rpc_method_handlers = { - "CreateExperiment": grpc.unary_unary_rpc_method_handler( - servicer.CreateExperiment, - request_deserializer=service__pb2.CreateExperimentRequest.FromString, - response_serializer=service__pb2.CreateExperimentReply.SerializeToString, - ), - "CreateCheckpoint": grpc.unary_unary_rpc_method_handler( - servicer.CreateCheckpoint, - request_deserializer=service__pb2.CreateCheckpointRequest.FromString, - response_serializer=service__pb2.CreateCheckpointReply.SerializeToString, - ), - "SaveExperiment": grpc.unary_unary_rpc_method_handler( - servicer.SaveExperiment, - request_deserializer=service__pb2.SaveExperimentRequest.FromString, - response_serializer=service__pb2.SaveExperimentReply.SerializeToString, - ), - "StopExperiment": grpc.unary_unary_rpc_method_handler( - servicer.StopExperiment, - request_deserializer=service__pb2.StopExperimentRequest.FromString, - response_serializer=service__pb2.StopExperimentReply.SerializeToString, - ), - "GetExperiment": grpc.unary_unary_rpc_method_handler( - servicer.GetExperiment, - request_deserializer=service__pb2.GetExperimentRequest.FromString, - response_serializer=service__pb2.GetExperimentReply.SerializeToString, - ), - "ListExperiments": grpc.unary_unary_rpc_method_handler( - servicer.ListExperiments, - request_deserializer=service__pb2.ListExperimentsRequest.FromString, - response_serializer=service__pb2.ListExperimentsReply.SerializeToString, - ), - "DeleteExperiment": grpc.unary_unary_rpc_method_handler( - servicer.DeleteExperiment, - request_deserializer=service__pb2.DeleteExperimentRequest.FromString, - response_serializer=service__pb2.DeleteExperimentReply.SerializeToString, - ), - "CheckoutCheckpoint": grpc.unary_unary_rpc_method_handler( - servicer.CheckoutCheckpoint, - request_deserializer=service__pb2.CheckoutCheckpointRequest.FromString, - response_serializer=service__pb2.CheckoutCheckpointReply.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - "service.Daemon", rpc_method_handlers - ) - server.add_generic_rpc_handlers((generic_handler,)) - - -# This class is part of an EXPERIMENTAL API. -class Daemon(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def CreateExperiment( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/CreateExperiment", - service__pb2.CreateExperimentRequest.SerializeToString, - service__pb2.CreateExperimentReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def CreateCheckpoint( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/CreateCheckpoint", - service__pb2.CreateCheckpointRequest.SerializeToString, - service__pb2.CreateCheckpointReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def SaveExperiment( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/SaveExperiment", - service__pb2.SaveExperimentRequest.SerializeToString, - service__pb2.SaveExperimentReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def StopExperiment( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/StopExperiment", - service__pb2.StopExperimentRequest.SerializeToString, - service__pb2.StopExperimentReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def GetExperiment( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/GetExperiment", - service__pb2.GetExperimentRequest.SerializeToString, - service__pb2.GetExperimentReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def ListExperiments( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/ListExperiments", - service__pb2.ListExperimentsRequest.SerializeToString, - service__pb2.ListExperimentsReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def DeleteExperiment( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/DeleteExperiment", - service__pb2.DeleteExperimentRequest.SerializeToString, - service__pb2.DeleteExperimentReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) - - @staticmethod - def CheckoutCheckpoint( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/service.Daemon/CheckoutCheckpoint", - service__pb2.CheckoutCheckpointRequest.SerializeToString, - service__pb2.CheckoutCheckpointReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - ) diff --git a/python/tests/repository/test_gcs_repository.py b/python/tests/repository/test_gcs_repository.py deleted file mode 100644 index 4169c3152..000000000 --- a/python/tests/repository/test_gcs_repository.py +++ /dev/null @@ -1,203 +0,0 @@ -import os -import random -import string -import tempfile -from pathlib import Path -import pytest # type: ignore -from google.cloud import storage -from google.api_core.exceptions import NotFound - -from replicate.exceptions import DoesNotExistError -from replicate.repository.gcs_repository import GCSRepository -from replicate.hash import random_hash - - -# Disable this test with -m "not external" -pytestmark = pytest.mark.external - -# We only create one bucket for these tests, because Google Cloud rate limits creating buckets -# https://cloud.google.com/storage/quotas -# This means these tests can't be run in parallel -@pytest.fixture(scope="session") -def temp_bucket_create(): - bucket_name = "replicate-test-" + random_hash(20) - - client = storage.Client() - bucket = client.create_bucket(bucket_name) - try: - bucket.reload() - assert bucket.exists() - yield bucket - finally: - bucket.delete(force=True) - - -@pytest.fixture(scope="function") -def temp_bucket(temp_bucket_create): - bucket = temp_bucket_create - # Clear bucket before each test - blobs = bucket.list_blobs() - for blob in blobs: - blob.delete() - yield bucket - - -def test_put_get(temp_bucket): - repository = GCSRepository(bucket=temp_bucket.name, root="") - repository.put("foo/bar.txt", "nice") - assert temp_bucket.blob("foo/bar.txt").download_as_bytes() == b"nice" - assert repository.get("foo/bar.txt") == b"nice" - - -def test_put_get_with_root(temp_bucket): - repository = GCSRepository(bucket=temp_bucket.name, root="someroot") - repository.put("foo/bar.txt", "nice") - assert temp_bucket.blob("someroot/foo/bar.txt").download_as_bytes() == b"nice" - assert repository.get("foo/bar.txt") == b"nice" - - -def test_get_not_exists(temp_bucket): - repository = GCSRepository(bucket=temp_bucket.name, root="") - with pytest.raises(DoesNotExistError): - assert repository.get("foo/bar.txt") - - -def test_list(temp_bucket): - repository = GCSRepository(bucket=temp_bucket.name, root="") - repository.put("foo", "nice") - repository.put("some/bar", "nice") - assert repository.list("") == ["foo"] - assert repository.list("some") == ["some/bar"] - - -def test_put_path(temp_bucket, tmpdir): - repository = GCSRepository(bucket=temp_bucket.name, root="") - - for path in ["foo.txt", "bar/baz.txt", "qux.txt"]: - abs_path = os.path.join(tmpdir, path) - os.makedirs(os.path.dirname(abs_path), exist_ok=True) - with open(abs_path, "w") as f: - f.write("hello " + path) - - repository.put_path(tmpdir, "folder") - assert temp_bucket.blob("folder/foo.txt").download_as_bytes() == b"hello foo.txt" - assert temp_bucket.blob("folder/qux.txt").download_as_bytes() == b"hello qux.txt" - assert ( - temp_bucket.blob("folder/bar/baz.txt").download_as_bytes() - == b"hello bar/baz.txt" - ) - - # single files - repository.put_path(os.path.join(tmpdir, "foo.txt"), "singlefile/foo.txt") - assert ( - temp_bucket.blob("singlefile/foo.txt").download_as_bytes() == b"hello foo.txt" - ) - - -def test_put_path_with_root(temp_bucket, tmpdir): - repository = GCSRepository(bucket=temp_bucket.name, root="someroot") - - for path in ["foo.txt", "bar/baz.txt", "qux.txt"]: - abs_path = os.path.join(tmpdir, path) - os.makedirs(os.path.dirname(abs_path), exist_ok=True) - with open(abs_path, "w") as f: - f.write("hello " + path) - - repository.put_path(tmpdir, "folder") - assert ( - temp_bucket.blob("someroot/folder/foo.txt").download_as_bytes() - == b"hello foo.txt" - ) - assert ( - temp_bucket.blob("someroot/folder/qux.txt").download_as_bytes() - == b"hello qux.txt" - ) - assert ( - temp_bucket.blob("someroot/folder/bar/baz.txt").download_as_bytes() - == b"hello bar/baz.txt" - ) - - # single files - repository.put_path(os.path.join(tmpdir, "foo.txt"), "singlefile/foo.txt") - assert ( - temp_bucket.blob("someroot/singlefile/foo.txt").download_as_bytes() - == b"hello foo.txt" - ) - - -def test_replicateignore(temp_bucket, tmpdir): - repository = GCSRepository(bucket=temp_bucket.name, root="") - - for path in [ - "foo.txt", - "bar/baz.txt", - "bar/quux.xyz", - "bar/new-qux.txt", - "qux.xyz", - ]: - abs_path = os.path.join(tmpdir, path) - os.makedirs(os.path.dirname(abs_path), exist_ok=True) - with open(abs_path, "w") as f: - f.write("hello " + path) - - with open(os.path.join(tmpdir, ".replicateignore"), "w") as f: - f.write( - """ -# this is a comment -baz.txt -*.xyz -""" - ) - - repository.put_path(tmpdir, "folder") - assert temp_bucket.blob("folder/foo.txt").download_as_bytes() == b"hello foo.txt" - assert ( - temp_bucket.blob("folder/bar/new-qux.txt").download_as_bytes() - == b"hello bar/new-qux.txt" - ) - with pytest.raises(NotFound): - temp_bucket.blob("folder/bar/baz.txt").download_as_bytes() - with pytest.raises(NotFound): - temp_bucket.blob("folder/qux.xyz").download_as_bytes() - with pytest.raises(NotFound): - temp_bucket.blob("folder/bar/quux.xyz").download_as_bytes() - - -def test_delete(temp_bucket, tmpdir): - repository = GCSRepository(bucket=temp_bucket.name, root="") - - repository.put("some/file", "nice") - assert repository.get("some/file") == b"nice" - - repository.delete("some/file") - with pytest.raises(DoesNotExistError): - repository.get("some/file") - - -def test_delete_with_root(temp_bucket, tmpdir): - repository = GCSRepository(bucket=temp_bucket.name, root="my-root") - - repository.put("some/file", "nice") - assert repository.get("some/file") == b"nice" - - repository.delete("some/file") - with pytest.raises(DoesNotExistError): - repository.get("some/file") - - -def test_get_put_path_tar(temp_bucket): - with tempfile.TemporaryDirectory() as src: - src_path = Path(src) - for path in ["foo.txt", "bar/baz.txt", "qux.txt"]: - abs_path = src_path / path - abs_path.parent.mkdir(parents=True, exist_ok=True) - with open(abs_path, "w") as f: - f.write("hello " + path) - - repository = GCSRepository(bucket=temp_bucket.name, root="") - repository.put_path_tar(src, "dest.tar.gz", "") - - with tempfile.TemporaryDirectory() as out: - repository.get_path_tar("dest.tar.gz", out) - out = Path(out) - assert open(out / "foo.txt").read() == "hello foo.txt" diff --git a/python/tests/repository/test_s3_repository.py b/python/tests/repository/test_s3_repository.py deleted file mode 100644 index 4c88f1683..000000000 --- a/python/tests/repository/test_s3_repository.py +++ /dev/null @@ -1,147 +0,0 @@ -import json -import os -import tempfile -from pathlib import Path -import pytest # type: ignore -import boto3 # type: ignore - -import replicate -from replicate.hash import random_hash -from replicate.repository.s3_repository import S3Repository -from replicate.exceptions import DoesNotExistError - -# Disable this test with -m "not external" -pytestmark = pytest.mark.external - - -@pytest.fixture(scope="session") -def temp_bucket_create(): - # We intentionally don't create the bucket to test Replicate's ability to create buckets - bucket_name = "replicate-test-unit-" + random_hash()[:20] - yield bucket_name - - # Delete bucket once at end of session - s3 = boto3.resource("s3") - bucket = s3.Bucket(bucket_name) - bucket.objects.all().delete() - bucket.delete() - - -@pytest.fixture(scope="function") -def temp_bucket(temp_bucket_create): - bucket_name = temp_bucket_create - - yield bucket_name - - # Clear all objects after each test - s3 = boto3.resource("s3") - bucket = s3.Bucket(bucket_name) - bucket.objects.all().delete() - - -def test_s3_experiment(temp_bucket, tmpdir): - replicate_yaml_contents = "repository: s3://{bucket}".format(bucket=temp_bucket) - - with open(os.path.join(tmpdir, "replicate.yaml"), "w") as f: - f.write(replicate_yaml_contents) - - current_workdir = os.getcwd() - try: - os.chdir(tmpdir) - experiment = replicate.init( - path=".", params={"foo": "bar"}, disable_heartbeat=True - ) - checkpoint = experiment.checkpoint( - path=".", step=10, metrics={"loss": 1.1, "baz": "qux"} - ) - - actual_experiment_meta = s3_read_json( - temp_bucket, - os.path.join("metadata", "experiments", experiment.id + ".json"), - ) - assert "host" in actual_experiment_meta - assert "user" in actual_experiment_meta - del actual_experiment_meta["host"] - del actual_experiment_meta["user"] - del actual_experiment_meta["command"] - del actual_experiment_meta["python_packages"] - - expected_experiment_meta = { - "id": experiment.id, - "created": experiment.created.isoformat() + "Z", - "params": {"foo": "bar"}, - "config": {"repository": "s3://" + temp_bucket}, - "path": ".", - "checkpoints": [ - { - "id": checkpoint.id, - "created": checkpoint.created.isoformat() + "Z", - "step": 10, - "metrics": {"loss": 1.1, "baz": "qux"}, - "path": ".", - "primary_metric": None, - } - ], - "replicate_version": replicate.__version__, - } - assert actual_experiment_meta == expected_experiment_meta - - finally: - os.chdir(current_workdir) - - -def test_list(temp_bucket): - repository = S3Repository(bucket=temp_bucket, root="") - repository.put("foo", "nice") - repository.put("some/bar", "nice") - assert repository.list("") == ["foo"] - assert repository.list("some") == ["some/bar"] - - -def s3_read(bucket, path): - s3 = boto3.client("s3") - return s3.get_object(Bucket=bucket, Key=path)["Body"].read() - - -def s3_read_json(bucket, path): - return json.loads(s3_read(bucket, path)) - - -def test_delete(temp_bucket, tmpdir): - repository = S3Repository(bucket=temp_bucket, root="") - - repository.put("some/file", "nice") - assert repository.get("some/file") == b"nice" - - repository.delete("some/file") - with pytest.raises(DoesNotExistError): - repository.get("some/file") - - -def test_delete_with_root(temp_bucket, tmpdir): - repository = S3Repository(bucket=temp_bucket, root="my-root") - - repository.put("some/file", "nice") - assert repository.get("some/file") == b"nice" - - repository.delete("some/file") - with pytest.raises(DoesNotExistError): - repository.get("some/file") - - -def test_get_put_path_tar(temp_bucket): - with tempfile.TemporaryDirectory() as src: - src_path = Path(src) - for path in ["foo.txt", "bar/baz.txt", "qux.txt"]: - abs_path = src_path / path - abs_path.parent.mkdir(parents=True, exist_ok=True) - with open(abs_path, "w") as f: - f.write("hello " + path) - - repository = S3Repository(bucket=temp_bucket, root="") - repository.put_path_tar(src, "dest.tar.gz", "") - - with tempfile.TemporaryDirectory() as out: - repository.get_path_tar("dest.tar.gz", out) - out = Path(out) - assert open(out / "foo.txt").read() == "hello foo.txt" diff --git a/python/tests/test_config.py b/python/tests/test_config.py deleted file mode 100644 index 424a70543..000000000 --- a/python/tests/test_config.py +++ /dev/null @@ -1,50 +0,0 @@ -import pytest # type: ignore -import os - -from replicate.config import ( - load_config, - validate_and_set_defaults, - ConfigValidationError, -) - -from replicate.exceptions import ConfigNotFoundError - - -@pytest.mark.parametrize("config_filename", ["replicate.yaml", "replicate.yml"]) -def test_load_config_blank(tmp_path, config_filename): - config_file = tmp_path / config_filename - config_file.write_text("") - - with pytest.raises(ConfigValidationError): - load_config(tmp_path) - - -def test_load_without_config_blank(tmp_path): - with pytest.raises(ConfigNotFoundError): - load_config(tmp_path) - - -def test_validate(): - validate_and_set_defaults({"repository": "s3://foobar"}, "/foo") - with pytest.raises(ConfigValidationError): - validate_and_set_defaults({"invalid": "key"}, "/foo") - with pytest.raises(ConfigValidationError): - validate_and_set_defaults({"repository": 1234}, "/foo") - with pytest.raises(ConfigValidationError): - validate_and_set_defaults( - {"repository": "s3://foobar", "something": "else"}, "/foo" - ) - - assert validate_and_set_defaults({"repository": "s3://foobar"}, "/foo") == { - "repository": "s3://foobar", - } - - -def test_storage_backwards_compatible(): - assert validate_and_set_defaults({"storage": "s3://foobar"}, "/foo") == { - "repository": "s3://foobar", - } - with pytest.raises(ConfigValidationError): - validate_and_set_defaults( - {"storage": "s3://foobar", "repository": "s3://foobar"}, "/foo" - ) diff --git a/python/tests/test_experiment.py b/python/tests/test_experiment.py index fe3abaf98..5ae25658f 100644 --- a/python/tests/test_experiment.py +++ b/python/tests/test_experiment.py @@ -2,6 +2,7 @@ import dataclasses except ImportError: from replicate._vendor import dataclasses +import math import datetime import json import os @@ -21,8 +22,6 @@ ) from replicate.experiment import Experiment, ExperimentList from replicate.project import Project -from replicate.heartbeat import DEFAULT_REFRESH_INTERVAL -from replicate.constants import HEARTBEAT_MISS_TOLERANCE from replicate.metadata import rfc3339_datetime from tests.factories import experiment_factory, checkpoint_factory @@ -217,38 +216,15 @@ def test_is_running(temp_workdir): experiment = replicate.init() heartbeat_path = f".replicate/metadata/heartbeats/{experiment.id}.json" + assert wait( - lambda: os.path.exists(heartbeat_path), timeout_seconds=2, sleep_seconds=0.01 + lambda: os.path.exists(heartbeat_path), timeout_seconds=10, sleep_seconds=0.01 ) # Check whether experiment is running after heartbeats are started assert experiment.is_running() # Heartbeats stopped - experiment._heartbeat.kill() - assert experiment.is_running() - - # Modify heartbeat_metadata to record last heartbeat before last tolerable heartbeat - heartbeat_metadata = json.load(open(heartbeat_path)) - heartbeat_metadata["last_heartbeat"] = rfc3339_datetime( - datetime.datetime.utcnow() - HEARTBEAT_MISS_TOLERANCE * DEFAULT_REFRESH_INTERVAL - ) - - out_file = open(heartbeat_path, "w") - json.dump(heartbeat_metadata, out_file) - out_file.close() - - assert not experiment.is_running() - - # New experiment to test is_running after stop() - experiment = replicate.init() - heartbeat_path = f".replicate/metadata/heartbeats/{experiment.id}.json" - assert wait( - lambda: os.path.exists(heartbeat_path), timeout_seconds=2, sleep_seconds=0.01 - ) - assert experiment.is_running() - - # Check is_running after stopping the experiment experiment.stop() assert not experiment.is_running() @@ -291,37 +267,6 @@ def test_validate(self): in experiment.validate()[0] ) - def test_from_json(self): - data = { - "id": "3132f9288bcc09a6b4d283c95a3968379d6b01fcf5d06500e789f90fdb02b7e1", - "created": "2020-10-07T22:44:06.243914Z", - "params": {"learning_rate": 0.01, "num_epochs": 100}, - "user": "ben", - "host": "", - "command": "train.py", - "config": {"repository": ".replicate/"}, - "path": ".", - "python_version": "3.4.5", - "python_packages": {"foo": "1.0.0"}, - "checkpoints": [], - "replicate_version": "0.0.1", - } - exp = Experiment.from_json(None, data) - assert dataclasses.asdict(exp) == { - "id": "3132f9288bcc09a6b4d283c95a3968379d6b01fcf5d06500e789f90fdb02b7e1", - "created": datetime.datetime(2020, 10, 7, 22, 44, 6, 243914), - "params": {"learning_rate": 0.01, "num_epochs": 100}, - "user": "ben", - "host": "", - "command": "train.py", - "config": {"repository": ".replicate/"}, - "path": ".", - "python_version": "3.4.5", - "python_packages": {"foo": "1.0.0"}, - "checkpoints": [], - "replicate_version": "0.0.1", - } - def test_checkpoints(self, temp_workdir): project = Project() @@ -429,6 +374,42 @@ def test_best_none(self, temp_workdir): ) assert experiment.best() is None + def test_exceptional_values(self, temp_workdir): + project = Project() + + with open("replicate.yaml", "w") as f: + f.write("repository: file://.replicate/") + + experiment = project.experiments.create(disable_heartbeat=True) + experiment.checkpoint( + path=None, + metrics={"accuracy": float("nan")}, + primary_metric=("accuracy", "maximize"), + ) + experiment.checkpoint( + path=None, + metrics={"accuracy": float("-inf")}, + primary_metric=("accuracy", "maximize"), + ) + experiment.checkpoint( + path=None, + metrics={"accuracy": float("+inf")}, + primary_metric=("accuracy", "maximize"), + ) + experiment.checkpoint( + path=None, + metrics={"accuracy": None}, + primary_metric=("accuracy", "maximize"), + ) + + experiment = project.experiments.get(experiment.id) + assert math.isnan(experiment.checkpoints[0].metrics["accuracy"]) + assert math.isinf(experiment.checkpoints[1].metrics["accuracy"]) + assert experiment.checkpoints[1].metrics["accuracy"] < 0 + assert math.isinf(experiment.checkpoints[2].metrics["accuracy"]) + assert experiment.checkpoints[2].metrics["accuracy"] > 0 + assert experiment.checkpoints[3].metrics["accuracy"] is None + class TestExperimentCollection: def test_get(self, temp_workdir): diff --git a/python/tests/test_heartbeat.py b/python/tests/test_heartbeat.py deleted file mode 100644 index 074c4cf9c..000000000 --- a/python/tests/test_heartbeat.py +++ /dev/null @@ -1,72 +0,0 @@ -import time -import json -import os -import datetime -import dateutil.parser -from dateutil.tz import tzutc -import pytest -from waiting import wait - -from replicate.heartbeat import Heartbeat - - -def test_heartbeat_running(tmpdir): - tmpdir = str(tmpdir) - path = "foo/heartbeat.json" - heartbeat = Heartbeat( - "experiment-id-foo", - "file://" + tmpdir, - path, - refresh_interval=datetime.timedelta(seconds=1), - ) - assert not heartbeat.is_alive() - - heartbeat.start() - assert heartbeat.is_alive() - - heartbeat.kill() - time.sleep(0.1) - assert not heartbeat.is_alive() - heartbeat.ensure_running() - assert heartbeat.is_alive() - - heartbeat.kill() - - -@pytest.mark.skip(reason="fix blocked on #436") -def test_heartbeat_write(tmpdir): - tmpdir = str(tmpdir) - t1 = datetime.datetime.utcnow().replace(tzinfo=tzutc()) - - path = "foo/heartbeat.json" - heartbeat = Heartbeat( - "experiment-id-foo", - "file://" + tmpdir, - path, - refresh_interval=datetime.timedelta(seconds=0.1), - ) - heartbeat.start() - - heartbeat_path = os.path.join(tmpdir, "foo", "heartbeat.json") - - wait(lambda: os.path.exists(heartbeat_path), timeout_seconds=1, sleep_seconds=0.01) - # sleep a little extra in case the file is created but not yet written - time.sleep(0.01) - - with open(heartbeat_path) as f: - obj = json.loads(f.read()) - last_heartbeat = dateutil.parser.parse(obj["last_heartbeat"]) - - t2 = datetime.datetime.utcnow().replace(tzinfo=tzutc()) - - assert t1 < last_heartbeat < t2 - - time.sleep(0.2) - - with open(heartbeat_path) as f: - obj = json.loads(f.read()) - new_last_heartbeat = dateutil.parser.parse(obj["last_heartbeat"]) - - assert t1 < last_heartbeat < t2 < new_last_heartbeat - - heartbeat.kill() diff --git a/python/tests/test_pb_convert.py b/python/tests/test_pb_convert.py index 16a4361d7..179e7faef 100644 --- a/python/tests/test_pb_convert.py +++ b/python/tests/test_pb_convert.py @@ -3,7 +3,7 @@ from replicate import pb_convert from replicate.checkpoint import Checkpoint, PrimaryMetric, CheckpointList from replicate.experiment import Experiment -from replicate.servicepb import service_pb2 as pb +from replicate.servicepb import replicate_pb2 as pb from replicate.project import Project diff --git a/python/tests/test_project.py b/python/tests/test_project.py deleted file mode 100644 index b135bb313..000000000 --- a/python/tests/test_project.py +++ /dev/null @@ -1,122 +0,0 @@ -import os -import tempfile - -import pytest - -from replicate.project import get_project_dir, Project, ProjectSpec -from replicate.exceptions import ConfigNotFoundError, CorruptedProjectSpec - - -@pytest.fixture -def temp_workdir_in_subdir(): - orig_cwd = os.getcwd() - try: - with tempfile.TemporaryDirectory() as tmpdir: - workdir = os.path.join(tmpdir, "foo", "bar") - os.makedirs(workdir) - os.chdir(workdir) - yield - finally: - os.chdir(orig_cwd) - - -@pytest.mark.parametrize("config_filename", ["replicate.yaml", "replicate.yml"]) -def test_get_project_dir(temp_workdir_in_subdir, config_filename): - # use getcwd instead of tempdir from fixture, because on OS X getcwd doesn't return same thing passed to chdir - root = os.path.abspath(os.path.join(os.getcwd(), "../../")) - - # replicate.yaml in current directory - open(os.path.join(root, "foo/bar/{}".format(config_filename)), "w").write("") - assert get_project_dir() == os.path.join(root, "foo/bar") - os.unlink(os.path.join(root, "foo/bar/{}".format(config_filename))) - - # up a directory - open(os.path.join(root, "foo/{}".format(config_filename)), "w").write("") - assert get_project_dir() == os.path.join(root, "foo") - os.unlink(os.path.join(root, "foo/{}".format(config_filename))) - - # up two directories - open(os.path.join(root, "{}".format(config_filename)), "w").write("") - assert get_project_dir() == root - os.unlink(os.path.join(root, "{}".format(config_filename))) - - # missing replicate.yaml - with pytest.raises(ConfigNotFoundError): - get_project_dir() - - -def test_load_project_spec(temp_workdir): - with open("replicate.yaml", "w") as f: - f.write("repository: file://.replicate/") - - os.mkdir(".replicate") - with open(".replicate/repository.json", "w") as f: - f.write( - """{ - "version": 1234 -}""" - ) - - project = Project() - assert project._load_project_spec() == ProjectSpec(version=1234) - - -def test_load_missing_project_spec(temp_workdir): - with open("replicate.yaml", "w") as f: - f.write("repository: file://.replicate/") - - project = Project() - assert project._load_project_spec() is None - - -def test_load_corrupted_project_spec(temp_workdir): - with open("replicate.yaml", "w") as f: - f.write("repository: file://.replicate/") - - project = Project() - os.mkdir(".replicate") - - with open(".replicate/repository.json", "w") as f: - f.write( - """{ - "version": asdf -}""" - ) - - with pytest.raises(CorruptedProjectSpec): - project._load_project_spec() - - with open(".replicate/repository.json", "w") as f: - f.write( - """{ - "foo": "bar" -}""" - ) - - with pytest.raises(CorruptedProjectSpec): - project._load_project_spec() - - -def test_write_project_spec(temp_workdir): - with open("replicate.yaml", "w") as f: - f.write("repository: file://.replicate/") - - project = Project() - project._write_project_spec(version=1234) - - with open(".replicate/repository.json") as f: - assert ( - f.read() - == """{ - "version": 1234 -}""" - ) - - -def test_write_load_project_spec(temp_workdir): - with open("replicate.yaml", "w") as f: - f.write("repository: file://.replicate/") - - project = Project() - project._write_project_spec(version=1234) - assert project._load_project_spec().version == 1234