Selected changesmerged Sep 29, 2026
DRA ResourceSlice + ResourceClaim[Template]: reject qualified names with more than one slashGo · 72 + / 83 −
Introduces 8 new declarations in pkg/apis/resource/validation/validation.go.
Adds new systems design rather than adjusting what was there. Tests changed with it, with code of their own.
pkg/apis/resource/validation/validation.go ↗ · 5 files
@@ -1074,31 +1069,33 @@ func validateDevice(device resource.Device, oldDevice *resource.Device, fldPath } allErrs = append(allErrs, validateMap(device.Attributes, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateDeviceAttribute, fldPath.Child("attributes"))...)- // If the entire capacity is the same as before then validation can be skipped.- // We could also do the DeepEqual on the entire spec, but here it is a bit cheaper.- if oldDevice == nil || !apiequality.Semantic.DeepEqual(oldDevice.Capacity, device.Capacity) {- if allowMultipleAllocations {- allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateMultiAllocatableDeviceCapacity, fldPath.Child("capacity"))...)- } else {- allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateSingleAllocatableDeviceCapacity, fldPath.Child("capacity"))...)- }- }- // If the entire set is the same as before then validation can be skipped.- // We could also do the DeepEqual on the entire spec, but here it is a bit cheaper.- if oldDevice == nil || !apiequality.Semantic.DeepEqual(oldDevice.Taints, device.Taints) {- allErrs = append(allErrs, validateSlice(device.Taints, resource.DeviceTaintsMaxLength,- func(taint resource.DeviceTaint, fldPath *field.Path) field.ErrorList {- return validateDeviceTaint(taint, nil, fldPath)- },- fldPath.Child("taints"))...)+ if allowMultipleAllocations {+ allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateMultiAllocatableDeviceCapacity, fldPath.Child("capacity"))...)+ } else {+ allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateSingleAllocatableDeviceCapacity, fldPath.Child("capacity"))...) }+ allErrs = append(allErrs, validateSlice(device.Taints, resource.DeviceTaintsMaxLength,+ func(taint resource.DeviceTaint, fldPath *field.Path) field.ErrorList {+ return validateDeviceTaint(taint, nil, fldPath)+ },+ fldPath.Child("taints"))...) allErrs = append(allErrs, validateSet(device.ConsumesCounters, resource.ResourceSliceMaxDeviceCounterConsumptionsPerDevice, validateDeviceCounterConsumption,
add `Div` and `Mul` for `Complex<{float}>`Rust · 74 + / 1 −
Introduces 6 new declarations in library/core/src/num/complex.rs.
Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.
library/core/src/num/complex.rs ↗ · 4 files
@@ -91,3 +92,54 @@ impl<T: Sub<Output = T>> Sub<T> for Complex<T> { Complex::new(self.re - rhs, self.im) } }++macro_rules! impl_complex_mul_div {+ ($ty:ty, $mul:ident, $div:ident) => {+ #[unstable(feature = "complex_numbers", issue = "154023")]+ impl Mul for Complex<$ty> {+ type Output = Self;++ #[inline]+ fn mul(self, rhs: Self) -> Self::Output {+ let Complex { re: a, im: b } = self;+ let Complex { re: c, im: d } = rhs;++ let ac = a * c;+ let bd = b * d;+ let ad = a * d;+ let bc = b * c;++ let z = Complex::new(ac - bd, ad + bc);++ // Only call the libcall when both components are NaN.+ //+ // The naive algorithm would return NaN + NaNi for an input like+ // (1 + 0i) * (inf + infi). The libcall instead returns inf + infi.+ //+ // We duplicate the fast path here so that it can be inlined. We use a libcall+ // for the NaN correction to reduce the size of `core`.+ if z.re.is_nan() && z.im.is_nan() {+ crate::hint::cold_path();+ $mul(a, b, c, d)+ } else {
Scope client component loading metrics to HTML rendersTypeScript · 361 + / 173 −
Introduces 4 new declarations in packages/next/src/server/app-render/app-render.tsx.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
packages/next/src/server/app-render/app-render.tsx ↗ · 21 files
@@ -3202,66 +3241,76 @@ async function renderAppPage( contentType: HTML_CONTENT_TYPE_HEADER, } - const stream = await renderToStream(- // NOTE: in Cache Components (dev), if the render is restarted, it will use a different requestStore- // than the one that we're passing in here.- requestStore,- req,- res,- ctx,- loaderTree,- formState,- postponedState,- metadata,- // If we're rendering HTML after an action, we don't want restartable-render behavior- // because the result should be dynamic, like it is in prod.- // Also, the request store might have been mutated by the action (e.g. enabling draftMode)- // and we currently we don't copy changes over when creating a new store,- // so the restarted render wouldn't be correct.- didExecuteServerAction ? undefined : createRequestStore,- stagedFallbackParams- )-- // Forward an invalid-dynamic-usage error recorded by `'use cache'` only- // when userland caught it (try/catch around the cache call). If userland- // didn't catch, the rejection propagated into the React render, and React's- // `serverComponentsErrorHandler` already stamped a digest on the error and- // emitted it as a Flight error chunk — surfacing it again here would- // duplicate the entry in the dev overlay.- //- // The cacheComponents paths forward this themselves via- // `runValidationInDev` and the validation-skipped fallback in- // `generateDynamicFlightRenderResultWithStagesInDev`. Here we cover the
TYP: define DatetimeIndex attributes explicitly instead of via inherit_names (GH#32100)Python · 599 + / 33 −
Introduces 14 new declarations in pandas/core/indexes/datetimes.py.
Adds new core implementation rather than adjusting what was there. Read the linked PR for the surrounding test context.
pandas/core/indexes/datetimes.py ↗ · 1 files
@@ -466,6 +665,373 @@ def strftime(self, date_format) -> Index: arr = self._data.strftime(date_format) return Index(arr, name=self.name, dtype=arr.dtype, copy=False) + def month_name(self, locale=None) -> Index:+ """+ Return the month names with specified locale.++ This method returns the full name of the month (e.g., "January", "February")+ for each datetime value in the Series/Index. The names can be localized+ to different languages using the locale parameter.++ Parameters+ ----------+ locale : str, optional+ Locale determining the language in which to return the month name.+ Default is English locale (``'en_US.utf8'``). Use the command+ ``locale -a`` on your terminal on Unix systems to find your locale+ language code.++ Returns+ -------+ Index+ Index of month names.++ See Also+ --------+ DatetimeIndex.day_name : Return the day names with specified locale.++ Examples+ --------+ >>> idx = pd.date_range(start="2018-01", freq="ME", periods=3)+ >>> idx+ DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31'],
BUG: convert to plain ndarray in `np.histogramdd`Python · 20 + / 12 −
Introduces 2 new declarations in numpy/lib/_histograms_impl.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
numpy/lib/_histograms_impl.py ↗ · 5 files
@@ -275,9 +275,23 @@ def _hist_bin_auto(x, range): 'sturges': _hist_bin_sturges} -def _ravel_and_check_weights(a, weights):- """ Check a and weights have matching shapes, and ravel both """+def _asarray_and_check_weights(a, weights, weights_shape=None):+ """ Convert a and weights to base ndarrays and check weights shape """ a = np.asarray(a)+ if weights is not None:+ weights = np.asarray(weights)+ if weights_shape is None:+ weights_shape = a.shape+ if weights.shape != weights_shape:+ raise ValueError(+ 'weights should have the same shape as the sample points, '+ f'expected {weights_shape} but got {weights.shape}.')+ return a, weights+++def _asarray_and_ravel(a, weights):+ """ Convert and check a and weights, and ravel both """+ a, weights = _asarray_and_check_weights(a, weights) # Ensure that the array is a "subtractable" dtype if a.dtype == np.bool: