Update 5.x variant for ROOT 6.20 patches

Checklist

[ ] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.
Here's what I've got...
For recipe:

The build section contained an unexpected subsection name. version is not a valid subsection name.
The build section contained an unexpected subsection name. activate_in_script is not a valid subsection name.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

It looks like the 'clang_variant' output doesn't have any tests.

@conda-forge/clangdev Ready for review. I haven’t bumped the build number as it’s only adding yet another version of the variant.

@conda-forge/clangdev Is anyone available to review?


Tobin gh1162 inactive dynamic bindings

Fixes #1162
Added a mapping between dynamic descriptor bindings and their associated index into the dynamic offset array.
Also added a positive test that fails without the fix but now works

cherry-picked and pushed to master


How to move yabai into the future?  ideas / visions / cross OS / nested layouts / new JS like action/selection language

First of all I know that I could be scripting it all up
using signals etc. But maybe it's not the best design pattern.
Imagine yabai would have layout plugins like this:
layout_plugin = {
  name
  activate_for_space : () => initial layout of windows,
  deactivate_for_space : () => initial layout of windows,
  new_window : () => .. // new window appeared, adopt layout
  drag_drop: { hover: (coord) => ., dropped: () => ..}
  selectors: ..
  command: (command: string[]) => ...
}
and some state tracking like recent window(s), so that an appearing window can
be put into column of last active window

Then a wmii like or other plugin could be written to place windows the way you want.
Mostly I use EDITOR | BROWSER like here:

So there are columns, you can add windows to. Then you have different ways to display:
evenly spaces (can be changed), stack like (one is visible) or stacked with labels.
I ended up using only the stacked maximized version recalling from memory always
having 'terminal' below my editor or full screen mode if I need more.
So main question is does it make sense to allow writing layout managers as plugins
eventually adding a scripting language ?
So a plugin basically would be a selection of signals and behaviors
chosen by the user to be active for a space which once chosen to be active
rearrange the windows according to the plugins.
WMII ships with wmii menu. It allows to tab complete existing words and enter own text. Perfect for creating 'spaces with label' or reuse if it exists. What might be the easiest way to get such feature ?

"Layouting" is very much an opinionated thing, and there is inherently nothing wrong with a plugin system like you are suggesting. I imagine it would be quite a bit of work to implement this robustly on top of the current yabai model though.
With that said..
The layouting performed in yabai is tightly coupled to the bsp system, which I think is a mistake today.
It was built based on my experience using bspwm on Linux in the past, and I also wouldn't be using bspwm today.
The best way I can describe the problem is that it is highly flexible, in a bad way. It works very well for daily ad-hoc usages where you use 1 or 2 (maybe even 3) windows per space and open/close windows regularly (browser, editor, terminal, video player). Anything more sophisticated and it goes out the window.
I have various ideas I'd love to try do make things work very differently, but can't really implement on macOS because we are not fully in control of the window server.
I have not been very interested in this kind of work for a long time, so this project is mostly in a maintenance state and has been so for a long time at this point.

I'd be interested in your visions :-) (maybe VR and 3d :-)
AFAIK:

you have notifications (move, resize, new, destroy) of windows
you can move/resize windows
-> this is enough to implement everything you dream of

But to be honest I'd love to see this for Windows/Linux, too :-)
So a cross platform API would be fun to have.
I came up with the following sketch thinking it through.
I agree it would be a bigger change cause it would not be backward compatible.
But eventually backward compatibility could be maintained.
Allow nested layouts.
Change the rigid move warp whatever into JS like language.
Basically the object is either window or layout.
Then you can walk the tree by methods. (like jquery)
Implement layout specific features like rotate90 by sending the command to it
as string. (should be flexible enough)
Same for moving. Eg moving beyond first means escalating to parent Layout ?
Then you can tabs, stacks, WMII like columns etc implemented maybe easily.
Eg special behavior moving right(east) within WMIIColumns means adding new
column and placing window into it.
So even nested Stuff Like WMiiColumns ( _, WMIIColumn( Tabs ( win )))
moving win to the right escalates Tabs and WMIIColumn but WMIIColumns will catch and
add Column to the right and place window there.
But there is a lot more. Eg if you make windows float in WMII it recalls which
column a window came from. So when turning a window into float mode it could
reference Layout parents to which it could be attached again when unfloating
example:

Each container contains windows or layouts. So a layout is a container.

interface layout: {
  create: (parent, win_ids or old_layout) -> when switching to this layout

  add_window:

  containter_and_windows : list of containters and or windows for iteration

  change_layout : (win_Id or container_id, new_layout)

  // user used mouse to move ! try to cope and adopt
  window_moved (win, old_pos, new_pos) => .. resize everything or bubble up

  window_move_take_over_from_inner: called from inner layout if a window gets moved north leaving the inner container

  // unique interface for selecting or moving windows or other state changes
  // user's keyboard actions
  // will bubble from the inside out or such till some layout handles it ?
  // of course some CSS like selector or such would be imaginable such as
  // LayoutWMIIColumns>window.move.north or LayoutStack>window.move.north
  // or focused.-3... would mean go 3 levels up from focused ..
  action:
    select.(next|prev|north|.3)
    move.(next|prev|north|.3)
    rotate90
    containertype.XX switch to containertype XX   -> #dis

}

implementations

LayoutDisplays { // for each connected display hold one container
  container_for_each_display: ..
}

LayoutWMIIColumns {
}

LayoutWMIIColumn {
}

LayoutBsp {
}

LayoutTabs {
}

LayoutStack {
}

LayoutNone {
  // This basically is floating user needs to positino windows, don't touch
  // their location at all
}

LayoutFixedDisplay

So WMII would be

LayoutDisplays {
    floating: [win10, win11]

    // Monitor1
    LayoutFixedDisplay{
      LayoutWMIIColumns {  // when moving left/right ouf outer columns, adds new column
        LayoutWMIIColumn { // when moving window right/left hands over to parent
          win1, win2, win3
        }
        LayoutStack {
          // moving top/bottom changes order, when moving beyond first/last
          // hands over to parent which fails in this case
          // because WMIIColumns only handles moving left/right
          win20, win30
        }
      }
    },

    // Monitor2
    LayoutFixedDisplay{
      // no window on snd monitor, so no layout chosen yet ?
    }

  ]
}

#dis if you allow nested containers having one window focused within containers

Imagine you have this layout

Layout2Columns {
  LayoutBsp
    win1
    LayoutTabs
      win2, win3(SELECTED)

  LayoutFloat (within right half of 2columns you can position windows you as you want)
    win5, win10
}

Now you click win3, and want to change LayoutBsp to LayoutWMIIColumn.
Then yabai could imagine walking up the tree and selecting the layoutmanagers
till you have selected the one you want to change. So the state of yabai would be
  yabai_selected: window or invisible layout manager
  osx_selected: the window

Introducing CSS like or JS like navigation would make everything simple:

  osx_selected.select_parent().change_layout(LayoutWMIIColumn)
  osx_selected.walk_till_instance(LayoutWMII).change_layout(...)
  osx_selected.send('move:north')
  osx_selected.opacitiy(0.2)
  osx_selected.change_layout(LayoutWMIIColumns) -> if window, change into layout, then add window

...

https://github.com/koekeishiya/yaerbai/issues/193 might be another use case for adding additional layers to manage/swap spaces on multiple displays at the same time. Cause I want to focus on a topic which might occupy 2 displays. What I noticed is that warping window west doesn't warp on second display. So you cannot move a window using warp west to the free display. With WMII this is exactly what happens. You keep moving to next column, if the screen is free it will just be added one and the window will be moved there.

WMII behavse the following way:
maximize window -> make it float full screen
The advantage is that if you need more windows
eg when browsing you can cycle all floating windows easily.
And the default bsp binary divisions layout doens't work for me at all.
Cause I constantly need to review 200 grep lines, open a browser
So I almost always need full height of the screen.
The main question is how easy is it to change the code
to allow mulitple layout engines and how to start this process to make
everyone happy and other features are on the wish list ?
I don't understand what 'patching dock' acutally works and how the pieces work
together yet. Also do you think adding scripting language makes sense and if
so which one? Lua is used often in similar context. But there are also various
JS libaries which could be considered.
If you use 2 displays what's limiting moving focus to the other space
by keyboard using east/west like commands for instance ?

Here are 2 references to illustrate that Window managegrs on Linux and Windows
can be done, too. The question basically is whether we can / want to come up
with a design which might serve multiple OS.
https://github.com/qtile/qtile/tree/ff90e5cfae7418ad62d0accc3cb38757fca2cdb9/libqtile/layout
columns -> wmii like
screensplit / slice -> nested layouts
...
Windows manager:
https://github.com/LGUG2Z/komorebi Windows /Rust

Window managers on macOS work fairly differently to window managers on Windows and (especially) Linux. There is just no reason to take on that additional complexity for this project. Linux already has a rich ecosystem for both X11 and Wayland at this point. Windows has a fair share of choices these days as well.

One of my favorite window managers is Forge. I recommend trialing it on a Gnome VM if you have the chance https://github.com/forge-ext/forge
One of my favorite features is the ability to group windows into a set of tabs. It's really helpful when I'm working within a same application on two separate projects concurrently.

What I'd do if I had full control is to create an "infinite grid" where each window would correspond to one tile in this grid. There would be keyboard shortcuts to manipulate the viewport of this grid (move viewport around, increase/decrease the number of visible tiles in any spatial direction), effectively pulling those windows into actual screen view.
Each tile would correspond to a fullscreen window, but as you increase tiles the actual render size of the windows change to accomodate the additional windows that need to be rendered in any direction. If a window escapes screen boundaries due to min size requirements it would be rendered partially, and you could either scroll the grid into view, or have it adjust/shift the viewport automatically upon focus.

Feels like VR/3d :-)  But zooming in/out and hardware resources are not well defined eventually. But GPU rendering actually comes close because it only renders the pixels viewed. And VR even has logic to render less pixels in the outer areas of the view because the eye is less sharp there. But if you imagine 20 inkscape istances with SVG graphics and millions of lines you eventually don't want your CPU to waste energy on repainting whenever you zoom :-(.
So there is a reason things are still 2d mostly. Maybe requiring less resources. The best work is the one you never do. However all the composing window managers they render using hardware then use compositor logic on graphic card to render the final view (compiz and the many others). For Linux there is arcan allowing to create your own WM . That might be a nice starting point for experimenting with such design. Now problem is 4K on each eye cable to VR -> quality loss. Wifi -> same. And some linux drivers cannot cope well with VR cause they are slower (or my old nvidia K6000 is the problem) but having a lot of lag is bad. There might be a reason Meta focused on Windows. OSX had a fun bubble zoom like thing at the bottom. And many "ZOOM" in features might come close. like having the grid and you just click and zoom. and when zoomed moving the mouse moves everything, too. (anydesk gives that feeling if the other screen is bigger, too). I tried treating my brain as CPU making WMII be the task scheduler: "Next please". So if a compilation takes some time .. next please. block this for 20min (cause waiting for email) .. etc. So having the burden to look at a grid all the time kinda drains me. Same about finding >>word<< icons on windows which changed shape color locations every year.  How does Pico4 etc work? The apps mode (eg browser) is limited in size.  What I had in mind was using the head orientation and nose direction to control focus/ mouse (could be controlling the grid viewport). There is some open source AI software using webcam to learn head direction from video... But there is only so much time / day. If you start imagining 3d you can alos place windows like photo slides and whatnot.  There is alt-tab something. Like windows it creates screenshots of windows and allows to cycle. So with such images you eventually could get the grid and once you select something you could focus the window or zoom to it. No idea whether it updates the images in realtime.
I played around with luajit. And I know that you can put a pointer to a struct on the stack and define a C struct definition then access the fields from lua. Luajit is small and fast and available on all important platforms. It can also be used from Python :-) There is a C# port (moonphase) for lua. So it feels like Windows, OSX, and Python (eg qtilte) to get started could be supported.
I tried getting started reading all the code. I am slow. but loop.c eg has concurrency stuff built in.
Can I just replace all the code in the event handlers with calling into lua and start building the window manager there?
There would be one eventual drawback passing pointers from C like into lua: If you access data beyond .. you might get a crash.
I use tabs mostly with shells. And the terminals I use have tabs built in. And tabs in editor. So having tabs isn't most important to me. I end up with 2 columns maybe having 8 windows and if there are more I have an attic column to move windows there.. Sometimes stacking some in float mode cycling them. That eventually is not perfect. But the cool thing is they location of the windows never changes. So I can access them by muscle memory without thinking from memory.
Yabay somehow always rearranges the windows which I am not used to (maybe don't want to get used to?).

What I'd do if I had full control is to create an "infinite grid" where each window would correspond to one tile in this grid. There would be keyboard shortcuts to manipulate the viewport of this grid (move viewport around, increase/decrease the number of visible tiles in any spatial direction), effectively pulling those windows into actual screen view.
Each tile would correspond to a fullscreen window, but as you increase tiles the actual render size of the windows change to accomodate the additional windows that need to be rendered in any direction. If a window escapes screen boundaries due to min size requirements it would be rendered partially, and you could either scroll the grid into view, or have it adjust/shift the viewport automatically upon focus.

@koekeishiya  I haven't had the chance to try it out yet, but I found the Wayland composter niria while ago which sounds like exactly what you're describing
(also 👋 I was a heavy user of chunkwm and kwm back in the day but then switched to Linux ~5 years ago. Now I'm coming back to yabai because my employer said no more Linux)


[BUG] @self media image path is not updated when page is ordered

When I change page order (Folder Numeric Prefix is enabled) @self media images path inside the .md file is not updated.
I have a page which name is Jobs and that page has 05. prefix and my .md file for their inner page look like:
image:
    user/pages/05.jobs/data-scientist-machine-learning-developer-m-f-d/AczI4qr71un8S5d.svg:
        name: AczI4qr71un8S5d.svg
        type: image/svg+xml
        size: 3449
        path: user/pages/05.jobs/data-scientist-machine-learning-developer-m-f-d/AczI4qr71un8S5d.svg

When I move the page and change the order to 06.jobs my path is still looking for the image inside folder 05.jobs and I get error message 404 not found ...
Does anyone know how I can solve this problem? Thanks!

Yup, this is a known issue when moving pages.

@mahagr can we expect a fix in some of the recent updates?

This is not an easy fix, and a bit of an edge case for most users, so priority is a bit low. So no plans to fix this one right now...

The picture should be available by:
/jobs/data-scientist-machine-learning-developer-m-f-d/AczI4qr71un8S5d.svg

I would change the image to be without any path (relative to the page), but as @rhukster said, it is not an easy fix with the current Page architecture. I do have plans to fix it, but it will not happen in Grav 1.6 nor with the current Page classes.


Add support for Exllama

Description: Integrate exllama as an LLM,
Issue:  #8385 ,
Dependencies: https://github.com/jllllll/exllama

Referenced https://github.com/CoffeeVampir3/exllama-langchain-example/tree/master

@EkChinHui
Running your script outputs each token twice. I tried different models and it's the same.
"
Here is an example of an output :
TheThe New New England England Patri Patriotsots won won Super Super Bowl Bowl XXX XXXVVIIIIII ( (XXXXXXVVIIIIII refers refers to to Roman Roman numer numeralsals for for 3 388)) on on January January 3 311,, 2 2000044.. Justin Justin B Bieieberber was was born born on on March March 1 1,, 1 1999944.."
After checking your code, there is this at the end of your Exllama's _stream function :
            elif status == self.MatchStatus.NO_MATCH:
                if run_manager:
                    run_manager.on_llm_new_token(
                        token=match_buffer,
                        verbose=self.verbose,
                    )

                # yield match_buffer  # Not a stop, yield the match buffer.
                # match_buffer = ""
                chunk = GenerationChunk(text=match_buffer)
                yield chunk  # Not a stop, yield the match buffer.
                if run_manager:
                    run_manager.on_llm_new_token(token=chunk.text, verbose=self.verbose)
                match_buffer = ""

The problems seems to come from this :
                if run_manager:
                    run_manager.on_llm_new_token(token=chunk.text, verbose=self.verbose)

When removing it, it works :
The New England Patriots won Super Bowl XXXVIII (XXXVIII refers to Roman numerals for 38) on January 31, 2004. Justin Bieber was born on March 1, 1994.

hi @EkChinHui, apologies for the slow review. saw that there's a new version of exllama, worth switching to use that? https://github.com/turboderp/exllamav2

Hey, I'm not the contributor of the pull request but I'm the one who created the issue.
Apparently v2 is faster,and it is also more updated than exllama v1.
I will try it and update the scripts if needed and notify you when it's done.

https://pypi.org/project/exllamav2/

I'm working on it. Will merge once it's done

exllamav2 would be a huge boost for langchain. What is the current status of the PR ?

I will start working on adding Exllamav2 to langchain
Meanwhile, here is a complete script that will let you use the ExllamaV1 with langchain written by @EkChinHui & adapted by me
almost all GPTQ models work with that, except some latest models that have a wider vocab like 'CapybaraHermes-2.5-Mistral-7B-GPTQ' which raise an 'IndexError: Out of range: piece id is out of range'. I will handle that in the v2 script.
import glob
import os
from typing import Any, Callable, Dict, Iterator, List, Optional

from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.chains import LLMChain
from langchain.llms.base import LLM
from langchain.schema.output import GenerationChunk
from langchain_core.callbacks import StreamingStdOutCallbackHandler
from langchain_core.prompts import PromptTemplate
from pydantic.v1 import Field, root_validator

class Exllama(LLM):
    """Exllama API.

    To use, you should have the exllama library installed, and provide the
    path to the Llama model as a named parameter to the constructor.
    Check out: https://github.com/jllllll/exllama

    Example:
        .. code-block:: python

        from langchain.llms import Exllama
        llm = Exllama(model_path="/path/to/llama/model")
    """

    client: Any  #: :meta private:
    model_path: str
    """The path to the GPTQ model folder."""
    exllama_cache: Any = None  #: :meta private:
    config: Any = None  #: :meta private:
    generator: Any = None  #: :meta private:
    tokenizer: Any = None  #: :meta private:

    # Langchain parameters
    logfunc = print
    stop_sequences: List[str] = Field("")
    """Sequences that immediately will stop the generator."""

    streaming: Optional[bool] = Field(True)
    """Whether to stream the results, token by token."""

    # Generator parameters
    disallowed_tokens: Optional[List[int]] = Field(None)
    """List of tokens to disallow during generation."""

    temperature: Optional[float] = Field(None)
    """Temperature for sampling diversity."""

    top_k: Optional[int] = Field(None)
    """Consider the most probable top_k samples, 0 to disable top_k sampling."""

    top_p: Optional[float] = Field(None)
    """Consider tokens up to a cumulative probabiltiy of top_p,
    0.0 to disable top_p sampling."""

    min_p: Optional[float] = Field(None)
    """Do not consider tokens with probability less than this."""

    typical: Optional[float] = Field(None)
    """Locally typical sampling threshold, 0.0 to disable typical sampling."""

    token_repetition_penalty_max: Optional[float] = Field(None)
    """Repetition penalty for most recent tokens."""

    token_repetition_penalty_sustain: Optional[int] = Field(None)
    """No. most recent tokens to repeat penalty for, -1 to apply to whole context."""

    token_repetition_penalty_decay: Optional[int] = Field(None)
    """Gradually decrease penalty over this many tokens."""

    beams: Optional[int] = Field(None)
    """Number of beams for beam search."""

    beam_length: Optional[int] = Field(None)
    """Length of beams for beam search."""

    # Config overrides
    max_seq_len: int = Field(2048)
    """Reduce to save memory. Can also be increased,
    ideally while also using compress_pos_emn and a compatible model/LoRA"""

    compress_pos_emb: Optional[float] = Field(1.0)
    """Amount of compression to apply to the positional embedding."""

    set_auto_map: Optional[str] = Field(None)
    """Comma-separated list of VRAM (in GB) to use per GPU device for model layers,
    e.g. 20,7,7"""

    gpu_peer_fix: Optional[bool] = Field(None)
    """Prevent direct copies of data between GPUs"""

    alpha_value: Optional[float] = Field(1.0)
    """Rope context extension alpha"""

    # Tuning
    matmul_recons_thd: Optional[int] = Field(None)
    fused_mlp_thd: Optional[int] = Field(None)
    sdp_thd: Optional[int] = Field(None)
    fused_attn: Optional[bool] = Field(None)
    matmul_fused_remap: Optional[bool] = Field(None)
    rmsnorm_no_half2: Optional[bool] = Field(None)
    rope_no_half2: Optional[bool] = Field(None)
    matmul_no_half2: Optional[bool] = Field(None)
    silu_no_half2: Optional[bool] = Field(None)
    concurrent_streams: Optional[bool] = Field(None)

    # Lora Parameters
    lora_path: Optional[str] = Field(None, description="Path to your lora.")

    @staticmethod
    def get_model_path_at(path: str) -> Optional[str]:
        patterns = ["*.safetensors", "*.bin", "*.pt"]
        model_paths = []
        for pattern in patterns:
            full_pattern = os.path.join(path, pattern)
            model_paths = glob.glob(full_pattern)
            if model_paths:  # If there are any files matching the current pattern
                break  # Exit the loop as soon as we find a matching file
        if model_paths:  # If there are any files matching any of the patterns
            return model_paths[0]
        else:
            return None  # Return None if no matching files were found

    @staticmethod
    def configure_object(
        params: List[str], values: Dict[str, Any], logfunc: Callable[[str], None]
    ) -> Callable[[str], None]:
        obj_params = {k: values.get(k) for k in params}

        def apply_to(obj: str) -> None:
            for key, value in obj_params.items():
                if value:
                    if hasattr(obj, key):
                        setattr(obj, key, value)
                        logfunc(f"{key} {value}")
                    else:
                        raise AttributeError(f"{key} does not exist in {obj}")

        return apply_to

    @root_validator()
    def validate_environment(cls, values: Dict[str, Any]) -> Dict[str, Any]:
        try:
            from exllama.generator import ExLlamaGenerator
            from exllama.lora import ExLlamaLora
            from exllama.model import ExLlama, ExLlamaCache, ExLlamaConfig
            from exllama.tokenizer import ExLlamaTokenizer
        except ImportError:
            raise ImportError(
                "Could not import exllama library. "
                "Please install the exllama library with (cuda 11.8 is required)"
                "!python -m pip install git+https://github.com/jllllll/exllama"
            )
        model_path = values["model_path"]
        lora_path = values["lora_path"]

        tokenizer_path = os.path.join(model_path, "tokenizer.model")
        model_config_path = os.path.join(model_path, "config.json")
        model_path = Exllama.get_model_path_at(model_path)

        config = ExLlamaConfig(model_config_path)
        tokenizer = ExLlamaTokenizer(tokenizer_path)
        config.model_path = model_path

        # Set logging function if verbose or set to empty lambda
        verbose = values["verbose"]
        if not verbose:
            values["logfunc"] = lambda *args, **kwargs: None
        logfunc = values["logfunc"]

        model_param_names = [
            "temperature",
            "top_k",
            "top_p",
            "min_p",
            "typical",
            "token_repetition_penalty_max",
            "token_repetition_penalty_sustain",
            "token_repetition_penalty_decay",
            "beams",
            "beam_length",
        ]

        config_param_names = [
            "max_seq_len",
            "compress_pos_emb",
            "gpu_peer_fix",
            "alpha_value",
        ]

        tuning_parameters = [
            "matmul_recons_thd",
            "fused_mlp_thd",
            "sdp_thd",
            "matmul_fused_remap",
            "rmsnorm_no_half2",
            "rope_no_half2",
            "matmul_no_half2",
            "silu_no_half2",
            "concurrent_streams",
            "fused_attn",
        ]

        configure_config = Exllama.configure_object(config_param_names, values, logfunc)
        configure_config(config)
        configure_tuning = Exllama.configure_object(tuning_parameters, values, logfunc)
        configure_tuning(config)
        configure_model = Exllama.configure_object(model_param_names, values, logfunc)

        # Special parameter, set auto map, it's a function
        if values["set_auto_map"]:
            config.set_auto_map(values["set_auto_map"])
            logfunc(f"set_auto_map {values['set_auto_map']}")

        model = ExLlama(config)
        exllama_cache = ExLlamaCache(model)
        generator = ExLlamaGenerator(model, tokenizer, exllama_cache)

        # Load and apply lora to generator
        if lora_path is not None:
            lora_config_path = os.path.join(lora_path, "adapter_config.json")
            lora_path = Exllama.get_model_path_at(lora_path)
            lora = ExLlamaLora(model, lora_config_path, lora_path)
            generator.lora = lora
            logfunc(f"Loaded LORA @ {lora_path}")

        # Configure the model and generator
        values["stop_sequences"] = [x.strip().lower() for x in values["stop_sequences"]]

        configure_model(generator.settings)
        setattr(generator.settings, "stop_sequences", values["stop_sequences"])
        logfunc(f"stop_sequences {values['stop_sequences']}")

        disallowed = values.get("disallowed_tokens")
        if disallowed:
            generator.disallow_tokens(disallowed)
            print(f"Disallowed Tokens: {generator.disallowed_tokens}")

        values["client"] = model
        values["generator"] = generator
        values["config"] = config
        values["tokenizer"] = tokenizer
        values["exllama_cache"] = exllama_cache

        return values

    @property
    def _llm_type(self) -> str:
        """Return type of llm."""
        return "Exllama"

    def get_num_tokens(self, text: str) -> int:
        """Get the number of tokens present in the text."""
        return self.generator.tokenizer.num_tokens(text)

    def _call(
        self,
        prompt: str,
        stop: Optional[List[str]] = None,
        run_manager: Optional[CallbackManagerForLLMRun] = None,
        **kwargs: Any,
    ) -> str:
        combined_text_output = ""
        for chunk in self._stream(prompt=prompt, stop=stop, run_manager=run_manager):
            combined_text_output += chunk.text
        return combined_text_output

    from enum import Enum

    class MatchStatus(Enum):
        EXACT_MATCH = 1
        PARTIAL_MATCH = 0
        NO_MATCH = 2

    def match_status(self, sequence: str, banned_sequences: List[str]) -> MatchStatus:
        sequence = sequence.strip().lower()
        for banned_seq in banned_sequences:
            if banned_seq == sequence:
                return self.MatchStatus.EXACT_MATCH
            elif banned_seq.startswith(sequence):
                return self.MatchStatus.PARTIAL_MATCH
        return self.MatchStatus.NO_MATCH

    def _stream(
        self,
        prompt: str,
        stop: Optional[List[str]] = None,
        run_manager: Optional[CallbackManagerForLLMRun] = None,
        **kwargs: Any,
    ) -> Iterator[GenerationChunk]:
        # config = self.config
        generator = self.generator
        beam_search = (
            self.beams
            and self.beams >= 1
            and self.beam_length
            and self.beam_length >= 1
        )

        ids = generator.tokenizer.encode(prompt)
        generator.gen_begin_reuse(ids)

        if beam_search:
            generator.begin_beam_search()
            token_getter = generator.beam_search
        else:
            generator.end_beam_search()
            token_getter = generator.gen_single_token

        last_newline_pos = 0
        match_buffer = ""

        seq_length = len(generator.tokenizer.decode(generator.sequence_actual[0]))
        response_start = seq_length
        cursor_head = response_start

        while generator.gen_num_tokens() <= (
            self.max_seq_len - 4
        ):  # Slight extra padding space as we seem to occasionally get a
            # few more than 1-2 tokens
            # Fetch a token
            token = token_getter()

            # If it's the ending token replace it and end the generation.
            if token.item() == generator.tokenizer.eos_token_id:
                generator.replace_last_token(generator.tokenizer.newline_token_id)
                if beam_search:
                    generator.end_beam_search()
                return

            # Tokenize the string from the last new line, we can't just decode the
            # last token due to how sentencepiece decodes.
            stuff = generator.tokenizer.decode(
                generator.sequence_actual[0][last_newline_pos:]
            )
            cursor_tail = len(stuff)
            chunk = stuff[cursor_head:cursor_tail]
            cursor_head = cursor_tail

            # Append the generated chunk to our stream buffer
            match_buffer = match_buffer + chunk

            if token.item() == generator.tokenizer.newline_token_id:
                last_newline_pos = len(generator.sequence_actual[0])
                cursor_head = 0
                cursor_tail = 0

            # Check if the stream buffer is one of the stop sequences
            status = self.match_status(match_buffer, self.stop_sequences)

            if status == self.MatchStatus.EXACT_MATCH:
                # Encountered a stop, rewind generator to before we hit the match stop.
                rewind_length = generator.tokenizer.encode(match_buffer).shape[-1]
                generator.gen_rewind(rewind_length)
                if beam_search:
                    generator.end_beam_search()
                return
            elif status == self.MatchStatus.PARTIAL_MATCH:
                # Partially matched a stop, continue buffering but don't yield.
                continue
            elif status == self.MatchStatus.NO_MATCH:
                if run_manager:
                    run_manager.on_llm_new_token(
                        token=match_buffer,
                        verbose=self.verbose,
                    )

                # yield match_buffer  # Not a stop, yield the match buffer.
                # match_buffer = ""
                chunk = GenerationChunk(text=match_buffer)
                yield chunk  # Not a stop, yield the match buffer.

                match_buffer = ""
        return

if __name__ == "__main__":
    # Callbacks support token-wise streaming
    callbacks = [StreamingStdOutCallbackHandler()]

    template = """Question: {question}

    Answer: Let's think step by step."""

    prompt = PromptTemplate(template=template, input_variables=["question"])

    # Verbose is required to pass to the callback manager
    llm = Exllama(
        model_path="models/TheBloke_Mistral-7B-Instruct-v0.2-GPTQ",
        callbacks=callbacks,
        verbose=True,
    )
    llm_chain = LLMChain(prompt=prompt, llm=llm)

    question = "What NFL team won the Super Bowl in the year Justin Bieber was born?"

    llm_chain.invoke({"question": question})

Hello,
here is the implementation of the V2.
https://github.com/langchain-ai/langchain/issues/8385#issuecomment-1953333714

github repo for exllama seems dead

I am pretty sure he meant https://github.com/turboderp/exllamav2


#106 Export distro refactor configuration reading logic

Signed-off-by: yanghua<EMAIL_ADDRESS>cc @drasko , please review this PR, thanks!

cc @tsconn23 this PR could be merged?

recheck


Breaking change overview tables

Preview link
Adds a column for the preview that the change was introduced in. Also adds a link to https://issuesof.net for unpublished breaking changes.

Thanks Tom!


[Do not Merge] Fixes #2875 by implementing AutoScale functionality

MVP for auto scaling applications in Marathon
Things to do:

[ ] Fetch and handle SlaveData in its own Actor
[ ] Guice wiring without Providers
[ ] Test Cases for the added logic

How to test:

define an application with autoscaling enabled (see example below)
start additional slaves and see the app scaled to the number of slaves
stop one or more slaves and see the app scaled to the number of slaves
define an application with different constraints (e.g. match slave attributes)
for faster scale intervals, use --scale_apps_interval 5000 --auto_scale_force_deployment_timeout 20000

{
  "id": "/auto/scaled/app",
  "autoScale": {
    "policies": [
      {
        "name": "mesos_agent_count"
      }
    ]
  },
  "cmd": "sleep 1000",
  "cpus": 0.1,
  "mem": 16,
  "constraints": [   [ "hostname",  "UNIQUE"  ]  ],
  "upgradeStrategy": {
    "minimumHealthCapacity": 0.5
  }
}

Nice patch!

Close for now.

Are there any plans to add something like this on top of marathon. We would love to add CPU/Memory triggers for scaling an application.

@cmluciano: The plan is to clean up and merge this PR.


Reading a provider outside of providers using Dart only

Describe what scenario you think is uncovered by the existing examples/articles
The docs say you can access a provider from outside the UI: https://riverpod.dev/docs/concepts/reading/#reading-a-provider-outside-of-providers-using-dart-only
Describe why existing examples/articles do not cover this case
This appears to be misleading as you don't actually access existing providers, but instead create new ones so you cannot actually access make your Widgets rebuild based on changes there.
Additional context
The only way to do that appears to be the answer written to this question : https://stackoverflow.com/questions/65968725/widgets-not-updating-when-modifying-a-riverpod-provider-from-outside-the-ui
Is this considered bad or are there valid use cases when using an UncontrolledProviderScope to be able to modify your UI from business logic?

The answer given on Stackoverflow is correct. UncontrollerProivderScope exists for this exact purpose.
On the other hand, making your ProviderContainer instance a global variable is not recommended.
The recommended usage is:
void main() {
  final container = ProviderContainer();

  runApp(
    UncontrolledProviderScope(
      container: container,
      child: MyApp(),
    ),
  );
}

The main use-case for this is to allow reading providers before Flutter is initialized directly in the main, such as reading a Logger:
final loggerProvider = Provider((ref) => Logger());

void main() {
  final container = ProviderContainer();

  final logger = container.read(loggerProvider);
  logger.log('Starting app');

  runApp(...);
}

The answer given on Stackoverflow is correct. UncontrollerProivderScope exists for this exact purpose.
On the other hand, making your ProviderContainer instance a global variable is not recommended.
The recommended usage is:
void main() {
  final container = ProviderContainer();

  runApp(
    UncontrolledProviderScope(
      container: container,
      child: MyApp(),
    ),
  );
}

The main use-case for this is to allow reading providers before Flutter is initialized directly in the main, such as reading a Logger:
final loggerProvider = Provider((ref) => Logger());

void main() {
  final container = ProviderContainer();

  final logger = container.read(loggerProvider);
  logger.log('Starting app');

  runApp(...);
}

You should not try to read providers from "anywhere"
Riverpod purposefully restricts you to reading providers in either:

a widget
another provider
the main (assuming you're using the previous example)

Functions that neither have access to a ProviderReference nor a BuildContext should be refactored to access one of those if they want to read a provider.
That will increase the maintainability and testability of your code.

You should not try to read providers from "anywhere"
Riverpod purposefully restricts you to reading providers in either:

a widget
another provider
the main (assuming you're using the previous example)

Functions that neither have access to a ProviderReference nor a BuildContext should be refactored to access one of those if they want to read a provider.
That will increase the maintainability and testability of your code.

Thanks a lot for making this clear!
I spent much time yesterday wondering how to do that as I thought that's the biggest advantage of riverpod over provider.
I recently moved from Bloc to Provider and everything worked very well, but now I ran into a situation where it would be neccessary to access a provider from outside the UI.
My solution was to simply pass the BuildContext to the function that needs to access the provider, but I wasn't so sure if that's bad practise.
If this is the only way to do that though, then I guess it must be done like that.
(My situation was that I have one "main" provider above the whole app and if you change a "darkmode" setting inside the app I call a function in some non-UI class that changes the value in the database and also immedialty tells the provider, so the whole app changes to darkmode right away.)

Thanks a lot for making this clear!
I spent much time yesterday wondering how to do that as I thought that's the biggest advantage of riverpod over provider.
I recently moved from Bloc to Provider and everything worked very well, but now I ran into a situation where it would be neccessary to access a provider from outside the UI.
My solution was to simply pass the BuildContext to the function that needs to access the provider, but I wasn't so sure if that's bad practise.
If this is the only way to do that though, then I guess it must be done like that.
(My situation was that I have one "main" provider above the whole app and if you change a "darkmode" setting inside the app I call a function in some non-UI class that changes the value in the database and also immedialty tells the provider, so the whole app changes to darkmode right away.)

It depends on where "outside the UI" is.
It may be feasible for that function to have access to the ref object of a provider instead of a BuildContext.
That's a common practice with:
final provider = StateNotifierProvider((ref) {
  return MyStateNotifier(ref);
});

class MyStateNotifier extends StateNotifier<Model> {
  final ProviderReference ref;

  void doSomething() {
    final value = ref.read(anotherProvider);
  }
}

It depends on where "outside the UI" is.
It may be feasible for that function to have access to the ref object of a provider instead of a BuildContext.
That's a common practice with:
final provider = StateNotifierProvider((ref) {
  return MyStateNotifier(ref);
});

class MyStateNotifier extends StateNotifier<Model> {
  final ProviderReference ref;

  void doSomething() {
    final value = ref.read(anotherProvider);
  }
}

Indeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.
My main reason to try out riverpod was because I thought you could actually access them everywhere, that's what I misunderstood from the docs and I'm sure some video on youtube said something similar, but if that is not the case provider works good enough for me.
So I guess you can close this issue if you think the docs are clear enough about this point.
Thank you!

Indeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.
My main reason to try out riverpod was because I thought you could actually access them everywhere, that's what I misunderstood from the docs and I'm sure some video on youtube said something similar, but if that is not the case provider works good enough for me.
So I guess you can close this issue if you think the docs are clear enough about this point.
Thank you!

@rrousselGit if we don't need the providerScope to know about our changes because no state is changed, rather we just want something similar to a service locator, can we just do this? Any negative repercussions?:
  @override
  UserRegistration $fetchUserRegistrationFromLocal() {
    return ProviderContainer()
        .read(authenticationRepositoryProvider)
        .fetchUserRegistrationFromLocal();
  }

Or is it better to use UncontrolledProviderScope?

No don't do that, this is a really bad idea.
You should not create a ProviderContainer randomly. Inside a Flutter app, creating one is almost always anti-pattern, besides testing and some initialization edge-cases.

@rrousselGit I have gone with a global container and UncontrolledProviderScope  then like this stack overflow answer. I understand your comments about how we should not access a provider from just anywhere, however I really want to access my service from outside another provider and the ui, and I think the global container is the least frowned upon strategy that I have read about to do that.

No, making a global ProviderContainer is a terrible idea. It should never be publicly available
Instead, pass a "ref" to your code. You should always be able to obtain one.

@rrousselGit  Hmm okay I will figure out how I can refactor to pass the ref. I think I read in the documentation that you can pass the ref around from other providers but don't do it from the UI? Is this the case? If I can do it from the UI is that less frowned upon than a global container?

The doc was misleading. You can pass WidgetRef to function. That mention was about not passing it to other widgets
I've removed it.

@rrousselGit Is that possible to access ref from context in riverpod 1.0.0?

No, you need a ConsumerWidget

@rrousselGit  I could actually use Consumer for my case. (I just need to wrap current route, giving access to ref in wrapper).
Thanks

@rrousselGit How come the ProviderReference was split into WidgetRef and Ref? It's more constrictive. I used to just have a ProviderReference property in a class that could come from either a Widget or a Provider. Luckily it always came from a Provider so I just use Ref in its place now but it would be handy to have the ability to get it from a Widget too.

@BenjaminFarquhar ProviderReference wasn't split. It was renamed
ProviderReferenceBase -> Ref
ProviderReference -> ProviderRef
It makes things more predictable.

shared interface: Ref
the Ref for Provider: ProviderRef
the Ref for StateNotifierProvider: StateNotifierProviderRef
...

The answer given on Stackoverflow is correct. UncontrollerProivderScope exists for this exact purpose.
On the other hand, making your ProviderContainer instance a global variable is not recommended.
The recommended usage is:
void main() {
  final container = ProviderContainer();

  runApp(
    UncontrolledProviderScope(
      container: container,
      child: MyApp(),
    ),
  );
}

The main use-case for this is to allow reading providers before Flutter is initialized directly in the main, such as reading a Logger:
final loggerProvider = Provider((ref) => Logger());

void main() {
  final container = ProviderContainer();

  final logger = container.read(loggerProvider);
  logger.log('Starting app');

  runApp(...);
}

Do we need do the same for cases where the function must be defined before the runApp function? Let's say, for instance, when defining a function for FirebaseMessaging.onBackgroundMessage, as the documentation says its callback must be defined at the top of the file.

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

Just make it nullable. BuildContext? context

its callback must be defined at the top of the file

I want to use inside the AuthGuard like this.

class AuthGuard extends AutoRouteGuard {
  final AccountService accountService = AccountService();
  final Ref? ref;

  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {
    if (ref.read(appProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      Toastr.showWarning(text: 'Access Denied, please login to continue.');
      router.push(LoginRoute());
    }
  }
}

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

Just make it nullable. BuildContext? context

I want to use inside the AuthGuard like this.
class AuthGuard extends AutoRouteGuard {
  final Ref? ref;

  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {

**//this ref is null and cause app crash.**
    if (ref.read(appProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      Toastr.showWarning(text: 'Access Denied, please login to continue.');
      router.push(LoginRoute());
    }
  }
}

Same here! I also want to use a provider in a AutoRouteGuard! But it is not working! How can we initialize it ?

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

Just make it nullable. BuildContext? context

I want to use inside the AuthGuard like this.
class AuthGuard extends AutoRouteGuard {
  final Ref? ref;

  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {

**//this ref is null and cause app crash.**
    if (ref.read(appProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      Toastr.showWarning(text: 'Access Denied, please login to continue.');
      router.push(LoginRoute());
    }
  }
}

Same here! I also want to use a provider in a AutoRouteGuard! But it is not working! How can we initialize it ?

Pass ref of AuthGuard. it works for me.

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

Just make it nullable. BuildContext? context

I want to use inside the AuthGuard like this.
class AuthGuard extends AutoRouteGuard {
  final Ref? ref;

  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {

**//this ref is null and cause app crash.**
    if (ref.read(appProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      Toastr.showWarning(text: 'Access Denied, please login to continue.');
      router.push(LoginRoute());
    }
  }
}

Same here! I also want to use a provider in a AutoRouteGuard! But it is not working! How can we initialize it ?

I just stumbled across the exact same issue – just to clarify @chhinsras answer, here's how I did it:
main.dart
void main() {
  runApp(
    ProviderScope(
      child: AppWidget(),
    ),
  );
}

class AppWidget extends ConsumerWidget {
  const AppWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final appRouter = AppRouter(authGuard: AuthGuard(ref));
    return MaterialApp.router(
      debugShowCheckedModeBanner: false,
      routerDelegate: appRouter.delegate(),
      routeInformationParser: appRouter.defaultRouteParser(),
    );
  }
}

auth_guard.dart
class AuthGuard extends AutoRouteGuard {
  final WidgetRef _ref;

  AuthGuard(this._ref);
  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {
    if (_ref.read(authProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      router.push(
        LoginRoute(
          onLogin: () {
            resolver.next();
            router.removeLast();
          },
        ),
      );
    }
  }
}

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

Just make it nullable. BuildContext? context

I want to use inside the AuthGuard like this.
class AuthGuard extends AutoRouteGuard {
  final Ref? ref;

  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {

**//this ref is null and cause app crash.**
    if (ref.read(appProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      Toastr.showWarning(text: 'Access Denied, please login to continue.');
      router.push(LoginRoute());
    }
  }
}

Same here! I also want to use a provider in a AutoRouteGuard! But it is not working! How can we initialize it ?

I just stumbled across the exact same issue – just to clarify @chhinsras answer, here's how I did it:
main.dart
void main() {
  runApp(
    ProviderScope(
      child: AppWidget(),
    ),
  );
}

class AppWidget extends ConsumerWidget {
  const AppWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final appRouter = AppRouter(authGuard: AuthGuard(ref));
    return MaterialApp.router(
      debugShowCheckedModeBanner: false,
      routerDelegate: appRouter.delegate(),
      routeInformationParser: appRouter.defaultRouteParser(),
    );
  }
}

auth_guard.dart
class AuthGuard extends AutoRouteGuard {
  final WidgetRef _ref;

  AuthGuard(this._ref);
  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {
    if (_ref.read(authProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      router.push(
        LoginRoute(
          onLogin: () {
            resolver.next();
            router.removeLast();
          },
        ),
      );
    }
  }
}

@lukasbachlechner for me creating appRouter in build function brings a lot of issues for the local development (if I press hot restart in Idea - the login page is appears for a second and then I see a white screen)

ndeed, that is what I tried out aswell and it works like that as long as you are inside another provider.
I will probably stick with provider for now and just pass around the BuildContext if I need to, I assume that can't do any damage as long as I dont keep a reference to it somewhere.

with nullsafety. it is required initialization. how can we initialize?

Just make it nullable. BuildContext? context

I want to use inside the AuthGuard like this.
class AuthGuard extends AutoRouteGuard {
  final Ref? ref;

  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {

**//this ref is null and cause app crash.**
    if (ref.read(appProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      Toastr.showWarning(text: 'Access Denied, please login to continue.');
      router.push(LoginRoute());
    }
  }
}

Same here! I also want to use a provider in a AutoRouteGuard! But it is not working! How can we initialize it ?

I just stumbled across the exact same issue – just to clarify @chhinsras answer, here's how I did it:
main.dart
void main() {
  runApp(
    ProviderScope(
      child: AppWidget(),
    ),
  );
}

class AppWidget extends ConsumerWidget {
  const AppWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final appRouter = AppRouter(authGuard: AuthGuard(ref));
    return MaterialApp.router(
      debugShowCheckedModeBanner: false,
      routerDelegate: appRouter.delegate(),
      routeInformationParser: appRouter.defaultRouteParser(),
    );
  }
}

auth_guard.dart
class AuthGuard extends AutoRouteGuard {
  final WidgetRef _ref;

  AuthGuard(this._ref);
  @override
  void onNavigation(NavigationResolver resolver, StackRouter router) {
    if (_ref.read(authProvider).isLoggedIn) {
      resolver.next(true);
    } else {
      router.push(
        LoginRoute(
          onLogin: () {
            resolver.next();
            router.removeLast();
          },
        ),
      );
    }
  }
}

@lukasbachlechner for me creating appRouter in build function brings a lot of issues for the local development (if I press hot restart in Idea - the login page is appears for a second and then I see a white screen)

@akarabach Yes, for me it's the same. I got rid of the guard altogether and used a different approach (a guard widget that wraps around the page) :)

Could you explain it or share the solution? Thank you!

Well it has basically nothing to do with the original question :D
I just created a widget like that (approximately):
class AuthGuard extends ConsumerWidget {
  const AuthGuard({Key? key, required this.child}) : super(key: key);

  final Widget child;

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final isLoggedIn = ref.read(authProvider).isLoggedIn;

    if(isLoggedIn) {
        return child;
    }

    return UnauthenticatedWidget();
  }
}

and basically wrap the page content with that, so that if an unauthenticated user tries to access one of these pages, it shows only the UnauthenticatedWidget :) I use that solution now because it's a lot easier to maintain, as I have multiple tabs and subpages so this was the easiest solution for me – of course it might be different for your use case :)
Hope I could help :)


#issue 14 Consultancy fragment implemented

#issue 14 Consultancy fragment implemented
left with only textView in this fragment

Bro nice work. Actually I need to fix something on your pr therefore the delay occurs. Thankyou for your PR. And again sorry for the delay


[Map] DM-Indazcol

Hash: e1f40c13e4f68db9f854ac9aedbeebed02a2f2fe
Current name: DM-Indazcol
The author's name is Francis Briau
First simply means it was his first map (so says the readme).

Updated


[Currently not implementable] generate gacha Authkey from HoyoLab sToken

https://github.com/JellyBrick/Koyo/blob/a9df52165fbe3afad34e0557506944bf37e15bb5/lib/src/main/kotlin/be/zvz/koyo/GenshinImpact.kt#L421-L498
Currently, oversea account (HoyoLab Account) is not support generate gacha Authkey from HoyoLab sToken.
Check this issue https://github.com/DGP-Studio/Snap.Hutao/issues/638
I don't think it's technically impossible, but I haven't verified that this (https://github.com/ctrlcvs/xiaoyao-cvs-plugin/blob/master/model/mys/mihoyoApi.js) works.

Only CN mihoyobbs account can use stoken to generate gi authkey, it's the only exception in all mihoyo's games.


Identify the cluster in the NewRuntime call

Describe what this PR does and why we need it:
Contact the openshift version endpoint to verfiy what cluster
the broker is running on.  If the openshift endpoint isn't present, the
broker is running on kubernetes.
Changes proposed in this pull request

Identify which cluster the broker is running on

 (13) Agnostic Runtime phase 3

Changes Unknown when pulling d798afe121fa9ce1d4fd931c3fc11869cafe4a14 on rthallisey:runtime into ** on openshift:master**.

Changes Unknown when pulling 227970d6edbb1b5ef9bb5efe4db3e8bec25cef2f on rthallisey:runtime into ** on openshift:master**.

Changes Unknown when pulling 4ef4c5bef61547f99ebb3b48fc279da68bce4315 on rthallisey:runtime into ** on openshift:master**.

Changes Unknown when pulling 8160b2dc192c66b09cdf53522ee53cc780849942 on rthallisey:runtime into ** on openshift:master**.

isn't that, even more, reason to move the initialization of the client into just the runtime?

@shawn-hurley's comment disappeared.
Everywhere that we grab the kubernetes client and use it should be a function in runtime.  There are numerous cases of this so we'll do that in different patches.  Feel free to write them if you see them.


Add strict mode

I was having trouble with strict mode (node make -s -w) on Node version 4.4.7 on OSX. I added "use strict" in make.js to explicitly let the "let" statements run.

I've removed the ES6 syntax so you should now able to run in Node 4. Thanks for reporting.


Getting an error when attempting to log in

Login endpoint failed. Try again later.
Cannot setup Blink platform.
False

please disregard.


enhancement: Want to display No. of items of cart icon #690

-Added CartCount icon fully Functioning

Yes I can actually I saw that issue but I think someone might be working on it so i doesn't make changes. Should I solve it?

Mention Issue!

There was no issue such like that so i have raised that issue i will fix that #928

solve conflicts.

@sunny0625 please check it now


TypeSupported gived FALSE in puppeteer, true in chrome

Trying to run HLS.js in puppeteer:  Cannot because that test return false
window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')
whereas in chrome gives true
Any idea ?

still won't work


Fix serialize features

This PR restores a small block of the deleted code that loops through the service dependencies to determine if an individual crate's serialize_structs and deserialize_structs features need to specify serde and serde_derive in the feature dependencies in order to build with the features enabled, as well as a few cfg-protected use blocks in a few of the generators. All of the crates now build with the features enabled on my system.
As I mentioned in Discord, I am checking in a script I wrote that builds all of the crates with the features enabled to test that they were generated properly. This probably wouldn't be a good fit for CI, since it's rather time-consuming to run. Since we managed to break this functionality without noticing, I think it does justify some kind of CI testing, so I wrote a version of the script that tests 5 selected crates, one of each type of generator. This should be a representative test of the feature without taking excessive time to run. It would probably be a good idea to manually run the full check locally on anything that might affect that part of the generator too.
I am open to trying to update the CI scripts as needed to run this if the project maintainers think that is a good solution. Is the plan to stick with the Semaphore CI, or switch to Github Actions longer-term?

Is the plan to stick with the Semaphore CI, or switch to Github Actions longer-term?

Longer-term the plan is to switch to GitHub Actions. So if you want to make another PR to add that, I'd appreciate it.
I'd also like a Makefile target that runs them all that we can run during a release (see RELEASING.md).


fix: convert any usage into  or typed version

Converted most any usage to unknown. Not the best fix in the world, but to make it fully properly typed I need some more time.

@berendsliedrecht build is failing, do you need help with this?: https://github.com/openwallet-foundation-labs/sd-jwt-js/actions/runs/8003556836/job/21859109338?pr=80#step:7:146

@cre8 Should be fixed now.


faster w-aligned assembler

[x] restrict [len]val length to w-aligned only.
[x] note it in the readme/esolangs
[x] change the whole assembly line to output words, not bits (should be much faster).

Done!
made labels_resolve >10*faster, now a bit faster than labels pass.


abxml tries to clean dirs even if they don't exist

Seems that we get to run this code: src/apk.rs#L44 even if there is no dist folder in SUPER. What could be happening?
More info: https://github.com/SUPERAndroidAnalyzer/super/issues/121#issuecomment-306437588

The code that you link is only executed if the folder could not be created and if the force flag is true:
 if fs::create_dir_all(&output_path).is_err() && force { ... }

What I understand from the linked issue, the target folder can no be written (fs::create_dir_all(&output_path).is_err() will be true) and the force flag is enabled. In this case, the library tries to first remove the folder and then create it again. This is done to remove the existing data and replace it with the new one.
So it seems just a permissions issue to write to the filesystem.
Do you think that this is a feasible scenario? In fact, when the user ran the application with sudo, the decompression worked.

The thing is that it's happening to two users, but why?


Clear failed sessions from the same session provider

The change also includes sync and delayed constructors for StreamSupervisor and TagProjection.

Codecov Report

Merging #31 into master will increase coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #31      +/-   ##
==========================================
+ Coverage   92.11%   92.12%   +0.01%
==========================================
  Files          17       17
  Lines         545      546       +1
  Branches       14       14
==========================================
+ Hits          502      503       +1
  Misses         43       43

Impacted Files
Coverage Δ

.../nexus/sourcing/projections/StreamSupervisor.scala
90% <ø> (ø)
:arrow_up:

...ain/nexus/sourcing/projections/TagProjection.scala
66.66% <ø> (ø)
:arrow_up:

...xus/sourcing/projections/SameSessionProvider.scala
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7a90db3...85d8ff6. Read the comment docs.


PT-1270 | Keywords as links

Description :sparkles:
Changed keyword sto be links to search page with keyword query parameter. Trickier part was to find out which keyword belongs to which keyword set. It made things little bit harder to implement :)
For example the following keywords have different keyword sets:
Kirjastovierailu -> ?additionalCriteria=kultus%3A20
Satutunnit -> ?categories=yso%3Ap14710
3-5 vuotiaat -> ?targetGroups=kultus%3A45
In summary:

Change keywords to links
Add also audiences to keyword lists

Issues :bug:
There is still issue with event cards because the card itself is a link and the keywords inside it are links too. Not quite sure yet what would be the best way to avoid this accessibility wise.
Warning: validateDOMNesting(...): <a> cannot appear as a descendant of <a>.

Closes :no_good_woman:
PT-1270:
Related :handshake:
Testing :alembic:
Automated tests :gear:

Added automated component tests to KeywordsList

Manual testing :construction_worker_man:
Screenshots :camera_flash:

Additional notes :spiral_notepad:

Codecov Report

Merging #167 (0810abc) into master (b33f5aa) will increase coverage by 0.09%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #167      +/-   ##
==========================================
+ Coverage   90.77%   90.87%   +0.09%
==========================================
  Files         102      103       +1
  Lines        2668     2695      +27
  Branches      574      581       +7
==========================================
+ Hits         2422     2449      +27
  Misses        241      241
  Partials        5        5

Impacted Files
Coverage Δ

src/common/components/keyword/Keyword.tsx
100.00% <100.00%> (ø)

src/common/components/keyword/KeywordsList.tsx
100.00% <100.00%> (ø)

src/domain/event/eventBasicInfo/EventBasicInfo.tsx
97.95% <100.00%> (+0.08%)
:arrow_up:

src/domain/event/eventCard/EventCard.tsx
98.57% <100.00%> (+0.02%)
:arrow_up:

src/domain/events/EventsPage.tsx
86.15% <100.00%> (+0.21%)
:arrow_up:

.../domain/events/eventSearchForm/EventSearchForm.tsx
90.90% <100.00%> (+0.28%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b33f5aa...0810abc. Read the comment docs.


Add new enrichment method

add another enrichment method to the existing set.
User specifies number of hops
name: ancestor_enrichment (?)
Args: number of hops
subject - terms in seed
object - terms in seed + terms 1-n hops from terms in subject.

This should go to pandasaurus rather than pandasaurus_cxg, shouldn't it?

PR is up at https://github.com/INCATools/PandaSaurus/pull/37


Question: Shared cache

Does ctcache support sharing 'local' cache locations across multiple machines? Say for example running builds on multiple servers but having a shared network attached storage with a single ctcache shared by all the servers? The servers could be running builds concurrently with each other so could be reading and writing to the cache at the same time.

Hi. ctcache was originally developed and used (at a project with ~20-30 devs) with this use case in mind. But in the last couple of years there were multiple 3rd party changes made and I haven't tested if this still works properly.
There is this [https://github.com/matus-chochlik/ctcache/blob/main/doc/overview.pdf] presentation that discusses this briefly on slides 55-58.
Basically the CTCACHE_STRIP variable needs to set properly by the clients. If you have an environment where you could test it it would be useful to have feedback if this still works.

Cool I'll give it a go. The presentation only mentions sharing a cache using the cache server hence why I wanted to clarify if a locally mounted network storage approach would in theory work also.


Website not returning results though no errors anywhere

I deployed the Azure solution from the powershell script and ran the JFKinitializer and the frontend. At the end query index also returned results but somehow if I navigate to the site and search, no results are returned. There are no errors as well.

issue is fixed with latest code. my code version was 6 months old


Adding endAngle prop for Progress.Circle.

hello anybody there?

Hi @oblador , any plans to merge this PR? It will be very helpful if you can merge the changes if you see them useful from your library perspective. Let us know if you see any change(s) wrt documentation or code. We can update the same and may be then you can merge the changes. Let us know your thoughts. Thanks in advance.


Consuming ./addon/styles/addon.css

My tables are rendering, but in vanilla style. What is the general method for causing ember-cli to include your addon.css in my build?  I know how to import stuff using ember-cli-build.js. EmberApp has a 'bowerDirectory' property, but I don't see one for node stuff. For example, here is how I consumed the css for "bootstrap-editable:"
app.import(app.bowerDirectory + '/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css');

Are you trying to import the demo app's css? By default, ember-cli imports the /addon/styles/addon.css into your app.

Hi, thanks for this addon.
I'm also getting table without any style.

Do I need to import bootstrap for complete or just Tables etc...?
Is there any doc about the style?
Also, it's possible tu use it with https://emberobserver.com/addons/ember-css-modules or https://emberobserver.com/addons/ember-component-css for use with another addons that use semanticui or other frontend framework?

@lypborges are you trying to get the styles from the demo or just the base CSS styles?

Sorry @offirgolan, I need to use with semantic ui. But with the same behaviour (responsive etc..) from de demo. So I think I should get only the base CSS style, right?

@lypborges the addon comes only comes with the base styles (not the ones found in the demo) needed for the table to be functional. If you want the demo styles, you can grab them from here.


Clean up Driver debugs

#149

@Quolyk I am not exactly sure what @stanislaw meant in the #149, my version is below 😄
As far as I know, I was the only one who used these methods a long time ago, meaning that we don't need them anymore. So, feel free to just drop them completely. Also, do not forget to remove them from the driver.cpp among with command line options here: https://github.com/mull-project/mull/blob/master/tools/driver/driver.cpp#L40

+1 to what @AlexDenisov just said. I didn't want to handle this in my completely different PR so I opened #149.


Update conf.py

Change the copyright

@@            master   #5670   diff @@
======================================
  Files          234     234
  Stmts        43112   43112
  Branches      8151    8151
  Methods          0       0
======================================
  Hit          33413   33413
  Partial       2606    2606
  Missed        7093    7093

Review entire Coverage Diff as of c19b31d

Powered by Codecov. Updated on successful CI builds.

thanks @MYheavyGo


HBASE-27370 Avoid decompressing blocks when reading from bucket cache…

… prefetch threads

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 38s
Docker mode activated.

 Rebase required? Wrong Branch? See https://yetus.apache.org/documentation/in-progress/precommit-patchnames for help.

Subsystem
Report/Notes

GITHUB PR
https://github.com/apache/hbase/pull/4781

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4781/3/console

versions
git=2.25.1

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m  0s
Docker mode activated.

-1 :x:
patch
0m  2s
https://github.com/apache/hbase/pull/4781 does not apply to master. Rebase required? Wrong Branch? See https://yetus.apache.org/documentation/in-progress/precommit-patchnames for help.

Subsystem
Report/Notes

GITHUB PR
https://github.com/apache/hbase/pull/4781

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4781/3/console

versions
git=2.17.1

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m  0s
Docker mode activated.

-1 :x:
patch
0m  3s
https://github.com/apache/hbase/pull/4781 does not apply to master. Rebase required? Wrong Branch? See https://yetus.apache.org/documentation/in-progress/precommit-patchnames for help.

Spotbugs issue shouldn't be related. See ongoing PR for fixing sputbugs: https://github.com/apache/hbase/pull/4787


Database locked after update 2.19 > 2.20

Hi @simolus3, after updating from 2.19 to 2.20 my gets stuck on parallel write operations.
I am using Future.wait to start parallel downloads of data which afterwards gets inserted into the database via separate parallel transactions. This completely locks the database since 2.20.0.
The transaction never complete, after a hot restart there are database locked errors.
Same thing happens in release builds.
I am using a drift isolate setup that has worked perfectly for a some time now.
Do you have an idea on what could cause this?

Thanks for the report, I'll try to reproduce this. The only recent change that comes to mind was transactions obtaining the lock before invoking the callback (previously the first statement in the transaction block would open the transaction), but that has landed in 2.19.0 already. I wonder if the isolate changes in 1d296a497bd0474b2697d1b7e360f8bd2f18863d might be related to this. Are the parallel transactions opening other nested transactions as well or is it just a single level?

There are no nested transactions, from stepping through the debugger, it looks like this:

T1 starts
query/insert some data in T1 -> success
T2 begins (transaction() is reached)
query/insert more data in T1 -> hangs forever
T2 never actually enters

@simolus3 Yea the this commit is the culprit. With the parent commit it still runs.

I can't reproduce the problem like this, which sounds like what you're describing right?
  db.transaction(() async {
    print('First transaction: Start');
    await db.customSelect('SELECT 1').get();

    for (var i = 0; i < 5; i++) {
      print('First transaction, query $i');
      await db.customSelect('SELECT 1').get();
      print('First transaction, query $i end');
      await Future.delayed(const Duration(seconds: 1));
    }
  });

  await Future.delayed(const Duration(seconds: 1));

  db.transaction(() async {
    print('Second transaction: Start');
    await db.customSelect('SELECT 1').get();
    print('Second transaction: Done');
  });

However, if I spawn another nested transaction in the first one, I can reproduce the deadlock:
  db.transaction(() async {
    print('First transaction: Start');
    await db.customSelect('SELECT 1').get();

    for (var i = 0; i < 5; i++) {
      print('First transaction, query $i');
      await db.customSelect('SELECT 1').get();
      print('First transaction, query $i end');
      await Future.delayed(const Duration(seconds: 1));
    }

    print('trying nested');
    await db.transaction(() async {
      print('nested');
    });
  });

  await Future.delayed(const Duration(seconds: 1));

  db.transaction(() async {
    print('Second transaction: Start');
    await db.customSelect('SELECT 1').get();
    print('Second transaction: Done');
  });

I'll fix that, maybe that also solves your issue.

Can you try checking whether f781aa3c5d1ce5523f358eba89dbf6a5b489ea66 fixes this issue?

Yes that fixes it!

Thanks for the confirmation, I've released a patch release containing the fix as  2.20.3.


Hyper link on the footer

add hyper link to the footer

add the link https://stream.recodehive.com/github

Hi @sanjay-kv sir, I can fix the issue. Can you please assign me this issue?

Assign me if still available

I would like to contribute on this as i am good full stack developer. please assign me that issue.


matrix-synapse-unwrapped: 1.107.0 -> 1.108.0

Diff: https://github.com/element-hq/synapse/compare/v1.107.0...v1.108.0
Changelog: https://github.com/element-hq/synapse/releases/tag/v1.108.0
Description of changes
Not tested on real server, nixosTests passes.

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/3999


Quad.php: align naming of getGraphIri and withGraphIri

Quad.php has functions getGraphIri and withGraphIri whose name is not in line with other functions (like getSubject), because Iri in the name lets one assume it is a string and not an object.
I propose to change it to getGraph and withGraph.

I'm fine with that change. Would you prepare a PR?

Sure, no problem.

Solved by 554c7dc9f74246d751957b7998d8b15a55c85bdc


Custom serialization

First of all, thank you for this great library!
I'm looking for a way to apply custom transformations to elements during serialization. Specifically, I need to convert the HTML to valid XML (e.g.- make all void elements have (self) closing tags, ensure all attributes are properly formatted, etc).
I don't see documentation for the serialization functions, and was wondering what the best way is to accomplish what I need.

@noam3127
Serialization to HTML specification.
You can see how the current serialization is implemented and create your own functions based on it.
Use lxb_html_node_is_void(...) to detect void elements.

@lexborisov This looks like a bug here. The second argument should be 6.

@lexborisov
Yep, this is a bug copy-paste.
I will fix it.
Thanks for the report[

@noam3127
Oh God how could I forget about that.
Thanks for the report.


Vertx 4.4.2 and Netty 4.1.92.Final

Fixes https://issues.redhat.com/projects/RESTEASY/issues/RESTEASY-3335.
I have tested by doing a full build of the repo, but haven't gone beyond that.

Hello, Yaytay. I'm waiting for one of the admins to verify this patch with /ok-to-test in a comment.

This was replaced by #3700. Thank you for the contribution!


Add license to @rebass/emotion package

https://github.com/rebassjs/rebass/issues/588

Codecov Report

Merging #589 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #589   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           1      1
  Lines          20     20
=====================================
  Hits           20     20

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d2be962...6e4a655. Read the comment docs.


python310Packages.types-pytz: 2<IP_ADDRESS> -> 2<IP_ADDRESS>

Description of changes
Update to latest upstream release 2<IP_ADDRESS>

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 198900 run on x86_64-linux 1

14 packages built:

home-assistant-component-tests.ridwell
home-assistant-component-tests.simplisafe
openai (python310Packages.openai)
python310Packages.aioridwell
python310Packages.django-stubs
python310Packages.pandas-stubs
python310Packages.simplisafe-python
python310Packages.types-pytz
python39Packages.aioridwell
python39Packages.django-stubs
python39Packages.openai
python39Packages.pandas-stubs
python39Packages.simplisafe-python
python39Packages.types-pytz


No response

start Open-IM-Server first


USTC group4

题目：在眼疾识别数据集上训练SqueezeNet网络
作业链接：https://aistudio.baidu.com/aistudio/projectdetail/2238212?shared=1

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Components: HTML attributes are only provided by $attributes array

Laravel Version: 7.4.0
PHP Version: 7.4.1
Database Driver & Version: mysql  Ver 14.14 Distrib 5.7.28, for osx10.15 (x86_64) using  EditLine wrapper

Description:
Attributes defined in components will be ignored by the templating engine, but will be provided in the $attributes array. When defining attributes explicitly, I would like to access them directly.
Steps To Reproduce:
Exemplary I've generated a select component with my intention:
<?php

namespace App\View\Components\Form;

use Illuminate\View\Component;

class SelectField extends Component
{
    /**
     * Name of the select field.
     *
     * @var string
     */
    public $name;

    /**
     * Current selected value.
     *
     * @var string
     */
    public $selected;

    /**
     * All available options of the selection.
     *
     * @var array
     */
    public $options;

    /**
     * Define required attribtues through the constructor.
     *
     * @param string $name
     */
    public function __construct(string $name) {
        $this->name = $name;
    }

    public function render() {
        return view('components.form.select-field');
    }
}

<select name="{{ $name }}">
    @foreach($options as $value => $option)
        <option @if($selected === $value) selected @endif>{{ $option }}</option>
    @endforeach
</select>

However, the attributes $options and $selected are only available via the $attributes array, so that the following code would result:
<select name="{{ $name }}">
    @foreach($attributes['options'] as $value => $option)
        <option @if($attributes['selected'] === $value) selected @endif>{{ $option }}</option>
    @endforeach
</select>

For an overview I've attached a fragment of the dump of $this.
"data" => array:6 [▶
  "errors" => Illuminate\Support\ViewErrorBag {#334 ▶}
  "name" => "type"
  "selected" => null // <-- This should also be set
  "options" => null // <-- This should also be set
  "attributes" => Illuminate\View\ComponentAttributeBag {#348 ▶
    #attributes: array:2 [▶
      "options" => array:4 [▶
        // key => value assignment
      ]
      "selected" => "S"
    ]
  }
  "slot" => Illuminate\Support\HtmlString {#372 ▶
    #html: ""
  }
]

Heya, thanks for submitting this.
This seems like a feature request or an improvement. It's best to post these at the laravel/ideas repository to get support for your idea. After that you may send a PR to the framework. Please only use this issue tracker to report bugs and issues with the framework.
Thanks!


Everything is crammed together

Looking at the website everything looks crammed together and not thought out at all. Such as the Github and Discord logo (picture below) being right next too each other giving no room to each other.
Don't know if anyone agrees but this is my personal opinion.
Image

Another example of this is on the login page (Safari 14): the buttons in the middle as well as the links on the bottom right

Firefox is the issue on my system
Running Firefox 78.8.0esr (64-bit) on Linux (Linux Mint Debian Edition)

chromium / chrome works

I was using Opera when taking this screenshot. I have also tried Internet Explorer (Doesn't even load), Brave (Works), Firefox (Works) and Windows Explorer (Works).

I have the same problem as https://github.com/benawad/dogehouse/issues/1777#issuecomment-813067996 on Chrome. Operating System: Linux Ubuntu 20.04

Same issue on Firefox Mobile version 33.0

#1766


How to compile Psych Engine 0.6.3 now?

Describe your problem here.
I searched internet to find my problem, but still nothing. Here in image file:

Are you modding a build from source or with Lua?
Source
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
I can't tell how much, but i already saved it in github

here my "mod": https://github.com/Quaradam/sonicexemultiverse

Even downgranding Flixel to 5.5.0 not helping

heres a script that installs the neccessary versions to build 0.6.3
NOTE: THIS INSTALL SCRIPT ALSO INSTALLS THINGS YOU MIGHT NOT NEED, SO DOUBLE CHECK BEFORE RUNNING! if you're not sure, don't modify this script.
i'd say the main things you could delete are the lines for the haxeui packages (haxeui-core, haxeui-flixel), and if you don't use build_x64-debug, you can also remove the line that installs hxcpp-debug-server
from there change the following described in this  and you should be able to build
if you just install current binaries they end up causing several compatibility issues, as it's been a bit since 0.6.3.

 heres a script that installs the neccessary versions to build 0.6.3 NOTE: THIS INSTALL SCRIPT ALSO INSTALLS THINGS YOU MIGHT NOT NEED, SO DOUBLE CHECK BEFORE RUNNING! if you're not sure, don't modify this script. i'd say the main things you could delete are the lines for the haxeui packages (haxeui-core, haxeui-flixel), and if you don't use build_x64-debug, you can also remove the line that installs hxcpp-debug-server
from there change the following lines of playstate.hx under the sources folder described in this  and you should be able to build (Tested working with the version from the last commit of the repo)
quick note: if you just downgrade flixel without downgrading other flixel packages, those could break

Thanks! That's work!


python310Packages.wallbox: 0.4.10 -> 0.4.12

Description of changes
https://github.com/cliviu74/wallbox/releases/tag/0.4.12

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 200673 run on x86_64-linux 1

3 packages built:

home-assistant-component-tests.wallbox
python310Packages.wallbox
python39Packages.wallbox


How to navigate with bottom navbar from push notification

Hi.! I am trying to navigate to a specific screen when the user receives a push notification, the issue is that I am always getting the screen on top of previous without the bottom navbar, is there any workaround for this?

You can hold the context of the currently open tab somewhere and then use the navigator of that context to push a new screen inside that tab which should then keep the navbar visible. See here on how to use the selectedTabScreenContext callback: https://github.com/jb3rndt/PersistentBottomNavBarV2/issues/33#issuecomment-1146243930

Hi.! thanks for your answer and thanks for this amazing package...
I tried your solution but I may be doing something wrong because I am not getting the context
    return PersistentTabView(
      context,
      selectedTabScreenContext: (context) {
        Globals().setCurrentTabContext(context);
      },
      controller: _controller,
      screens: _buildScreens(),
      items: _navBarItems(),
      navBarStyle: NavBarStyle.simple,
      backgroundColor: Theme.of(context).scaffoldBackgroundColor,
    );

when I try to use Globals().currentTabContext I get null
also all my PersistentBottomNavBarItem have "/" as initialroute.
 List<PersistentBottomNavBarItem> _navBarItems() {
    return [
      PersistentBottomNavBarItem(
        routeAndNavigatorSettings: const RouteAndNavigatorSettings(
          initialRoute: AppRouter.auth,
          onGenerateRoute: AppRouter.onGenerateRouted,
        ),
        icon: const FaIcon(FontAwesomeIcons.chalkboardUser),
        title: AppStrings.whiteboardLabel,
        activeColorPrimary: Theme.of(context).colorScheme.primary,
        inactiveColorPrimary: Theme.of(context).disabledColor,
      ),
      PersistentBottomNavBarItem(
        routeAndNavigatorSettings: const RouteAndNavigatorSettings(
          initialRoute: AppRouter.auth,
          onGenerateRoute: AppRouter.onGenerateRouted,
        ),
        icon: const FaIcon(FontAwesomeIcons.calendarDays),
        title: AppStrings.scheduleLabel,
        activeColorPrimary: Theme.of(context).colorScheme.primary,
        inactiveColorPrimary: Theme.of(context).disabledColor,
      ),
      PersistentBottomNavBarItem(
        routeAndNavigatorSettings: const RouteAndNavigatorSettings(
          initialRoute: AppRouter.auth,
          onGenerateRoute: AppRouter.onGenerateRouted,
        ),
        icon: const FaIcon(FontAwesomeIcons.user),
        title: AppStrings.profileLabel,
        activeColorPrimary: Theme.of(context).colorScheme.primary,
        inactiveColorPrimary: Theme.of(context).disabledColor,
      ),
      PersistentBottomNavBarItem(
        routeAndNavigatorSettings: const RouteAndNavigatorSettings(
          initialRoute: AppRouter.auth,
          onGenerateRoute: AppRouter.onGenerateRouted,
        ),
        icon: const FaIcon(FontAwesomeIcons.bell),
        title: AppStrings.notificationsLabel,
        activeColorPrimary: Theme.of(context).colorScheme.primary,
        inactiveColorPrimary: Theme.of(context).disabledColor,
      ),
    ];
  }

Is it still null if you just print it like this?
selectedTabScreenContext: (context) {
  print(context);
},

is not even printing anything

So it is not executing that line of code? Can you confirm that the PersistentTabView is getting rendered?

Hi again.! for some reason after I did a flutter clean I tried again and now it is running correctly, and your solution works like charm.! thanks again for the package, and thanks for taking the time to help me.


IA-1593: Stocks: replace the icons "settings" with an icon "edit"

Explain what problem this PR is resolving

Stocks: replace the icons "settings" with an icon "edit"
Related JIRA tickets : POLIO-1593

Self proofreading checklist

[x] Did I use eslint and black formatters
[ ] Is my code clear enough and well documented
[ ] Are my typescript files well typed
[ ] New translations have been added or updated if new strings have been introduced in the frontend
[ ] My migrations file are included
[ ] Are there enough tests
[ ] Documentation has been included (for new feature)

Changes

replace the icons "settings" with an icon "edit" in stock management

How to test

Go in Polio -> Vaccine module -> stock management -> stock variation
Check Form A, Destruction report and incident report and check the edit ico

Print screen / video
Screencast from 2024-07-08 11-21-12.webm

@cypress

See suggestions. Just typos really. I still think that if we change the icon in stock, we should also change it in supply chain, as the 2 modules are quite interconnected

@quang-le the edit ico has been added to supply chain too