Skip to content

Refactor ProtoEnumMeta to use _ignore_ for _pb_options #16911

@chalmerlowe

Description

@chalmerlowe

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]

Metadata

Metadata

Assignees

Labels

priority: p2Moderately-important priority. Fix may not be included in next release.type: cleanupAn internal cleanup or hygiene concern.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions