aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/mypy-protobuf
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.ru>2022-02-10 16:44:30 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:30 +0300
commit2598ef1d0aee359b4b6d5fdd1758916d5907d04f (patch)
tree012bb94d777798f1f56ac1cec429509766d05181 /contrib/python/mypy-protobuf
parent6751af0b0c1b952fede40b19b71da8025b5d8bcf (diff)
downloadydb-2598ef1d0aee359b4b6d5fdd1758916d5907d04f.tar.gz
Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/python/mypy-protobuf')
-rw-r--r--contrib/python/mypy-protobuf/LICENSE404
-rw-r--r--contrib/python/mypy-protobuf/README.md526
-rw-r--r--contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make24
-rw-r--r--contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make26
-rw-r--r--contrib/python/mypy-protobuf/bin/ya.make6
-rw-r--r--contrib/python/mypy-protobuf/ya.make50
6 files changed, 518 insertions, 518 deletions
diff --git a/contrib/python/mypy-protobuf/LICENSE b/contrib/python/mypy-protobuf/LICENSE
index bd760ffabd..9375eba48f 100644
--- a/contrib/python/mypy-protobuf/LICENSE
+++ b/contrib/python/mypy-protobuf/LICENSE
@@ -1,202 +1,202 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright (c) 2017 Dropbox, Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright (c) 2017 Dropbox, Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/python/mypy-protobuf/README.md b/contrib/python/mypy-protobuf/README.md
index ef79728324..9ed59bca85 100644
--- a/contrib/python/mypy-protobuf/README.md
+++ b/contrib/python/mypy-protobuf/README.md
@@ -1,263 +1,263 @@
-mypy-protobuf: Generate mypy stub files from protobuf specs
-
-[![CI](https://github.com/dropbox/mypy-protobuf/workflows/CI/badge.svg)](https://github.com/dropbox/mypy-protobuf/actions?query=branch%3Amain)
-[![pypi](https://img.shields.io/pypi/v/mypy-protobuf?logo=Pypi)](https://pypi.org/project/mypy-protobuf/)
-[![license](https://img.shields.io/github/license/dropbox/mypy-protobuf)](https://github.com/dropbox/mypy-protobuf/blob/main/LICENSE)
-===========================================================
-
-2.10 will be the last version of mypy-protobuf which supports targeting python 2.7. Next will be
-mypy-protobuf 3.0 which will auspiciously only support targeting python3
-
-See [Changelog](CHANGELOG.md) for recent changes.
-
-## Requirements to run mypy-protobuf
-[protoc >= 3.17.3](https://github.com/protocolbuffers/protobuf/releases)
-[python-protobuf >= 3.17.3](https://pypi.org/project/protobuf/) - matching protoc release
-[python >= 3.6](https://www.python.org/downloads/source/) - for running mypy-protobuf plugin.
-
-## Requirements to run mypy on stubs generated by mypy-protobuf
-[mypy >= v0.910](https://pypi.org/project/mypy)
-[python-protobuf >= 3.17.3](https://pypi.org/project/protobuf/) - matching protoc release
-[types-protobuf==3.17.3](https://pypi.org/project/types-protobuf/) - for stubs from the google.protobuf library
-
-### To run mypy on code generated with grpc plugin - you'll additionally need
-[grpcio>=1.38.1](https://pypi.org/project/grpcio/)
-[grpcio-tools>=1.38.1](https://pypi.org/project/grpcio-tools/)
-[grpc-stubs>=1.24.6](https://pypi.org/project/grpc-stubs/)
-
-Other configurations may work, but are not supported in testing currently. We would be open to expanding this list if a need arises - file an issue on the issue tracker.
-
-## Installation
-
-The plugin can be installed with
-```
-pip3 install mypy-protobuf
-```
-To install unreleased
-```
-REV=main # or whichever unreleased git rev you'd like
-pip3 install git+https://github.com/dropbox/mypy-protobuf.git@$REV
-
-# For older (1.x) versions of mypy protobuf - you may need
-pip3 install git+https://github.com/dropbox/mypy-protobuf.git@$REV#subdirectory=python
-```
-
-In order to run mypy on the generated code, you'll need to install
-```
-pip3 install mypy>=0.910 types-protobuf>=0.1.14
-```
-
-# Usage
-
-On posix, protoc-gen-mypy is installed to python's executable bin. Assuming that's
-on your $PATH, you can run
-```
-protoc --python_out=output/location --mypy_out=output/location
-```
-Alternately, you can explicitly provide the path:
-```
-protoc --plugin=protoc-gen-mypy=path/to/protoc-gen-mypy --python_out=output/location --mypy_out=output/location
-```
-Check the version number with
-```
-> protoc-gen-mypy --version
-```
-
-## Getting Help
-
-Find other developers in the mypy-protobuf slack workspace ([Invitation Link](https://join.slack.com/t/mypy-protobuf/shared_invite/zt-scogn8b5-MhetFnFYGi6V513aRsbe_Q)). If your company uses slack and mypy-protobuf, you may opt to use slack-connect to make a shared channel.
-
-## Implementation
-
-The implementation of the plugin is in `mypy_protobuf/main.py`, which installs to
-an executable protoc-gen-mypy. On windows it installs to `protoc-gen-mypy.exe`
-
-## Features
-
-See [Changelog](CHANGELOG.md) for full listing
-
-### Bring comments from .proto files to docstrings in .pyi files
-
-Comments in the .proto files on messages, fields, enums, enum variants, extensions, services, and methods
-will appear as docstrings in .pyi files. Useful in IDEs for showing completions with comments.
-
-### Types enum int values more strongly
-
-Enum int values produce stubs which wrap the int values in NewType
-```
-enum MyEnum {
- FOO = 0;
- BAR = 1;
-}
-```
-Will yield an [enum type wrapper](https://github.com/python/typeshed/blob/16ae4c61201cd8b96b8b22cdfb2ab9e89ba5bcf2/stubs/protobuf/google/protobuf/internal/enum_type_wrapper.pyi) whose methods type to `MyEnum.V` rather than `int`.
-This allows mypy to catch bugs where the wrong enum value is being used.
-
-mypy-protobuf autogenerates an instance of the EnumTypeWrapper as follows.
-
-```
-class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper):
- pass
-class _MyEnum:
- V = typing.NewType('V', builtins.int)
-class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.V], builtins.type):
- DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
- FOO = MyEnum.V(0)
- BAR = MyEnum.V(1)
-FOO = MyEnum.V(0)
-BAR = MyEnum.V(1)
-```
-
-`_MyEnumEnumTypeWrapper` extends the EnumTypeWrapper to take/return MyEnum.V rather than int
-`MyEnum` is an instance of the `EnumTypeWrapper`.
-- Use `_MyEnum` and of metaclass is an implementation detail to make MyEnum.V a valid type w/o a circular dependency
-
-Calling code may be typed as follows.
-
-In python >= 3.7
-```
-# Need [PEP 563](https://www.python.org/dev/peps/pep-0563/) to postpone evaluation of annotations
-from __future__ import annotations # Not needed with python>=3.10
-def f(x: MyEnum.V):
- print(x)
-f(MyEnum.Value("FOO"))
-```
-
-Note that for usages of cast, the type of `x` must be quoted
-until [upstream protobuf](https://github.com/protocolbuffers/protobuf/pull/8182) includes `V`
-```
-cast('MyEnum.V', x)
-```
-
-### Supports generating type wrappers for fields and maps
-
-M.proto
-```
-message M {
- uint32 user_id = 1 [(mypy_protobuf.casttype)="mymod.UserId"
- map<uint32, string> email_by_uid = 2 [
- (mypy_protobuf.keytype)="path/to/mymod.UserId",
- (mypy_protobuf.valuetype)="path/to/mymod.Email"
- ];
-}
-```
-mymod.py
-```
-UserId = NewType("UserId", int)
-Email = NewType("Email", Text)
-```
-
-### `py_generic_services`
-If `py_generic_services` is set in your proto file, then mypy-protobuf will
-generate service stubs. If you want GRPC stubs instead - use the GRPC instructions.
-
-### `readable_stubs`
-If `readable_stubs` is set, mypy-protobuf will generate easier-to-read stubs. The downside
-to this approach - is that it's possible to generate stubs which do not pass mypy - particularly
-in the case of name collisions. mypy-protobuf defaults to generating stubs with fully qualified
-imports and mangled global-level identifiers to defend against name collisions between global
-identifiers and field names.
-
-If you're ok with this risk, try it out!
-```
-protoc --python_out=output/location --mypy_out=readable_stubs:output/location
-```
-
-### `relax_strict_optional_primitives`
-
-If you are using proto3, then primitives cannot be represented as NULL on the wire -
-only as their zero value. By default mypy-protobuf types message constructors to have
-non-nullable primitives (eg `int` instead of `Optional[int]`). python-protobuf itself will
-internally convert None -> zero value. If you intentionally want to use this behavior,
-set this flag! We recommend avoiding this, as it can lead to developer error - confusing
-NULL and 0 as distinct on the wire.
-However, it may be helpful when migrating existing proto2 code, where the distinction is meaningful
-
-```
-protoc --python_out=output/location --mypy_out=relax_strict_optional_primitives:output/location
-```
-
-### Output suppression
-To suppress output, you can run
-```
-protoc --python_out=output/location --mypy_out=quiet:output/location
-```
-
-### GRPC
-
-This plugin provides stubs generation for grpcio generated code.
-```
-protoc \
- --python_out=output/location \
- --mypy_out=output/location \
- --grpc_out=output/location \
- --mypy_grpc_out=output/location
-```
-
-Note that generated code for grpc will work only together with code for python and locations should be the same.
-If you need stubs for grpc internal code we suggest using this package https://github.com/shabbyrobe/grpc-stubs
-
-### Targeting python2 support
-
-mypy-protobuf's drops support for targeting python2 with version 3.0. If you still need python2 support -
-```
-python3 -m pip install mypy_protobuf==2.10
-protoc --python_out=output/location --mypy_out=output/location
-mypy --target-version=2.7 {files}
-```
-
-
-## Contributing
-Contributions to the implementation are welcome. Please run tests using `./run_test.sh`.
-Ensure code is formatted using black.
-```
-pip3 install black
-black .
-```
-
-## Contributors
-
-### Dropboxers
-- [@nipunn1313](https://github.com/nipunn1313)
-- [@dzbarsky](https://github.com/dzbarsky)
-- [@gvanrossum](https://github.com/gvanrossum)
-- [@peterlvilim](https://github.com/peterlvilim)
-- [@msullivan](https://github.com/msullivan)
-- [@bradenaw](https://github.com/bradenaw)
-- [@ilevkivskyi](https://github.com/ilevkivskyi)
-
-### Others
-- [@Ketouem](https://github.com/Ketouem)
-- [@nmiculinic](https://github.com/nmiculinic)
-- [@onto](https://github.com/onto)
-- [@jcppkkk](https://github.com/jcppkkk)
-- [@drather19](https://github.com/drather19)
-- [@smessmer](https://github.com/smessmer)
-- [@pcorpet](https://github.com/pcorpet)
-- [@zozoens31](https://github.com/zozoens31)
-- [@abhishekrb19](https://github.com/abhishekrb19)
-- [@jaens](https://github.com/jaens)
-- [@arussellsaw](https://github.com/arussellsaw)
-- [@shabbyrobe](https://github.com/shabbyrobe)
-- [@reorx](https://github.com/reorx)
-- [@zifter](https://github.com/zifter)
-- [@juzna](https://github.com/juzna)
-- [@mikolajz](https://github.com/mikolajz)
-- [@chadrik](https://github.com/chadrik)
-- [@EPronovost](https://github.com/EPronovost)
-- [@chrislawlor](https://github.com/chrislawlor)
-- [@henribru](https://github.com/henribru)
-- [@Evgenus](https://github.com/Evgenus)
-- [@MHDante](https://github.com/MHDante)
-- [@nelfin](https://github.com/nelfin)
-- [@alkasm](https://github.com/alkasm)
-- [@tarmath](https://github.com/tarmath)
-
-Licence etc.
-------------
-
-1. License: Apache 2.0.
-2. Copyright attribution: Copyright (c) 2017 Dropbox, Inc.
-3. External contributions to the project should be subject to
- Dropbox's Contributor License Agreement (CLA):
- https://opensource.dropbox.com/cla/
+mypy-protobuf: Generate mypy stub files from protobuf specs
+
+[![CI](https://github.com/dropbox/mypy-protobuf/workflows/CI/badge.svg)](https://github.com/dropbox/mypy-protobuf/actions?query=branch%3Amain)
+[![pypi](https://img.shields.io/pypi/v/mypy-protobuf?logo=Pypi)](https://pypi.org/project/mypy-protobuf/)
+[![license](https://img.shields.io/github/license/dropbox/mypy-protobuf)](https://github.com/dropbox/mypy-protobuf/blob/main/LICENSE)
+===========================================================
+
+2.10 will be the last version of mypy-protobuf which supports targeting python 2.7. Next will be
+mypy-protobuf 3.0 which will auspiciously only support targeting python3
+
+See [Changelog](CHANGELOG.md) for recent changes.
+
+## Requirements to run mypy-protobuf
+[protoc >= 3.17.3](https://github.com/protocolbuffers/protobuf/releases)
+[python-protobuf >= 3.17.3](https://pypi.org/project/protobuf/) - matching protoc release
+[python >= 3.6](https://www.python.org/downloads/source/) - for running mypy-protobuf plugin.
+
+## Requirements to run mypy on stubs generated by mypy-protobuf
+[mypy >= v0.910](https://pypi.org/project/mypy)
+[python-protobuf >= 3.17.3](https://pypi.org/project/protobuf/) - matching protoc release
+[types-protobuf==3.17.3](https://pypi.org/project/types-protobuf/) - for stubs from the google.protobuf library
+
+### To run mypy on code generated with grpc plugin - you'll additionally need
+[grpcio>=1.38.1](https://pypi.org/project/grpcio/)
+[grpcio-tools>=1.38.1](https://pypi.org/project/grpcio-tools/)
+[grpc-stubs>=1.24.6](https://pypi.org/project/grpc-stubs/)
+
+Other configurations may work, but are not supported in testing currently. We would be open to expanding this list if a need arises - file an issue on the issue tracker.
+
+## Installation
+
+The plugin can be installed with
+```
+pip3 install mypy-protobuf
+```
+To install unreleased
+```
+REV=main # or whichever unreleased git rev you'd like
+pip3 install git+https://github.com/dropbox/mypy-protobuf.git@$REV
+
+# For older (1.x) versions of mypy protobuf - you may need
+pip3 install git+https://github.com/dropbox/mypy-protobuf.git@$REV#subdirectory=python
+```
+
+In order to run mypy on the generated code, you'll need to install
+```
+pip3 install mypy>=0.910 types-protobuf>=0.1.14
+```
+
+# Usage
+
+On posix, protoc-gen-mypy is installed to python's executable bin. Assuming that's
+on your $PATH, you can run
+```
+protoc --python_out=output/location --mypy_out=output/location
+```
+Alternately, you can explicitly provide the path:
+```
+protoc --plugin=protoc-gen-mypy=path/to/protoc-gen-mypy --python_out=output/location --mypy_out=output/location
+```
+Check the version number with
+```
+> protoc-gen-mypy --version
+```
+
+## Getting Help
+
+Find other developers in the mypy-protobuf slack workspace ([Invitation Link](https://join.slack.com/t/mypy-protobuf/shared_invite/zt-scogn8b5-MhetFnFYGi6V513aRsbe_Q)). If your company uses slack and mypy-protobuf, you may opt to use slack-connect to make a shared channel.
+
+## Implementation
+
+The implementation of the plugin is in `mypy_protobuf/main.py`, which installs to
+an executable protoc-gen-mypy. On windows it installs to `protoc-gen-mypy.exe`
+
+## Features
+
+See [Changelog](CHANGELOG.md) for full listing
+
+### Bring comments from .proto files to docstrings in .pyi files
+
+Comments in the .proto files on messages, fields, enums, enum variants, extensions, services, and methods
+will appear as docstrings in .pyi files. Useful in IDEs for showing completions with comments.
+
+### Types enum int values more strongly
+
+Enum int values produce stubs which wrap the int values in NewType
+```
+enum MyEnum {
+ FOO = 0;
+ BAR = 1;
+}
+```
+Will yield an [enum type wrapper](https://github.com/python/typeshed/blob/16ae4c61201cd8b96b8b22cdfb2ab9e89ba5bcf2/stubs/protobuf/google/protobuf/internal/enum_type_wrapper.pyi) whose methods type to `MyEnum.V` rather than `int`.
+This allows mypy to catch bugs where the wrong enum value is being used.
+
+mypy-protobuf autogenerates an instance of the EnumTypeWrapper as follows.
+
+```
+class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper):
+ pass
+class _MyEnum:
+ V = typing.NewType('V', builtins.int)
+class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.V], builtins.type):
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
+ FOO = MyEnum.V(0)
+ BAR = MyEnum.V(1)
+FOO = MyEnum.V(0)
+BAR = MyEnum.V(1)
+```
+
+`_MyEnumEnumTypeWrapper` extends the EnumTypeWrapper to take/return MyEnum.V rather than int
+`MyEnum` is an instance of the `EnumTypeWrapper`.
+- Use `_MyEnum` and of metaclass is an implementation detail to make MyEnum.V a valid type w/o a circular dependency
+
+Calling code may be typed as follows.
+
+In python >= 3.7
+```
+# Need [PEP 563](https://www.python.org/dev/peps/pep-0563/) to postpone evaluation of annotations
+from __future__ import annotations # Not needed with python>=3.10
+def f(x: MyEnum.V):
+ print(x)
+f(MyEnum.Value("FOO"))
+```
+
+Note that for usages of cast, the type of `x` must be quoted
+until [upstream protobuf](https://github.com/protocolbuffers/protobuf/pull/8182) includes `V`
+```
+cast('MyEnum.V', x)
+```
+
+### Supports generating type wrappers for fields and maps
+
+M.proto
+```
+message M {
+ uint32 user_id = 1 [(mypy_protobuf.casttype)="mymod.UserId"
+ map<uint32, string> email_by_uid = 2 [
+ (mypy_protobuf.keytype)="path/to/mymod.UserId",
+ (mypy_protobuf.valuetype)="path/to/mymod.Email"
+ ];
+}
+```
+mymod.py
+```
+UserId = NewType("UserId", int)
+Email = NewType("Email", Text)
+```
+
+### `py_generic_services`
+If `py_generic_services` is set in your proto file, then mypy-protobuf will
+generate service stubs. If you want GRPC stubs instead - use the GRPC instructions.
+
+### `readable_stubs`
+If `readable_stubs` is set, mypy-protobuf will generate easier-to-read stubs. The downside
+to this approach - is that it's possible to generate stubs which do not pass mypy - particularly
+in the case of name collisions. mypy-protobuf defaults to generating stubs with fully qualified
+imports and mangled global-level identifiers to defend against name collisions between global
+identifiers and field names.
+
+If you're ok with this risk, try it out!
+```
+protoc --python_out=output/location --mypy_out=readable_stubs:output/location
+```
+
+### `relax_strict_optional_primitives`
+
+If you are using proto3, then primitives cannot be represented as NULL on the wire -
+only as their zero value. By default mypy-protobuf types message constructors to have
+non-nullable primitives (eg `int` instead of `Optional[int]`). python-protobuf itself will
+internally convert None -> zero value. If you intentionally want to use this behavior,
+set this flag! We recommend avoiding this, as it can lead to developer error - confusing
+NULL and 0 as distinct on the wire.
+However, it may be helpful when migrating existing proto2 code, where the distinction is meaningful
+
+```
+protoc --python_out=output/location --mypy_out=relax_strict_optional_primitives:output/location
+```
+
+### Output suppression
+To suppress output, you can run
+```
+protoc --python_out=output/location --mypy_out=quiet:output/location
+```
+
+### GRPC
+
+This plugin provides stubs generation for grpcio generated code.
+```
+protoc \
+ --python_out=output/location \
+ --mypy_out=output/location \
+ --grpc_out=output/location \
+ --mypy_grpc_out=output/location
+```
+
+Note that generated code for grpc will work only together with code for python and locations should be the same.
+If you need stubs for grpc internal code we suggest using this package https://github.com/shabbyrobe/grpc-stubs
+
+### Targeting python2 support
+
+mypy-protobuf's drops support for targeting python2 with version 3.0. If you still need python2 support -
+```
+python3 -m pip install mypy_protobuf==2.10
+protoc --python_out=output/location --mypy_out=output/location
+mypy --target-version=2.7 {files}
+```
+
+
+## Contributing
+Contributions to the implementation are welcome. Please run tests using `./run_test.sh`.
+Ensure code is formatted using black.
+```
+pip3 install black
+black .
+```
+
+## Contributors
+
+### Dropboxers
+- [@nipunn1313](https://github.com/nipunn1313)
+- [@dzbarsky](https://github.com/dzbarsky)
+- [@gvanrossum](https://github.com/gvanrossum)
+- [@peterlvilim](https://github.com/peterlvilim)
+- [@msullivan](https://github.com/msullivan)
+- [@bradenaw](https://github.com/bradenaw)
+- [@ilevkivskyi](https://github.com/ilevkivskyi)
+
+### Others
+- [@Ketouem](https://github.com/Ketouem)
+- [@nmiculinic](https://github.com/nmiculinic)
+- [@onto](https://github.com/onto)
+- [@jcppkkk](https://github.com/jcppkkk)
+- [@drather19](https://github.com/drather19)
+- [@smessmer](https://github.com/smessmer)
+- [@pcorpet](https://github.com/pcorpet)
+- [@zozoens31](https://github.com/zozoens31)
+- [@abhishekrb19](https://github.com/abhishekrb19)
+- [@jaens](https://github.com/jaens)
+- [@arussellsaw](https://github.com/arussellsaw)
+- [@shabbyrobe](https://github.com/shabbyrobe)
+- [@reorx](https://github.com/reorx)
+- [@zifter](https://github.com/zifter)
+- [@juzna](https://github.com/juzna)
+- [@mikolajz](https://github.com/mikolajz)
+- [@chadrik](https://github.com/chadrik)
+- [@EPronovost](https://github.com/EPronovost)
+- [@chrislawlor](https://github.com/chrislawlor)
+- [@henribru](https://github.com/henribru)
+- [@Evgenus](https://github.com/Evgenus)
+- [@MHDante](https://github.com/MHDante)
+- [@nelfin](https://github.com/nelfin)
+- [@alkasm](https://github.com/alkasm)
+- [@tarmath](https://github.com/tarmath)
+
+Licence etc.
+------------
+
+1. License: Apache 2.0.
+2. Copyright attribution: Copyright (c) 2017 Dropbox, Inc.
+3. External contributions to the project should be subject to
+ Dropbox's Contributor License Agreement (CLA):
+ https://opensource.dropbox.com/cla/
diff --git a/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make b/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make
index b63a9d4a51..f681773d08 100644
--- a/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make
+++ b/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make
@@ -1,13 +1,13 @@
-OWNER(torkve g:python-contrib)
-
+OWNER(torkve g:python-contrib)
+
PY3_PROGRAM_BIN(protoc-gen-mypy)
-
-PEERDIR(
- contrib/python/mypy-protobuf
-)
-
-PY_MAIN(mypy_protobuf.main:main)
-
-NO_LINT()
-
-END()
+
+PEERDIR(
+ contrib/python/mypy-protobuf
+)
+
+PY_MAIN(mypy_protobuf.main:main)
+
+NO_LINT()
+
+END()
diff --git a/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make b/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make
index c460171166..2579852a1b 100644
--- a/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make
+++ b/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make
@@ -1,13 +1,13 @@
-OWNER(torkve g:python-contrib)
-
-IF (USE_PREBUILT_TOOLS)
- INCLUDE(${ARCADIA_ROOT}/build/prebuilt/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make.prebuilt)
-ENDIF()
-
-IF (NOT PREBUILT)
- INCLUDE(${ARCADIA_ROOT}/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make)
-ENDIF()
-
-RECURSE(
- bin
-)
+OWNER(torkve g:python-contrib)
+
+IF (USE_PREBUILT_TOOLS)
+ INCLUDE(${ARCADIA_ROOT}/build/prebuilt/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/ya.make.prebuilt)
+ENDIF()
+
+IF (NOT PREBUILT)
+ INCLUDE(${ARCADIA_ROOT}/contrib/python/mypy-protobuf/bin/protoc-gen-mypy/bin/ya.make)
+ENDIF()
+
+RECURSE(
+ bin
+)
diff --git a/contrib/python/mypy-protobuf/bin/ya.make b/contrib/python/mypy-protobuf/bin/ya.make
index b14eec5f93..31721ceca9 100644
--- a/contrib/python/mypy-protobuf/bin/ya.make
+++ b/contrib/python/mypy-protobuf/bin/ya.make
@@ -1,6 +1,6 @@
OWNER(torkve g:python-contrib)
-RECURSE(
- protoc-gen-mypy
- protoc-gen-mypy_grpc
+RECURSE(
+ protoc-gen-mypy
+ protoc-gen-mypy_grpc
)
diff --git a/contrib/python/mypy-protobuf/ya.make b/contrib/python/mypy-protobuf/ya.make
index 4f86fe6bf9..8679bc41c2 100644
--- a/contrib/python/mypy-protobuf/ya.make
+++ b/contrib/python/mypy-protobuf/ya.make
@@ -1,33 +1,33 @@
-PY3_LIBRARY()
-
+PY3_LIBRARY()
+
OWNER(torkve g:python-contrib)
-VERSION(2.10)
+VERSION(2.10)
-LICENSE(Apache-2.0)
+LICENSE(Apache-2.0)
-PEERDIR(
+PEERDIR(
contrib/python/protobuf
-)
-
-NO_LINT()
-
-PY_SRCS(
- TOP_LEVEL
- mypy_protobuf/__init__.py
- mypy_protobuf/extensions_pb2.py
- mypy_protobuf/main.py
-)
-
-RESOURCE_FILES(
- PREFIX contrib/python/mypy-protobuf/
- .dist-info/METADATA
- .dist-info/entry_points.txt
- .dist-info/top_level.txt
-)
-
-END()
-
+)
+
+NO_LINT()
+
+PY_SRCS(
+ TOP_LEVEL
+ mypy_protobuf/__init__.py
+ mypy_protobuf/extensions_pb2.py
+ mypy_protobuf/main.py
+)
+
+RESOURCE_FILES(
+ PREFIX contrib/python/mypy-protobuf/
+ .dist-info/METADATA
+ .dist-info/entry_points.txt
+ .dist-info/top_level.txt
+)
+
+END()
+
RECURSE(
bin
)