googleapis / googleapis/google-cloud-python

Refactor ProtoEnumMeta to use _ignore_ for _pb_options

Open
#16,911 0 comments 0 reactions 1 assignee Claimed by @chalmerlowe View on GitHub
priority: p2 type: cleanup
Dominant language
Python
Stars
5.4k
Forks
1.8k
Avg merge
3d 4h
Merged PRs (30d)
122

Description

We dropped Python 3.7 support and moved to Python 3.9 as the minimum version. This allows us to use the specialized `_ignore_` attribute in `Enum` to ignore `_pb_options` instead of the current manual removal from `_member_names`. Please effect this change to clean up the code in packages/proto-plus/proto/enums.py rather than using the current cumbersome approach.

```
pb_options = "_pb_options"
opts = attrs.pop(pb_options, {})
# This is the only portable way to remove the _pb_options name
# from the enum attrs.
# TODO: Use _ignore_ attribute to ignore _pb_options (Issue #16911)
if pb_options in attrs._member_names:
if isinstance(attrs._member_names, list):
idx = attrs._member_names.index(pb_opt
attrs._member_names.pop(idx)
elif isinstance(attrs._member_names, set):
attrs._member_names.discard(pb_options
else: # Python 3.11.0b3
del attrs._member_names[pb_options]
```

https://github.com/googleapis/google-cloud-python/blob/daa042330755b0db1853b6e45568ead2a3066f4f/packages/proto-plus/pyproject.toml#L23

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.