Daily edition

Oct 4, 2026

The edition exactly as it was published. Nothing here is re-selected on a later reading.

Oct 5, 20265 reads · 83 merged PRs screened

framework internals

holoviz/panel · #8805

Files changed →View PR ↗

enh: Modernize the admin dashboard with panel.ui and add admin access controlPython · 741 + / 199 −

Introduces 44 new declarations in panel/io/admin.py.

Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.

panel/io/admin.py ↗ · 21 files

@@ -419,74 +445,215 @@ def _unwatch_session_info(session_context):     return total, active, render, duration  def get_overview(doc=None):-    layout = FlexBox(*get_session_info(doc), margin=0, sizing_mode='stretch_width')-    info = get_version_info()+    ui = _ui()+    trends = list(get_session_info(doc))     try:         import psutil  # noqa     except Exception:-        layout.append(info)-        return layout+        process_info = [ui.Alert(+            'Install psutil to monitor the memory and CPU usage of the server.',+            severity='info', sizing_mode='stretch_width', margin=(0, 0, 0, 0)+        )]     else:-        layout.extend([*get_process_info(), info])-        return layout---def log_component():-    # Without this tabulator is empty after reload of website-    log_terminal.param.trigger("value")--    return Column(-        Accordion(-            ('Filters & Download', Row(-                level_filter,-                app_filter,-                session_filter,-                message_filter,-                Column(

language design

rust-lang/rust · #163602

Files changed →View PR ↗

Move media & home dirs tests to fs tests.Rust · 63 + / 67 −

Introduces 3 new declarations in library/std/src/fs/dirs.rs.

Adds new language design rather than adjusting what was there. Read the linked PR for the surrounding test context.

library/std/src/fs/dirs.rs ↗ · 2 files

@@ -519,70 +519,3 @@ impl MediaDirs {         self     } }--#[cfg(test)]-mod tests {-    use super::*;--    fn test_dir(what: &str) -> PathBuf {-        crate::env::current_dir().unwrap().ancestors().last().unwrap().join(what)-    }--    #[test]-    fn test_home_dirs_field_hookup_matches() {-        let mut dirs = HomeDirs::empty();--        assert_eq!(dirs.config_home(), None);-        assert_eq!(dirs.data_home(), None);-        assert_eq!(dirs.state_home(), None);-        assert_eq!(dirs.cache_home(), None);--        let config = test_dir("config");-        let data = test_dir("data");-        let state = test_dir("state");-        let cache = test_dir("cache");--        dirs.set_config_home(config.clone());-        dirs.set_data_home(data.clone());-        dirs.set_state_home(state.clone());-        dirs.set_cache_home(cache.clone());--        assert_eq!(dirs.config_home(), Some(config.as_ref()));-        assert_eq!(dirs.data_home(), Some(data.as_ref()));

language design

TheAlgorithms/Python · #15489

Files changed →View PR ↗

add generic list type hints to double_linear_search_recursionPython · 21 + / 1 −

Introduces 5 new declarations in searches/double_linear_search_recursion.py.

Adds new language design rather than adjusting what was there. Read the linked PR for the surrounding test context.

searches/double_linear_search_recursion.py ↗ · 1 files

@@ -1,4 +1,20 @@-def search(list_data: list, key: int, left: int = 0, right: int = 0) -> int:+from dataclasses import dataclass+from typing import Protocol+++class Comparable(Protocol):+    def __eq__(self, other: object) -> bool: ...+    def __gt__(self, other: Comparable) -> bool: ...+++@dataclass+class Person:+    first_name: str+++def search[T: Comparable](+    list_data: list[T], key: T, left: int = 0, right: int = 0+) -> int:     """     Iterate through the array to find the index of key using recursion.     :param list_data: the list to be searched

core implementation

pandas-dev/pandas · #70219

Files changed →View PR ↗

BUG: .loc setitem with an integer slice on a Decimal indexPython · 4 + / 80 −

Reworks 38 lines of existing logic in pandas/core/indexes/base.py.

Changes how existing core implementation behaves. Tests changed with it, with code of their own.

pandas/core/indexes/base.py ↗ · 9 files

@@ -4289,37 +4283,9 @@ def _convert_slice_indexer(                 self._validate_indexer("slice", key.step, "getitem")                 return key -        # convert the slice to an indexer here; checking that the user didn't-        #  pass a positional slice to loc-        is_positional = is_index_slice and self._should_fallback_to_positional--        # if we are mixed and have integers-        if is_positional:-            try:-                # Validate start & stop-                if start is not None:-                    self.get_loc(start)-                if stop is not None:-                    self.get_loc(stop)-                is_positional = False-            except KeyError:-                pass-         if com.is_null_slice(key):-            # It doesn't matter if we are positional or label based-            indexer = key-        elif is_positional:-            if kind == "loc":-                # GH#16121, GH#24612, GH#31810-                raise TypeError(-                    "Slicing a positional slice with .loc is not allowed, "-                    "Use .loc with labels or .iloc with positions instead.",-                )-            indexer = key-        else:-            indexer = self.slice_indexer(start, stop, step)-

runtime

ggml-org/llama.cpp · #29622

Files changed →View PR ↗

llama: support both embd + raw tokens in batchC++ · 289 + / 94 −

Reworks 117 lines of existing logic in src/llama-batch.cpp.

Changes how existing runtime behaves. Tests changed with it, with code of their own.

src/llama-batch.cpp ↗ · 29 files

@@ -49,32 +49,60 @@ bool llama_batch_allocr::init(     //     // determine the content types of the batch     // an entry can carry a token id, a token embedding, or both (e.g. MTP hook batches)-    // all entries must carry the same combination+    // all entries must carry the same combination, or be a mix of token and embd entries     // -    const bool has_token = batch_inp.tokens[0].id != LLAMA_TOKEN_NULL;-    const bool has_embd  = batch_inp.tokens[0].has_embd;+    int32_t n_tok_only  = 0;+    int32_t n_embd_only = 0;+    int32_t n_both      = 0; -    for (int32_t i = 1; i < n_tok; ++i) {-        if ((batch_inp.tokens[i].id != LLAMA_TOKEN_NULL) != has_token ||-             batch_inp.tokens[i].has_embd                != has_embd) {-            LLAMA_LOG_ERROR("%s: all entries in the batch must have the same content types\n", __func__);+    for (int32_t i = 0; i < n_tok; ++i) {+        const bool is_tok = batch_inp.tokens[i].id != LLAMA_TOKEN_NULL;+        const bool is_emb = batch_inp.tokens[i].has_embd;++        if (!is_tok && !is_emb) {+            LLAMA_LOG_ERROR("%s: entry %d has neither a token id nor an embedding\n", __func__, i);             return false;         }++        n_tok_only  += is_tok && !is_emb;+        n_embd_only += is_emb && !is_tok;+        n_both      += is_tok &&  is_emb;     } -    if (!has_token && !has_embd) {-        LLAMA_LOG_ERROR("%s: batch has neither token ids nor embeddings\n", __func__);

Read today’s edition →