AnyUrl adds trailing slash

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
AnyURL now adds a trailing slash in validation of URLs that dont have a trailing slash. This caused CORS issues for us, because CORS doesnt allow trailing slash (I think, seems to be written here: https://www.w3.org/TR/2008/WD-access-control-20080214/)
In my opinion i see this as a bug because I dont see the option toggle this addition of trailing slash. Maybe its expected behaviour, please let me know then how I can turn it off.
Example Code
from pydantic import AnyHttpUrl as AnyUrlv2
from pydantic.v1 import AnyHttpUrl as AnyUrlv1

print(AnyUrlv2("http://localhost:3000"))
print(AnyUrlv1("http://localhost:3000", scheme="http"))

prints:

http://localhost:3000/
http://localhost:3000

Python, Pydantic & OS Version
pydantic version: 2.2.1
        pydantic-core version: 2.6.1
          pydantic-core build: profile=release pgo=false
                 install path: /Users/charelfeltenrq/.pyenv/versions/3.10.8/lib/python3.10/site-packages/pydantic
               python version: 3.10.8 (main, Dec  2 2022, 11:54:08) [Clang 14.0.0 (clang-14<IP_ADDRESS>)]
                     platform: macOS-13.3.1-arm64-arm-64bit
     optional deps. installed: ['email-validator', 'typing-extensions']

Selected Assignee: @dmontagu

may be related: https://github.com/pydantic/pydantic-settings/issues/104

This problem also becomes apparent in the url builder:
from pydantic import AnyHttpUrl as AnyHttpUrl

AnyHttpUrl.build(
    scheme="https",
    host="google.com",
    path="/search",
)

produces: Url('https://google.com//search')
Is that the desired outcome? If yes, then does it mean that all Url builds we have in our codebase should now have a path that starts without a slash?

The second case is unrelated.
This is done by the URL rust crate, so it probably mandated by a rfc somewhere.

Sorry, the second case is related.

Its weird.. so assuming, AnyUrl 'validates' paths by ensuring that they are conform as they end with a trailing slash, then why does it insert a second slash here again?
from pydantic import AnyHttpUrl as AnyHttpUrl

AnyHttpUrl.build(
    scheme="https",
    host="google.com/",
    path="search",
)

Url('https://google.com//search')

Another weird situation

That's technically valid and works, not sure we need to do anything special there.
I think we might come up with a better solution for this long term but for now if you don't need a Url instance you could do something like:
from typing import Annotated, Any, List

from pydantic_core import CoreSchema, core_schema

from pydantic import AfterValidator, BeforeValidator, GetCoreSchemaHandler, TypeAdapter
from pydantic.networks import AnyUrl

class Chain:
    def __init__(self, validations: List[Any]) -> None:
        self.validations = validations

    def __get_pydantic_core_schema__(self, source_type: Any, handler: GetCoreSchemaHandler) -> CoreSchema:
        return core_schema.chain_schema(
            [
                *(handler.generate_schema(v) for v in self.validations),
                handler(source_type)
            ]
        )

def strip_slash(value: str) -> str:
    return value.rstrip('/')

MyAnyUrl = Annotated[str, AfterValidator(strip_slash), BeforeValidator(str), Chain([AnyUrl])]

ta = TypeAdapter(MyAnyUrl)

print(ta.validate_python('https://www.google.com'))
# https://www.google.com

Thank you for posting this workaround, I am not 100% sure whats going on there, but to my understanding it seems that it creates a type MyAnyUrl which is a str, but includes the validation from AnyUrl. That could be useful, maybe we will use it or a similar idea.
However, I am still a bit baffled that it seems to be seen as not a problem that AnyUrl adds trailing \ to all Urls, to me this is not validation anymore as it actually changes the Url. And also .build creating Urls with \\ in them is problematic for our situation.
For now, we have decided to roll back to pydantic v1. Will there be any way to keep using the pydantic v1 Url behaviour (i.e. not adding \) in v2? We tried via from pydantic.v1 import AnyUrl but this caused errors inside BaseSettings. Or is this really the desired behaviour and you are not planning on changing it back?
Lastly, just wanted to mention, I am a very happpy user of pydantic, and I love the work you all do, just this change of behaviour of Url is giving us a bit of a headache.

Also finding this new behavior very annoying. In pydantic v1 urls inherited from str, so it can be easily passed to library codes, where they usually expects string representation of urls. But now we need to str(model.url_field) or model.url_field.unicode_string() when passing urls, because now it is pydantic_core._pydantic_core.Url
I'm not sure which variant right (old or new url), but this little slash causes very strange and hours of uncatchable bug fixing.
FYI, I come up with this solution:
from typing import Annotated
from pydantic import AfterValidator, AnyUrl, BaseModel

URL = Annotated[AnyUrl, AfterValidator(lambda x: str(x).rstrip("/"))]

class Model(BaseModel):
    url: URL

print(Model(url="https://google.com").url)
# > https://google.com

But sadly we cannot use this solution everywhere, because sometimes we need the last slash.
Seems, that v2 url validator adding slashes only to naked urls, i.e. without path, which is acceptable:
from pydantic import AnyUrl, BaseModel

class Model(BaseModel):
    url: AnyUrl

print(Model(url="https://google.com").url)
# > https://google.com/

print(Model(url="https://google.com/").url)
# > https://google.com/

print(Model(url="https://google.com/api").url)
# > https://google.com/api

print(Model(url="https://google.com/api/").url)
# > https://google.com/api/

Would be nice, if old behavior preserves, or like author suggested, we can choose behavior type. Thanks in advance!

+1 this is a bug.
In addition to a broken behavior when config URLs used to be used to append a path, like:
https://google.com +"/search" (and all other variants with appending path in python)
There is also a violated principle of a least surprise when original value modified by a validation framework as when an URL is configured without slash is returned or saved in other components: DB, external services, they receive a new value which silently violated previous protocol until those actually start to execute it in a request.

That's technically valid and works

@adriangb
It might be technically valid. However, a URL containing a double slash is pointing to a different endpoint (not sure about the semantic) and thus I expect  webservers to respond with a 404.

I had some validation checks because of this issue: the validator was testing for http://loinc.org but I was getting http://loinc.org/ on the model_dump_json()
This is what I did:
`from typing import Optional
from pydantic import BaseModel, AnyUrl, Extra, field_serializer
class Coding(BaseModel):
system: Optional[AnyUrl] = None
version: Optional[str] = None
code: Optional[str] = None
display: Optional[str] = None
userSelected: Optional[bool] = None
@field_serializer('system')
def serialize_dt(self, system: AnyUrl):
    return str(system).rstrip('/')

class Config:
    extra = Extra.forbid`

Another less-than-ideal workaround (if it's acceptable to strip all trailing slashes):
from typing import Annotated
from pydantic import AnyHttpUrl, AfterValidator, BaseModel, PlainValidator, TypeAdapter

AnyHttpUrlAdapter = TypeAdapter(AnyHttpUrl)

HttpUrlStr = Annotated[
    str,
    PlainValidator(lambda x: AnyHttpUrlAdapter.validate_strings(x)),
    AfterValidator(lambda x: str(x).rstrip("/")),
]

class Model(BaseModel):
    url: HttpUrl

url = Model(url="https://google.com").url
print(url)
# > https://google.com

In addition to the above points, IMO, when appending paths, this is more readable:
URL = f"{BASE_URL}/api/v1"

than this:
URL = f"{BASE_URL}api/v1"

I tried:
service_url: HttpUrl

@field_validator("service_url", mode="after")
@classmethod
def service_url_remove_trailing_slash(cls, service_url: HttpUrl) -> str:
    return str(service_url).rstrip("/")

But then I got warnings:
/site-packages/pydantic/main.py:308: UserWarning: Pydantic serializer warnings:
    Expected `url` but got `str` - serialized value may not be as expected
    return self.__pydantic_serializer__.to_python(

How to keep the field as HttpUrl without the trailing slash?

Seems, that v2 url validator adding slashes only to naked urls, i.e. without path, which is acceptable:
from pydantic import AnyUrl, BaseModel

class Model(BaseModel):
    url: AnyUrl

print(Model(url="https://google.com").url)
# > https://google.com/

print(Model(url="https://google.com/").url)
# > https://google.com/

print(Model(url="https://google.com/api").url)
# > https://google.com/api

print(Model(url="https://google.com/api/").url)
# > https://google.com/api/

This inconsistency is my biggest issue, especially when trying to add on paths or sub-paths as others have mentioned. If you can't be certain if a url has a trailing slash or not out of the box then we almost need an os.path.join style method that ensures exactly one forward slash between each path component.

We got this problem when we migrated from pydantic 1 as well. In addition to that, a lot of code was broken since AnyUrl is not accepted as str any more. This is our solution if it will be helpful to anyone:
AnyUrlTypeAdapter = TypeAdapter(AnyUrl) AnyUrlStr = Annotated[     str,     BeforeValidator(lambda value: AnyUrlTypeAdapter.validate_python(value) and value), ]
So we currently just use our "wrapper" AnyUrlStr everywhere for compatibility. It will also keep your original string without any modification if it passes the validation.

Wouldn't it be better to enhance the AnyUrl type by giving it it's own implementation of __add__ providing a feature like urllib's urljoin ?

It's definitely a BUG, not "documentation issue".
Consider this example:
In [14]: url = AnyUrl.build(scheme='http', host='example.com', path='/')

In [15]: url = AnyUrl.build(scheme=url.scheme, host=url.host, path=url.path)

In [16]: url = AnyUrl.build(scheme=url.scheme, host=url.host, path=url.path)

In [17]: print(url)
http://example.com////

Thanks everyone for commenting.
I'd be happy to accept a PR to allow an opt-in change of behaviour. While i know many people here think the current behaviour is a bug, there will be others who are relying on it, so we can't change the default behavior in a minor release.
Here's my proposal for what needs to change:

change this code  to add another fiels to the PyUrl rust struct called something like omit_trailing_slash: bool, default false only applies when lib_url.path == "/"
Based on that flag, change the behaviour of __str__, __repr__, unicode_string and path to omit the trailing slash if set
Same changes for PyMultiHostUrl
change the url_schema() core schema to accept omit_trailing_slash
same for multi_host_url_schema
we'll then need a PR to pydantic to add a config flag url_omit_trailing_slash (default False) which changes how the core schema is built

If anyone's interested, feel free to submit a PR. Might be a nice start for anyone interested in getting their hands dirty with rust as (AFAIK) it shouldn't be a too complicated change, but also not trivial.

If no one is against it, I want to try!

@tworedz, go for it.

Wouldn't it be better to enhance the AnyUrl type by giving it it's own implementation of __add__ providing a feature like urllib's urljoin ?

@JensHeinrich, interesting idea - PR welcome.

@samuelcolvin that's the problem with this ticket - it puts the problem wrong.
The problem is not with trailing slashes, it's about leading path slash.
/api and /api/ are different paths, pydantic handles them correctly, flag name omit_trailing_slash would be confusing!
There are TWO problems:

Behavior with normalizing urls  - adding slash to path if path is empty. From HTTP protocol point of view it makes perfect sense, (at least HTTP 1.x family, because you can't send a request to "" path) - but for other protocols may not. So option like "ensure_absolute_path=True" is possible, enabled by default for compatibility, and may be overridden, but I believe this behavior perfectly makes sense for HTTP by default.

*BUG with Url.build (why I created separate https://github.com/pydantic/pydantic/issues/8640 for that) - that adding LEADING slashes no matter if there WAS leading slash, or not. Strictly saying, it doesn't relate to normalizing urls problem.

For what it's worth, the outcome of https://github.com/pydantic/pydantic-core/pull/1173 was that we think it's best to get the following upstream feature added for us to do Url.build properly: https://github.com/servo/rust-url/issues/835
Based on the upvotes on that issue, anyone who is interested in taking that on would make a lot of people happy!

I keep running into this issue in a project I work on. The real problem isn't omission of slashes, it's the fact that hostnames get slashes added to them even if the user or developer did not specify them.
So
http://localhost:3000 -> http://localhost:3000/

But
http://localhost:3000/api -> http://localhost:3000/api

I feel like I've been on a discussion about this somewhere already, but I keep running into this issue. If we had a way to make it so that we could use the type validation features but not add a slash to hostname (like it was in v1) that would be fantastic.
@samuelcolvin would omit_trailing_slash: bool then omit slashes in all cases, even if user specifies them? I don't think it should, because then you have the same problem as before, except now you're just omitting the slash instead of adding it.

also having this issue with CORS and need to work around

Also ended up here because my FastAPI allow_origins weren't working anymore. 20 minutes debugging, oh well.
I'll just remove the trailing slash for now, with rstrip('/'):
[str(origin).rstrip('/') for origin in settings.BACKEND_CORS_ORIGINS]

I created a Python package pydantic-string-url, which can be used as a replacement for Pydantic's URL types AnyUrl, AnyHttpUrl, HttpUrl, AnyWebsocketUrl, WebsocketUrl, FileUrl, and FtpUrl. Those types are based on str and can be directly passed to library packages that expect strings. They also preserve the absence of trailing slashes. Usage example:
from pydantic import BaseModel, TypeAdapter, ValidationError
from pydantic_string_url import HttpUrl

class User(BaseModel):
    name: str
    age: int
    homepage: HttpUrl

user = {"name": "John Doe", "age": 33, "homepage": "https://example.com"}
invalid_user = {"name": "Alice", "age": 32, "homepage": "not a url"}

john = User.model_validate(user)
assert john.homepage == "https://example.com"  # no trailing slash was added
try:
    alice = User.model_validate(invalid_user)
except ValidationError as e:
    print(str(e))

Feedback and bug reports are welcome. Maybe something similar makes it into Pydantic in the future.

Still have this bug in Oct 2024, please fix

This bug still exists in 2.10.4

Indeed, I don't think we'll make many url related changes until v3, the minor ones we made in v2.10 resulted in an abundance of patch fixes needing to be made :(


HAWKULAR-896 : Respect the filter when selecting all alerts/triggers

Also fixes HAWKULAR-828 where the checkbox wasn't checked when clicking on the cell

Merged #741


Feature check long - now two programs to run and check tests

The goal is to set up 2 cron jobs - one (ci_auto.py) to check labels and kick off the testing workflows, and one (ci_long.py) to check and report on the status of workflows when they complete. One bash shell can start either, setting up python correctly.
The build.sh script in the ufs-srweather-app was changed to not take the machine as an argument, but to determine the machine - making that script less portable. It also has a line to end if there is exactly 1 argument. I call build.sh in build.py with 2 arguments - the machine name twice. So it works now, and will work if build.sh is changed to take the machine name again.

Workflow tests ran successfully on jet and hera, and on NOAA-GSL/regional_workflow and NOAA-GSL/ufs-srweather-app. I also re-ran just a build test on hera to verify that the test stops after a build.

I tried adding source /etc/profile to start_ci_py_pro.sh on jet. It doesn't work for role account rtrr, which is how I plan to run it. Possibly because it's using csh? It works on my account which uses tcsh. The error for rtrr is /apps/ncl/CentOS7.5_64bit_gnu485/bin/.: Permission denied.
/etc/profile does not have a shebang.


ParseObject.get uses device locale with Newtonsoft json : how to change it ?

Hello everyone,
I'm using Parse in a Xamarin form application. Everything was working fine until I tried it on a smartphone with a French locale. Here is the issue:
public class ParseObjectHandler
{
    public readonly string Id;
    public ParseObject RemoteObject { get; private set; }
    public DateTime? CreatedAt { get => RemoteObject?.CreatedAt; }
    public DateTime? UpdatedAt { get => RemoteObject?.CreatedAt; }

    protected T GetValue<T>([CallerMemberName] string name = "")
    {
        string parseName = Char.ToLowerInvariant(name[0]) + name.Substring(1);
        T res = default(T);
        try
        {
            RemoteObject.TryGetValue<T>(parseName, out res);
        }
        catch(Exception e)
        {
            Debug.WriteLine("exception while getting value: " + e.Message);
        }

        return res;
    }
}

Calling the previous code with T = float fails only on my French phone because the floats in my mongo database are using the invariant culture ' 1.0 ' instead of the french ' 1,0 '. Here is the exception:
{System.FormatException: Input string was not in a correct format.
  at System.Number.ParseSingle (System.String value, System.Globalization.NumberStyles options, System.Globalization.NumberFormatInfo numfmt) [0x00083] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at System.Single.Parse (System.String s, System.Globalization.NumberStyles style, System.Globalization.NumberFormatInfo info) [0x00000] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at System.Single.Parse (System.String s, System.Globalization.NumberStyles style, System.IFormatProvider provider) [0x0000e] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at System.Convert.ToSingle (System.String value, System.IFormatProvider provider) [0x00009] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at System.String.System.IConvertible.ToSingle (System.IFormatProvider provider) [0x00000] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at System.Convert.ChangeType (System.Object value, System.Type conversionType, System.IFormatProvider provider) [0x0018e] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x0000c] in <fe08c003e91342eb83df1ca48302ddbb>:0
  at Parse.Utilities.Conversion.ConvertTo[T] (System.Object value) [0x0001e] in <5d1c0c2b96a7483d85e5c63b3e156125>:0
  at Parse.ParseObject.TryGetValue[T] (System.String key, T& result) [0x00021] in <5d1c0c2b96a7483d85e5c63b3e156125>:0
  at AppInclood.Models.ParseObjectHandler.GetValue[T] (System.String name) [0x0002b] in C:\Users\thiba\Documents\Projets clients\Inclood\AppGrial\AppInclood\Models\ParseObjectHandler.cs:25 }

Is there anyway to tell Parse to stick up with the invariant culture when Parsing ? Also, I don't remind having issue before adding the Newtonsoft json nuget in my project. Did Parse just pick it up because it
saw it was available ?
Any help would be appreciated. As a quick and dirty fix, I'm currently catching the exception, retrieving the value as a string and then parsing it manually.
Many thanks,
Thibaut

I've prepared a fix for this issue a while ago and finally got the time to put it up as a pull request.
@thibautvdu Would you mind to check whether the commit mentioned above does fix this issue for you (I've tested it with german locale which should behave similar to a french one and want to have it validated before I merge it)


simple ui for knn

will go to github pages

idea :

save embeddings in json or a binary format
save mapping in json (name to id and id to name)
build the index in browser or before hand
use something like https://www.npmjs.com/package/ml-knn to do a knn
do a knn on a random image

Possibly do a random projection to reduce the size of embeddings

build this as a simple litelement app in /ui folder
put data in gh-pages folder
use something like https://github.com/PrismarineJS/prismarine-viewer/blob/master/.github/workflows/ci.yml#L39 to automatically deploy ui to gh pages (in another job than the python)

https://github.com/graph-embeddings/pbg-helper/tree/master/knn-graph-viewer/front is a simple example to boostrap this

done at https://github.com/rom1504/image_embeddings/tree/web
Conclusion : using numpy as file format, ndarray as representation and a heap to compute a knn is fast enough on 1000 embeddings of size 1280 (30ms)


WIP: Feature/69 balanced penaltymodels

Hi Melody, the matlab function for getting exact fractions out of approximate ones is call rats() (rational fraction approximation). The fractions python module has a similar function. For example, to get 0.5 from 0.499999:
from fractions import Fraction
float(Fraction.from_float(0.499999).limit_denominator(10**5))
However I think this would need to tested pretty carefully to make sure it's doing the right thing, and it would be better to get the right answers out of the linear programming in the first place, if possible

Sorry for the late reply! @aidanproy
Verifying PM Gaps
No, the gap of the constructed penaltymodel gap is not verified. As you've noted, typically, these penaltymodels are constructed by the penaltymodel factories that would find solutions based on that gap, so the check would be redundant in that case.
For the case where a user constructs their own penaltymodel, at the moment, we are not verifying their models. I am on the fence about verifying this because it seems like a very atypical case to me at the moment. Plus, I don't want this verification to happen for the factory-constructed-penaltymodel cases.
On number of tries
You suggestion makes sense. I will go about implementing that

Sorry for the late reply! @aidanproy
Verifying PM Gaps
No, the gap of the constructed penaltymodel gap is not verified. As you've noted, typically, these penaltymodels are constructed by the penaltymodel factories that would find solutions based on that gap, so the check would be redundant in that case.
For the case where a user constructs their own penaltymodel, at the moment, we are not verifying their models. I am on the fence about verifying this because it seems like a very atypical case to me at the moment. Plus, I don't want this verification to happen for the factory-constructed-penaltymodel cases.

That makes sense. It might be useful if there was a "verify_penaltymodel" function exposed in the interface somewhere, even if we don't use it directly. That way if the user happened to build their own, it would be easy for them to check it themselves.


Improve the format registration system

Avoid import *
Avoid using global variables
Load modules dynamically (if possible) and use an on_load() function instead

We're starting down this road over on https://github.com/jupyter/nbviewer/pull/447 and the discussion that brought me here: https://github.com/jupyter/nbviewer/issues/457
I started earlier with my own extension system inspired by some stuff I had cargo culted, but setuptools entry_points will do this better than I can. Here's a good writeup.
basically, your formats would stay, unchanged. Instead of global tomfoolery, they would be registered in setup.py:
entry_points={
    "ipymd.format": [
      "markdown = ipymd.formats.markdown:MARKDOWN_FORMAT",
      ...
    ]
}

and the FormatManager would become... very small. .load would basically become iter_entry_points("ipymd.format").
The real win is for downstream users who run ipymd and ipymd extension, as they would not need to perform any additional configuration... though the received wisdom (from nose, pygments, etc.) is to still require some config, but very simple, as the entry point key becomes the means of integration, not dotted paths: --with-powerpoint.

this sounds really great and much better than the current global mechanism
hopefully i'll find time to get back on this in 3-4 weeks

@bollwyvl let me know if you want to work on this!

I'll give it a shot!
On 04:29, Fri, Jun 12, 2015 Cyrille Rossant<EMAIL_ADDRESS>wrote:

@bollwyvl https://github.com/bollwyvl let me know if you want to work
on this!
—
Reply to this email directly or view it on GitHub
https://github.com/rossant/ipymd/issues/35#issuecomment-111412441.

Closed by #55


Unable to compile / shuttle run with database

Adding the line
 #[shuttle_shared_db::Postgres()] pool: sqlx::PgPool,
into
`async fn actix_web(
) -> ShuttleActixWeb<impl FnOnce(&mut ServiceConfig) + Send + Clone + 'static> {
let config = move |cfg: &mut ServiceConfig| {
cfg.service(hello_world);
};`
in main.rs in api > shuttle > src breaks the compile with:
no function or associated item named new found for struct shuttle_shared_db::Postgres in the current scope
items from traits can only be used if the trait is in scope rustc

I had the same issue as you, after some help on the BncRust discord server:

Downgrade the version of cargo-shuttle by running cargo install cargo-shuttle --version 0.20.0
Downgrade the version of shuttle-shared-db in api/shuttle/Cargo.toml to 0.20.0

Good luck!

@f4bl3d @tomcodes We have updated the dependencies of the workshop and changed some of the code to match the new versions. Sorry for the late reply. Please give it a try if you can and let us know if you have any problems :pray:

Great, thank you!


Fix typo that prevented fallback from working

There was a typo in the getImageFileTypeByImageData function that prevented the fallback from working. It was comparing to the string "UNKOWN" instead of "UNKNOWN".

Thank you very much


Many  strict standards errors in PHP 5.3

If error_reporting setting includes E_STRICT a lot of strict standard errors are reported.
error_reporting =  E_ALL | E_STRICT

I think, this issue is already gone on the latest sources.
I suggest to close this issue and let's discuss about PHP 7 instead of PHP 5.3.

Update XCL 2.3 PHP7


About FPS

Hello，when I try to use your stitching code, I found that the speed of TPS method was very slow. Interpolation and obtaining the warped image took a significant amount of time on high-resolution images. How did you address this issue?

Actually, the TPS speed is pretty fast compared to that of traditional mesh deformation. The speed can be directly affected by the image resolutions and control point number. So if you want to save time for high-resolution images, one of the solutions is to calculate the flows (from TPS) in a lower resolution, upsample the optical flows, and then warp the high-resolution images via high-resolution flows.
For example, we assume the resolution of stitched video is HxW. Then we calculate the interpolation coordinates at lower resolution (e.g., H/4 x W/4), and get the corresponding optical flows with the same resolution. Then, the optical flows can be upsampled to H x W, and are used to warp the original images with the resolution of  HxW.


Updates go to v1.17

This patch does the following

update go.mod and run go mod vendor
update workflow
update hack.md
update the ko build strategy
update the sample ko build that builds shipwright

Closes #942
Signed-off-by: Shivam Mukhade<EMAIL_ADDRESS>Changes

Submitter Checklist

[ ] Includes tests if functionality changed/was added
[ ] Includes docs if changes are user-facing
[ ] Set a kind label on this PR
[x] Release notes block has been filled in, or marked NONE

See the contributor guide
for details on coding conventions, github and prow interactions, and the code review process.
Release Notes

Updates go to v1.17

@sm43 Regarding the failures in the verify step, I guess, it is time to replace the remaining go gets in the one or other shell script with go installs.

/kind dependency-change

@SaschaSchwarze0 Can you help me understand this tag?  https://github.com/shipwright-io/build/blob/06cddccb7a0776197c07b1acdf1b753a76a5fce7/pkg/apis/build/v1alpha1/zz_generated.deepcopy.go#L1
with go v1.17 the tag is changed to //go:build !ignore_autogenerated previoulsy it was // +build !ignore_autogenerated

this tag ignore the file when we do go build right?
this tag is added by generate script so now do we need to keep both the tags or remove the older one? if we want to remove how do we do that as it is a generated file?

@SaschaSchwarze0 Can you help me understand this tag?
https://github.com/shipwright-io/build/blob/06cddccb7a0776197c07b1acdf1b753a76a5fce7/pkg/apis/build/v1alpha1/zz_generated.deepcopy.go#L1
with go v1.17 the tag is changed to //go:build !ignore_autogenerated previoulsy it was // +build !ignore_autogenerated
* this tag ignore the file when we do `go build` right?

* this tag is added by generate script so now do we need to keep both the tags or remove the older one? if we want to remove how do we do that as it is a generated file?

Based on the Go 1.17 release notes:

The go command now understands //go:build lines and prefers them over // +build lines.

I think having both is fine assuming it was generated like this.

@SaschaSchwarze0 Can you help me understand this tag?
https://github.com/shipwright-io/build/blob/06cddccb7a0776197c07b1acdf1b753a76a5fce7/pkg/apis/build/v1alpha1/zz_generated.deepcopy.go#L1
with go v1.17 the tag is changed to //go:build !ignore_autogenerated previoulsy it was // +build !ignore_autogenerated
* this tag ignore the file when we do `go build` right?

* this tag is added by generate script so now do we need to keep both the tags or remove the older one? if we want to remove how do we do that as it is a generated file?

Based on the Go 1.17 release notes:

The go command now understands //go:build lines and prefers them over // +build lines.

I think having both is fine assuming it was generated like this.

yes it was generated like this. updated the pr. ptal


More backports

Summary of the changes / Why this improves CrateDB
See individual commits.
Checklist

[x] Added an entry in CHANGES.txt for user facing changes
[x] Updated documentation & sql_features table for user facing changes
[x] Touched code is covered by tests
[x] CLA is signed
[x] This does not contain breaking changes, or if it does:

It is released within a major release
It is recorded in CHANGES.txt
It was marked as deprecated in an earlier release if possible
You've thought about the consequences and other components are adapted
(E.g. AdminUI)

retest this please

retest this please

This can be reviewed, the problematic patch is removed.


Use helper functions for data conversion

dumps() and loads() convert between Python dict and json_t*.
_to_asciibytes() and _ascii_fromchar() convert between Python
str/unicode/bytes/None and char*.
Signed-off-by: Christian Heimes<EMAIL_ADDRESS>

I have converted some functions to use the new helper functions. Please review the changes. I'm going to change the rest when you like the approach.

Mpf, I pushed the wrong branch to master. I meant to push only the vectors.


Cold/Flu: Email subject should read “Registration for the 2024 Worksite Influenza Vaccination Program”

User Story
A short, simple description of a feature or issue told from the perspective of the user.
“As a user when I register a new worksite, the confirmation email's subject line should read “Registration for the 2024 Worksite Influenza Vaccination Program”
Tasks
TBD
Acceptance Criteria
Email subject line after worksite registration should read “Registration for the 2024 Worksite Influenza Vaccination Program”

Thanks Jerry!

@Stella-Archer - Received the confirmation email with the subject line "Registration for the 2024 Worksite Influenza Vaccination Program"

Terrific - PO approved and closing tix!

It's live looks great - closing


Add option to keep only balanced units

From https://github.com/JMSLab/EventStudyPackage/issues/6#issuecomment-1226599594, we want to add an option to estimate only with balanced units.

Also from https://github.com/JMSLab/EventStudyPackage/issues/6#issuecomment-1226599594, we may add an option to show only the coefficients for event-times that are "balanced". First, we'd need to be able to tag these event-times.

I am closing this issue because the funcionality from window(balanced) in #178 supersedes this.


Play local music

Hi,
How can i play a music from appel music directory ?
Best regard

hello you cannot play from apple music directory.
On Jul 10, 2017, at 6:02 PM, Tetsunna <notifications<EMAIL_ADDRESS>wrote:
Hi,
How can i play a music from appel music directory ?
Best regard
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/bpolat/Music-Player/issues/4, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACrOy4jbWLJVrQAlUIlGtmvrfmffycgKks5sMjzngaJpZM4OS-X1.

Ok ty


Build dev container (with editable install) failing for nbdev

https://github.com/fastai/docker-containers/runs/3774806512

@hamelsmu
I can confirm prod container is successfully built. So I reviewed .github/workflows/nbdev.yaml . It appears to me that it is trying to launch the container after it is built (by default).
Question: Do we need to include --no-run for dev container build step as well??
    - name: Build Prod Container
      if: matrix.build_type == 'prod'
      run: |
        IMAGE_NAME="fastdotai/nbdev"
        echo "current directory: ${PWD}"
        echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
        repo2docker --image-name "${IMAGE_NAME}:latest" --push --no-run --user-id 1000 ${PWD}

    - name: Build Dev Container (with editable install)
      if: matrix.build_type == 'dev'
      run: |
        IMAGE_NAME="fastdotai/nbdev-dev"
        echo "current directory: ${PWD}"
        echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
        repo2docker --image-name "${IMAGE_NAME}:latest" --editable --push --user-id 1000 ${PWD}  echo "dev build completed"

We've removed support for this container now.


Horizontal Mouse Scroll Key

Add horizontal mouse scroll as key input.

Just holding Shift would be more convenient imo


add page navigation load handlers to setContent

this should allow doing stuff like setContent('...', { waitUntil: 'networkidle' })
closes #728

I signed it!

Hi @devsnek, thanks for the PR.
Waiting for network idle is currently supported, like this:
await Promise.all([
  page.setContent('...'),
  page.waitForNavigation({waitUntil: 'networkidle'})
]);

However, this would not work if setContent doesn't instantiate any new requests.
We have some on-going work to support life cycle events that should help to fix #728.

awesome, should I close this then?

@devsnek I'll close this for you :)

Hi @aslushnikov
I'm sorry if I should not comment a closed PR, I'll create a ticket if needed.
What is the difference between
await Promise.all([
  page.setContent('...'),
  page.waitForNavigation({waitUntil: 'networkidle'})
]);

and
await  page.setContent('...');
await  page.waitForNavigation({waitUntil: 'networkidle'});

Thank you

the bottom one is more likely to get stuck with the current lifecycle and race conditions


Add support for Tabs

Version 1.x had support for tabs, but 2.x does not. Should be straightforward - just store an array of phantom pages.  That's how 1.x worked.

Closed via 26abc0d07a729bd174a15987a6a5903b62267b25


Configuration settings for session caching

@JordonPhillips writes on Dec 12, 2017 in #1157 :

the AWS SDKs have an initiative to add features around configuration in a consistent manner. I'll have conversations with other SDK engineers to see how the changes will affect them and if they have feedback on how it is exposed.

Jordon was speaking about why he was going to defer adding the configuration options to control session caching and instead get just the disk cache functionality without the ability to enable it in the config merged in #1338 at that time.

Where is this initiative to add features around configuration being tracked?
What progress has been made over the past 5 months on this initiative?
Would a PR be welcome at this time to add the two configuration settings, one to set the credential cache and one to set the directory where the on disk cache is stored? I ask this because I don't want to make one if it isn't welcome and won't be merged because there's a pending plan for a new way to do configuration.

We're still in the process of running this by the other SDK teams. Unfortunately, we don't have anything publicly tracking this initiative.

Is there any movement on this? We're using stacker and so have no control over the session creation. It would be great to have boto cache the session by default, or let us enable it using environment variables?

I have written https://pypi.org/project/aws-session-handler/
And I'm still using it in my python projects
For other scripts I'm using this to set environment vars so that I only need to provide my mfa ones every 12u


Local rev-parse fails for updated remote refs

Rev-parse of local ref (obviously) does not give expected result after git-fetch, since
only FETCH_HEAD and tracking branches are updated.
Instead of just a fallback, always use /refs/remotes/origin/ . Since we control the initial clone to temp, we can safely hardcode the name of the remote.
fixes #89

Oh great, that beautiful "Update branch" button in the UI don't rebase by default :)


[BS 0.1.5] Mode button doesn't seem to work anymore

https://github.com/Natanaelel/BankStorage/assets/14002834/3161d1fc-0ea7-4abf-bd36-63e675433040

does it work after rejoining?

Fixed!
https://modrinth.com/mod/bank-storage/version/0.1.6


fix(ui): resolve issue with PasswordInput component reveal icon

Description
I fixed the behaviour of the PasswordInput component in Edge Browser. The reveal icon wasn't hidden.
What type of PR is this? (check all applicable)

[ ] 🍕 Feature
[x] 🐛 Bug Fix
[ ] 📝 Documentation Update
[ ] 🎨 Style
[ ] 🧑💻 Code Refactor
[ ] 🔥 Performance Improvements
[ ] ✅ Test
[ ] 🤖 Build
[ ] 🔁 CI
[ ] 📦 Chore (Release)
[ ] ⏩ Revert

Mobile & Desktop Screenshots/Recordings

@NeuroNexul thanks for the PR bro. 🩷


fix: delete telegram users

Delete telegram users from s3 script

Is this change intended to be temporary or permanent? If permanent, could we remove the 1 lines you commented out?

Is this change intended to be temporary or permanent? If permanent, could we remove the 1 lines you commented out?

This will be permanent


Allow multiple aria-controls per target

As per the current implementation multiple toggle buttons for the same target get out of sync when expanding/collapsing.
I made a testcase http://jsbin.com/koyanoxora/edit?html,css,output
In general I think that the following logic is preferable:
 var isExpanded = target.getAttribute('aria-hidden') === 'true';

In addition to that every time one clicks a toggle button all of the buttons with the same namespace value should update their aria-expanded value to true|false.

Very true. I’ll see what I can do next week. :)

In the case where a collapsible area would have several toggles, what should aria-labelledby refer to? All of them?

Working prototype, but right now I need to sleep:
(function () {

  let internalId = 0

  const $$ = (selector => Array.prototype.slice.call(document.querySelectorAll(selector)))

  const togglesMap = $$('[data-a11y-toggle]').reduce((acc, toggle) => {
    const targetId = toggle.getAttribute('data-a11y-toggle')

    toggle.id || toggle.setAttribute('id', 'a11y-toggle-' + internalId++)
    toggle.hasAttribute('aria-expanded') || toggle.setAttribute('aria-expanded', true)
    toggle.hasAttribute('aria-controls') || toggle.setAttribute('aria-controls', targetId)

    acc['#' + targetId] = acc['#' + targetId] || []
    acc['#' + targetId].push(toggle)
    return acc
  }, {})

  const targetsMap = $$(Object.keys(togglesMap)).reduce((acc, target) => {
    target.hasAttribute('aria-hidden') || target.setAttribute('aria-hidden', false)
    target.hasAttribute('aria-labelledby') || target.setAttribute('aria-labelledby', togglesMap['#' + target.id].map(toggle => toggle.id).join(' '))

    acc[target.id] = target
    return acc
  }, {})

  document.addEventListener('click', event => {
    const toggle = event.target
    const target = targetsMap[toggle.getAttribute('aria-controls')]

    if (!target) return false

    const isExpanded = target.getAttribute('aria-hidden') === 'false'
    const toggles = togglesMap['#' + target.id]

    target.setAttribute('aria-hidden', isExpanded)
    toggles.forEach(toggle => toggle.setAttribute('aria-expanded', !isExpanded))
  })

}())

Cool, thanks for taking a stab at this.
In the case where a collapsible area would have several toggles, what should aria-labelledby refer to? All of them?
If that is fine accessibility-wise yes, otherwise the only option is to grab the `label` text and replace `aria-labelled-by` with `aria-label` e.g.
```javascript
target.setAttribute('aria-label', aToggle.textContent) && target.removeAttribute('aria-labelledby');
```
The prototype solution suffers from the perf thing from #2.
Also if you want to use event delegation you'd have to do something similar to what I showed you the other day. I mean your solution is nice but it won't work in this case:
<button ... >expand</button>

Here event.target is the span when it covers the button.

The prototype solution suffers from the perf thing from #2.

Even if that was the case, I’d argue this is not an actual problem.  It’s just that the likeliness to have many toggles on the same page and to remove the targets is quite low for this script.

Also if you want to use event delegation you'd have to do something similar to what I showed you the other day. I mean your solution is nice but it won't work in this case:

Very true. I’ll probably add this in another PR though.

PR pending in #12.

Also if you want to use event delegation you'd have to do something similar to what I showed you the other day. I mean your solution is nice but it won't work in this case:

Fixed in https://github.com/edenspiekermann/a11y-toggle/releases/tag/1.0.2.

Done: https://github.com/edenspiekermann/a11y-toggle/releases/tag/1.0.5.


How can we use UG student volunteer help?

Hello all,
I am getting requests from some of my students where they want to volunteer and "get involved with research." My students are health science students with no coding experience.
I am trying to think of ways that students could help. They could be ad-hoc testers. I would  put a task on JATOD and send them a link to test the tasks. They would run through a task and provide me feedback. I personally am getting sick of tired of testing the Stroop!
Does anyone else have any ideas? Or if I get a pool of volunteers maybe other people can have them test things?
The students would of course want this to be a resume item to help them along the way.
J

I think that would be nice. It would be good to get a new set of eyes on this Ebbinghaus experiment I have on the docket.

perhaps drawing up schematics of experiments that would be worth adding and finding stimuli for them? I would like to do the Shepard Mental Rotation experiment, but not sure what stimuli to use.

What is JATOD?

I've found that undergraduates with no previous coding experience can put together a jspsych experiment in a few weeks to months if motivated to work on it. It seems to me like coding a replication of a classic experiment is a perfect way to start learning. No tough decisions to make about research design. Just learning to use the tool to build it. And contributing to open source code bases is a great thing to show off on a resume.

What is JATOD?

Sorry JATOS. https://www.jatos.org/
This is what I plan to use for running my jsPsych experiments.

Hadn't heard of that one. I've used Pavlovia so far, and will likely switch to Cognition.run going forward.

I just tried out Cognition.run and it looks great.

@jodeleeuw: What is the most common format of the training you would provide to UGs learning jsPsych? Tutorials on the website, then videos, then ...?  Any generalized guide to web development or javascript that you have found useful? Any git up front? I have actually found it somewhat hard to train UGs in using JsPsych, perhaps because I am still a beginner myself in many ways.


The customer is getting order confirmation mail twice.

Terms

[X] Before you openning this issue, i have checked if the issue has already been reported.

Bagisto Version(s) affected
master
Issue Description
The customer is getting order confirmation mail twice.
Preconditions

Admin should be configured mail.
Admin should have at least one product created.

Steps to reproduce

Go to 'Shop'
Added a product to the cart and proceed to checkout
Fill in all the required fields and select the shipping/payment method
Click on the place order button
Go to the mailbox
See the error

Expected Result
The customer should receive the order confirmation mail once.
Actual Result
getting twice the mail for the same event. Here
Screenshots
No response
Additional context
No response

@Amitk-webkul,
The order confirmation email is being sent twice because listeners for checkout.order.save.after have been created in both the admin and shop panels and both send mail.
We will be happy to work on it.

@sunarcrajneesh, I have assigned the issue to you. The order confirmation email should be sent to both the admin and the customer. But it is showing both for the customer. so please do accordingly.


[BugFix] Fix asan crash since FuntionCallExpr not set type

What type of PR is this：

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes https://github.com/StarRocks/StarRocksTest/issues/2258
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

[FE PR Coverage Check]
:heart_eyes: pass : 1 / 1 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/analyzer/PartitionExprAnalyzer.java
1
1
100.00%
[]

@Mergifyio backport branch-3.0


Error Start Application

Error start test.js
util.js:280
throw new ERR_INVALID_ARG_TYPE('superCtor', 'Function', superCtor);
^
TypeError [ERR_INVALID_ARG_TYPE]: The "superCtor" argument must be of type Function. Received type undefined
Wich a problem???

Please see "How to install the latest version" in https://github.com/nodeftpd/nodeftpd/issues/115. If that did not help, please add your version details.


MSL: Cannot resolve expression type.

The following HLSL - when compiled to spirv with DXC and then run through spirv-cross to generate MSL - fails in OpLoad:
static float offsets[] =
{
    0,
};

float4 ps_main() : SV_TARGET0
{
    float result = 1.0;

    for (int i = 0 ; i < 1 ; i++)
    {
        float x = offsets[i];

        if (x < 1)
        {
            x *= 2;
        }

        float y = (x == 0) ? offsets [ i ] : offsets [ 0 ] ;

        result += x * y ;
    }

    return result;
}

Bug is that a OpAccessChain is consumed in a continue block, but the declaration of the access chain is not declared until the loop body is emitted.


Fix private key leak when updating profile 😱

apply custom stringifier both in responders and in federation to avoid leaking internal data including private keys

@quinn-madson I'm going to merge this since it's a critical bug. Feel free to review later if you want


Set max velocity and min velocity of the ego vehicle

Hi, in the "ContinuousAction" action mode, how to set the max velocity and min velocity of the ego vehicle? It seems there existing a MAX speed of the ego vehicle, but I don't know how to change it.Thanks for your answer.

Good point! I just added the functionality, if you install the development version you can now configure the minimum and maximum speed with e.g.
env.configure({
    "action": {
        "speed_range": (10., 20.)
    }
})
env.reset()


[Bug]: Cameras not responding in homekit

What happened?
They show up as cameras in homekit but they don't stream at all.
Device Type
Doorbell (Supported)
Plugin Version
v1.0.x (Supported)
HomeBridge Version
v1.4.x (Supported)
NodeJS Version
v12 (Supported)
Operating System
Mac OS X 11+ (Supported)
Relevant log output
[5/4/2022, 4:15:16 PM] [EufySecurity] Backyard FFmpeg process creation failed: spawn ffmpeg ENOENT
[Backyard] Snapshot request handler provided empty image buffer!
[5/4/2022, 4:15:18 PM] [EufySecurity] Doorbell FFmpeg process creation failed: spawn ffmpeg ENOENT
[Doorbell] Snapshot request handler provided empty image buffer!

Hello please use the beta version

I am on Beta

My doorbell also stopped working since v2.0.0-beta.3
Was working fine with v2.0.0-beta.2
Log when starting camera:
TypeError: this.platform.eufyClient.getStationDevice(...).getSerial is not a function
    at Station.<anonymous> (/homebridge/node_modules/homebridge-eufy-security/src/accessories/streamingDelegate.ts:213:93)
    at Station.emit (node:events:538:35)
    at Station.onStartLivestream (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/http/station.ts:450:14)
    at P2PClientProtocol.<anonymous> (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/http/station.ts:57:148)
    at P2PClientProtocol.emit (node:events:526:28)
    at P2PClientProtocol.emitStreamStartEvent (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1556:18)
    at P2PClientProtocol.handleDataBinaryAndVideo (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1216:34)
    at P2PClientProtocol.handleData (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1028:18)
    at P2PClientProtocol.parseDataMessage (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:954:26)
    at P2PClientProtocol.handleMsg (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:776:26)

Hi,
same version, same error.

TypeError: this.platform.eufyClient.getStationDevice(...).getSerial is not a function
    at Station.<anonymous> (/homebridge/node_modules/homebridge-eufy-security/src/accessories/streamingDelegate.ts:213:93)
    at Station.emit (node:events:538:35)
    at Station.onStartLivestream (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/http/station.ts:450:14)
    at P2PClientProtocol.<anonymous> (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/http/station.ts:57:148)
    at P2PClientProtocol.emit (node:events:526:28)
    at P2PClientProtocol.emitStreamStartEvent (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1556:18)
    at P2PClientProtocol.handleDataBinaryAndVideo (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1216:34)
    at P2PClientProtocol.handleData (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1028:18)
    at P2PClientProtocol.parseDataMessage (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:954:26)
    at P2PClientProtocol.handleMsg (/homebridge/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:776:26)

Should be fix on the latest beta

Should be fix on the latest beta

Install latest beta, and working fine again.

Are you sure you're using the latest beta ? Can you check here if it's the case ?
https://github.com/homebridge-eufy-security/plugin/wiki/Beta-Version
I don't see the version of the plugin which should be appear like that :
[5/5/2022, 3:13:46 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Salle à manger ON handlePropertyChange: { name: 'currentMode', value: 1 }
[5/5/2022, 3:13:46 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Salle à manger Raw Property Changes: 1151 1
[5/5/2022, 3:13:51 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Push Connected!
[5/5/2022, 3:14:24 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Doorbell Raw Property Changes: 2111 3
[5/5/2022, 3:14:24 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Doorbell Property Changes: chargingStatus 3

I am on EufySecurity-2.0.0-beta.4 with DEBUG mode on. But whenever I try to play the camera stream, it does not log anything on homebridge, not even a line, and right away says the camera is not responding in the home app.

Are you sure you're using the latest beta ? Can you check here if it's the case ? https://github.com/homebridge-eufy-security/plugin/wiki/Beta-Version
I don't see the version of the plugin which should be appear like that :
[5/5/2022, 3:13:46 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Salle à manger ON handlePropertyChange: { name: 'currentMode', value: 1 }
[5/5/2022, 3:13:46 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Salle à manger Raw Property Changes: 1151 1
[5/5/2022, 3:13:51 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Push Connected!
[5/5/2022, 3:14:24 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Doorbell Raw Property Changes: 2111 3
[5/5/2022, 3:14:24 PM] [EufySecurity-2.0.0-beta.4] DEBUG: Doorbell Property Changes: chargingStatus 3

I'm on the 2.0.0-beta.4 version. I'm copying the logs from the homebridge homepage on mac. Is there somewhere else I should be getting the logs from?

Here are some log readings from my indoor 2k camera which also doesn't stream.
[5/6/2022, 10:14:53 AM] [EufySecurity] Living Room GET DeviceEnabled: true [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room GET DeviceStatusLed: true [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room GET DeviceMotionDetected: false [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room GET DeviceEnabled: true [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room GET DeviceMotionDetection: true [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room RTSP rtspStream:true [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room RTSP cameraConfig: true [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room RTSP false [5/6/2022, 10:14:53 AM] [EufySecurity] Living Room : RTSP capabilities not enabled.  You will need to do it manually!
[5/6/2022, 10:14:53 AM] [EufySecurity] current_path /Users/ZIG/.homebridge/eufysecurity/2.sock
[5/6/2022, 10:14:53 AM] [EufySecurity] parent_dir /usr/local/lib/node_modules/homebridge-eufy-security/dist/accessories
[5/6/2022, 10:14:53 AM] [EufySecurity] current_path /Users/ZIG/.homebridge/eufysecurity/4.sock
[5/6/2022, 10:14:53 AM] [EufySecurity] parent_dir /usr/local/lib/node_modules/homebridge-eufy-security/dist/accessories
[5/6/2022, 10:14:53 AM] [EufySecurity] Living Room VIDEOCONFIG: {"audio":true,"stillImageSource":"-i https://cdn-eu.eufylife.com/thumb/2022/05/06/station/T8400P3121380698/lNMbF3sdOuAv8hBK.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYLV2KOLW6PU4FSA%2F20220506%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20220506T061400Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=ddfa158ef2710cf8cba05fbab1e9c75cf818d04f71d26e93830393c9971a6baf","maxWidth":640,"maxHeight":480,"maxFPS":10,"maxStreams":2,"maxBitrate":99,"vcodec":"libx264","packetSize":188,"source":"-i unix:/Users/ZIG/.homebridge/eufysecurity/2.sock","acodec":"libfdk_aac","encoderOptions":"-preset ultrafast -tune zerolatency","forceMax":false}
[5/6/2022, 10:14:53 AM] [EufySecurity] Living Room Starting video stream: 640x480, 30 fps, 299 kbps  (AAC-eld)
[5/6/2022, 10:14:53 AM] [EufySecurity] Living Room Stream command: ffmpeg -hide_banner -loglevel level -use_wallclock_as_timestamps 1 -i unix:/Users/ZIG/.homebridge/eufysecurity/2.sock -an -sn -dn -r 30 -vcodec libx264 -pix_fmt yuv420p -color_range mpeg -f rawvideo -preset ultrafast -tune zerolatency -filter:v scale='min(640,iw)':'min(480,ih)':force_original_aspect_ratio=decrease,scale='trunc(iw/2)*2:trunc(ih/2)*2' -b:v 299k -bufsize 598k -maxrate 299k -payload_type 99 -ssrc 5439332 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params zfx7kkYHDS0Dec0DhLHMnvVxI7ieS79gak+cHl7g srtp://<IP_ADDRESS>:50540?rtcpport=50540&pkt_size=188 -i unix:/Users/ZIG/.homebridge/eufysecurity/4.sock -vn -sn -dn -codec:a libfdk_aac -profile:a aac_eld -flags +global_header -ar 16k -b:a 24k -ac 1 -payload_type 110 -ssrc 7925571 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params SDIxe9BzM7j6KDvyCpFPzcwp0DO3ATOm6rwU05X/ srtp://<IP_ADDRESS>:57315?rtcpport=57315&pkt_size=188 -progress pipe:1
[5/6/2022, 10:14:53 AM] [EufySecurity] Living Room FFmpeg process creation failed: spawn ffmpeg ENOENT
[5/6/2022, 10:14:53 AM] [EufySecurity] Stopping session with id: e0b3172a-bac0-4b5f-9846-2fb88add7e17
[5/6/2022, 10:14:54 AM] [EufySecurity] Living Room Stopped video stream.
[5/6/2022, 10:14:54 AM] [Hue] Philips hue: request 15: GET /lights
[5/6/2022, 10:14:54 AM] [Hue] Philips hue: request 15: 200 OK
[5/6/2022, 10:14:55 AM] [webostv] [TV] Connecting to TV
[5/6/2022, 10:14:55 AM] [homebridge-dyson-pure-cool] YN6-SA-NNA0922A - MQTT message received: {"msg":"CURRENT-STATE","time":"2022-05-06T06:14:56.000Z","mode-reason":"ALXA","state-reason":"MODE","rssi":"-44","channel":"1","fqhp":"99920","fghp":"70280","product-state":{"fpwr":"ON","auto":"ON","oscs":"ON","oson":"ON","nmod":"OFF","rhtm":"ON","fnst":"FAN","ercd":"11E1","wacd":"NONE","nmdv":"0004","fnsp":"AUTO","bril":"0002","corf":"ON","cflr":"0073","hflr":"0073","cflt":"CARF","hflt":"GHEP","sltm":"OFF","osal":"0175","osau":"0220","ancp":"CUST","fdir":"ON"},"scheduler":{"srsc":"0000000000000000","dstv":"0001","tzid":"0001"}}
[5/6/2022, 10:14:55 AM] [homebridge-dyson-pure-cool] YN6-SA-NNA0922A - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2022-05-06T06:14:56.000Z","data":{"tact":"2982","hact":"0053","pm25":"0015","pm10":"0012","va10":"0011","noxl":"0000","p25r":"0016","p10r":"0020","sltm":"OFF"}}

Which version of Mac OS are you using ?

Big Sur

Big Sur 11.6.5

I am on Monterey 12.3.1 and I do not even see any traces of RTSP or live stream mentioned in the debug logs.

Big Sur 11.6.5

looks like an FFMPEG issue, can you test this : https://formulae.brew.sh/formula/ffmpeg

I am on Monterey 12.3.1 and I do not even see any traces of RTSP or live stream mentioned in the debug logs.

Did you see such log appear (you need to enable debug mode within advanced plugin setting first) :
[5/6/2022, 10:14:53 AM] [EufySecurity] XXXXXXXXX command: ffmpeg -hide_banner -loglevel level -use_wallclock_as_timestamps 1 -i unix:/Users/ZIG/.homebridge/eufysecurity/2.sock -an -sn -dn -r 30 -vcodec libx264 -pix_fmt yuv420p -color_range mpeg -f rawvideo -preset ultrafast -tune zerolatency -filter:v scale='min(640,iw)':'min(480,ih)':force_original_aspect_ratio=decrease,scale='trunc(iw/2)*2:trunc(ih/2)*2' -b:v 299k -bufsize 598k -maxrate 299k -payload_type 99 -ssrc 5439332 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params zfx7kkYHDS0Dec0DhLHMnvVxI7ieS79gak+cHl7g srtp://<IP_ADDRESS>:50540?rtcpport=50540&pkt_size=188 -i unix:/Users/ZIG/.homebridge/eufysecurity/4.sock -vn -sn -dn -codec:a libfdk_aac -profile:a aac_eld -flags +global_header -ar 16k -b:a 24k -ac 1 -payload_type 110 -ssrc 7925571 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params SDIxe9BzM7j6KDvyCpFPzcwp0DO3ATOm6rwU05X/ srtp://<IP_ADDRESS>:57315?rtcpport=57315&pkt_size=188 -progress pipe:1
[5/6/2022, 10:14:53 AM] [EufySecurity] XXXXXXXXX  FFmpeg process creation failed: spawn ffmpeg ENOENT

I installed FFMPEG, now I get the following errors:
[5/7/2022, 9:26:53 AM] [EufySecurity] parent_dir /usr/local/lib/node_modules/homebridge-eufy-security/dist/accessories
[5/7/2022, 9:26:53 AM] [EufySecurity] Doorbell VIDEOCONFIG: {"audio":true,"stillImageSource":"-i https://cdn-eu.eufylife.com/thumb/2022/05/07/station/T8010P132129146B/UXp4fCdeH0MIQAZF.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYLV2KOLW6PU4FSA%2F20220507%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20220507T052501Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=984575d7b11c6c2c59906d63aabe6f7035681f552882a1f69a8b3b31ea4d7c95","maxWidth":640,"maxHeight":480,"maxFPS":10,"maxStreams":2,"maxBitrate":99,"vcodec":"libx264","packetSize":188,"source":"-i unix:/Users/ZIG/.homebridge/eufysecurity/6.sock","acodec":"libfdk_aac","encoderOptions":"-preset ultrafast -tune zerolatency","forceMax":false}
[5/7/2022, 9:26:53 AM] [EufySecurity] Doorbell Starting video stream: 640x480, 30 fps, 299 kbps  (AAC-eld)
[5/7/2022, 9:26:53 AM] [EufySecurity] Doorbell Stream command: ffmpeg -hide_banner -loglevel level -use_wallclock_as_timestamps 1 -i unix:/Users/ZIG/.homebridge/eufysecurity/6.sock -an -sn -dn -r 30 -vcodec libx264 -pix_fmt yuv420p -color_range mpeg -f rawvideo -preset ultrafast -tune zerolatency -filter:v scale='min(640,iw)':'min(480,ih)':force_original_aspect_ratio=decrease,scale='trunc(iw/2)*2:trunc(ih/2)*2' -b:v 299k -bufsize 598k -maxrate 299k -payload_type 99 -ssrc 8374639 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params hLaitgD6D8y9bVise257JB8R7wHc7EDnVy1TmpuF srtp://<IP_ADDRESS>:63312?rtcpport=63312&pkt_size=188 -i unix:/Users/ZIG/.homebridge/eufysecurity/8.sock -vn -sn -dn -codec:a libfdk_aac -profile:a aac_eld -flags +global_header -ar 16k -b:a 24k -ac 1 -payload_type 110 -ssrc 16580890 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params fU3t4BJlGO94EK0u9BirrpCzxhsyu0pg/S/SZWqc srtp://<IP_ADDRESS>:65225?rtcpport=65225&pkt_size=188 -progress pipe:1
[5/7/2022, 9:26:56 AM] [EufySecurity] Error: write EPIPE
at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16) {
errno: -32,
code: 'EPIPE',
syscall: 'write'
}
[5/7/2022, 9:26:56 AM] [EufySecurity] ErrorCode EPIPE
[5/7/2022, 9:26:56 AM] [EufySecurity] Doorbell_video Closed NamePipeStream
[5/7/2022, 9:26:56 AM] [EufySecurity] Error: This socket has been ended by the other party
at Socket.writeAfterFIN [as write] (node:net:487:14)
at Readable.ondata (node:internal/streams/readable:754:22)
at Readable.emit (node:events:527:28)
at addChunk (node:internal/streams/readable:315:12)
at readableAddChunk (node:internal/streams/readable:289:9)
at Readable.push (node:internal/streams/readable:228:10)
at P2PClientProtocol.handleDataBinaryAndVideo (/usr/local/lib/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1220:77)
at P2PClientProtocol.handleData (/usr/local/lib/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:1028:18)
at P2PClientProtocol.parseDataMessage (/usr/local/lib/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/src/p2p/session.ts:954:26) {
code: 'EPIPE'
}
[5/7/2022, 9:26:56 AM] [EufySecurity] ErrorCode EPIPE
[5/7/2022, 9:26:56 AM] [EufySecurity] Doorbell_audio Closed NamePipeStream
[5/7/2022, 9:26:56 AM] [EufySecurity] Doorbell FFmpeg exited with code: 1 and signal: null (Error)
[5/7/2022, 9:26:56 AM] [EufySecurity] Stopping session with id: da3f32a9-7568-498c-828b-be9667da5c44
[5/7/2022, 9:26:56 AM] [EufySecurity] Doorbell_video Closed NamePipeStream
[5/7/2022, 9:26:56 AM] [EufySecurity] Doorbell_audio Closed NamePipeStream
[5/7/2022, 9:26:56 AM] [EufySecurity] Doorbell Stopped video stream.

@lenoxys In my case, sorry it was my mistake. The cameras were loaded as motion sensors only. I did not realize this. So even though it was showing camera with controls in the Home app, it could not play it. Perhaps a warning of some sort to let others like me know the fact that cameras are loaded as motion sensor only would help.

@lenoxys In my case, sorry it was my mistake. The cameras were loaded as motion sensors only. I did not realize this. So even though it was showing camera with controls in the Home app, it could not play it. Perhaps a warning of some sort to let others like me know the fact that cameras are loaded as motion sensor only would help.

Yeah I've one display when opening the plug-in settings. But looks like no one notice it.

@ziggitipop
Hum. Looks like it use an old FFMPEG not the one you installed.
Can you look it by running this command?
pwd ffmpeg

@ziggitipop
Hum. Looks like it use an old FFMPEG not the one you installed.
Can you look it by running this command?
pwd ffmpeg

Can you tell me where to run it? I ran it in terminal but I got a "command not found" error. Sorry I don't have much experience in this.

I updated FFMPEG and was able to access my doorbell camera only through my apple tv, still get no response when trying to access it through the home app on my iphone.
Here is the log for when I try to access doorbell camera through my phone:
[5/9/2022, 2:31:35 PM] [EufySecurity] current_path /Users/ZIG/.homebridge/eufysecurity/122.sock
[5/9/2022, 2:31:35 PM] [EufySecurity] parent_dir /usr/local/lib/node_modules/homebridge-eufy-security/dist/accessories
[5/9/2022, 2:31:35 PM] [EufySecurity] current_path /Users/ZIG/.homebridge/eufysecurity/124.sock
[5/9/2022, 2:31:35 PM] [EufySecurity] parent_dir /usr/local/lib/node_modules/homebridge-eufy-security/dist/accessories
[5/9/2022, 2:31:35 PM] [EufySecurity] Doorbell VIDEOCONFIG: {"audio":true,"stillImageSource":"-i https://cdn-eu.eufylife.com/thumb/2022/05/09/station/T8010P132129146B/7ZPV5MUd5tLSm9V4.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYLV2KOLW6PU4FSA%2F20220509%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20220509T101702Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=9f4d29d40059d75e0b8fceb1ee0b6c5da6b25bd0eef4d8582af5ff95619d7602","maxWidth":640,"maxHeight":480,"maxFPS":10,"maxStreams":2,"maxBitrate":99,"vcodec":"libx264","packetSize":188,"source":"-i unix:/Users/ZIG/.homebridge/eufysecurity/122.sock","acodec":"libfdk_aac","encoderOptions":"-preset ultrafast -tune zerolatency","forceMax":false}
[5/9/2022, 2:31:35 PM] [EufySecurity] Doorbell Starting video stream: 640x480, 30 fps, 299 kbps  (AAC-eld)
[5/9/2022, 2:31:35 PM] [EufySecurity] Doorbell Stream command: ffmpeg -hide_banner -loglevel level -use_wallclock_as_timestamps 1 -i unix:/Users/ZIG/.homebridge/eufysecurity/122.sock -an -sn -dn -r 30 -vcodec libx264 -pix_fmt yuv420p -color_range mpeg -f rawvideo -preset ultrafast -tune zerolatency -filter:v scale='min(640,iw)':'min(480,ih)':force_original_aspect_ratio=decrease,scale='trunc(iw/2)*2:trunc(ih/2)*2' -b:v 299k -bufsize 598k -maxrate 299k -payload_type 99 -ssrc 4145917 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params niLLHNbUoUukmeADfBQYciKPlYiIfBAKFYtZhNy0 srtp://<IP_ADDRESS>:65051?rtcpport=65051&pkt_size=188 -i unix:/Users/ZIG/.homebridge/eufysecurity/124.sock -vn -sn -dn -codec:a libfdk_aac -profile:a aac_eld -flags +global_header -ar 16k -b:a 24k -ac 1 -payload_type 110 -ssrc 9928760 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params mKNQEaBBY6u3iuO75xP9y5hV6CU46P8Xh/Wjyfas srtp://<IP_ADDRESS>:57297?rtcpport=57297&pkt_size=188 -progress pipe:1
[5/9/2022, 2:31:38 PM] [EufySecurity] Doorbell Getting the first frames took 3.113 seconds.
[5/9/2022, 2:31:39 PM] [EufySecurity] Doorbell Device appears to be inactive. Stopping video stream.
[5/9/2022, 2:31:39 PM] [EufySecurity] Stopping session with id: 23a020f2-8d5c-462e-b10c-ddc962a6502e
[5/9/2022, 2:31:39 PM] [EufySecurity] Doorbell_video Closed NamePipeStream
[5/9/2022, 2:31:39 PM] [EufySecurity] Doorbell_audio Closed NamePipeStream
[5/9/2022, 2:31:39 PM] [EufySecurity] Doorbell Stopped video stream.
[5/9/2022, 2:31:39 PM] [EufySecurity] Error: write EPIPE
at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16) {
errno: -32,
code: 'EPIPE',
syscall: 'write'
}
[5/9/2022, 2:31:39 PM] [EufySecurity] ErrorCode EPIPE
[5/9/2022, 2:31:39 PM] [EufySecurity] Doorbell_video Closed NamePipeStream
[5/9/2022, 2:31:39 PM] [EufySecurity] Doorbell FFmpeg exited with code: 0 and signal: null (Expected)
Here is the log when I access it from apple tv:
[5/9/2022, 2:35:15 PM] [EufySecurity] Doorbell Receive Apple HK Stop request{"sessionID":"9da6db7d-48ba-474f-86fa-9900ca06ca21","type":"stop"}
[5/9/2022, 2:35:15 PM] [EufySecurity] Stopping session with id: 9da6db7d-48ba-474f-86fa-9900ca06ca21
[5/9/2022, 2:35:15 PM] [EufySecurity] Doorbell_video Closed NamePipeStream
[5/9/2022, 2:35:15 PM] [EufySecurity] Doorbell_audio Closed NamePipeStream
[5/9/2022, 2:35:15 PM] [EufySecurity] Doorbell Stopped video stream.
[5/9/2022, 2:35:17 PM] [EufySecurity] Doorbell FFmpeg exited with code: null and signal: SIGKILL (Forced)

i too have this issue
[Doorbell] Snapshot request handler provided empty image buffer!
[5/21/2022, 11:10:26 AM] [EufySecurity-2.0.0-beta.9] WARN:  Push Closed!
[5/21/2022, 11:11:06 AM] [EufySecurity-2.0.0-beta.9] ERROR: Doorbell FFmpeg process creation failed: spawn ffmpeg ENOENT
[Doorbell] Snapshot request handler provided empty image buffer!

The streaming process was changed quite a bit with the latest releases. If anyone is still experiencing issues, please let me know.


Thruster sprite should be inverted

I ported it as is but realised its SpriteView is inverted. You'll also need to invert the stuff under ThrusterSystem too.

Sloth you beautiful human is this code related or do you just want the sprites inverted? Hovering over thruster also makes half the sprite disappear or is that related?

interactionoutline is a separate issue.
it will also need a minor code update when the sprites are inverted; all of it is in thrustersystem.

Since some context menu update I don't think this matters anymore.


Add resolve_model_relative_to_config_file config option

Currently relative paths to local models are resolved relative to the triton server process. However when deploying models to a central model registry one may not know in advance where the model files will end up in the local file system of an triton inference server container. Therefore relative paths should be used to point from the model.json to the directory containing the actual model files. The relative paths are maintained when deploying models and downloading them from a registry. To make this work relative paths in model.json must be resolved relative to the model.json file location.
This PR adds a new property (resolve_model_relative_to_config_file) to the model.json which allows to enable this relative resolution behavior. By default the old behavior is maintained.
I added test for the new feature, but do not understand how to execute them and where they are executed in ci.

Thank you for submitting this PR! Can you sign a Contributor License Agreement (CLA) so that we can review it?
@oandreeva-nv, do you have any thoughts on whether this belongs in the vLLM backend or in Triton server to be backend-agnostic? I'm not exactly sure what the "model" parameter is used for here.

@dyastremsky I will check how I can sign the CLA, you are referring to this?

@Legion2 , @oandreeva-nv  - Alternately we could change the behavior such that path to the model is always relative to model dir and not server process.
I think I would rather not add the parameter - because it seems in general more valuable to change the behavior to be relative to model.json - I don't know of the rationale for keeping it relative to the server process.

Then we need a heuristic to decide whenever it is a relative path which needs to be resolved. Because the hugging face registry model path could also be interpreted as a relative path.

@Legion2 , I believe vLLM currently can load weights from a local directory, specified as model in `json. Can we close this PR?

Relative path work, but when I last checked the relative path was resolved to the working dir of the server process. Which makes the config files not portable, because you need to know where the config is placed relative to the server process. But if you want to store the models with config in S3 and someone else downloads and runs the model, the relative path breaks. This issue is about making the paths relative to the config file, so it does not depend on where you place the config and the model.

Got it, do you think there might be any potential security concerns?

Then we need a heuristic to decide whenever it is a relative path which needs to be resolved. Because the hugging face registry model path could also be interpreted as a relative path.

I think for this we'd want to clearly distinguish local path from hf path - via a scheme such as file:/// for local or vice versa

Got it, do you think there might be any potential security concerns?

I think we would still want to ensure the relative path doesn't escape the model repository root if we can - to avoid any ability for relative path traversal - we can make it relative to config - but again check that the fully resolved path is still within a certain prefix

This only adds the relative path feature, but absolute paths already work out of the box and I don't think there are any checks to validate where the absolute path is pointing to.

Hi there. What's the progress on this? In my use case, I find it very inconvenient to maintain a file path in model.json files which are part of the S3 structure. I dont know how message passing works between triton server and backends both it would be very good if this could be passed through CLI args or environment variables.


Data Structure Writeup

Collections
Blog Python Model code and SQLite Database.

From VSCode using SQLite3 Editor, show your unique collection/table in database, display rows and columns in the table of the SQLite database.

From VSCode model, show your unique code that was created to initialize table and create test data.

Lists and Dictionaries
Blog Python API code and use of List and Dictionaries.

In VSCode using Debugger, show a list as extracted from database as Python objects.

In VSCode use Debugger and list, show two distinct example examples of dictionaries, show Keys/Values using debugger.

APIs and JSON
Blog Python API code and use of Postman to request and respond with JSON.

In VSCode, show Python API code definition for request and response using GET, POST, UPDATE methods. Discuss algorithmic condition used to direct request to appropriate Python method based on request method.
POST:

GET:

PUT:

In VSCode, show algorithmic conditions used to validate data on a POST condition.
In Postman, show URL request and Body requirements for GET, POST, and UPDATE methods.
POST:

GET:

Matthew Wakayama
Completeness: /1
Neatness: 0.95/1

([ ])

Overall, your issue is fairly organized and the screenshots are clear and easy to read. Most of the screenshots meet each of the requirements. However, if you truly wanted to go above and beyond I think the issue could use more elaboration or writing on certain checks. For example, under the API and JSON section, it asks to discuss algorithmic conditions used to direct requests to the appropriate Python method. Getting into the nitty-gritty of the code would help to understand what you're showing in each screenshot as well as proof of understanding.


AWS Lambda Serverless - Antiforgery token validation failed. The antiforgery token could not be decrypted.

We're trying to do this with AWS Lambda Serverless and keep running into the error
Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.AutoValidateAntiforgeryTokenAuthorizationFilter: Antiforgery token validation failed. The antiforgery token could not be decrypted.
I suspect it is because the Post is running on a different server?
We've tried the  work-around in web.config and the IgnoreAntiforgeryTokenAttribute work-around.
Anyone else gotten this working?
Any thoughts?

The Antiforgery framework in ASP.NET Core uses its underlying Data Protection framework that generates encryption keys as needed. By default the keys are persisted in memory or the file system. If you use our AWS Systems Manager ASP.NET Core Data Protection Provider package it will use AWS Systems Manager to keep the encryption key in sync for all of the compute environment running the ASP.NET Core application.

You rock (as usual)!


Yair/new transactions

This change is

src/transaction.rs line 85 at r1 (raw file):

    pub transaction_hash: TransactionHash,
    pub max_fee: Fee,
    pub version: TransactionVersion,

I find it weird that a struct called DeclaredV1Transaction has a version field
Code quote:
DeclareV1Transaction

src/transaction.rs line 95 at r4 (raw file):

    pub signature: TransactionSignature,
    pub nonce: Nonce,
    pub class_hash: ClassHash,

Consider refactor, maybe something similar to
pub struct CommonDeclareTransactionFields{...}
pub struct DeclareTransactionV1 {
#[serde(flatten)]
pub common_fields: CommonDeclareTransactionFields,
}
Code quote:
    pub transaction_hash: TransactionHash,
    pub max_fee: Fee,
    pub signature: TransactionSignature,
    pub nonce: Nonce,
    pub class_hash: ClassHash,
    pub sender_address: ContractAddress,

src/transaction.rs line 95 at r4 (raw file):
Previously, dan-starkware wrote…
Consider refactor, maybe something similar to
pub struct CommonDeclareTransactionFields{...}
pub struct DeclareTransactionV1 {
#[serde(flatten)]
pub common_fields: CommonDeclareTransactionFields,
}

Can also use in V2?


Refactor Conv2d/ConvTranspose2d into a single parent class

Cool, change looks good. Is there good test coverage on this?

we have tests covering both convs via comparing them to the torch version https://github.com/tinygrad/tinygrad/blob/master/test/test_nn.py#L112
they don't test the internals of initialize_weight but are sufficient to catch it if the logic is wrong.
output_padding's initialization is also tested here https://github.com/tinygrad/tinygrad/blob/master/test/test_nn.py#L191

The only thing we didn't have test coverage for was this:
assert all_int(self.weight.shape), "does not support symbolic shape"

but it seems to be a mypy thing rather than logic #1859


[Android] Slow connection to device

Hi! can't connect to the device, Run the example and then choose device then click "Connect" and wait a very long time. what was the problem please help.  Other programs BLE scanners connected at once.

[] iOS
[x] Android
[] tvOS
[] macOS
[x] .NET Standard
UWP IS NOT SUPPORTED DURING THE BETA PERIOD - ONLY PRs ARE WELCOME FOR NOW

Version of OS(s) listed above with issue
Android 6.0.1 (Galaxy S5)
Version of Library
5.3.1 and 6.0
Expected Behaviour
Actual Behavior
If applicable, please include entire exception - type, message, stacktrace
Code of Conduct

No Library Update Requests
No Timeline Requests
Please read through the documentation and FAQs
Please be respectful of my time. I put a lot of effort into my libraries.  I try to support the issue requests within a day.  I'm not psychic, so please take the time to fill out the above form as complete as possible

I use the gatt autoconnect under the hood which means it will connect to the device when android sees it.  This is usually the preferred behaviour.  You can change this behaviour in the Connect(GattConnectionConfig) to AutoConnect to false to improve this, but you need to ensure the device is nearby

Thanks for the reply, but I tried all the options GattConnectionConfig AutoConnect and the priority of two devices to be Radom 50cm-10cm does not work

There is nothing more I can do beyond this.  I only know that setting the autoConnect true (default) makes the connection slow.  Setting it to false will make it fast but the device has to be there or it will error.  There is nothing I can do beyond this that I know of

If I AutoConnect to false do then there is here this error

You have to catch these errors.  This is an issue with Android that I have tried everything humanly possible to deal with and the fact is that you can only do so much aside from simply trying again


Please implement Serializable

Trying to use this in Hibernate and (without writing custom write/readObject) it raises NotSerializableException. Would be useful…

Thanks for suggesting this, I think it would be useful. Would you be up for taking a stab at implementing and doing a PR?


az acr run can't login after acr enable private endpoint link

Describe the bug
after we disabled public endpoint of acr and enabled the privated endpoint.
we can't run the "az acr run --cmd "acr purge --filter 'bmp/order:.*' --ago 0d --untagged --keep 2" --registry {registry name} /dev/null"
To Reproduce
Steps to reproduce the behavior:

disble public endpoint
run the "az acr run --cmd "acr purge --filter 'bmp/order:.*' --ago 0d --untagged --keep 2" --registry {registry name} /dev/null"

Expected behavior
the command can clear the image
Screenshots
If applicable, add screenshots to help explain your problem.
Any relevant environment information

OS: Windows
Version 2.16.0

Additional context
the output information
2022/08/08 08:07:02 Alias support enabled for version >= 1.1.0, please see https://aka.ms/acr/tasks/task-aliases for more information.
2022/08/08 08:07:02 Creating Docker network: acb_default_network, driver: 'bridge'
2022/08/08 08:07:02 Successfully set up Docker network: acb_default_network
2022/08/08 08:07:02 Setting up Docker configuration...
2022/08/08 08:07:03 Successfully set up Docker configuration
2022/08/08 08:07:03 Logging in to registry: {registryname}.azurecr.cn
failed to login, ran out of retries: failed to set docker credentials: Error response from daemon: Get "https://{registryname}.azurecr.cn/v2/": denied: client with IP '<IP_ADDRESS>' is not allowed access. Refer https://aka.ms/acr/firewall to grant access.
: exit status 1
Run ID: fa2j failed after 6s. Error: failed during run, err: exit status 1

It's by design. You can enable trusted service with managed identity to access registry with network restriction.

If you don't want to open up the firewall you can set up an ACR task agent pool in a virtual network with access to the ACR private endpoint:
https://learn.microsoft.com/en-us/cli/azure/acr/agentpool?view=azure-cli-latest
Then specify the agent pool in the acr run command
az acr run --registry <your_registry> --agent-pool <your_agent_pool> --cmd $PURGE_CMD /dev/null


Add docs for CSI Liveness Probe container image

Added missing doc

@croomes is it worth adding the tls config options to the table as well as I believe they are currently missing?


Remove program mod name requirement

Currently, the #[program] mod should be named after the crate to prevent issues when compiling. We should remove this requirement and allow the mod name to be irrelevant.

This also causes cargo test to fail with is ambiguous (name vs any other name during import resolution) .
In the mean time, one can workaround this by running cargo test --lib.

Just for note, disabling doctest also helps.
[lib]
doctest = false