Breaking change: fix closed enum validation under editions

See https://protobuf.dev/news/2024-10-02/#python-setter-validation

PiperOrigin-RevId: 707612946
pull/19699/head
Mike Kruskal 5 months ago committed by Copybara-Service
parent 556a42676e
commit 72b3eda2ec
  1. 5
      python/convert.c
  2. 4
      upb/port/def.inc
  3. 1
      upb/port/undef.inc

@ -180,12 +180,7 @@ static bool PyUpb_PyToUpbEnum(PyObject* obj, const upb_EnumDef* e,
} else {
int32_t i32;
if (!PyUpb_GetInt32(obj, &i32)) return false;
#ifdef UPB_FUTURE_PYTHON_CLOSED_ENUM_ENFORCEMENT
if (upb_EnumDef_IsClosed(e) && !upb_EnumDef_CheckNumber(e, i32)) {
#else
if (upb_FileDef_Syntax(upb_EnumDef_File(e)) == kUpb_Syntax_Proto2 &&
!upb_EnumDef_CheckNumber(e, i32)) {
#endif
PyErr_Format(PyExc_ValueError, "invalid enumerator %d", (int)i32);
return false;
}

@ -462,8 +462,4 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
// user code can be updated before upgrading versions of protobuf.
#ifdef UPB_FUTURE_BREAKING_CHANGES
// Properly enforce closed enums in python.
// Owner: mkruskal@
#define UPB_FUTURE_PYTHON_CLOSED_ENUM_ENFORCEMENT 1
#endif

@ -64,4 +64,3 @@
#undef UPB_LINKARR_START
#undef UPB_LINKARR_STOP
#undef UPB_FUTURE_BREAKING_CHANGES
#undef UPB_FUTURE_PYTHON_CLOSED_ENUM_ENFORCEMENT

Loading…
Cancel
Save