Pass arguments to pip

Describe the Enhancement

paketo-buildpacks/pip-install checks for the presence of requirements.txt and then install dependencies with pip. A fixed set of optional arguments are passed to pip install: https://github.com/paketo-buildpacks/pip-install/blob/e2f15c017d7d32e8d078c935b1fb11a53c0048e1/install_process.go#L74-L85
It would be useful to be able to pass additional optional arguments to pip via environment variables. For example, a user may want to provide --index-url to provide an alternative Python Package Index.
It may already be possible to pass arguments to pip by including them in requirements.txt.  However, --index-url may contain secrets (e.g. for connecting to a private package index) which should not be in requirements.txt.
Other pip arguments may be useful, including --requirement (but note this will require changes to both detect and build phases).
Possible Solution

Allow passing environment variables (e.g. BP_PIP_INDEX_URL, BP_PIP_REQUIREMENT) which, if provided are appended to the pip arguments.

hey @OscartGiles - sorry for the delay.
This sounds reasonable to me. I'd like to find a solution that is extensible but also intuitive to the user. I am wondering about enabling additional arguments via BP_PIP_EXTRA_INSTALL_ARGS. I think that solves your --index-url case, as well as providing a framework for adding extra arguments beyond --index-url.
Alternatively, I think we could provide BP_PIP_INSTALL_ARGS and just override them all. That feels frustrating though, as the user would have to provide many arguments, most of which are redundant. They'd have to keep that up to date with our defaults as they change. I'd probably prefer to enable individual overrides of specific default values (like BP_REQUIREMENTS_LOCATION or similar) as the use-cases arise.

+1, I'd love the option to specify the requirements.txt file location

For now, there is another way to change the values for the command-line options that we can use pip.co. In the the Dockerfile you can copy your pip.conf to /etc. Here my Dockerfile for customizing a builder-image:
FROM gcr.io/paketo-buildpacks/builder:base
COPY platform /platform
COPY pip.conf /etc/

Just following up on this, pip supports configuration via environment variables in addition to the --flag format.
What this means for the buildpack is that you can provide configuration via the environment. E.g. for pack you would do:
pack build --env PIP_SOME_VAR=<some-value> <app-name>

Which would be the same as pip install --some-var=<some-value>.

Nice catch! Using the pip's env var config, it should be able to remove all of the hardcoded requirements.txt references and let the user set it using PIP_REQUIREMENT (with the default being requirements.txt) env var, right?

Using the pip's env var config, it should be able to remove all of the hardcoded requirements.txt references and let the user set it using PIP_REQUIREMENT (with the default being requirements.txt) env var, right?

I haven't tested that. It should work, assuming pip prioritizes the environment variable over the -r flag.

@robdimsdale What I mean by removing the requirements.txt reference is updating the pip-install buildpack source code. Based on the precedence docs, the CLI option will override the env var. Thus we need to remove the hardcoded --requirement requirements.txt to allow users to set the option via env var.
https://github.com/paketo-buildpacks/pip-install/blob/e2f15c017d7d32e8d078c935b1fb11a53c0048e1/install_process.go#L77-L78
I could make a draft PR, but it might take some time to resolve since I haven't been familiar with developing buildpacks. I'm eager to learn tho :)

Ah, ok. That was the bit I didn't test. I didn't validate the precedence order.
I think we can repurpose this issue to scope it just to the --requirements flag. I think I'd like to leave the other CLI flags alone for now, and I think that leveraging pip's existing environment variable support for new flags (e.g. PIP_EXTRA_INDEX_URL=<url>) meets the other part of this request.
Does that seem reasonable to folks?
If so, then the next question becomes - does pip have built-in support for providing --requirements via an environment variable? (e.g. PIP_REQUIREMENTS). If so, this becomes fairly straightforward - set the environment of the pip-install process to include that value and remove the --requirements flag altogether. Default the value of the environment variable to requirements.txt if it wasn't provided by the user.
If there is no built-in support for this feature in pip, the solution looks similar but instead of using the existing env var name, we would create a new one (e.g. BP_PIP_REQUIREMENTS_PATH).

I agree. Some existing hardcoded flags might need special treatment.
Btw, I've tried it on a fresh virtual environment, and PIP_REQUIREMENT works as expected.
(env) $ echo "django" > req.txt && PIP_REQUIREMENT=req.txt pip install
Collecting django (from -r req.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/22/af/979a4c610e727cc936c3db3d48cfcb3c270e106ff919f23fc1a27870ba00/Django-3.2.19-py3-none-any.whl
Requirement already satisfied: asgiref<4,>=3.3.2 in ./env/lib/python3.7/site-packages (from django->-r req.txt (line 1)) (3.7.2)
Requirement already satisfied: sqlparse>=0.2.2 in ./env/lib/python3.7/site-packages (from django->-r req.txt (line 1)) (0.4.4)
Requirement already satisfied: pytz in ./env/lib/python3.7/site-packages (from django->-r req.txt (line 1)) (2023.3)
Requirement already satisfied: typing-extensions>=4; python_version < "3.11" in ./env/lib/python3.7/site-packages (from asgiref<4,>=3.3.2->django->-r req.txt (line 1)) (4.6.3)
Installing collected packages: django
Successfully installed django-3.2.19

Nice. Thanks for exploring that. So it looks like the solution would be to remove--requirements from the pip install invocation and replace it with PIP_REQUIREMENT=<file>. If the user didn't provide a value for PIP_REQUIREMENT, then we would default to requirements.txt.
Does that sound right to you? Are you willing and able to submit a PR for that?

Exactly what I thought. Sure, I'll try to work on it this weekend


Add a map method to PyRef & PyRefMut

I've read through the documentation & haven't seen an easy way to do this, although it might be possible.
Sometimes you want to provide a mutable reference to a field contained within a struct.  If you are using std's RefCell and it's equivalent Ref or RefMut, what you can do is call map to provide mutable access to fields within structs.
It would be great if the same thing could happen with PyRefMut & PyRef.
Here's an example of what I am trying to accomplish:
#[pyclass]
struct Example {
    inner: ExampleInner
}

#[pyclass]
struct ExampleInner {
    field: String
}

#[pymethods]
impl Example {
    pub fn inner(mut slf: PyRefMut<'_, Self>) -> PyRefMut<'_, ExampleInner> {
        slf.map(|val| val.inner) // This does not work currently
    }
}

Yes absolutely agree this API makes sense.
I think in combination with the (poorly-worded) idea in #1089 it would hopefully become possible to create Python objects which don't have their own data, instead just borrowing from sub-fields of other objects.
Experimentation in this area is very welcome 👍

I imagine we would want these as associated methods like std's guards. It would be called like
#[pymethods]
impl Example {
    pub fn inner(mut slf: PyRefMut<'_, Self>) -> PyRefMut<'_, ExampleInner> {
        PyRefMut::map(slf, |val| val.inner)
    }
}

👍 from me

Small correction, needs to be |val| &val.inner|.

I tried to play with this. Passing the PyRef by value to map seems a bit problematic:
let python_obj: Py<...> = ...;

let pyref1 = python_obj.as_ref(py).borrow();
let pyref2 = PyRef::map(pyref2, |pyref| pyref.field.as_ref(py));

The problem is that for accessing field, pyref has to go through (auto)deref, which means that the resulting reference is tied to the map argument, but that is passed by value, so it doesn't work, since we would be returning a reference to a temporary value from the map.
I was able to make it work by passing the PyRef by reference, like this:
pub fn map<'s, F, Target>(&'s self, f: F) -> PyRef<'p, Target>
        where F: FnOnce(&'s Self) -> &'p PyCell<Target>,
            Target: PyClass,
    {
        PyRef {
            inner: f(self)
        }
    }

The problem is that with this API, I'm able to return some completely unrelated PyCell from F (one that doesn't come from self) which I'm not sure is OK.

I think I know what you mean, but let me know if I'm wrong: It's that the map function can return anything, not just something that comes from self, but any captured variable from elsewhere.
In that case,  I've had a look at whether that is possible via RefCell & Ref and it seems like it is possible there (with a 'static lifetime):
use std::cell::{RefCell, Ref};

static UNRELATED: usize = 4;

fn main() {

    let c = RefCell::new(5);
    let b1 = c.borrow();

    Ref::map(b1, |_| &UNRELATED);

}

I don't know if that is something that needs to be restricted, since it's possible in std, unless there are some unsafe or other considerations.

Good point. I tried to make something like this work:
fn map_ref<'a>(py: Python<'a>, pyref: PyRef<'a, S1>) -> PyRef<'a, S2> {
    let inner: &'a PyCell<S2> = pyref.s2.as_ref(py);
    PyRef {
        inner: inner
    }
}

but this won't work, because pyref.s2.as_ref takes the lifetime of pyref instead of 'a, because of the definition of as_ref:
pub fn as_ref<'py>(&'py self, _py: Python<'py>) -> &'py T::AsRefTarget

It takes the shortest of the two lifetimes of self and 'py.
This is done on purpose, there's into_ref which does not have this limitation, but it has some overhead according to the documentation. But I don't think that into_ref is usable here, as it would need to move from its self argument, but we can't move from PyRef.
To sum up, I'm not sure if it's even possible to write the function foo(PyRef<A>) -> PyRef<B> with the current PyRef design. Any ideas?

I have tried a bit and the only thing I managed to do is the following:
impl<'p, T: PyClass> PyRef<'p, T> {
    pub fn map<U: PyClass + AsRef<PyAny>, F>(orig: PyRef<'p, T>, f: F) -> PyResult<PyRef<'p, U>>
    where
        F: FnOnce(&T) -> &U,
    {
        unsafe {
            let inner: &'p T = &*orig.inner.get_ptr();
            // Or:
            // let inner: &'p T = orig.inner.try_borrow_unguarded()?;

            let value: &'p U = f(inner);
            PyRef::extract(value.as_ref())
        }
    }
}

Which works but requires the output type to implement AsRef<PyAny>, which is not the case in general for PyClass. Any idea if we can circumvent this problem?

"good first issue" seems optimistic

@dimbleby reasonable suggestion. Originally I tagged it because I thought it was an API design problemand relatively orthogonal to the rest of PyO3, but I think now this is relatively coupled to the internal representation of PyO3 types.

As a related question, does the macro backend generates different output for a pyclass field and a non-pyclass field? Or in the example provided by the OP, it is possible to obtain a Py<ExampleInner> or PyCell<ExampleInner> from an &Example?

At the moment that's not possible, but I'd definitely want it to be. At the moment a Py<ExampleInner> assumes that it owns the Rust data for ExampleInner, but with a rework to PyO3's internals (in particular, the contents of PyCell), I'd like to make it possible for that to just refer back to data owned in Py<Example>. That's what I'm thinking about in #1089.
A possible first step would be to allow this for #[pyclass(frozen)], because that avoids the complexity of concurrent modification. It depends really whether it's easy for us to express that with the current traits or we need a more intensive rethink.
With the introduction of the new Bound API I'd quite like to remove PyCell from the public PyO3 API, and then we can be more free to rethink how that's built internally.


[QA] Click on notification makes the screen blink

Explorer Alpha build versions:
Not version specific
Issue Description:

When getting a notification about a wearable/emote recieved, if we click on that notification, instead of opening the backpack or the panel to you the mentioned item, the screen makes a subtle blink and goes back to the main view.
STR:

Receive someting on the notifications
Click on the reward
Observe the behavior

Expected behavior:
The client shows the panel (backpack)
Current behaviour:
It appears for a second and then disappears
Evidence:
https://github.com/user-attachments/assets/578ef1ad-0714-4fef-b60d-d3791279d30a
Additional Notes:

We were able to see this issue fixed on 0.39.0
Attaching video as evidence
https://github.com/user-attachments/assets/8d8a2d0c-a007-4d05-b6e7-e7283bbb9818


Use procedural macro to implement g! and s! macros

To implement g! and s! I wrote a compiler in rust's macro language: https://github.com/LLFourn/secp256kfun/blob/master/secp256kfun/src/macros.rs#L85. It turns out you can write procedural macros to write expression macros (not just derives): https://doc.rust-lang.org/reference/procedural-macros.html
Rewrite these macros use procedural macros so they are easier to understand. See if this allows for better testing of the macros as well.

Why do these even need to be macros? Couldn't you just implement core::ops::* on your types?

There's a few reasons:

You can't compose g!(a * X + b * X) into a double multiplication which is faster than adding the result of two multiplications together.
You can improve what the macro compiles out to without updating user code but not with core::ops::*.
With core::op::* You have to implement every combination of multiplication with scalars of the lhs and points on the rhs and vise versa and then every combination of references or owned values on lhs and rhs.
You have to put &a * &X most of the time. & clutter up everything.

3, 4 the types should be copy anyway, they are just a bag of bits
1,2 maybe there is a way to construct a lazy expression using operators and then have a method on it to compute the result but it's probably not worth it
Thanks for explaining!

3, 4 the types should be copy anyway, they are just a bag of bits

Not quite. I think allowing copy means that they may be moved around in memory a lot. I wanted to leave the door open to zeroing out all Scalar<Secret, _> after they are dropped. I think the only correct way of doing this is making the backend::Scalar inside Scalar into a Pin<Box<backend::Scalar>> and putting a custom drop impl on backend::Scalar. So if this is the solution then we can't make them copy in general. I'm not sure how I'm going to manage to do this only for Secret scalars though.

1,2 maybe there is a way to construct a lazy expression using operators and then have a method on it to compute the result but it's probably not worth it

That's could be a good alternative if we can come up with the right design. The downside I think will be is that is the expression optmization will have to be done at runtime.

I think allowing copy means that they may be moved around in memory a lot.

It doesn't. Values can be moved around in memory a lot even if the type doesn't implement Copy. In reality Copy means WillNeverImplementDrop. Even Pin doesn't guarantee that pieces of the data won't end up in some registers or anywhere else.

The downside I think will be is that is the expression optmization will have to be done at runtime.

Done right, the compiler should optimize-out unreachable branches.

I think allowing copy means that they may be moved around in memory a lot.

It doesn't. Values can be moved around in memory a lot even if the type doesn't implement Copy. In reality Copy means WillNeverImplementDrop. Even Pin doesn't guarantee that pieces of the data won't end up in some registers or anywhere else.

Are you claiming there is no point in trying to zero out memory after it's dropped? If this was indeed the case then I would indeed implement Copy for all the types and perhaps try and do the runtime operation optmization as you suggested. Is there some empirical investigation into this claim that demonstrates it?

Are you claiming there is no point in trying to zero out memory after it's dropped?

Yes, at least until there's direct compiler support for it. Note also that the only way that memory could be exploited is if the program has a memory bug. Which should be unlikely in Rust already and the effort is probably better spent on preventing the remaining memory bugs.

empirical investigation

I'm not sure what you expect here. I don't have any links but I logically concluded it from following facts:

optimization passes can do various surprising things, quite a rabbit hole really: https://www.ralfj.de/blog/
there's no interface to tell the optimizer some data is secret
move is documented to be memcpy
to be sound, all memory must be overwritten before being read from in Rust, including memory coming from allocator
the OS zeroes-out pages before handing them to the process, can't find the reference now, I learned it in college, but logically, if you can demonstrate that any usual OS gives your program non-zeroed memory that before belonged to a different user I bet you can get a few million dollars bug bounty.
different programs running under the same user can affect each-other in so many ways it doesn't make sense to try separate them (except for changing their user): various debugging interfaces, shell settings, env vars, they share the same file, ...

From 1 and 2 we can conclude there's no way to guarantee zeroing in Rust, or even C! 4 means our memory-safe program won't leak memory, 5 means OS won't leak our memory to other users. 6 means mainly that even though my argument in 5 implies "OS can't leak a page to different user but could to different process under the same user" it doesn't matter.
IDK if you heard, recent announcement from Google claimed that they had so far zero memory vulnerabilities in a bunch of Rust code. So it seems exploitability of non-zeroed memory is very close to zero in practice.

Happy new year to you too!
I don't think it would involve enum or a Box. I was thinking more like:
#[derive(Copy, Clone)]
pub struct Add<Op1, Op2> where Op1: Expr, Op2: Expr<Output=Op1::Output>, Op1::Output: AactualAdd {
    operand1: Op1,
    operand2: Op2,
}

#[derive(Copy, Clone)]
pub struct Mul<Op1, Op2> where Op1: Expr, Op2: Expr, Op1::Output: ActualMul<Op2::Output>, Op2::Output: ActualMul<Op1::Output> {
    operand1: Op1,
    operand2: Op2,
}

#[derive(Copy, Clone)]
pub struct Neg<Op> {
    operand: Op,
}

pub trait ActualAdd {
    fn actual_add(self, rhs: Self) -> Self;
}

pub trait ActualMul<Rhs> {
    type Output;

    fn actual_mul(self, rhs: Rhs) -> Self::Output;
}

pub trait Expr: Copy {
    type Output: ActualAdd;
    // If Self is Mul these should be the operands, uninhabited otherwise
    type MulOp1;
    type MulOp2;

    fn eval(self) -> Self::Output;

    /// Returns Ok if Self is Mul
    // have more such functions for other optimizations
    #[inline]
    fn to_mul(self) -> Option<Mul<Self::MulOp1, Self::MulOp2>> {
        None
    }
}

impl<Op1: Expr, Op2: Expr<Output=Op1::Output>> Expr for Add<Op1, Op2> {
    type Output = Op1::Output;
    type MulOp1 = Infallible;
    type MulOp2 = Infallible;

    fn eval(self) -> Self::Output {
        match (self.operand1.to_mul(), self.operand2.to_mul()) {
            (Some(op1), Some(op2)) => {
                let op1_1 = op1.operand1.eval();
                let op1_2 = op1.operand2.eval();
                let op2_1 = op2.operand1.eval();
                let op2_2 = op2.operand2.eval();
                if op1_1 == op2_1 {
                    op1_1.actual_mul(op1_2.actual_add(op2_2))
                } else if op1_1 == op2_2 {
                    op1_1.actual_mul(op1_2.actual_add(op2_1))
                } else if op1_2 == op2_1 {
                    op1_2.actual_mul(op1_1.actual_add(op2_2))
                } else if op1_2 == op2_2 {
                    op1_2.actual_mul(op1_1.actual_add(op2_1))
                } else {
                    op1_1.actual_mul(op1_2).actual_add(op2_1.actual_mul(op_2_2))
                }
            },
            _ => self.operand1.eval().actual_add(self.operand2.eval()),
        }
    }
}

impl<Rhs> Add<Rhs> for Scalar where Rhs: Expr<Output=Scalar> {
    type Output = Add<Scalar, T>;

    fn add(self, rhs: Rhs) -> Self::Output {
        Add {
            operand1: self,
            operand2: rhs,
        }
    }
}

// impl the remaining ops the same way.

impl Expr for Scalar {
    type Output = Self;
    type MulOp1 = Infallible;
    type MulOp2 = Infallible;
    fn eval(self) -> Self::Output { self }
}

impl Expr for Point {
    type Output = Self;
    type MulOp1 = Infallible;
    type MulOp2 = Infallible;
    fn eval(self) -> Self::Output { self }
}

Will likely need a bit more tweaking of types&such but should work. It pretty much bypasses specialization (which would be much nicer).

Fascinating! I see a trait instead of an enum approach might work too. I would have two traits fwiw ScalarExpr and PointExpr and drop the ::Output to simplify. I might have a crack at this. I do feel like this might be going beyond the limits of good taste because there is already a lot of trait based indirection in this library already and layering this on top will make it even harder to figure out wtf is actually happening.

I made the g! and s! macros into proc_macros in #170.


Terms link

Add a link to public data to find out where people can see the terms and conditions, and figure out how to integrate the data themselves
connects #273

This has been developed as a "How to Cite" link in the Citations component
It's also included in the data to be integrated manually, which may have to be added manually when Search is migrated to MINDS


Improve article 2303.05514

Transferring a report from HackerNews
Exact location of issue
Inline citations in the article are rendered in a displeasing manner.
Problem details

The references come inline and not well separated from the text (eg in square brackets) like this:
Recently the world was introduced to PYTHEUS Ruiz-Gonzalez et al. (2022); Arlt, Ruiz-Gonzalez, and Krenn (2022). Like his homophonic namesake, PYTHEUS is an explorer, who in just a few short years has already made new scientific discoveriesArlt, Ruiz-Gonzalez, and Krenn (2022)!

I suspect the expected resolution is to get to a state [closer to the PDF] rendering of the citations. This particular style is one of the rarer cases in arXiv where superscripted number marks are used for inline citations, while superscripted latin letters a),b), c) are used for footnote marks.

On a quick look, this kind of visual hiccup seems to affect all default uses of revtex4-1, as well as the AIP sub-style used in the specific paper.


urldecode($slug)

as $slug passed here for News::view($slug) is in url-encoded, in case of multi-bytes string, news_model->get_news($slug) will fail.

You assume it's URL-encoded, but it shouldn't be in any well-coded application.


Removes the extra argument from removeEventListener

Fixes #5303

The line to impact to address #5303 would be the call to removeResizeListener, but this has already been fixed  in #5970. And according the MDN, removeEventListener takes 3 arguments, the last one recommended to be the same as the one used in addEventListener:

It's worth noting that some browser releases have been inconsistent on this, and unless you have specific reasons otherwise, it's probably wise to use the same values used for the call to addEventListener() when calling removeEventListener()

I'm not sure we should have altered the code just if a analyzer says so. Does SonarQube know every implementation of removeEventListener that's in the wild (or even those we are targeting)? I'd trust MDN on this.

@simonbrunel Good catch, thanks

@kurkle SonarQube didn't report an issue with removeEventListener but with the call of our own removeResizeListener method, which indeed doesn't accept 2 arguments.


Profile integrations does not correctly identify a request for QA testing

Description
These changes fix an issue identified at the outset of QA testing, as described in the ticket.
Fixes #871.
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
I updated a unit test to reflect the changes in the lambda handler.
Checklist

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

Deployed: https://github.com/department-of-veterans-affairs/notification-api/actions/runs/3277322280


indivSidebar - Request

I know this is a bit to ask for, but can you update the 1.20.4 version to have the indivSidebar feature? I was really wanting to use this feature when I saw it on the mod page, and was disappointed to learn that it is only in the new versions.

Also it seems team scoreboards break everything

I know this is a bit to ask for, but can you update the 1.20.4 version to have the indivSidebar feature? I was really wanting to use this feature when I saw it on the mod page, and was disappointed to learn that it is only in the new versions.

I'll see when I can do that, I probably don't have enough time until the weekend and I'm not sure how much effort that will be.

Also it seems team scoreboards break everything

Are you referring to an incorrect vertical positioning of the sidebar scoreboards when a team scoreboard is displayed? At least that's the only thing that I noticed (in the newest version), it will be fixed in the next release.

Are you referring to an incorrect vertical positioning of the sidebar scoreboards when a team scoreboard is displayed? At least that's the only thing that I noticed (in the newest version), it will be fixed in the next release.

Chat also seems to get moved as well as the hotbar.

Chat also seems to get moved as well as the hotbar.

I see, that will also be fixed in the next release, thank you for bringing it to my attention

The newest Github release now includes a 1.20.4 build


Add CPU profiler command

New command h2 debug cpu that generates a cpuprofile file.

This shows using graphql-tag for many queries in the project:

Some obversations:

Even though we regenerate the cpuprofile file, VSCode doesn't seem to reload it until you close it and open it again.
If your local CPU is too fast, you might just get 0 or low ms from things that are problematic during deployment.

If you want to test this command, add something like this at the top level of your server.ts:
function doStuff() {
  for (let i = 0; i < 100000000; i++) {
    i = i + i - i;
  }
}

doStuff();

Or call gql many times with big queries for a more real world example (like in the images above).

This is cool. Dumb question: how did you make the flame chart red? All I got is transparent bars.

Quick question / idea / suggestion @frandiox —
What if we generate this file on every h2 build run, so that you get both the bundle size AND the CPU profile whenever you build. We could also have a h2 dev --debug flag, so that this is getting generated and regenerated during development.
I might not be thinking about this user flow correctly, so we should talk about it — but some food for thought.


Make user's own status emoji link to status editor

Right now, clicking on a username in the right sidebar goes to the 1:1 PM conversation with that user, including clicking on one's own name. Clicking on the status emoji does the same thing.
We should make clicking on one's own status emoji instead link to the status editing popover. It would be very intuitive, and would provide a handy way to change one's status with fewer clicks.

This would be a nice touch!

@zulipbot claim

@timabbott #19515


[fix] Java URI cannot handle netty URIs

Description
The log files are filled with this:
java.lang.IllegalArgumentException: Illegal character in query at index 44: /libs/dam/merge/metadata.json;%0A.json?path=<h1>Rhack&;%0A.inc.js
	at java.base/java.net.URI.create(Unknown Source)
	at org.zalando.logbook.netty.Request.<init>(Request.java:43)
	at org.zalando.logbook.netty.LogbookServerHandler.lambda$channelRead$0(LogbookServerHandler.java:45)
	at org.zalando.fauxpas.ThrowingConsumer.accept(ThrowingConsumer.java:19)
	at org.zalando.logbook.netty.Conditionals.runIf(Conditionals.java:17)
	at org.zalando.logbook.netty.LogbookServerHandler.channelRead(LogbookServerHandler.java:44)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:

For a lot of malicous URLs this is logged as an error.
Motivation and Context

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.

👍

Any update on this? We're also facing this issue and really appreciate it being merged.

@nezygis We followed a hack to fix this in our projects, as this PR wasn't merged by Logbook team for a long time.
If you like, you can see out hack here:
https://github.bus.zalan.do/Rainbow/buyinghome-gateway/tree/master/src/main/java/org/zalando/logbook/netty

https://github.bus.zalan.do/Rainbow/buyinghome-gateway/tree/master/src/main/java/org/zalando/logbook/netty

Hello, seems like this is not a public repo, so I cannot see the code.

@nezygis Sorry, please check my updated answer above.

@sdousti thanks a lot, I'll take a look. I'm assuming you also use your own configuration instead of just using "org.zalando:logbook-spring-boot-webflux-autoconfigure" ?

@nezygis My pleasure :)
Also, your assumption is correct: We use that dependency neither directly nor transitively.

👍


add size + responsive size to TextareaInput

Github Issue or Trello Card
This PR addresses this issue: https://github.com/palmetto/palmetto-components/issues/437
Added size + responsive utilities to TextareaInput component.

What type of change is this?
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Updating documentation.
[ ] Updating deployment/build pipeline.

Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[X] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes

UI Checklist

[X] I have conducted visual UAT on my changes/features.
[X] My solution works well on desktop, tablet, and mobile browsers.

@nathanyoung noticed some weird inconsistencies in the chromatic build. Reviewing.

 Responsive size prop for Textarea


Use TokenRequest API instead of calico-nodes service account token for CNI kubeconfig.

Description
Use TokenRequest API instead of calico-nodes service account token for CNI kubeconfig.
With projected service account tokens in kubernetes, the service account tokens of pods
are bound to the lifetime of the corresponding pod. Therefore, it may lead to problems
if an external process re-uses the token of a pod.
The CNI binaries used the token of calico-node. However, in case calico-node got stopped
the corresponding token lost its validity and hence could no longer be used for CNI
operations. Usually, this automatically resolves over time, but there are some edge cases
where this is not possible, e.g. if calico-node is autoscaled in terms of resources and
the new resource requests would require preemption/eviction of an existing pod the CNI
operation to delete the network sandbox will fail due to the no longer valid token
(as calico-node was stopped beforehand).
This change switches over to using the TokenRequest API instead, i.e. creating new
tokens with limited validity. It would have been good to bind the token to an object,
e.g. to the corresponding node, but as of now only secret and pod are supported types
for binding tokens. Hence, the tokens are only limited in time and not bound to any
other kubernetes object.

Related issues/PRs
fixes #4857

Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

Calico now uses the TokenRequest API to generate and refresh a token for the CNI plugin.  This ensures that the token remains valid even when the calico-node daemonset is restarted.

Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one docs-* label.

docs-pr-required: This change requires a change to the documentation that has not been completed yet.
docs-completed: This change has all necessary documentation completed.
docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

release-note-required: This PR has user-facing changes. Most PRs should have this label.
release-note-not-required: This PR has no user-facing changes.

Other optional labels:

cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

/sem-approve

Do you know when the TokenRequest API was added to k8s?  I'm wondering if this will break compatibility with older releases.

Do you know when the TokenRequest API was added to k8s? I'm wondering if this will break compatibility with older releases.

I do not know the exact release, but it looks like even v1.10 had the relevant logic:
https://github.com/kubernetes/kubernetes/blob/v1.10.0/pkg/registry/core/serviceaccount/storage/token.go
How far back would be interesting for you?

Please note that I have not adapted the calico-node clusterrole, yet, which is necessary to be able to create new tokens. (I tested the code locally with an admin kubeconfig.)
I will be off for a week and add the required clusterrole change to this pull request afterwards, i.e. beginning of calendar week 17.

Please note that I have not adapted the calico-node clusterrole, yet, which is necessary to be able to create new tokens. (I tested the code locally with an admin kubeconfig.) I will be off for a week and add the required clusterrole change to this pull request afterwards, i.e. beginning of calendar week 17.

The clusterrole change is now included. I am not sure if I got all occurrences as the clusterrole seems to be duplicated several times.

/sem-approve

One minor comment but this is looking pretty good! Let's see how the tests do.
We should probably have some unit tests for this logic as well. We run some tests with a real API server so we could probably just have the test code in this package create a token refresher with a short expiry time and make sure it gives us a few tokens as a quick and dirty functional verification. (as part of this suite:
https://github.com/projectcalico/calico/blob/faa1d3c6ac3f06dc4b59231249ea6893a6bf73bf/node/Makefile#L278-L284
)

@caseydavenport I took a look at the failed cni-plugin tests in semaphoreci before looking into further tests. It looks like the tests fail because of the missing namespace file (/var/run/secrets/kubernetes.io/serviceaccount/namespace). This can be easily fixed in cni-plugin/pkg/install/install_test.go by creating a corresponding file. However, after doing so the tests only proceed to try to create a token and fail then as there is no valid kube apiserver endpoint configured. How should this be handled?

I added simple tests for the code using the approach suggested.
Please note that the tests only test the creation of one token. The minimum token validity allowed by kube apiserver seems to be 10 minutes.

/sem-approve

However, after doing so the tests only proceed to try to create a token and fail then as there is no valid kube apiserver endpoint configured. How should this be handled?

Ah, this is likely because the code uses an in-cluster client, and we're not actually running on a cluster (we just spin up an apiserver and point the code at it via a KUBECONFIG).
The fix would probably be to have the code respect a kubeconfig file, if one is provided, and fallback on in-cluster config otherwise.

The tests themselves look good to me

I have adapted the cni tests to depend on a running kube-apiserver. In addition to that, I made it possible to run the code outside of a cluster by specifying kubeconfig via environment variable.
@caseydavenport Is this what you want? Anything other changes needed?

/sem-approve

Looks like we'll also need a rebase on this PR

/sem-approve

Fixed BuildClientSet to get the tests in better shape.

/sem-approve

/sem-approve

./pkg/cni/token_watch_test.go
../lib.Makefile:562: recipe for target 'check-fmt' failed

Looks like a formatting issue - goimports should fix it I'd expect.

./pkg/cni/token_watch_test.go
../lib.Makefile:562: recipe for target 'check-fmt' failed

Looks like a formatting issue - goimports should fix it I'd expect.

Fixed.

/sem-approve

Ok, I think I understand the issue with the tests here. Basically, in order to use the token request API properly, we need to use an audience that matches the audiences given to the API server.
In our test environment, this code results in the following error:

E0512 21:05:58.389433       1 authentication.go:63] "Unable to authenticate the request" err="[invalid bearer token, token audiences ["kubernetes"] is invalid for the target audiences ["https://kubernetes.default.svc.cluster.local"]]"

Because we have a hard-coded audience of "kubernetes', but our API server is configured with something else.
It appears that if we simply leave the "audiences" section blank, we'll automatically receive a token that will work with the Kubernetes API server, so that seems like the correct change to make here.
I do wonder if perhaps we'll want to make this configurable, but I suggest for now we just remove the "Audiences" section from our TokenRequest and consider that question separately.

Ok, I think I understand the issue with the tests here. Basically, in order to use the token request API properly, we need to use an audience that matches the audiences given to the API server.
In our test environment, this code results in the following error:

E0512 21:05:58.389433       1 authentication.go:63] "Unable to authenticate the request" err="[invalid bearer token, token audiences ["kubernetes"] is invalid for the target audiences ["https://kubernetes.default.svc.cluster.local"]]"

Because we have a hard-coded audience of "kubernetes', but our API server is configured with something else.
It appears that if we simply leave the "audiences" section blank, we'll automatically receive a token that will work with the Kubernetes API server, so that seems like the correct change to make here.
I do wonder if perhaps we'll want to make this configurable, but I suggest for now we just remove the "Audiences" section from our TokenRequest and consider that question separately.

@caseydavenport That is indeed an interesting catch. Great that the tests caught this. I removed the requested audience for now as suggested. Please trigger the tests.

CI is failing with another golang lint check:
pkg/cni/token_watch.go:222:2: S1000: should use for range instead of for { select {} } (gosimple)
	for {
	^
../lib.Makefile:555: recipe for target 'golangci-lint' failed

That select statement only has a single channel in it so it's complaining about the extra complexity of using select, I believe.

Removing "merge-when-ready" label due to new commits

/sem-approve

Failed to create kubernetes config: invalid configuration: no configuration has been provided, try setting KUBERNETES_MASTER environment variable

Getting these errors in the new tests. I think it's because there are two suites of tests (fv, which run an apiserver, and ut, which do not). Right now the new tests are being run in both, but we don't want to run them in the UTs (because they require an apiserver).
I think just need to update this line: https://github.com/projectcalico/calico/blob/b95cdf0dbf42b62403d931f22d026191292a5ebb/node/Makefile#L298

UT_PACKAGES_TO_SKIP?=pkg/lifecycle/startup,pkg/allocateip,pkg/status,pkg/cni

�[91mFailed to create kubernetes config: invalid configuration: no configuration has been provided, try setting KUBERNETES_MASTER environment variable�[0m

Getting these errors in the new tests. I think it's because there are two suites of tests (fv, which run an apiserver, and ut, which do not). Right now the new tests are being run in both, but we don't want to run them in the UTs (because they require an apiserver).
I think just need to update this line:
https://github.com/projectcalico/calico/blob/b95cdf0dbf42b62403d931f22d026191292a5ebb/node/Makefile#L298

UT_PACKAGES_TO_SKIP?=pkg/lifecycle/startup,pkg/allocateip,pkg/status,pkg/cni

@caseydavenport Thanks for the hint. I excluded the new test from the unit tests as suggested. At least locally, that part now succeeds.

/sem-approve

@ScheererJ :tada: it's merged!
Thanks for the great work on this.

@caseydavenport Is there a plan to backport the fix to v3.23?.

@skmatti mulling on that at the moment. We definitely want to let it soak a bit more before release, but it's also a substantial change with implications for permissions, etc, which normally would be a no-no for a patch release, so it's a hard sell as a backport.

Hi @ralgozino,
this pull request was backported to v3.23 with https://github.com/projectcalico/calico/pull/6218, but there is no release, yet.
Best regards,
Johannes.

As you can see from https://github.com/projectcalico/calico/pull/6218 - this fix is already backported to the v3.23 branch.  As soon as its soaked in our testing for a bit, we will release it in a new v3.23 patch.

This means in practice that after a year all calico pods won't be able to talk to the API server

This is a good point, thank you for raising.

Thank you both for the quick answer and sorry that I missed #6218 in my research 🙌
We'll be waiting for the 3.23 patch release :-)
Have a nice day!

Thanks for the pokes everyone - we are aiming to cut a v3.23 with this included soon, so stay tuned!

I am trying to upgrade kOps to use v3.23.2 and getting the following error for Canal:
==== START logs for container install-cni of pod kube-system/canal-7r5dd ====
...
W0629 06:52:14.819520       1 client_config.go:617] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2022-06-29 06:52:14.824 [ERROR][1] cni-installer/<nil> <nil>: Unable to create token for CNI kubeconfig error=
  serviceaccounts "calico-node" is forbidden: User "system:serviceaccount:kube-system:canal" cannot create resource "serviceaccounts/token" in API group "" in the namespace "kube-system"
2022-06-29 06:52:14.824 [FATAL][1] cni-installer/<nil> <nil>: Unable to create token for CNI kubeconfig error=
  serviceaccounts "calico-node" is forbidden: User "system:serviceaccount:kube-system:canal"

Looking at the code, seems that the service account name is hardcoded to calico-node.
For Canal it should probably be canal based on https://docs.projectcalico.org/v3.23/manifests/canal.yaml.
Any thoughts @caseydavenport @lwr20 @ScheererJ ?

@caseydavenport this is the bug we spotted in our end-to-end tests yesterday.

Cool. Thanks for the quick response!

Yep, this was my bad for not spotting this in the code review!
I think an adaptation to allow specification via an env var would be appropriate. It can be populated via the k8s downward API quite easily:
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName

ref: https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/


Fix typo in builder/dispatchers.go

Sorry for the tinyness of this commit :/

Can you please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master" git@github.com:compwron/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

This will update the existing PR, so you do not need to open a new one.

I do not want to use my real name. Closing pull request.


⚠ RPC server - Figment Solana has degraded performance

In 01fde50, RPC server - Figment Solana ($FIGMENT_SOLANA_RPC_URL) experienced degraded performance:

HTTP code: 429
Response time: 246 ms

Resolved: RPC server - Figment Solana performance has improved in 0937dc1.


added open source organization

This PR Contains

Added first-contributions organization
Added Gitlab organization
Added Nimbledge organization
Added Node.js organization

cc @kaiwalyakoparkar


bump version to Confluent images v6.2.1 (Apache Kafka 2.8.1), fix #2

What changes were proposed in this pull request?
Confluent 6.2.1 (Apache Kafka 2.8.1) is released, so this updates Docker Image tags to the 6.2.1 ones.
How was this patch tested?
Meta change for the tags being pulled.
Already seen in https://github.com/confluentinc/cp-helm-charts/pull/539 by @andrewegel but seems non-open source helm repo was abandoned.

Thank you @abregar


Check that Uploader CD is successful (for Windows build)

Context: the big risk on the Uploader tasks is that we often encounter issues building the Windows version.
Steps:

run the CD on the commit of the last release
check the CD runs successfully
check that the Windows build is working

There is other spots that still show RFCx icon (see screen recording)
https://github.com/rfcx/arbimon-uploader/assets/87486094/fca08ba0-b578-426b-a3e2-20f2da3958b7

I still see the rfcx icon


Webhook Template Page - Give webhook url example in placeholder

Describe the bug

give example of URL in URL textbox like https://www.easycloudbooks.com/


Add JSON output for errors

There is already an --emit json option that emits formatting changes as JSON. However if Rustfmt encounters a parse error it prints the error to stderr in human readable form and exits with error code 1.
$ rustfmt --emit json lib.rs
error: expected one of `!` or `::`, found `<eof>`
  --> /.../src/lib.rs:16:1
   |
16 | sdf
   | ^^^ expected one of `!` or `::`

failed to parse Real("/.../src/lib.rs")

It would be helpful in some situations to be able to have these errors in JSON format too. For example for IDE integration or CI. (One of my coworkers is using a horrible regex to parse this, against my advice!)
I think an --emit-errors json option would be reasonable.

rustfmt version: rustfmt 2.0.0-rc.2-nightly (e91edf56 2020-08-04)
From where did you install rustfmt?: Git master, from yesterday.

Thank you for the suggestion @Timmmm. I had a similar thought no too long ago, although I was thinking that when the user specifies the json (or xml) emit mode, then that json output should include any errors/warnings along with any formatting changes.
Would something like that meet your use case? Or are you thinking you'd need divergent emit modes between errors/warnings and formatting, and if so, what are those use cases?

Yes that would work for us and it seems like a good solution. :-)

I like to work on this issue. I will send a PR ASAP.

@calebcartwright There are two places in the parser that emitting the outputs to stdout .
https://github.com/rust-lang/rustfmt/blob/22c4437b3f1812d90b6f3313de574065481a99b4/src/formatting/syntux/parser.rs#L69
https://github.com/rust-lang/rustfmt/blob/22c4437b3f1812d90b6f3313de574065481a99b4/src/formatting/syntux/parser.rs#L183
I should remove these emit codes and add these Diagnostic information to ParserError. After that I should catch them in emitter. Is this approach correct? And I am implementing a new method in emitter named emit_operation_errors to output operation errors in JSON format.

I should remove these emit codes and add these Diagnostic information to ParserError. After that I should catch them in emitter. Is this approach correct?

Thanks for looking at this one @whizsid! You bring up a good point here that I'd previously overlooked, but no I don't think that approach will be viable as described. rustfmt uses the rustc parser to generate the AST which is then used for formatting, and in the vast majority of cases of encountered parser errors the rustc parser will emit them directly. DB's in the rustc parser have to explicitly be cancelled or emitted (which in turns ensures it's cancelled) or else it will panic.
This starts to get deep into the weeds of the rustc parser pretty quickly, so I'd advise initially focusing on just the rustfmt error and emitter (so the rustfmt operation error in this case) and we can continue to brainstorm on if/how to best handle the rustc errors.
I suppose we could enhance the conditionals used construct the span handler for the parse session with a different rustc emitter based on the the rustfmt emit mode, as the parser does have a json emitter implementation, though the tricky part would likely be determining the destination value for the json emitter construction :thinking:
I need to think on this one a bit


Added support for Openstack Image V1 API.

Currently, we are using the Openstack V2 Image API to upload images to
the Openstack. However, some Openstack accounts may not be supporting V2
yet. So for such accounts, V1 will be used to create/upload images.
@mbhinder @zquestz  @lilirui @tw4dl @rjdavidburke

This looks very sane to me. I would refactor the string comparisons to use regexps so they aren't so brittle, but other than that LGTM.

All error messages should be lower case.


Issue to show new characters.

Is this need to be 12 poses like that sample this ? https://i.imgur.com/nfD5cHh.png
This is my new character: https://i.imgur.com/QTFtQEj.png
Personas:  https://drive.google.com/drive/folders/1Ni7kvQzVmvqmSDR_7ms3iWrb2ptw-myi?usp=drive_link
Thank you.

Is this need to be 12 poses like that sample this ? https://i.imgur.com/nfD5cHh.png
This is my new character: https://i.imgur.com/QTFtQEj.png
Personas: https://drive.google.com/drive/folders/1Ni7kvQzVmvqmSDR_7ms3iWrb2ptw-myi?usp=drive_link Thank you.

Can't access the google drive file.
I'd also be interested in how to add new characters.

if you do not want to define the original 12 poses, you may have to write a little more code, according to the phaser specification, add a sprite, and then modify the motion animation.
if you imitate the 12 poses to do animation, Just add a new field to the persona_names variable.
Here is by going through the predefined roles, and then batch this.physics.add：
	  // *** SET UP PERSONAS ***
	  // We start by creating the game sprite objects.
	  for (let i=0; i<Object.keys(spawn_tile_loc).length; i++) {
	    let persona_name = Object.keys(spawn_tile_loc)[i];
	    let start_pos = [spawn_tile_loc[persona_name][0] * tile_width + tile_width / 2,
	                     spawn_tile_loc[persona_name][1] * tile_width + tile_width];
	    let new_sprite = this.physics.add
	                         .sprite(start_pos[0], start_pos[1], persona_name, "down")
	                         .setSize(30, 40)
	                         .setOffset(0, 0);
	    // Scale up the sprite
      new_sprite.displayWidth = 40;
      new_sprite.scaleY = new_sprite.scaleX;

/environment/frontend_server/templates/demo/main_script.html?#L263-L275
Here is a demo： https://chrome.google.com/webstore/detail/chatdev/dopllopmmfnghbahgbdejnkebfcmomej


Fix the istio-proxy-cfg script

Update the parameter parsing in istio-proxy-cfg to pull the correct values and function correctly.

@robcresswell: Adding do-not-merge/release-note-label-needed because the release note process has not been followed.

One of the following labels is required "release-note", "release-note-action-required", or "release-note-none".
Please see: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed.
Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Hi @robcresswell. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

I signed it!

/release-note-none

/ok-to-test


Rename cursor and cursor_mut functions

Describe the change
It looks like the Mut cursor is for write operations
https://github.com/paradigmxyz/reth/blob/e014eaad339e4b01f6c682614a15c0c0651cc218/crates/storage/db/src/abstraction/transaction.rs#L48-L49
I'd expect that a cursor_mut takes a mut reference, which is not the case:
https://github.com/paradigmxyz/reth/blob/e014eaad339e4b01f6c682614a15c0c0651cc218/crates/storage/db/src/abstraction/transaction.rs#L56-L57
Perhaps we rename this to read_cursor/ write_cursor or cursor_read / cursor_write instead?
Additional context
No response

For me cursor_read/cursor_write reads nicer than mut

I can take this 👍

Just to ask the question: does this mean that we should also use tx_read and tx_write? I didn't mind the previous naming so would like to understand that a little better

tx_read and tx_write

haven't looked at them but would probably be reasonable as well.

I didn't mind the previous naming so would like to understand that a little better

the point of confusing for me was, even if there's cursor_mut it does not take a mutable reference.
renaming to write|read would mimic some sync primitive APIs like RwLock is more appropriate imo


Why Alamofire 5.0.0 with support for swift 5.0 only support iOS 10 or higher?

There are still many users in China who use iOS9, I think there should be a minimum support for iOS9.

If it's that important to you, you can keep using Alamofire 4. However, it's not possible to add the new features we wanted while keeping older OS support, at least with the amount of effort we have to spend here.


[0010] Address writability of vk::BufferPointer<T,A> pointees

Which proposal does this relate to?
0010-vk-buffer-ref.md
Describe the issue or outstanding question.
The spec mentions vk::RawBufferStore, but doesn't explicitly clarify if or how writing through a vk::BufferPointer<T,A> is supported. We should clarify this case.
If writing through vk::BufferPointer<T,A> is allowed we also need to spec how this works with HLSL's copy-in/copy-out paramter passing as well as pointer address spacing.
Additional context
See initial review discussion.

The client I am proposing this for is only interested in reading the pointee. But I am guessing there is interest in writing as well. Still, it would be good to have at least one real live potential buffer pointer user testify that they want to write. @natevm, do you want to be able to write to the pointee?

Yeah, my end users at Argonne labs both read and write to pointers throughout all our Vulkan accelerated projects.

The client I am proposing this for is only interested in reading the pointee.

While I appreciate that you have your priorities and that your client probably ranks up there... We should consider the applications of the feature and how they might be useful to a wider audience.

We should consider the applications of the feature and how they might be useful to a wider audience.

My point was only that I couldn't recall seeing a request to write to a pointee. I always like to make sure I have at least one customer before I create a capability :)

I'd definitely be interested in the optimizer optimizing away stores on variables which have not changed, i.e.
struct Joint
{
   float3x4 relativeTForm;
   vk::BufferPointer<Joint> parent;
   uint modifiedStamp;
   uint recomputedStamp;
   float3x4 absoluteTForm;
};

...

Joint tmp = ptr.get();
tmp.absoluteTForm = special_mul(tmp.parent.get().absoluteTForm,tmp.relativeTForm);
tmp.recomputedStamp = tmp.modifiedStamp;
ptr.get() = tmp;

I'd expect this to only store the modified fields after inlining and optimization.

Prefacing with: We should not specify optimization behavior in the spec. The spec needs to document the language behavior, optimizations need to be spec-conforming and are implementation defined.
I would expect optimizers to remove stores to non-written fields if it is safe to do so, but given the example above, optimizing stores may not be safe depending on memory access and aliasing rules (which we haven’t yet fully defined).
If a vk::BufferPointer<T> is assumed to be non-aliasing and writes are unordered, we could optimize away writes of non-modified fields, and even coalesce writes where the same field might be written to more than once with different values. I would expect existing LLVM optimizations (SROA, dead store elimination, etc) to perform that transformation (no idea if SPIR-V-opt will).
Since vk::BuffferPointer<T>::Get is defined returning an lvalue reference, I would expect that the call is fully optimizable down to just an address being returned and does not imply a load by itself. Instead I would expect member assignment or access of the return value to constitute the load.
In HLSL 202x with user-defined references, you could write the code instead to write back to the vk::BufferPointer<T> by storing a local reference. In that case, I would expect the writes to only write the modified field regardless of aliasing restrictions. That wouldn’t be an optimization but the specified behavior.

Given the response from @natevm et al, I will add some language to the proposal that writes of pointees is supported.


move blog.css to blog2.css

@louh @meghanhade we are doing this for users not to pick up cached styleguide. We should go back OR have some kind of versioning for our styleguide.

Close this now?


PhantomJS 2.0 does not work in Mac OS Yosemite

PhantomJS 2.0 does not work in Mac OS Yosemite.  It failed with "Killed: 9".

Related to #12900 and #12630
I'm not affiliated with the project, but I encountered the same issue so I recompiled a working binary at https://github.com/eugene1g/phantomjs/releases if you want it.

the download link https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.0.0-macosx.zip on http://phantomjs.org/ is failed with "Killed: 9".
https://github.com/eugene1g/phantomjs/releases  is works, thanks.

I have the same problem. I must build Phantomjs 2.0 from repository,  ~30min and CPU on max

Duplicate of #12900.

I have the same issue

+1 same here

Yup.


Dependencies of packages flagged as unused

Hi,
My requirements.txt contains packages installed as dependencies of other modules (ex. Pandas requires pytz, pdfplumber requires Pillow and loguru requires colorama) that are not used as imports in code. They are flagged as unused.
Can this be changed? The requirements are often available in METADATA file in dist-info folders.

Hi @joszko would you please try it again with the latest release (v2.3.3). If you still experience issues, please provide the full log output when running creosote with the --verbose flag.

@joszko I believe this will be fixed by #142 which is cooking.
Please reopen if you don't think this is correct.


Create Application Supervisor Tree

Basic Supervisor Tree Done!
Now it's time to add children on demand


Document dynamic properties in PutMarkLogic

The documentation for PutMarkLogic lists trans: for dynamic properties, but does not show property: or meta:. The code shows that these capabilities are present (and have been for a couple years). It would be useful to show the capabilities.

@dmcassel I'm searching around, and I don't see any way yet for dynamic properties to appear in the processor in NiFi without the user first entering one. For example, if I add "trans:test", then a description icon will appear for it with a description that's from the marklogic/nifi code. That's good, but a user would first have to know about the "trans:" prefix, and I can't figure out how a user would know about that without having to consult external docs. Hoping to find a way to inform the user of this within the processor itself.
Using the processor-level description is a possibility, though that description is only visible when choosing a processor to add to the canvas. It can't be seen once a processor has been added.

@dmcassel Answered my question - NiFI has a "View usage" feature that is available by right-clicking on any processor - see https://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#advanced-documentation . That shows all dynamic properties.
I have been thinking it would be better for all docs on a processor to be available within NiFi as opposed to pointing a user to external docs - namely at https://marklogic.github.io/nifi/nifi-features . I'd like for that page to instead list the various processors with a brief description and then instruct the user to view the docs for each processor available within NiFi. That allows for the vast majority of the docs to be driven by code.
Thoughts on that approach?

Hi @rjrudin. Sorry for the delayed response. Yes, adding to the "View usage" sounds good. That makes the ability to pass dynamic properties visible. Thanks for completing this!


setResponseStatus wrong type definition

Environment
- Operating System: Linux`

Node Version:     v16.14.2
Nuxt Version:     3.3.1
Nitro Version:    2.3.2
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      -
Runtime Modules:  -
Build Modules:    `-``

Reproduction
Access https://stackblitz.com/edit/github-xuiv1i-jfyl16?file=server%2Fapi%2Fwithout-event.ts,server%2Fapi%2Fwith-event.ts . Navigating to /api/with-event works as intended. Navigating to /api/without-event throws error.
Also go to server/api/with-event and remove the @ ts-ignore line to see the type error.
Describe the bug
setResponseStatus function has wrong typing when used in defined nitro api (/server/api/...). Using without event param leads to unhandled error, adding event parameter the typescript complains about having too many parameters.
This might be because nuxt also has setResponseStatus function (that has only 2 paremeters) ?
Additional context
No response
Logs
No response

Linking https://github.com/nuxt/nuxt/issues/13920.


Fixed typo in installation instructions

Summary of Changes
Include a summary of changes then remove this line
Tests
What tests did you add or modify and why? If no tests were added or modified, explain why. Remove this line
Documentation
What documentation did you add or modify and why? Add any relevant links then remove this line
CheckList
Make sure you have checked all steps below to ensure a timely review.

[ ] PR title addresses the issue accurately and concisely. Example: "Updates the version of Flask to v1.0.2"

In case you are adding a dependency, check if the license complies with the ASF 3rd Party License Policy.

[ ] PR includes a summary of changes, including screenshots of any UI changes.
[ ] PR adds unit tests, updates existing unit tests, OR documents why no test additions or modifications are needed.
[ ] In case of new functionality, my PR adds documentation that describes how to use it.

All the public python functions and the classes in the PR contain docstrings that explain what it does

[ ] PR passes all tests documented in the developer guide
[ ] I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message"

Codecov Report

Merging #192 into master will increase coverage by 18.86%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           master     #192       +/-   ##
===========================================
+ Coverage   54.61%   73.47%   +18.86%
===========================================
  Files         120       24       -96
  Lines        2948      999     -1949
  Branches      297       83      -214
===========================================
- Hits         1610      734      -876
+ Misses       1308      238     -1070
+ Partials       30       27        -3

Impacted Files
Coverage Δ

...ication/static/js/components/common/Tabs/index.tsx

...ndsen_application/static/js/ducks/search/api/v0.ts

...ication/static/js/components/common/Flag/index.tsx

...ts/common/ResourceListItem/TableListItem/index.tsx

...sen_application/static/js/ducks/allTags/reducer.ts

...tatic/js/components/common/ScrollTracker/index.tsx

...pplication/static/js/ducks/popularTables/api/v0.ts

...tatic/js/components/common/PopularTables/index.tsx

...js/components/TableDetail/WatermarkLabel/index.tsx

...sen_application/static/js/config/config-default.ts

... and 86 more

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 af59a77...f7acc9c. Read the comment docs.

Thanks @R-A-M


Add support for device-idle constraint in GcmNetworkManager tasks

Hi,
could you please add the setRequiresDeviceIdle constraint for tasks in GcmNetworkManager? JobScheduler supports it. It would come handy for the during the night syncs

Hi @ursusursus, thanks for your feedback.
I added the feature request to our internal tracker.


firebase_crashlytics needs to be updated to fit firebase_core          ver 0.5.0

firebase_crashlytics needs to be updated to fit firebase_core          ver 0.5.0
same for firebase_admob

Hi @kw2019ltd
From what I can see, the issue is related to a FlutterFire plugin rather than to Flutter itself. Please open the issue in the dedicated repository.
Closing, as this isn't an issue with Flutter itself.
If you disagree, please write in the comments,
providing your flutter doctor -v, your flutter run -v,  your pubspec.yaml
a minimal reproducible code sample that does not use 3rd party plugins,
and I will reopen it.
Thank you

Hi @kw2019ltd
From what I can see, the issue is related to a FlutterFire plugin rather than to Flutter itself. Please open the issue in the dedicated repository.
Closing, as this isn't an issue with Flutter itself.
If you disagree, please write in the comments,
providing your flutter doctor -v, your flutter run -v,  your pubspec.yaml
a minimal reproducible code sample that does not use 3rd party plugins,
and I will reopen it.
Thank you


fix: Update dependencies

#__
Checklist

[ ] I didn't over-scope my PR
[ ] My PR title matches the commit convention
[ ] I did not include breaking changes
[ ] I included unit tests that cover my changes
[ ] I added/updated the documentation about my changes
[ ] I made my own code-review before requesting one

Description of the changes

Technical highlight/advice

:tada: This PR is included in version 1.0.0-beta.100 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0-alpha.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Stabilize Ruby 3 allocations

I don't have a great understanding of this, but GC.compact likely
invalidates caches which seem to be causing our Ruby 3.0 allocations to
appear larger than they actually are.
This change removes the call to GC.compact which drops our allocation
numbers. I think the new numbers should be closer to what we expect when
using these classes in an application.
Thanks @jhawthorn for pointing this out!

Hey @BlakeWilliams thanks for taking this on! I actually added the GC.compact call in recently because without it our benchmark CI job would fail intermittently (which appears to have happened to this PR 😓 ). From my testing I discovered allocation counting can be pretty non-deterministic, even with GC disabled. Adding in GC.compact made our test suite pass 100% of the time, although I'll admit I have no idea why. Maybe a way forward would be to pass a flag or environment variable to skip running it? Are you guys getting stable numbers?

Hey @BlakeWilliams thanks for taking this on! I actually added the GC.compact call in recently because without it our benchmark CI job would fail intermittently (which appears to have happened to this PR 😓 ). From my testing I discovered allocation counting can be pretty non-deterministic, even with GC disabled. Adding in GC.compact made our test suite pass 100% of the time, although I'll admit I have no idea why. Maybe a way forward would be to pass a flag or environment variable to skip running it? Are you guys getting stable numbers?

Hmm, I wonder why compacting made it consistent. 🤔
It's been very consistent locally and I've been unable to make it fail, so I'm not sure what is different between the CI environment and my local environment besides OS.

Closing this out in favor of https://github.com/primer/view_components/pull/789

Hey @BlakeWilliams, how would you feel about keeping the MT_CPU = 0 line for benchmark tests? Seems like potentially a bad idea to run our benchmarks in parallel, thoughts?


Pausable RequestFactory

Simple Summary
Adding ability to pause/unpause scheduling for arbitrary address set during deployment as well as to cancel scheduled transactions
Motivation
Having ability to pause scheduling in case of potential future vulnerabilities is desired for first live release of revamped protocol. Pause functionality is considered as last resort option.
Implementation
Ownable and Pausable contracts from Zeppelin repo has been used and added to RequestFactory contract of EAC.
RequestFactory constructor has been extended with _owner argument that represent the address that is allowed to:

RequestFactory.pause() and RequestFactory.unPause()
TransactionRequestCore.cancel() before freeze period

RequestFactory is responsible for deploying TransactionRequestCore that represents scheduled transaction. By adding whenNotPaused modifier to createRequest and createValidatedRequest we effectively stoping schedule request from any schedulers built on top of it.
Remarks
RequestFactory _owner shall be preferably set to address controlled by multi-signature wallet

Archiving

Must have missed this the first time through.  Was this abandoned?

We haven't discussed it since but I think we may want to incorporate something like this. In the case of Augur, they had an escape hatch for the first week of operation then transferred the owner to the 0 address. We may consider something similar. Pinging @kosecki123


⚠ Bofrost.at has degraded performance

In ab4a76c, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1119 ms

Resolved: Bofrost.at performance has improved in 81299d2 after 9 minutes.


Check if alias is already registered before creating the alias

In commit 2d57cd6b7b7e6cd4a1ed9246d4bf1087785e5fc4 new code is added that creates a alias. When using default Laravel TestCase this alias code causes the following crash:
cannot redeclare class TwigBridge\Extension\Laravel\String.
When adding a class_exists statement to check if the alias already exist, this error is fixed.
EDIT: this is a fix for issue https://github.com/rcrowe/TwigBridge/issues/229

Are you 100% sure it shouldn't be something like:
    class_alias('TwigBridge\Extension\Laravel\Str', 'TwigBridge\Extension\Laravel\String');
}```

Notice exclamation mark gone.

Because this specific line was added for PHP 7 support. It should add features against new version, not against older versions. I didn't debug code in depth tho.

I am pretty sure the ! is intentional. Reading the commit message of commit 2d57cd6b7b7e6cd4a1ed9246d4bf1087785e5fc4
renaming class using reserved name, added alias for existing PHP5 users, added PHP7 to travis configuration.
So TwigBridge\Extension\Laravel\String is renamed to TwigBridge\Extension\Laravel\Str. For non PHP7 users there is an alias.

Taking a look at this now

Thanks @Sinius15 :+1:

@rcrowe : This bug is app breaking. Can we please have a release for it, I don't really want to change my composer.json just for this issue in order to downgrade.

I would have rather had this in 0.8, as this isn't breaking right?
And could have removed the alias altogether in 0.9


OTP 24 compatibility

OTP 24 removes :crypto.block_encrypt and :crypto:block_decrypt. In order to make this library compatible with OTP 24, I replaced these calls with the suggested new function crypto_one_time.
The new functions also seem to require a slightly different derivation for the cipher_name.
After making these changes, I verified that all tests still pass.

Thank you for the fixes. :tada:


SMS NOT RECEIVED

Dear Sir/Madam
I and my wife took the vaccine at pachayapaas higher secondary school, Moongil mandapam, Kanchipuram, Tamilnadu, on 12.06.2021 (Saturday) but still, now I have not received any message on my mobile number.
My Mobile Number is-<PHONE_NUMBER>
Aadhar No:5393 4225 1728
Name: Rajasekaran Murugan
My wife Aadhar No:2757 3116 5125
Name: Reka Krishnamoorthi
Kindly update your record and help me to send the message to download the Certificate.

I took the vaccine at rajkot but I don't receive sms my aadhar card number is<PHONE_NUMBER>46 my name is Beladiya Ramaben Govindbhai please help me

Dear Sir/Madam
I took the vaccine at nagar panchayat, silao, nalanda bihar on 15.05.2021 (Saturday) but still, I have not received any message on my mobile number.
My Mobile Number is-<PHONE_NUMBER>,<PHONE_NUMBER>
Aadhar No:4486 2452 9472
Name: savita devi
Kindly update your record and help me to send the message to download the Certificate.

Dear sir/mam
I took my first dose at noida stadium, sec-21 on 1-06-2021. Till now I haven’t received any sms to my mobile no.  I checked my vaccination status and there were showing “not vaccinated” but I got vaccinated. Kindly help me with this so I’ll be able to download my vaccine certificate as this is too important for me.  I’ll be very thankful to you.
Me and my sister took our 1 dose  of covid shield.
Registered phone no.-<PHONE_NUMBER>
Name- Mona Thapa
Aadhaar no.- 5248 8232 8352
Name - Monika Thapa
Aadhaar no.- 6999 4649 7038

I have took vaccine on 28th April but still I have not received any message or certificate. Raised Request many times but no response from any one. Please kindly help me urgently.  I checked my vaccination status and there were showing “not vaccinated” but I got vaccinated. Kindly help me with this so I’ll be able to download my vaccine certificate as this is too important for me. I’ll be very thankful to you.. My registered mobile number is<PHONE_NUMBER>. My name is Nisha Bajaj. Registered on arogya setu and cowin with my pan card number AGWPB4872D


window size reponsive

Hi
how did you managed to response window size and zoom level in this ploting lib?

yes
if you go to this example: https://voila-vuetify.herokuapp.com/
you will realize that this app is completly responsive to window and as I understood plots based on bqplot lib are completly responsive without any extra dependency.
so i want to khnow how did you do that and is any solution for other ploting libs like matplotlib

bqplot responds to the size of it's DOM element, which is part of the layout of the page. We listen to its changes

https://github.com/bqplot/bqplot/blob/master/js/src/Figure.ts#L743
https://github.com/bqplot/bqplot/blob/master/js/src/Figure.ts#L341


[HOLD][$250] Migrate index.native.js to function component

Class Component Migration
Filenames

[ ] src/components/ImageView/index.native.js

type: React.PureComponent
has state values: true
has refs: true
has context: false
lifecycle methods: componentWillUnmount,componentDidUpdate

Task

We currently have some class components in our codebase that we would like to refactor to a function component.
Here's a link with some general advice on how to refactor a class component to a function component: https://react.dev/reference/react/Component#alternatives
If you need additional guidance, please ask in #expensify-open-source
Test for any regressions and verify that there are no breaking changes

I'd like to work on this issue

I can work on this issue.

I'm able to work on this if needed!

I'd like to work on this.

Hi, I'm Julian from Callstack - expert contributor group - and I would like to take a look at this issue

I'd like to work on this

Proposal
Please re-state the problem that we are trying to solve in this issue
Migrate index.native.js to the function component
What changes do you think we should make in order to solve the problem?
The refactored code can be seen here @marcaaron
https://github.com/studentofcoding/Expensify-App/blob/1a65d701a526c3a8c3971a13dc8d200c49f8dfe2/src/components/ImageView/index.native.js#L1-L205

The component has been rewritten, working on a draft PR

Checking it out now 👍

ah interesting. Looks like the PR hit production. Looks like all people on the PR were internal or from callstack, so I'm going to close this out.


Malformed json in Interruption template GetProfile.dialog

Complete the necessary portions of this template and delete the rest.
Describe the bug
Create from template doesn't work, crated empty bot. Seeing error when adding a new dialog shows an error
Version
What version of the Composer are you using? Paste the build SHA found on the about page (/about).
Browser
What browser are you using?

[ ] Chrome
[ ] Safari
[ ] Firefox
[ ] Edge

OS
What operating system are you using?

[ ] macOS
[ ] Windows
[ ] Ubuntu

To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
Give a clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots/gif/video to help explain your problem.

Additional context
Add any other context about the problem here.

addressed in https://github.com/microsoft/BotFramework-Composer/pull/1624


add getContactByPhoneNumber to the Android API

lookup for a phone number in the AddressBook
implemented only on Android

Notes:
My app needs to lookup many phone numbers in the contact list in different screens, so initially I thought it was a good idea to lookup for each individually from the Andorid contacts DB.
The method looks for a phone number up and return a displayName.
Eventually I didn't end up using it because the async way this works would not have worked nicely with my app storage. Instead of looking at individual numbers just in time I store a map of phone_number => display_name when I use getAll() so it is available in the app synchronously to all screens.
Since I wrote the code anyway I thought I would open a PR and let the maintainer decide if it is useful.

Can you also do the iOS api.  We want to keep the API's in sync with each other.

Hi, that is a very good point.
Although my iOS and objective-C knowledge at the moment is not great.
Any help would be appreciated.

should be closed, already resolved by https://github.com/rt2zz/react-native-contacts/pull/416


Evaluate capping the zkEVM gas limit to something different than 2^31-1

https://github.com/matter-labs/foundry-zksync/blob/cc27c50a8932f9e97c8d2e3eff1d2e1f008a72b3/crates/zksync/core/src/utils.rs#L120,
For zkEVm transactions we set a super high gas limit but the zkEVM caps it anyways to "MAX_GAS_PER_TRANSACTION": 80000000, charging the original gas limit and then refunding at the end. Maybe just maxing it at 80_000_000 is tidier.

the 80_000_000 gas cap is only for execution, the other part of the gas limit may be used to pay for pubdata, that may very well surpass that cap. Given that, it is not clear that we should cap gas limit in any way.


Check compatibility of license of each entry with the original dataset license

As per #1 CC-BY is chosen as the default licence for the model zoo entries. However, this might not be compatible with the licence of the training dataset that was used to compute the weights.
OASIS for example has a permissive CC-BY licence (https://www.oasis-brains.org/#access) but has additional citation requirements which are currently not quite met in https://github.com/NifTK/NiftyNetModelZoo/tree/5-reorganising-with-lfs/OASIS
We need to check each entry individually.

What does the BRATS license say?
The VISCERAL paper mentions a "license agreement that assured the use of the data in its given environment and for its research purpose". We currently do not mention a non-commercial restriction
etc.

For OASIS there's an additional license file included in the .tar.gz;
for BRATS, it's a few volume extracted from the original set, I have contacted Spyros, he agreed that we host these volumes with a citation to the original papers.
I'll double check the other downloadables...

Thanks. Note that it's not only about the data but also about the pre-trained weights as these might be considered derived work. Not 100% sure about it but would be worth looking into.
Re OASIS, for clarity, we could copy (or point to) the OASIS licence in a README file (in line with the discussion in #6 )

@tvercaut, do you have any reference that explains what licenses are needed for machine learning models?

That is a complex question and in many cases might depend on the licences under which the training data was released. You will need someone with an actual law background to help navigate these question I am afraid.
Even when the training data consists of photographs from say imagenet, flickr, etc. there are copyright questions. Whether pre-trained weights from their fall under "fair use" (not convinced but see see e.g. https://fairuse.stanford.edu/overview/fair-use/what-is-fair-use/) or whether they fall under "databases/fact compilations" (never really looked into these) or whether I am just fantasising (very plausible but I don't think this has been tested in court yet) is a great question. You will find many reddit and similar discussions on the topic, e.g.:

https://www.reddit.com/r/MachineLearning/comments/7eor11/d_do_the_weights_trained_from_a_dataset_also_come/
https://www.reddit.com/r/MachineLearning/comments/4eu2vd/can_pretrained_networks_be_used_in_commercial/
https://www.reddit.com/r/MachineLearning/comments/3a24wx/copyright_laws_and_machine_learning_algorithms/
https://www.reddit.com/r/MachineLearning/comments/6ss5mw/d_can_i_share_a_model_trained_on_a_non_free/

In short, we won't have a clear cut answer unless the licence in the original dataset helps us out...

Thanks, Tom! I'll take a look.


Interest in addition of spatial index archive?

I thought to add a spatial index to osmflat-rs, and have it partially implemented here (https://github.com/boxdot/osmflat-rs/compare/master...boydjohnson:osmflat-rs:feature/geospatial-archive). It is implemented for Nodes and Ways, but not relations.
The index is this implementation (https://docs.rs/space-time/latest/space_time/xzorder/xz2_sfc/struct.XZ2SFC.html).
It allows for indexing Nodes, Ways, and Relations with the same curve, based on bounding box.
Aside from asking if you would consider a PR, I was wondering if there would be crates.io releases in the future for osmflat and osmflatc?
Best regards.

We definitely would consider a PR. Also we can easily release a new version on crates.io.

Did you manage to also reorder nodes/way based on the index to increase data locality?
I would assume that an index for nodes is "for free" / implicit as long as their are sorted by (some) space filling curve (z-order, hilbert, etc).
Ways and relations require extra data (but there's less of them to go around).

I wasn't able to reorder nodes/ways due to the lack of sort functionality on ExternalVector. I keep the ZOrderIndexEntries in an in-memory vector and sort by index at the end. I can do a US state on my laptop, but know users might want to run it on a planet file.
I asked ChatGPT to make an ascii diagram of how the ZOrderIndexEntry works.
+-----------------------------------------------------------+
|                   ZOrderIndexEntry                        |
|-----------------------------------------------------------|
| z_order (64 bits) | tag (8 bits) | idx (64 bits)          |
+-----------------------------------------------------------+
                           |
                           v
      +------------------------------------------------+
      |                GeoType (tag)                   |
      |------------------------------------------------|
      |  Node = 0    |    Way = 1    |  Relation = 2   |
      +------------------------------------------------+
            |                |                |
            v                v                v
  +----------------+  +----------------+  +----------------+
  |   Nodes Slice  |  |    Ways Slice  |  | Relations Slice|
  +----------------+  +----------------+  +----------------+
  | idx -> Node[ ] |  | idx -> Way[ ]  |  | idx -> Relation[ ] |
  +----------------+  +----------------+  +----------------+

Here's a code snippet of using osmflat to query an archive.
let curve = XZ2SFC::wgs84(Z_ORDER_RESOLUTION);

        let ranges = curve.ranges(x_min, y_min, x_max, y_max, None);

        let spatial = self.osm.spatial_index();
        let ids = self.osm.ids().unwrap();

        ranges
            .iter()
            .map(|i| (i.lower(), i.upper()))
            .flat_map(|v| {
                let element = spatial.z_order_index().partition_point(|e| e.z_order() < v.0);

                spatial.z_order_index()[element..]
                    .iter()
                    .take_while(move |e| e.z_order() <= v.1)
                    .filter_map(|entry| match entry.tag() {
                        osmflat::GeoType::Node => {
                            let item = &self.osm.nodes()[entry.value() as usize];
                            let id = &ids.nodes()[entry.value() as usize];

So I had a thought. Your idea of ordering the nodes, ways, relations each in index order is a good one. It would allow for less data to be stored. To get all the nodes, ways, relations at one spatial index would require 3 binary searches.
The data that wouldn't have to be stored would be (8 bits for the GeoType, 64 bits for the index of the node/way/relation) ~100GB on a planet file.
Then all that needs to be stored would be an optional spatial_index on each Node, Way, and Relation, 64 bits.
To allow for reordering nodes, ways, relations I would use RocksDB during the compilation process, since RocksDB allows iterating all key values by a sorted key. This would allow for the data to never be held in memory, but still be sorted.

That sounds like a good idea. You might not even need those extra 64 bit for nodes, as the spatial index of a node is (most likely) just the morton code of its coordinates, and could be computed on-the-fly?

Yeah, That makes sense. Since we have the latitude and longitude, we can calculate the index on the fly.


PLAT-84501: Settings App - figure out how we will do routing

For starters, we need a RoutablePanels.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.2 out of 3 committers have signed the CLA.:white_check_mark: sugardave:white_check_mark: teckliew:x: Dave FreemanDave Freeman seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.2 out of 3 committers have signed the CLA.:white_check_mark: sugardave:white_check_mark: teckliew:x: Dave FreemanDave Freeman seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Could you either provide an example site or make .Params.DateForm optional?

Without a working exampleSite/, it can be confusing to beginners, who may not really understand what the error message means: https://github.com/rstudio/blogdown/issues/229

ERROR 2017/11/10 14:28:55 Error while rendering "page": template: theme/post/single.html:15:20: executing "theme/post/single.html" at <partial "meta.html" ...>: error calling partial: template: theme/partials/meta.html:4:74: executing "theme/partials/meta.html" at <.Site.Params.datefor...>: invalid value; expected string

#37 is about the very same thing.


Queue AFK Check

An AFK check that uses a queue system to prioritize certain members. Essentially, the only difference between a normal AFK check (RaidInstance.ts) and this AFK check is that the queue AFK check:

accounts for the members that may have missed the previous run due to too many people (gives these members more priority)
gives people with priority reaction(s) priority
can be customizable (set number of people that can get priority queueing, set roles, etc)

@Deaththth can elaborate more on the expectations for this.

closing for now


[New game]: Added New game Tic Tac Toe

🎮 Game Request
Game logic and basic description:
Tic Tac Toe is a traditional 2 player game. Where players take turn one by one to mark a cell out of 9
Point down the features
Game points:
If a player is able to mark 3 consecutive cells (horizontally/vertically/diagonally) then that player wins the game.
If no player is able to mark 3 consecutive cells, then the game is a draw
And if anyone won the game panda and music are start
Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @iamkanhaiyakumar !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

Hey @iamkanhaiyakumar!
We are already having a similar game request in #4738 👀
Make sure you come up with a cool unique idea 😀
Waiting for your new game idea 💗.

Hey @iamkanhaiyakumar ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇