azure-storage-blob : BlobClient creates an unwanted subsirectory inside the container

Package Name:  azure-storage-blob
Package Version: 12.12.0
Operating System: Windows
Python Version: 3.10.4

Describe the bug
When creating a blob inside a container with BlobClient, the blob is created but inside a subfolder having the same name as the container.
Note : I use BlobClient directly and the parameter "account_url" is not the one of the whole storage account but the one of the container (with a SAS Token).
In fact, I do not really understand that the parameter "container_name" is mandatory if the connexion_string already points to the container_adresse (see additionnal content of this post.
--EDIT--
Just to emphase my last sentence about the "container_name" argument to the BlobClient constructor. It has a strange behaviour : if I put a random dummy value there, it will create a subfoler with this name in the right Container (because the right Container is specified in the connexion_string)... (see additionnal content of this post.)
To Reproduce
Steps to reproduce the behavior:
def az_blob_storage(connection_string, az_container):
    blob_client = BlobClient(account_url=connection_string, container_name=az_container, blob_name="retest.test" )

    # Upload the created file
    with open(Path("test.test"), "rb") as data:
        try:
            blob_client.upload_blob(data=data, overwrite=True)
        except Exception as e:
            print(e)

az_blob_url_asa_token_connection_string = "https://xxxxxx.blob.core.windows.net/testcont?sp=racwdl&st=2022-06-09T14:05:02Z&se=2022-06-09T22:05:02Z&sip=xxxxxxx&spr=https&sv=2021-06-08&sr=c&sig=xxxxxxxx"
az_blob_storage(az_blob_url_asa_token_connection_string, "testcont")

Expected behavior
A file "restest.test" is created inside the container, at the root of the container.
What i got
Indeed the retest.test is created but inside a folder having the same name as the container:

container: "testcont"

subfolder ??? "testcont"

the file : "retest.test"

Additional context
Most of the examples show the connexion_string as the connexion string of the Storage Instance.
I would like to narrow it to the container for security reasons.
This is why i use connexion_string to this exact container.
In fact, BobClient should not need the container name if its provided in the connexion_string.
For exemple, if I write this :
blob_client = BlobClient(account_url=connection_string, container_name="blabla" blob_name="retest.test" )
Then a subfoler named "blabla" is created... But still in the right Container (because the Container name is specified in the connexion_string).

Hi @stockersky, thanks for inquiry. I think that you may have some of your terms mixed up, so hopefully my response will help to clarify what these terms mean and where to most easily locate them in Azure Portal, as well as provide a code sample to achieve what you are trying to do!
When providing account_url for the BlobClient constructor, account_url in this context is generally in this format:
'https://<STORAGE_ACCOUNT_NAME>.<ENDPOINT>.core.windows.net'
It will typically only include your storage account name, and the endpoint (for blob operations endpoint would be blob, for DataLake it would be dfs)
With that being said, that is why for the constructor you had chosen to use, you would also need to provide container_name and blob_name as none of that information should be included in the account_url.
Furthermore, I see that you reference to a connection_string variable. I think you may have that mixed up with a Blob SAS URL.
Typically, if you are the owner of the storage account, your connection string can be obtained in Azure Portal under 'Security + networking', under 'Access keys' and your connection string will be present there.

If you are instead using a SAS generated through Azure Portal, you will find that string under Blob SAS URL in the same prompt you used to generate the SAS token.
For example, the Storage account connection string url is typically used with from_connection_string(), while SAS URLs are generally used with from_container_url (if, for example it is a container-level SAS).
Hopefully that clears up some of the terminology used, and below is a code snippet achieving what I believe you are trying to accomplish (with annotations).
from azure.storage.blob import ContainerClient

container_client = ContainerClient.from_container_url(container_url=<CONTAINER_SAS>)
blob_client = container_client.get_blob_client(blob=<FILE_NAME>)

 # Upload the created file
with open((<FILE_NAME>), "rb") as data:
    try:
        blob_client.upload_blob(data=data, overwrite=True)
    except Exception as e:
        print(e)

CONTAINER_SAS would refer to something like the Blob SAS URL from a Azure Portal generated SAS. Since in this example I used a container-level SAS, what container it is operating on is implied from the SAS.
FILE_NAME would refer to the file you want to upload to Azure Storage.
Hopefully this clears up any confusion. Thanks!

Hi @vincenttran-msft, thank a lot for your support :)
Your explanations really helped me to understand : now it works perfectly.

Hi @stockersky glad that my previous post was able to clear up any confusion! In regard to your question about setting chunk size, that is correct that it is in bytes. Here is the docstring that may provide more useful information:
BlobClient Constructor Docstring
Generally the easiest way to get familiar with the SDK and its capabilities is to read through the docstrings found under the APIs you want to call.
In this case, I am not sure what you mean by 'not seeing any increment of size until it finishes', as in this case if you are setting it to 64 bytes, it will simply cause the PUT request to be chunked in 64 byte requests. In contrast, if you don't set max_single_put_size, the default behavior is to finishes your upload all in one PUT request (assuming your file is under 64MB). Again, please take a look at the docstring and see if that clears up any confusion!
Thanks!

Hi @stockersky, one small clarification that may help to clear up the confusion. max_single_put_size only affects whether the client will decide to use chunks to upload the blob or not. Setting this to 64 will just mean that any blob over 64 Bytes will be uploaded in chunks rather than in a single request. However, the chunk size is controlled by a different argument, max_block_size which defaults to 4 MiB. So, if you do not also adjust that value, a blob up to 4 MiB will still be uploaded in a "single chunk".
If you wish to use smaller chunk sizes, you'd also want to set max_block_size. That being said, changing the chunk size is an advanced feature and only recommended if you are experiencing networking trouble with the defaults. We do recommend that you do not modify the chunk size unless you have a strong reason to do so, as it could affect performance.

Hi @vincenttran-msft and @jalauzon-msft. Thanks a lot for your precious support.
Yes, this is very interesting. I have a first Proof of Concept that works well : point is to manage backup & restore of CosmosDB database with the MongoDB API.
Here is a little code snippet:
    def _backup_collection_azure(self, collection, connection_string):
        # initialisation du client Azure
        container_client = ContainerClient.from_container_url(
            container_url=connection_string, max_single_put_size=64
        )

        blob_client = container_client.get_blob_client(blob=f"{collection}.bson")

        print(f"Backup collection { collection } to stream...", end=" ", flush=True)
        with io.BytesIO() as buf:
            for doc in self.database[collection].find():
                buf.write(bson.BSON.encode(doc))
            buf.seek(0)
            print("done")

            print(f"Upload to Azure Blob Storage...", end=" ", flush=True)
            try:
                blob_client.upload_blob(data=buf, overwrite=True)
            except Exception as e:
                print(e)
            print("done")

As you can see, my use of the BytesIO object is really sub-optimal. Because, in the end, it holds the whole database in memory.
Database is small by now, but it's growing !
what i'd like to achieve is to only hold each MongoDB doc in the BytesIO object and upload it in "append mode" to the blob Object.
Well, probably more optimal for memory use, maybe not for Blob Storage, but I'll find out...
I also tried with "stage_block()" and "commit_block_list()".
From this example
        block_list = []
        print(f"Upload to Azure Blob Storage...", end=" ", flush=True)
        for doc in self.database[collection].find():
            print("one doc")
            try:
                block_id = str(uuid.uuid4())
                blob_client.stage_block(block_id=block_id, data=bson.BSON.encode(doc))
                block_list.append(BlobBlock(block_id))
            except Exception as e:
                print("Erreur écriture sur Blob Storage: STAGING")
                print(e.__class__.__name__)
                print(e)
        try:
            ret = blob_client.commit_block_list(block_list)
            # print(ret)
        except Exception as e:
            print("Erreur écriture sur Blob Storage : COMMIT")
            print(e.__class__.__name__)
            print(e)

Definitly very slow ! And I really don't see where I would save memory as the list will contain the whole data at the end...
I found this "AppendBlobService" object in Python Azure SDK. Is this the right lib to use for this use case ?
I'll give it a try.

Actually, I ended up trying this :
def _backup_collection_azure(self, collection, connection_string):
        # initialisation du client Azure
        container_client = ContainerClient.from_container_url(
            container_url=connection_string, max_single_put_size=64
        )

        blob_client = container_client.get_blob_client(blob=f"{collection}.bson")
        blob_client.create_append_blob()

        print(f"Backup collection { collection } to stream...")

        buf = io.BytesIO()
        for doc in self.database[collection].find():

            nb_bytes = buf.write(bson.BSON.encode(doc))
            if nb_bytes >= 10000:
                print("writing...")
                buf.seek(0)
                blob_client.append_block(data=buf)
                buf.close()
                buf = io.BytesIO()

        buf.close()
        print(done)

Pretty fast and no objects growing in memory.


update Metadata test data, overall review

adds Estonia metadata (moves Firenze)
overall passthrough updates/changes

I now see that uncommenting the data volume is part of the exercise:
https://dive.pygeoapi.io/publishing/first/#making-data-available-in-the-docker-container
Maybe we can just change the text to state that it is mounted already.

Good catch @justb4.  I have pushed a fix to main branch to comment it out again.


Cannot login if password ends with a space character

The app shows "Invalid username/password" if password contains a trailing space.
I use the latest version available in F-Droid. The problem seems to be present in earlier versions too.

Can you try without the trailing space? We remove any leading and trailing whitespaces during registration.

It does work without trailing spaces.
But the web interface allows to:

Login using a password with a trailing space.
Change password to one with a trailing space.

I couldn't log into the Android app until I inspected my password, noticed the trailing space, and changed the password. I don't see how silently trimming passwords is a good idea.
I don't care about such passwords, but somebody else might encounter similar problem.

it is often forbidden to have a trailing spaces in password (same for username).
Many users copy & paste their credentials.

This bug still exists, and it's pretty sneaky. The first password I generated had a trailing space, took me a while to figure out who fucked up when I couldn't log in on desktop.

@manuroe do you accept trailing space for pwd on Riot-iOS?
If Riot-Web allows it, Riot-Mobile also should


python_output csv

Description:
Provide functionality to export TBL data sections into a CSV format, enabling compatibility with other software for tabular data analysis.
Developer Notes:

Store the extracted TBL data in a structured format suitable for CSV output, ensuring that the correct mapping of attributes occurs.
Implement logging (e.g., info or warning) to document issues like empty or malformed sections without interrupting the export process.

Acceptance Criteria:

[x] export tabular data i.e., TBL sections
[x] attribute mapping for CSV headers
[x] handling multiple TBL sections

[x] Each TBL section into a separate CSV file
[x] All TBL sections into a single CSV file

[x] handle cases of empty or malformed TBL sections

[x] empty TBL sections will appear in the CSV as rows with blank cells rather than being skipped
[ ] For malformed sections (e.g., missing ATT attributes), provide a clear error message and attempt to skip or correct where feasible.

[x] ensure exported CSV files are opened correctly in common spreadsheet applications

@Rakesh-Ranga-Buram The code partially meets one of the AC which addresses empty sections, but could provide better error handling or corrective actions for malformed sections.


Doesn't render in Chrome behind SSL

Hello,
I've found that Meteor-mathjax fails to render (goes blank) when using SSL/HTTPS with Chrome.
Chrome without SSL works well.
Other browser work with SSL too.
Please help. Really urgent.

@nadeemja Can you provide some error logs?

@nadeemja Which version of Chrome exactly are you using?

Dear @apendua,
It turned out to be the SSL configuration of CloudFlare that was problematic.
Switching from "Full (strict)" to "Flexible" solved the issue.
The only error was something about "A Parser-blocking, cross-origin script," in the console.
A yellow warning. It was related too a cloudflare.min.js file. I'm using the latest version of Chrome for mac. 53.0.2785.116 (64-bit)
I'm most grateful that you replied so soon. Thank you very much. :)

@nadeemja Do you this issue is now solved?

Dear @apendua,
Unfortunately, I was wrong. The SSL is not itself the problem. Rather it's some optimisation that CloudFlare does. SSL in Chrome is working now, however, I've had to turn off CloudFlare for now.
Have you experimented with CloudFlare?

@nadeemja Yes, I was using CloudFlare in at least two project and I've never had major problems with their services. One important thing when you're using CloudFlare with a Meteor project is to make sure that the DDP traffic from your application bypasses CloudFlare entirely. Here's a good blog-post explaining the problem and how it can be solved:
https://meteorhacks.com/cloudflare-meets-meteor/

Thank you for the suggestion, @apendua.
Recently, CloudFlare added support for DDP and it works fine.
I'll alert the CloudFlare of this as well. Perhaps they have some idea.
When was the last time you used CloudFlare with meteor-mathjax?


why we use it ,

Hey @mazab99
In short, this package provides a solution for separating UI-related actions such as showDialog and navigation from the state in order to simplify their handling.
For instance, suppose your state class has a message variable containing a message to show in a dialog. However, if you use Equatable, emitting the same message repeatedly won't trigger the dialog. This can be solved by setting the message variable to null when the dialog is completed or avoiding the use of Equatable.
This package offers a proposal to solve these types of problems and is compatible with both Bloc and Cubit.


Where is the repository for previous versions ?

This present repo only started in beginning of 2023, while the firefox extension goes way back to 2017 according to version history. I guess you make a new repository, but where is the one for all the previous versions which were released before 2023 ?
Thanks in advance

No, this is all the history there is. It just doesn't have the right commit dates because I rewrote the history to redact stuff and screwed the date preservation when doing that. Those versions weren't released in 2023, only the very latest one was. Look at the numbers, ignoring the dates in git. (Also why do you care? Just curious xD)

Those versions weren't released in 2023, only the very latest one was. Look at the numbers, ignoring the dates in git.

?? You seem to have misread my message.

It just doesn't have the right commit dates because I rewrote the history to redact stuff and screwed the date preservation when doing that

Yes so this

No, this is all the history there is.

is false. You simply erased it.
Why do I care ? because I've stumbled upon this comment which claims your extension does something that the current version does not, simply. So I wanted to try the old versions to see if it did do this, but wanted to check the repository before installing them. That's all.

No, I didn't misread anything. "This present repo only started in beginning of 2023" is not true. The initial commit ca64b868311b63ae is actually from 2017 even though it says march 5th 2023.

claims your extension does something that the current version does not, simply

Nothing was ever taken away. The comment simply describes the functionality it currently has and always has had, in very slightly inaccurate terms (it's per audio/video element rather than per tab; there is a control for applying the settings to all elements on a page, but it just syncs all the controls below to the same value, it won't apply to future elements created on the page).

No, I didn't misread anything

Yes you did, again:

Those versions weren't released in 2023, only the very latest one was. Look at the numbers, ignoring the dates in git.

I never said any version other than the last one was published in 2023, that's precisely because they were published before that I'm making this issue... Anyway, I think this discussion has borne all the fruits it could.
I needed to control the volume of a specific tab/website in advance because it is about the notification volume. I fear this extension cannot help me in this case.


[pipeline] upgrade 'modelerfour' from 14.9.1 to 14.9.2

14.9.2 provides more accurate error message for 'duplicated operation'
test link:https://github.com/openapi-env-test/azure-rest-api-specs/pull/2909

/check-enforcer override


Does <IP_ADDRESS>  support Java 17 and above ?

Hello we just migrated our project-XR3Player from Java 11  to Java 17+
Is sqlite-jdbc supporting that version ? We got some errors but i don't know if we did something wrong or it doesn't support it.

We are using it in production with Java 17. No problems specific to Java 17 so far.

It's not explicitly supported, I will need to add it in CI to make sure it's working.


Using SSAO strongly impacts performance (down to 30 FPS on mid-high end GPU)

Godot version:
3.0.2
OS/device including version:
Ubuntu 16.04, i7, GTX 965M
Issue description:
If you add ao, using 1080p. we obtain 30 fps.
FPS falls at any setting ssao
Steps to reproduce:
1920x1080 + SSAO = 30FPS
Minimal reproduction project:
Grass_16_03_18.zip

IMO SSAO needs to be improved, both in performance and quality compared to competing renderers (Blender's edit mode SSAO or Unity's ambient obscurance effects are better)

3.1 alpha3
30fps

If something like TAA is supported in the future, a solution with temporal filtering such as GTAO could improve both quality and performance. This is also what Blender's Eevee uses as far as I know.

Should this not be labeled as a bug?  It's completely unusable for me, I'm getting between 11 and 45FPS in a scene with just two cubes in it running on a pretty decent computer.

GTX 770 (with freshly updated drivers), i5-4670K, 16GB ram, running Godot 3.1.1 on Windows 7.  I'll mention too that with SSAO on it hits the processor pretty hard, maxes out one core.
Nothing looks very strange otherwise, The profiler reports that my script functions take 0.00361sec but total frame time is between 0.09 and 0.13sec.  The Monitor only shows 9 draw calls.  Does not appear to have a memory leak or anything.  I've attached my Godot project to this post.
I should mention too that I said between 11 and 45FPS but it's usually more like 11, sometimes for no discernible reason it will go up to around 22 or 45 for a while then back to around 11.
source.zip

Sounds strange to me. SSAO should have almost no effect on the CPU. I'm not sure about the GPU, maybe you can improve performance by adjusting the SSAO settings to a lower quality level.

Both quality and blur settings seem to have no real effect, maybe 1 or 2 FPS difference.  I have tried adjusting most of the other settings hoping that I had just set something off of what it should be but nothing seems to help.

I've been looking into the ssao shader. The implementation is basically the Scalable AO from Morgan McGuire.
The Godot implementation uses 15/40/80 samples for low/med/high quality respectively. I think that is a bit of overkill. I think most SSAO algorithms make do with less than 32 spp, mostly between 10-20 (No temporal sampling). Since sampling is a slow process, I would imagine that there is performance to be gained by optimizing the sampling process.
I experimented with 8/12/16 spp and the quality difference is minor. I have yet to find a way to profile the performance. I have not found any way to use RenderDoc/NSight with Godot. Anyone has a pointer?

@Outrider0x400  there is a trick to use renderdoc. You put a breakpoint in the platform Main (before it initializes gl), and then inject renderdoc. Be aware that due to godot hilarious amount of drawcalls, attaching renderdoc will murder performance into the low 10s FPS (in TPS demo).
I havent been able to run Nsight, as it cant inject. Launching godot from both RenderDoc and Nsight instantly close the window before even reaching Main() (debugged). Thre is something in godot static variables (static initialization runs before main) that crashes  debuggers.

@vblanco20-1 Thanks for the pointer! I suppose RenderDoc is probably sufficient to get a rough idea of what's going on. The breakpoint/injection trick is pretty cool.

I finally got the RenderDoc to work with Godot. Turns out you need to un-pause the program after injection. Silly me for waiting for minutes for RenderDoc to finish up injection while the program is on pause. Duh.
Anyway I got some screenshots here to show that the current implementation is indeed overkilling.
High quality, 3x3 blur, 1024 x 600
(@Calinou  you can use them for your PR if you want to :)
This is what the blurred result looks like for the curr. ver. (CV):

And for the reduced sampling version (RSV)

They look alike IMO. But the CV takes almost 5 times longer to render. Actually, the CV uses so many samples that it looks better off without blurring. The blurring is mostly used to counter the high-freq noise introduced with a lower sampling count.
CV, before blurring:

RSV, before blurring

full album : https://imgur.com/a/3HTL69M

SSAO has been completely re-written for 4.0, you can now render at half-res for much better performance, it also looks much better than it did in 3.x. :D


Add codehilite extension example

There might be a dilemma here.

Highlighting stylesheet could be

inserted into page dict - every page will have the same <style>
individually sent by send_static() - hard to implement in render()

Note that codehilite and its dependent module pygments will generate a stylesheet, leaving here a dilemma that if the developer puts it in static folder or render it to every page,

IMO putting it on static is more reasonable although it takes advanced requests. <link>-to-stylesheet can be cached using ServiceWorker and just lets browser focus on the upcoming content

Add a create_pygments_stylesheet(self, style, dest) method to generate a pygments code-highlighting stylesheet in some static folder.


"apache" instead of "azuredatastudio"

In shell commands at the section "Uninstall Azure Data Studio from Linux" - "In Debian" there is "apache" instead of "azuredatastudio".
Also, the title of the section could be "In Ubuntu/Debian" because Ubuntu is the most widely used Debian derivate.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 811ed1f4-1c78-aa1b-e752-307250ca8eb7
Version Independent ID: f36629bf-b2e6-4993-7c77-32fa311ea942
Content: Download and install Azure Data Studio - Azure Data Studio
Content Source: docs/azure-data-studio/download-azure-data-studio.md
Product: azure-data-studio
Technology: azure-data-studio
GitHub Login: @tdoshin
Microsoft Alias: timioshin

#assign:tdoshin

@tdoshin can you help assist?

Please confirm @richardblaha


Support more customization in note template

It would be great if the following can be improved/supported when in the podcast note template:

One can set something like {{date:YYYY-MM-DD}}T{{time:HH:mm}}, e.g. in the note content, or {{date:YYYYMMDD}}{{time:HHmm}}, e.g. in the note title.

Currently, {{Date}} and {{Timestamp}} would generate a different format.

The release date/time of the podcast episode
Podcast host and creator

If some of the information listed above cannot be found in one Podcast app/service, is it possible to automatically fetch those fields from other Podcast apps/services?

Moved to #13


Differences between Triton and Cuda implementations

The Triton version of the code uses the block maximum when renormalizing after all blocks have been processed, while the Cuda version does not. My guess is that because the Cuda flash attention library doesn't return the block maximum and it would be complicated to update the code to do so.
Can you comment on the numerical effects of this?

Yes，you are right.
We believe that if you use fp32 to store all these scale variable like m_i or lse，it works well as perfect.

So you are saying that with the CUDA version you don't need m_i if you use fp32?

Oplease read the appendix of flash-attention.
It only needs lse to scale the softmax in flash attention's way.
---Original---
From: @.>
Date: Tue, Aug 6, 2024 22:12 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [MayDomine/Burst-Attention] Differences between Triton and Cudaimplementations (Issue #4)
So you are saying that with the CUDA version you don't need m_i if you use fp32?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>


Acrarium does not seem to accept attachements?

I've a working acrarium, processing incoming crash reports.
Now I'd like to attach a dbg.zip (binary) to the crash report.
According to ACRA's documentation, the CoreConfigurationBuilder is configured as follows (the dbg.zip exists prior to the report):
.setAttachmentUris("content://${BuildConfig.APPLICATION_ID}.acra/files/dbg.zip")
I've tried the HttpSenderConfigurationBuilder with both POST and PUT
logcat for acra seems to indicate acrarium believes this is a bad client request:
2021-04-06 14:23:20.820 30278-30685/com.example I/ACRA: Sending report /data/user/0/com.example/app_ACRA-approved/2021-04-06T14:23:20.679+02:00-IS_SILENT.stacktrace
2021-04-06 14:23:20.830 30278-30685/com.example I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
2021-04-06 14:23:20.830 30278-30685/com.example I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
2021-04-06 14:23:21.294 30278-30685/com.example W/ACRA: 400: Client error - request will be discarded

From the docker logs there are no traces from acrarium that would explain the issue. What can be done on the mobile or acrarium side to handle attachements?

Make sure you're using the latest version of both acrarium and acra.
If that's already the case make sure you're not exceeding the maximum upload size (100MB by default)

It seems Acrarium fails to process incoming ACRA crash reports with an attachment when the HTTP compression is enabled.  (ACRA offers this ability with HttpSenderConfigurationBuilder.setCompress(true)).
I'm using ACRA 5.7 (5.8 is still a beta) and Acrarium 1.2.1 (1.3 is still beta).


Permissions issues on the bundled playwright + node driver wrappers

I was experimenting with 1.12.1 today and found that on my macos machine, on .net sdk 5.0.300, I couldn't actually run my newly-written tests because the binaries that were copied to my projects' output directory had invalid permissions.
Here's the extracted layout from my nuget cache:
.rw-r--r-- 81k chethusk  8 Jun 21:01 /Users/chethusk/.nuget/packages/microsoft.playwright/1.12.1/Drivers/node/LICENSE

/Users/chethusk/.nuget/packages/microsoft.playwright/1.12.1/Drivers/node/linux:
.rw-r--r-- 48M chethusk  8 Jun 21:01 node
.rw-r--r-- 122 chethusk  9 Jun  2:09 playwright.sh

/Users/chethusk/.nuget/packages/microsoft.playwright/1.12.1/Drivers/node/mac:
.rw-r--r-- 47M chethusk  8 Jun 21:01 node
.rw-r--r-- 122 chethusk  9 Jun  2:09 playwright.sh

/Users/chethusk/.nuget/packages/microsoft.playwright/1.12.1/Drivers/node/win32:
.rw-r--r-- 25M chethusk  8 Jun 21:02 node.exe
.rw-r--r--  79 chethusk  9 Jun  2:09 playwright.cmd

/Users/chethusk/.nuget/packages/microsoft.playwright/1.12.1/Drivers/node/win32_x64:
.rw-r--r-- 30M chethusk  8 Jun 21:02 node.exe
.rw-r--r--  79 chethusk  9 Jun  2:09 playwright.cmd

as a result, when they copy over the playwright transport can't be created because the Process.Start command fails due to permissions errors.
I've worked around this locally with a build step that chowns things, but it is mildly annoying.

I was developing 1.12.1 on a Mac as a primary device and never had this issue. Could you repeat the steps from https://playwright.dev/dotnet/docs/intro#first-project and tell us if it worked for you?

I did a quick test based on some intuition I had: I used paket to manage my dependencies in this project instead of 'raw' Nuget, but when I cleared my global nuget cache and redownloaded the package via Nuget (in this case through F# Interactive for a quick repro loop) I found that nuget had in fact maintained the correct permissions on the extracted packages' files. I'll log an issue in Paket, and this can be closed.


Update profile page

Pull Request
Title
User Profile Page
Description
Account Information: Edit personal details, upload profile picture, and manage account settings.
Rental History: View current and past rentals with details like rental dates, costs, and feedback.
Payment Methods & Billing: Manage payment options, billing info, and view payment history.
Saved Items & Wishlist: Add items to the wishlist for future rentals.
Notifications & Alerts: Get reminders for rentals, deliveries, discounts, and offers.
Related Issues
fixes #852
Changes Made
Separated the components from the profile page and improvised navigations from the sidebar.
Forms and components for editing profile informations and payment informations.
Checklist

[X] I have tested the changes locally
[X] Documentation has been updated (if necessary)
[X] Changes are backward-compatible

Screenshots (if applicable)
https://github.com/user-attachments/assets/aa7de1ab-3f18-45a0-9fbf-5b05a3e853a0

@manikumarreddyu Please increase the level of the PR!


Wrong password gets determined

tocrack.zip
Zip-Password: gvre57grfe
Found Password: gggggggeeg
Reason: Unknown

Discovered Reason: BadPasswordException is not being thrown early enough, which leads to GoodPasswordException being thrown.

Solved with the latest commit.


Update AsyncActions doc

As the example shows in index.js right below, it runs:
import { selectSubreddit, fetchPosts } from './actions'
...but up until that point, fetchPosts is not exported from the actions.js file and would be unavailable to the index.js module. Changing such that fetchPosts is exported.

Thanks!


https redirect not working on multiple gateway s

Bug description
I had one gateway with
tls:
        httpsRedirect: true

enabled and redirect works as expected. Now I have several gateways configured and the redirect does not work on any of them, neither the first gateway I had that works previously
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ x] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
redirect incoming http request to https on all gateways
Steps to reproduce the bug

configure one gateway with https redirection enabled
test redirection
configure a second gateway with https redirection enabled as well
test redirection does not work on any gateway

Version (include the output of istioctl version --remote and kubectl version and helm version if you used Helm)
istioctl version --remote
client version: 1.4.2
control plane version: 1.5.0
data plane version: 1.5.0 (90 proxies)
kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-12T13:43:46Z", GoVersion:"go1.13.7", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:09:08Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
helm version
version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
How was Istio installed?
istioctl new installation method
Environment where bug was observed (cloud vendor, OS, etc)
DigitalOcean

sadly not @gustavovalverde and also sadly this its been ignored

It works for me now, in my case it was an indentation problem with the tls parameter.
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-autogenerated-k8s-ingress # We use the istio special gateway name for K8s ingress
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      tls:
        httpsRedirect: true
      hosts:
        - "*"

might be the same as https://github.com/istio/istio/issues/22194

Hi, I have the same issue and running with the following details:

Kube 1.16 on EKS (AWS)
Istio 1.4.9
Multiple ingress-gateways configured with TLS termination on ELB as follows:

Custom Ingress Gateway:
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '60'
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'false'
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: [redacted]
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
  finalizers:
    - service.kubernetes.io/load-balancer-cleanup
  labels:
    app: istio-ingressgateway
    app.kubernetes.io/instance: istio
    chart: gateways
    heritage: Tiller
    istio: ingressgateway
    release: istio
  name: [redacted]
  namespace: istio-system
spec:
  clusterIP: <IP_ADDRESS>
  externalTrafficPolicy: Cluster
  ports:
    - name: status-port
      nodePort: 31782
      port: 15020
      protocol: TCP
      targetPort: 15020
    - name: http
      nodePort: 31382
      port: 80
      protocol: TCP
      targetPort: 80
    - name: https
      nodePort: 31392
      port: 443
      protocol: TCP
      targetPort: 80
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
    release: istio
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
      - hostname: >-
          [redacted]

And gateway:
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: argocd
  labels:
    app.kubernetes.io/name: applications.argoproj.io
    app.kubernetes.io/part-of: argocd
    app.kubernetes.io/instance: argocd
    app.kubernetes.io/managed-by: Tiller
  annotations:
    kubernetes.io/ingress.class: "ingressgateway"
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - myhost.mydomain.com
      tls:
        httpsRedirect: true

Not stale

I am fairly sure this is a duplicate of https://github.com/istio/istio/issues/21394. If you think otherwise please post the reproducer config. thanks!


manual install bundle button

No content

Issue created by BlueBubbles Bot in the BlueBubbles commnity on behalf of @zach in #android-support.

Shouldn't this be a server issue?

Shouldn't this be a server issue?

Yes :)


Add important documentation.

It took me a while to find out why the discoveryClient did only return empty attributes (e.g. serviceList) .
Adding @EnableDiscoveryClient fixed this for me.

@computerlyrik: This can't be merged unless the CLA  is signed.

@computerlyrik Thank you for signing the Contributor License Agreement!

@iocanel  Signed and manually synced status.


fix: DisplayNames for Salesloft schemas.json

Changes
Display names are preprocessed before saving to the file.
New Display Names
Account Tiers
Account stages
Accounts
Actions
Bulk jobs
Cadence memberships
Cadences
Calendar events
Call data records
Call dispositions
Call instructions
Call sentiments
Caller ids
Calls
Crm activities
Crm activity fields
Crm users
Custom fields
Custom roles
Email template attachments
Email templates
Emails
Groups
Imports
Job data for a bulk job
Job data for a completed bulk job.
Meetings
Notes
Past Activities
Pending emails
People
Person stages
Phone number assignments
Play Registrations
Requests
Saved list views
Signal Registrations
Steps
Successes
Tasks
Team configurations
Team mappings
Team tags
Team template attachments
Team templates
Users
Webhook subscriptions

#918
#917  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @Cobalt0s and the rest of your teammates on  Graphite

Can you capitalize first letter of EVERY word? (e.g. Call Instructions, not Call instructions). Once you do that, you can merge.

Its funny cause I had an option to do that. And then I thought it is weird so came back to first letter caps. This will be a fast change


IPC features

These are the planned features for inter-process communication with way-cooler:
Socket

[ ] Socket available in /tmp/way-cooler/socket
[ ] Socket handles requests in a multithreaded way
[ ] Socket accepts and replies with JSON packets
[ ] Socket accepts requests for event listeners

Packets

[ ] registry.get get values from registry
[ ] registry.set set values in the registry
[ ] registry.check see if a value exists
[ ] command.run to run a command

Lua IPC

[ ] Lua thread registered as internal IPC client
[ ] Lua can register event handlers

Updated with new goals for Lua thread.

Updated with goals for command/event socket.

I'm going to go ahead and close this issue, since we've accomplished most of it and any event stuff should go into its own separate issue.

IPC success!


[NugetPackagerV0] Fix critical security issues

Required Information
Entering this information will route you directly to the right team and expedite traction.
Question, Bug, or Feature?
Type: Bug
Enter Task Name: NugetPackagerV0
list here (V# not needed):
https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks
Issue Description
Compliance build started to report new critical security alerts since 12/08.
To reproduce this issue: run npm audit
NugetPackagerV0 task right now has 3 critical issues.
Audit log attached.
Task logs
NuGetPackagerV0.json.txt
Troubleshooting
Checkout how to troubleshoot failures and collect debug logs: https://docs.microsoft.com/en-us/vsts/build-release/actions/troubleshooting

Does not have own dependencies, so npm audit resolves root dependencies of repository.
This issue can be closed.


[FIXED] Python 3.5: Unable to import albumsearch

Hi, I am using Ubuntu Xenial and I installed this software in Python 3.5 using the command:
pip3 install musicrepair
The installation was successful but the problem is I couldn't get it to work initially.
Log:

Traceback (most recent call last):
File "/usr/local/bin/musicrepair", line 7, in
from musicrepair.command_line import main
File "/usr/local/lib/python3.5/dist-packages/musicrepair/command_line.py", line 8, in
import albumsearch
ImportError: No module named 'albumsearch'

It kept complaining about unable to import albumsearch. I then tracked the installation location to
/usr/local/lib/python3.5/dist-packages/musicrepair/ and edited the command_line.py file in this way:
BEFORE
import albumsearch import improvename
AFTER
from . import albumsearch from . import improvename
The reason behind is (you might already know this) the fact that presence of __init__.py file makes Python treat the directory as a package.

Ahh yes, I accidentally forgot to write from . import
I will update it soon. Thanks for pointing this out.

I do not currently have access to a laptop, which is why I have set the stable version to a previous version. Will fix things and update it on pypi soon.

I faced the same issue of albumsearch module.
I tried to install your module using Git clone option. I tried to run "python3 setup.py" after cloning it. This was the result -
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: no commands supplied
I am not sure what to commands I am supposed to give.
I am newbie and I am trying to use your project as my first to understand open-source way of coding. I always wanted to use python to cater my personal needs of these kinds. But I haven't used it to do any kind of cool projects, just used it for academic purposes. So I am going through various beginner friendly projects so I can understand how other advanced coders code and in the way trying to learn about new modules.
Right  now I am trying to understand your scripts, going through the modules used(Requests, six etc.) and understanding various functions. Any suggestions or tips are much appreciated so I can speed up my process.

I have updated the setup.py file and uploaded it on PyPI. This error shouldn't persist anymore.
use pip install musicrepair -U to upgrade musicrepair.

Thanks, actually I was hesitating to post anything here for the same reason, but couldn't find any other means on Github to contact you or seek help from anyone else. That's why I posted here.
Thanks for being considerate will only ping you with valid queries if not able to solve it via Google.


Allow to set error handler for decoding errors

Fixes #1198

Looks great!!
Out of curiosity, I have added some tests for the "correct" number of replacement characters (as in Unicode 11, Section 3.9 -- U+FFFD Substitution of Maximal Subparts).
All tests pass. Great work!
SECTION("U+FFFD Substitution of Maximal Subparts")
{
    // Some tests (mostly) from
    // https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf
    // Section 3.9 -- U+FFFD Substitution of Maximal Subparts

    auto test = [&](std::string const& input, std::string const& expected) {
        json j = input;
        CHECK(j.dump(-1, ' ', true, json::error_handler_t::replace) == "\"" + expected + "\"");
    };

    test("\xC2", "\\ufffd");
    test("\xC2\x41\x42", "\\ufffd" "\x41" "\x42");
    test("\xC2\xF4", "\\ufffd" "\\ufffd");

    test("\xF0\x80\x80\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\x41");
    test("\xF1\x80\x80\x41", "\\ufffd" "\x41");
    test("\xF2\x80\x80\x41", "\\ufffd" "\x41");
    test("\xF3\x80\x80\x41", "\\ufffd" "\x41");
    test("\xF4\x80\x80\x41", "\\ufffd" "\x41");
    test("\xF5\x80\x80\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\x41");

    test("\xF0\x90\x80\x41", "\\ufffd" "\x41");
    test("\xF1\x90\x80\x41", "\\ufffd" "\x41");
    test("\xF2\x90\x80\x41", "\\ufffd" "\x41");
    test("\xF3\x90\x80\x41", "\\ufffd" "\x41");
    test("\xF4\x90\x80\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\x41");
    test("\xF5\x90\x80\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\x41");

    test("\xC0\xAF\xE0\x80\xBF\xF0\x81\x82\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\x41");
    test("\xED\xA0\x80\xED\xBF\xBF\xED\xAF\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\x41");
    test("\xF4\x91\x92\x93\xFF\x41\x80\xBF\x42", "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\x41" "\\ufffd""\\ufffd" "\x42");
    test("\xE1\x80\xE2\xF0\x91\x92\xF1\xBF\x41", "\\ufffd" "\\ufffd" "\\ufffd" "\\ufffd" "\x41");
}

@abolz Thanks for the tests, I shall add them to the test suite.
FYI: I used the library's Unicode test suite to systematically create a 7.5 million valid and invalid byte sequences and compared the dump outputs with those of Python. Good to know that I also covered those from the Unicode spec.

Coverage remained the same at 100.0% when pulling 951a7a64559a746e4cc6e99c0e59a7a00bd72394 on feature/codec_errors into 9294e25c98f9c09a1874842dbcaae7a91336a57e on develop.

Thanks everyone!


Nostr: Bad Request response for datetime

For https://granary.io/url?input=html&output=nostr&url=https%3A%2F%2Fgregorlove.com%2Fstream%2F I got a Bad Request error:

Could not convert to nostr: time data '2023-08-11 15:32.0' does not match format '%Y-%m-%d %H:%M:%S.%f'

I believe it's this post which has dt-published 2023-08-11 15:32-0700

Woo, thanks for trying it, and for the report!


{KeyVault} Fix the bad link

The original link was invalid, changed to a proper new one.

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

KeyVault

thanks for quick fix


Validation Fails for Type String when specifying Items with ref to object

What version of Ajv are you using? Does the issue happen if you use the latest version?
5.2.0
Ajv options object

{ allErrors: true, v5: true, removeAdditional: true }

JSON Schema
{
	"createBlock": {
		"additionalProperties": false,
		"type": "object",
		"properties": {
			"name":	{
				 "type": "string"
			},
			"blocks": {
				"type": "array",
				"items": {
					 "$ref": "#/definitions/blockObj"
				}
			}
		},
		"required": ["name", "blocks"]
	},
	"blockObj":{
		"type": "object",
		"properties": {
			"quantity": {
				"type": "integer"
			},
			"rate": {
				"type": "integer"
			},
			"id": {
				"type": "string",
				"not": "integer"
			}
		},
		"required": [ "quantity", "rate", "id"]
	}
}

Sample data

 { "data": {
			"name": "Some random name",
			"blocks": [
				{"cj5458hyl0001zss42td3waww": {
					"quantity": "",
					"rate": 356.77,
					"id": "ewdwe4434"
				}},
				{"cj5458hyl0001zss42td3wawu": {
					"quantity": 4,
					"rate": 356.77,
					"id": "3434ewdwe4434"
				}}]
		}
 }

Your code
https://gist.github.com/ahlusar1989/0a077c5dc769ee15854b8bb97074d04b

Validation result, data AFTER validation, error messages
Valid is true

What results did you expect?
It should be false as the type indicated is string
Are you going to resolve the issue?
Not sure where to start 😄 . If need be I'll be happy to open a PR for the patch.

several problems here:

option v5 is no longer used
not: 'integer' is not a valid schema, the only reason it doesn't fail is that that schema is never used
I don't see you using the second schema (blockObj) at all - it has to be explicitly added to the instance with addSchema method.
#/definitions/blockObj - I don't see definitions anywhere here

If it doesn't help, can you please make a self-contained code sample in runkit.com?

Also I assume that data is not {data:{...}} but {...}, at least from looking at the code

@epoberezkin That is a request body used in Insomnia. I will work on a runkit example. thanks!

Just looking at the code/sample - I see only two possibilities - either schema should not compile at all, because the reference can't resolve, or if you pass the whole object as schema it is equivalent to an empty schema.

@epoberezkin It is successfully compiled. It successfully throws errors if name of the blocks property is missing. However, the nested types are not validated.  I apologize as I did not include this as an additional note.

I should also add that I also thought of doing this: https://stackoverflow.com/questions/44133426/ajv-schema-validation-for-array-of-objects

@epoberezkin I finally understand what I need to do. You explain this is effectively here: https://github.com/epoberezkin/ajv/issues/160
I understand now what I should be doing. Thank you again for your time.


Add "On Order" badge

Fixes https://github.com/inventree/InvenTree/issues/674

If a part has no stock, but is on order, display a special "on order" badge

This implementation actually has a bug - the "on_order" sum also counts orders which are "closed" (e.g. received etc)


Preset picker is not brought up when a new line or area is drawn

Just after you create a new area or way, the 'preset picker' should appear in the left-hand sidebar to prompt you to pick a type for the shape:

We should be doing the same in v2.

Fixed in 8b27ce1cce0e59608407c17fe63d7b93047a1ce1. The finish() method of both line draw and area drawing modes just needed to have their 'select mode' entrance calls ornamented with a .newFeature(true) call.


feat: remove all accounts non-prod, non-stage

Summary | Résumé
All accounts that aren't in the Staging and Production OU will be
removed from the Cloud based sensor.
Control Tower has the ability to centralize CloudTrail Logs into a
single s3 bucket so we will set that up for CBS instead and all the rest
either aren't changed enough or don't use VPC's, ALB's, or WAFs in a way
that we care about.
This will be coupled with some manual removing of code.

This will fail due to the ScanFiles Staging bucket existing, that will be cleaned up after.


Move ValueOnly etc. from Part 2 to Part 1

Clause 11.4 (ValueOnly + idShortPath) +
Clause 12.5 (Metadata Objects) from Part 2 moved to Part 1

new chapter for Format "Reference" Restructuring
so that new Clauses fit in
added file meta information

closes #325

Now part of https://github.com/admin-shell-io/aas-specs/pull/321


update to ClimaAtmos v0.16.3

and any other package updates
maybe after #475 ?

update to Insolation v0.7.0 in next update, after atmos does

I have a branch (https://github.com/CliMA/ClimaCoupler.jl/tree/gb/update_atmos_cache) where I started updating Coupler to the new atmos' cache. I cannot test yet it because other parts updates are not in place yet (e.g., surface fluxes).

superseded by #502


UX/ UI Student Satisfaction Survey

Lynn to work with Danielle on V2 Student Satisfaction Survey

What's this?:

A short survey to provide a "health check" around users' satisfaction and usability for the website & application
The results for the survey in March 2021 will be compared with this survey - and another one after launch

Where will this be published?

A popup will display on the website and dashboard inviting users to participate in a short survey - sending participants to the links below

Website:
Dashboard:

Survey Test Links:

StudentAidBC website: https://unc2751u.optimalworkshop.com/questions/2smo30rm-0-0-1-2
StudentAidBC dashboard: https://unc2751u.optimalworkshop.com/questions/2smo30rm-0-0-1-1-1

Dates:

Test on UAT: Wednesday, August 4
Survey start date: Thursday, August 5 (morning)
Survey end date: Sunday, September 5

Notes:

The orange colours in the test link will be replaced with B.C. Government colours after survey purchase
Lynn to coordinate purchase with an admin on Thursday, August 5


Visio File

Can you please share Visio diagram of figure 1.
I am looking for Visio reference architectures of vWAN showing hub spoke for different subscriptions with different subnets of network management , DMZ and shared services

Thanks for reporting - this issue is under review. This is a Microsoft Internal DevOps Bug ID # 525982

I am looking for Visio reference architectures of vWAN showing hub spoke for different subscriptions with different subnets of network management , DMZ and shared services

@Tech200910
Thanks for the feedback! Can you please link to the article you're referencing?

Please reopen once you have identified the article you are referencing. Thank you


Added missing requirement of django-configurations

Current coverage is 96.13%

Merging #16 into develop will not affect coverage as of d7e3068

@@            develop     #16   diff @@
=======================================
  Files             9       9
  Stmts           233     233
  Branches         23      23
  Methods           0       0
=======================================
  Hit             224     224
  Partial           5       5
  Missed            4       4

Review entire Coverage Diff as of d7e3068

Uncovered Suggestions

+0.86% via form_data/forms.py#69...70
+0.86% via form_data/models.py#44...45
+0.86% via api/serializers.py#43...44

Powered by Codecov. Updated on successful CI builds.


Add to Web-Scraping-with-Beautiful-Soup-master and remove invalid notebooks.

There are multiple ipynb files in Web-Scraping-with-Beautiful-Soup-master folder that do not appear to Be Valid JSONs. I would like to remove these files and add programs for extracting data from websites like Wikipedia and Amazon.
Please assign this issue to me @Niketkumardheeryan .
Additional info for tags: I am participating as contributor through gssoc' 24.

Assigned to you , PLease follow Project guidelines for before making a PR.


Issue 137, have a detail error message for missing ion_type.

Description:
As mentioned in #137, this PR is trying to generate a detail error message for missing ion_type.
It would be easier to navigate the missing ion_type object by giving object value and its depth. In addition, if the object is inside a STRUCT, the filed will be the key instead of None.

Example output:
1. Missing ion_sym's ion_type
from amazon.ion import simpleion as ion

ion_sym = ion.IonPySymbol('SomeSymbol', None)
# ion_sym.ion_type = ion.IonType.SYMBOL                 comment this line to produce error

ion_bytes = ion.dumps(ion_sym, binary=True)

Error message:
amazon.ion.exceptions.IonException: ion_type 'None' is not allowed in value: "IonPySymbol(text='SomeSymbol', sid=None, location=None)", depth: 0, field: None

2. Missing ion_sym's ion_type (inside a struct)
from amazon.ion import simpleion as ion
from collections import OrderedDict

ion_sym = ion.IonPySymbol('SomeSymbol', None)
# ion_sym.ion_type = ion.IonType.SYMBOL                  comment this line to produce error

ion_dict = ion.IonPyDict(OrderedDict([
    ("key1", 1),
    ("key2", 2),
    ("someSymbol", ion_sym),
]))
ion_dict.ion_type = ion.IonType.STRUCT
ion_bytes = ion.dumps(ion_dict, binary=True)

Error message:
amazon.ion.exceptions.IonException: ion_type 'None' is not allowed in value: "IonPySymbol(text='SomeSymbol', sid=None, location=None)", depth: 1, field: someSymbol

3. Missing ion_dict's ion_type
from amazon.ion import simpleion as ion
from collections import OrderedDict

ion_sym = ion.IonPySymbol('SomeSymbol', None)
ion_sym.ion_type = ion.IonType.SYMBOL

ion_dict = ion.IonPyDict(OrderedDict([
    ("key1", 1),
    ("key2", 2),
    ("someSymbol", ion_sym),
]))
# ion_dict.ion_type = ion.IonType.STRUCT                comment this line to produce error
ion_bytes = ion.dumps(ion_dict, binary=True)

Error message:
amazon.ion.exceptions.IonException: ion_type 'None' is not allowed in value: "<amazon.ion.simple_types.IonPyDict object at 0x10a232b80>", depth: 0, field: None

The current message looks like below:
amazon.ion.exceptions.IonException: Value must have a non-None ion_type: IonPySymbol(text='sym', sid=12, location=None), depth: 0, field: None

Yeah, IonType is important to create a value. Even though fromValue is the most common way to create a value, let me know If you think there is anything else I can do for this situation.

This PR can be merged. Would you mind opening an issue to correctly set the ion_type when the simple_types constructors are invoked explicitly?

Sure!


Issue with using lambdas in tests in gcc

I have come across an issue where two test cases in separate source files, that happen to acquire the same name (due to COUNTER macro being per compilation unit), and using lambdas inside them are compiled (or linked) incorrectly. The issue is certainly in either gcc or the linker (or both) and relates to how it handles inline functions.
In this particular case the issue is in macro DOCTEST_CREATE_AND_REGISTER_FUNCTION. It forwards declares the function as static, and then implements it as inline, but without "static". The fix is in either defining the function as static inline, or just forget about inline (after all the name is going ot be unique within a compilation unit, inline seems unnecessary here).
I have managed to reproduce the compiler(or linker) bug without doctest, I can supply more details if interested. But in this particular case, when two modules declare static functions of the same name, and then define them as inline without "static", and also both declare and call a lambda inside, both functions will end up calling the same lambda (from one of the functions, the other one will not be in the executable at all).
I can create and submit a PR with a fix, but it is as simple as changing
inline void f()
to either
static inline void f()
or
static void f()
This is line 1188 in the latest version at the time of writing.

Thanks for reporting this! That inline there was a remnant from the early development of doctest.
This happened only under linux - there was no problem using MinGW-w64 under windows.

Apparently, the issue is not about Linux Vs MinGW, etc (I'm compiling under
cygwin64). It's a bug that was present in gcc 5.4, but was fixed in 6.1. At
least so I've been told, haven't verified myself yet. But the fix that
you've now committed ensures that it won't hit the bug even for 5.4.
Regards,
Konstantin


image cropping method might be wrong

https://github.com/Arthur151/ROMP/blob/623687a37cb7d1ba4538baf1e3c6f65808a36e2c/romp/lib/utils/augments.py#L167-L169
Here, I guess you meant to calculate a bounding box for a single person, based on the visible kpts and then expend the box.
However, when you do leftTop, rightBottom = np.clip(box[0], 0, width), np.clip(box[1], 0, height), as I understand box[0] is (Xmin, Ymin). But why is Ymin also constrained by width? The same goes for the next term, why is Xmax constrained by height? This might cause truncation of a person.
For example, if there is a very long image size like 300 x 900, the person is in the right of the image, the green box is the box calculated by cal_aabb(), the red dots are kpts (Fig 1.):
But after Line 168 and Line 169, it will become fig3. This is because, in the Line168, the X value will be constrained by 'height'. This will make the X value of RightBottom even smaller than LeftTop's X value, and gave a box like Fig 2.
Finally, the cropped image will be a completely blank image  (!)

You can reproduce the results very quick, by copying the code below and use this image, it's exactly the same as your code, you can put it directly into your main() in augments.py, I pre-defined 5 kpts based for the person (red dots):

kps2d = np.array([[[800,70, 1],[840,133, 1],[750,137, 1],[750,245, 1], [840, 235, 1]]])
def processssss(originImage, full_kp2ds=None, augments=None, is_pose2d=True, multiperson=False):
    crop_trbl, bbox = (0,0,0,0), None

    if augments is not None:
        height, width = originImage.shape[0], originImage.shape[1]
        scale, rot, flip = augments

        if rot != 0:
            originImage, full_kp2ds = img_kp_rotate(originImage, full_kp2ds, rot)

        if flip:
            originImage = np.fliplr(originImage)
            full_kp2ds = [flip_kps(kps_i, width=originImage.shape[1], is_pose=is_2d_pose) for kps_i, is_2d_pose in zip(full_kp2ds, is_pose2d)]

        if not multiperson and is_pose2d.sum()>0:
            kps_vis = full_kp2ds[0]#[valid_range][np.where(np.array(is_pose2d[valid_range]))[0][random_idx]]
            if (kps_vis[:,2]>0).sum()>2:
                box = calc_aabb(kps_vis[kps_vis[:,2]>0,:2].copy())

                x = originImage.copy()
                cv2.rectangle(x, (int(box[0][0]), int(box[0][1])), (int(box[1][0]), int(box[1][1])), (0, 255, 0), thickness=2, lineType=4)
                cv2.circle(x, (int(box[0][0]), int(box[0][1])), color=(255, 0, 0), radius=5, thickness = -1)
                cv2.circle(x, (int(box[1][0]), int(box[1][1])), color=(255, 0, 0), radius=5, thickness = -1)
                for i in kps_vis[kps_vis[:,2]>0,:2]:
                    cv2.circle(x, (i[0], i[1]), color=(0, 0, 255), radius=3, thickness = -1)
                cv2.imwrite(f'./original_box_with_kp2d.jpg', x)

                y = originImage.copy()
                leftTop, rightBottom = np.clip(box[0], 0, width), np.clip(box[1], 0, height)
                cv2.rectangle(y, (int(leftTop[0]) ,int(leftTop[1])), (int(rightBottom[0]), int(rightBottom [1])), (0, 255, 0), thickness=2, lineType=4)
                for i in kps_vis[kps_vis[:,2]>0,:2]:
                    cv2.circle(y, (i[0], i[1]), color=(0, 0, 255), radius=3, thickness = -1)
                cv2.imwrite(f'./clipped_original_box_with_kp2d.jpg', y)

                z = originImage.copy()
                [l, t], [r, b] = get_image_cut_box(leftTop, rightBottom, scale)
                bbox = (l,t,r,b)
                cv2.rectangle(z, (int(l) ,int(t)), (int(r), int(b)), (0, 255, 0), thickness=2, lineType=4)
                for i in kps_vis[kps_vis[:,2]>0,:2]:
                    cv2.circle(z, (i[0], i[1]), color=(0, 0, 255), radius=3, thickness = -1)
                cv2.imwrite(f'./rectified_box_with_kp2d.jpg', z)

    orgImage_white_bg, pad_trbl = image_pad_white_bg(originImage)
    if full_kp2ds is None and augments is None:
        return orgImage_white_bg, pad_trbl

    image_aug, kp2ds_aug, offsets = image_crop_pad(originImage, kp2ds=full_kp2ds, crop_trbl=crop_trbl, bbox=bbox, pad_ratio=1.)
    cv2.imwrite(f'./final.jpg', image_aug)
    return image_aug, orgImage_white_bg, kp2ds_aug, offsets

if __name__ == '__main__':
    image = cv2.imread('/apdcephfs/share_1290939/zhengdiyu/projects/multi-hand-recovery/2.jpg', cv2.IMREAD_COLOR | cv2.IMREAD_IGNORE_ORIENTATION)
    kps2d = np.array([[[800,70, 1],[840,133, 1],[750,137, 1],[750,245, 1], [840, 235, 1]]])
    scale = np.random.rand() * (1.7 - 1.2) + 1.2
    print(image.shape)
    print('kps shape', kps2d.shape)
    return_img = processssss(image, kps2d, augments=(scale, 0, False), is_pose2d=np.array([True]))

===========
I don't know if I understand your meaning correctly. If not, could you explain to me why we need truncated person, will it benefit training?
Supp:
If I want to get a reasonable result, I can just get it by comment Line 167 leftTop, rightBottom = np.clip(box[0], 0, width), np.clip(box[1], 0, height) :
My RESULTS

By the way, I think that we can choose full_kps within the range: valid_range = (full_kp2ds[:, :, 2]>0).sum(-1) > 2 instead of randomly choosing one from full_kp2ds and then judging whether it has if (kps_vis[:,2]>0).sum()>2 or not:
            valid_range = (full_kp2ds[:, :, 2]>0).sum(-1) > 2
            kps_vis = full_kp2ds[valid_range][np.where(np.array(is_pose2d[valid_range]))[0][random_idx]]
            #if (kps_vis[:,2]>0).sum()>2:
            box = calc_aabb(kps_vis[kps_vis[:,2]>0,:2].copy())

Thanks a lot for reporting this bug. Yes, I have found that current cropping function might crop out area without people. I am looking into this.


Rich not being displayed in Rails Admin

I use Rails Admin and I wanted to setup Rich with it. After bundle install I've run:
rails generate rich:install
rake db:migrate

I use Devise with model name Admin, so I modified /config/initializers/rich.rb:
config.authentication_method = :authenticate_admin!

Here is my model config in config/initializers/rails_admin.rb:
config.model Article do |a|

    edit do

      field :trailer_text, :rich_editor do
        config({
          :insert_many => true
        })
      end

      field :news_text, :rich_editor do
        config({
          :insert_many => true
        })
      end
    end
  end

Here is how it all looks like:

There are no javascript errors, just a message about fontawesome: "Resource interpreted as Font but transferred with MIME type application/font-woff: "http://localhost:3000/assets/fontawesome-webfont.woff". "
CKEditor and Rick Javascript is loaded
I've tried latest gem code, disabled all Chrome plugins and cleared cache

Any ideas how to debug this would be great!
[edit]: now it started to display something, link names without styling, but still no editor:

I've merged this PR locally, and it helped for me.


Add unit test coverage and CI integration

E.g., using Circle free plan: https://circleci.com/open-source/

Splitting this into separate tickets for unit test coverage and basic CI integration :)

cc @ryley-o


UAR-149: Add individual MO details

JIRA link
https://companieshouse.atlassian.net/browse/UAR-149
Change description
Add page for adding an individual MO to update journey
Work checklist

[ ] Tests added where applicable
[ ] UI changes meet accessibility criteria

Merge instructions
We are committed to keeping commit history clean, consistent and linear.  A BREAKING CHANGE can be part of commits of any type,
types other than fix: and feat: are allowed, for example build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others,
footers other than BREAKING CHANGE: <description> may be provided.

Happy to approve, but conflicts need addressing.


KSB-24: Added configuration for Travis

How is this related to KSB-24?

Wrong ticket number and Id. Anyway, the PR is for testing at the moment and will be re-pushed before actual merge.

This became obsolete as #510 replaces this commit.


Consider PresenterScope receiver for presenters

This would let us push some more stuff into the presenter
interface PresenterScope<UiEvent> {
  fun onEvent(body: (UiEvent) -> Unit)
}

interface Presenter<UiState, UiEvent> {
  @Composable fun PresenterScope<UiEvent>.present(): UiState
}

Then a presenter looks like this
@Composable
override fun PresenterScope<Event>.present(): State {
  val state = ...

  onEvent { event ->
    // ...
  }

  return state
}

Note that onEvent would have to be @Composable, too.
I'm not sure how it'd be wired up. It could use a flow under the hood, in which case, well... could also just pass in a Flow.

good point about it needing to be composable.
The idea is we could push things other than events into this scope in the future as a toe-hold, but maybe that's overthinking it

Not going to do this


testautoRIFT_ISCE.py : ImportError: cannot import name 'version'

I met the error below, is that mean something wrong with the init.py file?
Is there anyone has met the error before?
Thank you for your help.
theone@noone:~/AutoRIFT/merged$ testautoRIFT_ISCE.py -m reference.slc.full -s secondary.slc.full
This is the Open Source version of ISCE.
Some of the workflows depend on a separate licensed package.
To obtain the licensed package, please make a request for ISCE
through the website: https://download.jpl.nasa.gov/ops/request/index.cfm.
Alternatively, if you are a member, or can become a member of WinSAR
you may be able to obtain access to a version of the licensed sofware at
https://winsar.unavco.org/software/isce
Traceback (most recent call last):
File "/home/theone/isce2/install/isce/components/contrib/geo_autoRIFT/testautoRIFT_ISCE.py", line 1007, in
main()
File "/home/theone/isce2/install/isce/components/contrib/geo_autoRIFT/testautoRIFT_ISCE.py", line 392, in main
nc_sensor=inps.nc_sensor, mpflag=inps.mpflag, ncname=inps.ncname)
File "/home/theone/isce2/install/isce/components/contrib/geo_autoRIFT/testautoRIFT_ISCE.py", line 404, in generateAutoriftProduct
from components.contrib.geo_autoRIFT.autoRIFT import version as version
ImportError: cannot import name 'version'

你好，我是云南大学的，我也在用这个工具，方便留个联系方式吗？有几个问题想请教您！谢谢！

@guangbaoshen this is weird. The version attribute is defined here, and should be assigned when importing the autoRIFT module. Were you able to run autoRIFT successfully before or did this error occur after some update of the software or its Python dependencies? I would try reinstalling autoRIFT and/or ISCE2, and test by running from components.contrib.geo_autoRIFT.autoRIFT import version as version in the Python environment

@guangbaoshen actually the testautoRIFT_ISCE.py script you have had two missing __ before/after version.
Your above message shows line 404 in testautoRIFT_ISCE.py:
from components.contrib.geo_autoRIFT.autoRIFT import version as version
while the line 404 in the autoRIFT source code
from components.contrib.geo_autoRIFT.autoRIFT import __version__ as version


Resize login image and change color scheme on selection

Hi! I resize the login image and color scheme on selection to pink instead of system color.

Let's do it!


Error: The source server isn't listening on the network

Required information

Distribution: Ubuntu
Distribution version: 18.04
The output of "lxc info" or if that fails:

Kernel version: 4.15.0-22-generic
LXC version: 3.0
LXD version: 3.0
Storage backend in use: ZFS

Issue description
When i try to publish a container as an image to a remote repository using:

lxc image  copy container repository:

I get the following output:

Error: The source server isn't listening on the network

The same happens when i try to do an image copy to a remote repository using:

lxc image copy container repository: --copy-aliases

I get the same error message.
Information to attach

[ ] Any relevant kernel output (dmesg)
[ ] Container log (lxc info NAME --show-log)
[ ] Container configuration (lxc config show NAME --expanded)
[ ] Main daemon log (at /var/log/lxd/lxd.log or /var/snap/lxd/common/lxd/logs/lxd.log)
[ ] Output of the client with --debug
[ ] Output of the daemon with --debug (alternatively output of lxc monitor while reproducing the issue)

That's because your source server isn't listening on the network :)
As the target server downloads from the source, you need to have core.listen_address set on the source server and have that address be reachable by the target server.

The config is currently set as:

lxc config set core.https_address "[::]:8443"

What does lxc info and lxc info repository: show you?
Also, try running the lxc image copy with --debug

Changing this to:

lxc config set core.https_address "[::]:8443"

worked for lxc image copy but not for lxc publish.
When i run: lxc publish container repository: --alias hahahaha , it does not public it to the remote repo.

What does lxc publish say? does it show an error? Can you post its output when run with --debug?

It's trying to publish the container to the local image repo, not the remote one.

It still shows this:

  "config": {
  	"core.https_address": "[::]:8443",
  	"core.trust_password": true
  },

That part's normal, it should publish to the local image store without setting an alias, then copy the image from the local image store to the remote image store, set the alias there and then remove the image from the local image store.


create-compas: error formatting and unzip error

While using any of the new npx create-compas commands, the code breaks while unzipping. Also, error formatting is missing.
Example:
❯ npx create-compas@latest --template with-auth

{"level":"info","time":1662028440097,"context":{"type":"create-compas"},"message":"Experimental!"}
{"level":"info","time":1662028440097,"context":{"type":"create-compas"},"message":"Resolved template url: '[https://github.com/compasjs/compas/tree/v0.0.213/./examples/with-auth](https://github.com/compasjs/compas/tree/v0.0.213/examples/with-auth)'"}
{"level":"info","time":1662028440097,"context":{"type":"create-compas"},"message":"Output directory: '/Users/mitchell/projects/compas-with-auth'"}
{"level":"info","time":1662028440098,"context":{"type":"create-compas"},"message":"Resolving remote template..."}
{"level":"info","time":1662028440353,"context":{"type":"create-compas"},"message":"Downloading and extracting template..."}
{"level":"error","time":1662028440709,"context":{"type":"create-compas"},"message":{"type":"error","message":"Error caught from callback passed in `mainFn`","error":{"name":"Error","message":"Premature close","stack":["at new NodeError (node:internal/errors:393:5)","at Unpack.<anonymous> (node:internal/streams/pipeline:352:14)","at Unpack.emit (node:events:525:35)","at [maybeClose] (/Users/mitchell/.npm/_npx/9860e88e3e1de73f/node_modules/tar/lib/unpack.js:228:12)","at Unpack.opt.ondone (/Users/mitchell/.npm/_npx/9860e88e3e1de73f/node_modules/tar/lib/unpack.js:129:23)","at Unpack.emit (node:events:525:35)","at [emit] (/Users/mitchell/.npm/_npx/9860e88e3e1de73f/node_modules/tar/lib/parse.js:285:12)","at [maybeEnd] (/Users/mitchell/.npm/_npx/9860e88e3e1de73f/node_modules/tar/lib/parse.js:401:17)","at [consumeChunk] (/Users/mitchell/.npm/_npx/9860e88e3e1de73f/node_modules/tar/lib/parse.js:432:21)","at Unzip.<anonymous> (/Users/mitchell/.npm/_npx/9860e88e3e1de73f/node_modules/tar/lib/parse.js:351:29)"]}}}

Thanks for reporting!
#2037  forces the logger use to use the pretty printer and also adds a check if the template that is used really exists.
The docs already mention with-auth but it is not yet created, sorry for the confusion. We use #1987 to track template creation.


View lists of associations one-per-line

Is it possible to have lists of associations show up line-by-line instead of a comma separated sentence?
If so, what is the easiest way to do this?
To be clear, I'm talking about how has_many associations display in the View for an object.

Configuring pretty_value for the field will do the job.


Allow Header(limit=None) ?

Not urgent at all, just a minor suggestion:
In the benchmark scripts I'm currently running I want to limit the number of samples in a data-pipe according to an args.limit CLI parameter. I'd be nice to be able to just write:
dp = Header(dp, limit=args.limit)

and let Header be a no-op when limit=None. This might be a bit niche, and the alternative is to just protect the call in a if block, so I would totally understand if this isn't in scope (and it's really not urgent in any case)

I had a quick look at it and during the implementation noticed the following: it is probably more appropriate to leave it up to the caller to determine whether to limit the elements (using Header) or not (using the source datapipe without wrapping it into Header).
Using Header is an operation that needs a limit. Otherwise the __len__ function is undefined for the case of an unbounded source datapipe when the limit would be set to None.
See torchdata/datapipes/iter/util/header.py:
def __len__(self) -> int:
    if self.length != -1:
        return self.length
    try:
        source_len = len(self.source_datapipe)
        if self.limit is None:
            self.length = source_len
        else:
            self.length = min(source_len, self.limit)
        return self.length
    except TypeError:
        warn(
            "The length of this HeaderIterDataPipe is inferred to be equal to its limit."
            "The actual value may be smaller if the actual length of source_datapipe is smaller than the limit."
        )
        # (!) limit could be None at this time which breaks the contract of __len__
        # (!) there is no way to determine a length because the source datapipe could be endless
        return self.limit

Therefore we should think about whether to move on with this or not because the feature seems to break the software design.

I had a quick look at it and during the implementation noticed the following: it is probably more appropriate to leave it up to the caller to determine whether to limit the elements (using Header) or not (using the source datapipe without wrapping it into Header).

This is true for the case that the whole pipeline is created by users. There can be a case that domain library provides a pre-assembled pipeline with a Header that can limit the length. When users don't want to use it, it should be feasible to reset it back to no-op.

Do you have a code example for that case? It might be worth investigating a bit into the context for a better understanding.
Generally one wants to avoid opening up the possibility to construct an instance in a way that leads to undefined behavior. Maybe there are options like differentiating between pipelines that do not have or require a length and ones that do. Then correctness could be ensured already by typing.

Here is a similar example of shuffle.
https://github.com/pytorch/text/blob/2978507775283859e0519bbbd8e25527428d9a12/torchtext/datasets/ag_news.py#L41-L81
The pipeline provided from torchtext has shuffle disabled. Users can specify if they want to shuffle by giving an adaptor to DataLoader2.
from torchdata.dataloader2 import DataLoader2
from torchdata.dataloader2.adapter import Shuffle

# Shuffle turned off by default
dl = DataLoader2(datapipe)

# Shuffle turned on
dl = DataLoader2(datapipe, datapipe_adapter_fn =Shuffle(True))

I would expect users having the similar way to specify Header as well


Document feature status and information regarding availability, versioning, deprecation policies etc.

Document feature status and information regarding availability, versioning, deprecation policies etc.
This is a customer ask, to document the list of features supported and their current state, similar to
https://linkerd.io/2.11/features/ and https://istio.io/latest/docs/releases/feature-stages/.

Done via https://github.com/openservicemesh/osm-docs/pull/260


fix a11y issues on dropdown and combo box

Changed

Tweaked dropdown and combo box to adhere to A11Y guidelines

Hi @CharlieOrlando! 👋 are you still interested in finishing up this PR? Seems like @dakahn left some feedback that would need to be addressed before merging in. After that, then we should be good to go!

Hey, @joshblack. I actually talked to DA via Slack and ended up updating my rulesets. Dropdown, indeed, was a false positive. Combo box still throws a violation for me, but DA mentioned that he wasn't able to reproduce the issue so I'm not sure what to do about that one.

Gotcha, thanks for the update @CharlieOrlando! 🙏 Since we're unable to reproduce, would you want to make an issue with an example in codepen/codesandbox/etc and we can help debug what's going on?

Going to close this for now, thank you so much for taking the time to contribute @CharlieOrlando! 🙏 We really, really appreciate it. Let me know if you want to pick this work back up and we can totally re-open 👍


ACS cannot fetch metadata when using mirrors in a disconnected environment

We are on ACS 4.3 and yet are encountering this issue described here:

Yet it says this is fixed in 4.2.
Can someone please help me with how to get metadata in a disconnected environment? Within OpenShift I can use an ImageContentSourcePolicy (ICSP) (soon to be replaced by ImageDigestMirrorSet (IDMS)) but I can't see any mention of equivalent functionality in ACS?
Thanks in advance.

Hi @mtcolman - thanks for the message - agreed the docs could be made more clear, we'll get that updated.
TL;DR; ACS supports ICSP, IDMS, etc. via the delegated scanning capability.
The 4.2 release notes mention the association between delegated scanning and support for ICSP, IDMS, etc.
Refer to the these instructions for how to enable delegated scanning.
Hope this helps.

Thanks @dcaravel, much appreciated. Yes the docs could definitely benefit from being clearer on this.


Where is the definition for pointInsideLinkedGeoLoop?

I see pointInsideLinkedGeoLoop in the linkedGeo.h header file:
bool pointInsideLinkedGeoLoop(const LinkedGeoLoop* loop, const BBox* bbox, const GeoCoord* coord);
But I don't see the function's implementation anywhere. Searching the solution, I can see it used a couple times, but not defined. Is it an external dependency?
I'm not very strong in C. What am I missing?

I see pointInsideLinkedGeoLoop in the linkedGeo.h header file:
bool pointInsideLinkedGeoLoop(const LinkedGeoLoop* loop, const BBox* bbox, const GeoCoord* coord);
But I don't see the function's implementation anywhere. Searching the solution, I can see it used a couple times, but not defined. Is it an external dependency?
I'm not very strong in C. What am I missing?

It's in there, but as #defines within polygon.h (the ITERATE named macros) that are also used in other header files like linkedGeo.h, which eventually lead you to polygonAlgos.h where these macros are replaced with appropriate values that get defined, in one example, at the bottom of linkedGeo.c
When I was converting this to C#, it made for an interesting chase, but it had also been a while since I'd written any serious C.  This might be a good starting point to understand what #define can do, and what the H3 folks have used it for:  https://gcc.gnu.org/onlinedocs/cpp/Macros.html

@RichardVasquez is correct, the definition is inside polygonAlgos.h: https://github.com/uber/h3/blob/master/src/h3lib/include/polygonAlgos.h#L66
The reason for this is that we needed it to operate over two different iterable data structures, Geofence and LinkedGeoLoop, and C doesn't have great support for this type of polymorphism. Ideally we'd only have one polygon representation, but... reasons, which I can go into if you're interested.

@RichardVasquez Thanks for the macros link, and for the great work on your H3 to C# conversion. I've been doing my own conversion to C# this week, had looked around before I did, and am surprised I missed your project on GitHub. It'll save me lots of time. 🥇

@nrabinowitz I'm curious to know. Can one be converted into the other, and back? Convert and iterate wouldn't work here?

@danvanderboom The reason we have the two different structures is primarily due to memory management. For polyfill, the caller is constructing the geo polygon, so they can allocate an appropriate amount of memory, and the current Geofence struct is an efficient format in which to pass the polygon coords. We originally wrote pointInsideGeofence in service of the polyfill algo. LinkedGeoLoop was needed for h3SetToLinkedGeo, because the caller doesn't know how much memory to allocate for the output polygon, and the max theoretical size might be orders of magnitude larger than the real required size, so we have the caller allocate the first node, link the rest, and then ask them to destroy the structure after they read it to free the memory allocated by the algo.
So that left us with two polygon structures, and we couldn't easily switch the API to use only one. There's a current work item for the next major version to possibly consolidate around one structure, but for now we have two. And while it's possible to convert between them, this is O(vertices) at best and uses twice the memory, and the polygons in question may have very large numbers of vertices. When we moved multipolygon normalization into the core library (#131), we needed the point-in-poly and bounding box algos to work on the LinkedGeoLoop structure as well. The options considered were to a) duplicate the code to work on the new structure, b) convert into a Geofence and then convert back, or c) use macros to allow some form of polymorphism. (a) feels ugly and hard to maintain, (b) had performance concerns, and (c) results in less legible code, but given the tradeoffs (c) won out.
Hopefully we can clean this up in v4 by consolidating on one geo type, but we don't have a clear v4 timeline at present.


Is Svelte 3 supported?

Hello!
Does this plugin work for Svelte 3 (used with Vite)? Or is it SvelteKit only?
Cheers,
Peter

It worked for me with Svelte 3. But I have issues after upgrading from vite 2.6.2 to 2.7.2

@janbaer What issues are you facing? I'm just trying out this and I get the Logo is not a constructor (assuming I do import Logo from 'assets/icons/logo.svg?component)

@cibernox I get the same error

@janbaer I also tried rollup-plugin-svelte-svg and failed, but in this comment I found a custom plugin that worked great for me: https://github.com/codefeathers/rollup-plugin-svelte-svg/issues/31#issuecomment-982351402


failed to install due to http://localhost:30000/worlds/porvenir/art/porvenir-banner.jpg 404 (Not Found)

Describe the bug

To Reproduce
Steps to reproduce the behavior:

on the latest Foundry click install on this package
see error

The compatibility warnings are just warnings and not all for lootsheet. It’s still installed. Also not related to the Porvenir error. That’s just a missing image for one of your worlds.
On Mar 8, 2023 at 7:52 PM -0800, Brandon Furtwangler @.***>, wrote:

Describe the bug
To Reproduce
Steps to reproduce the behavior:

on the latest Foundry click install on this package
see error

—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>


Playback Quality Support

Tasks
Design and implement an interface to support getting/setting playbackQuality across providers.
Notes
Properties

playbackQuality: string
playbackQuality: string[]
canSetPlaybackQuality: boolean

Events

vds-playback-quality-change
vds-playback-quality-change-request

Important

playbackQuality can only be set to a valid value in playbackQuality.
How to know if the current provider supports setting playbackQuality? The interface designed should account for this via the canSetPlaybackQuality property. Refer to the canRequestFullscreen property on the MediaContext for a similar implementation.

References

https://github.com/vime-js/vime/blob/master/core/src/components/core/player/PlayerProps.ts#L268-L284
https://github.com/vime-js/vime/blob/master/core/src/components/providers/MediaProvider.ts#L23-L24
https://github.com/vime-js/vime/blob/master/core/src/components/providers/hls/hls.tsx#L247-L254
https://github.com/vime-js/vime/blob/master/core/src/components/providers/dash/dash.tsx#L303-L330

Is there any ETA about this one? Is the only component that I need to migrate from plyr to vidstack using React 🙌

Hey @danestves! Feature parity work starts mid-to-end next week. We can prioritize playbackRate and playbackQuality before the rest of the tasks as I've been asked about them a few times. Hope that works :)

Awesome! Will look for it and at a later date will look for this https://github.com/vidstack/player/issues/74 🥳  thanks for the response!

Just want to drop this here, we moved from plyr to @vime because it was more easy to implement, we have put everything inside the player and made a custom menu settings that has quality selector support. So, based on the code from vidstack we can implement the rest of the stuff easily and adding quality support will make move our code directly to vidstack without any problem.

We will look forward to any changes on this proposal and thank you so much!

@danestves Would you mind sharing your player code on how you got this quality menu to work? We're looking to do the same.

Same question like @iDVB - is there any example somewhere how to implement the quality-feature in the player-menu? I can't find anything.

Hey @dennisspohr!
We don't have a menu component at the moment but most users are using Radix to fill in the gap for now. You can find our documentation for playback quality here which you'll need to wire it up to your own menu.


ENH: Increase coverage for miscellaneous classes

BUG: Fix Superclass name in RTTI macro
ENH: Increase coverage for miscellaneous classes
STYLE: Prefer using test macros for setter/getter method testing
STYLE: Rename a type alias to honor the class purpose
STYLE: Conform to ITK style in miscellaneous tests

PR Checklist

[X] No API changes were made (or the changes have been approved)
[X] No major design changes were made (or the changes have been approved)

I assume you are leaving investigation of (Regularized)HeavisideStepFunction superclasses for another time?

I assume you are leaving investigation of (Regularized)HeavisideStepFunction superclasses for another time?

I had a quick look yesterday, but as it happens with the rest of the cases in the mentioned issue, it does not seem obvious to me what's happening. So leaving it cross-referenced in the issue for another time/somebody else being able to look at it.


First asset creation (User experience is not correct )

@akshay8551 So when user creates asset coins or collectibles loader stops for a while and again starts this is not correct behaviour it should run until process is completed pause and play behaviour is not correct
To Reproduce :  create fresh app > get sats > and start creating a new coins or collectibles > Now you can see the loader animation behaviour

https://github.com/user-attachments/assets/9b08eb5c-7bd2-41d0-8ca2-81137124e510

Completed


Config and Documentation for ARMC6 in mbed OS

ARMC6 is an optional compiler in mbed OS.
mbed CLI should mention how to install and configure ARMC6 in it's readme, and should include a method for defining MBED_ARMC6_PATH with global mbed CLI configuration.
I think this first line, found here https://github.com/ARMmbed/mbed-cli/blob/master/mbed/mbed.py#L1406, should be changed.
        compilers = ['ARM', 'GCC_ARM', 'IAR']
        for c in compilers:
            if self.get_cfg(c+'_PATH'):
                env['MBED_'+c+'_PATH'] = self.get_cfg(c+'_PATH')

Oh yeah, I'm going to do this, but just not today 😄

@adbridge @screamerbg Is there a way to mirror this issue in jira?

@theotherjimmy  We should have this done for the actual release

@theotherjimmy If I know what Jira project mbed-cli issues go to then I can add this repo to the github2jira script.

@adbridge I would just say that it could fall into the same bin as mbed OS, but I would ask Aaron first.


Move access and repo permission to models/perm/access

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@443675d). Click here to learn what that means.
The diff coverage is 55.04%.

@@           Coverage Diff           @@
##             main   #19350   +/-   ##
=======================================
  Coverage        ?   47.35%
=======================================
  Files           ?      958
  Lines           ?   133579
  Branches        ?        0
=======================================
  Hits            ?    63261
  Misses          ?    62666
  Partials        ?     7652

Impacted Files
Coverage Δ

models/org.go
62.99% <0.00%> (ø)

models/statistic.go
0.00% <0.00%> (ø)

modules/context/permission.go
26.08% <0.00%> (ø)

modules/templates/helper.go
49.84% <0.00%> (ø)

routers/api/v1/repo/fork.go
38.46% <0.00%> (ø)

routers/api/v1/repo/issue_comment.go
59.05% <0.00%> (ø)

routers/api/v1/user/star.go
0.00% <0.00%> (ø)

routers/api/v1/user/watch.go
0.00% <0.00%> (ø)

routers/web/repo/repo.go
24.02% <0.00%> (ø)

routers/web/repo/setting_protected_branch.go
39.51% <0.00%> (ø)

... and 52 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 443675d...372e024. Read the comment docs.


[SPARK-45819][CORE] Support clear in REST Submission API

What changes were proposed in this pull request?
This PR aims to support clear in REST Submission API to clear completed drivers and apps.
Why are the changes needed?
This new feature is helpful for users to reset the completed drivers and apps in Spark Master.
"1 Completed"

After invoking clear API, "0 Completed"
$ curl -X POST http://max.local:6066/v1/submissions/clear
{
  "action" : "ClearResponse",
  "message" : "",
  "serverSparkVersion" : "4.0.0-SNAPSHOT",
  "success" : true
}

Does this PR introduce any user-facing change?
No, this is a new API.
How was this patch tested?
Pass the CIs with the newly added test case.
Was this patch authored or co-authored using generative AI tooling?
No.

Could you review this when you have some time, @viirya ?

Thank you for review and approval, @viirya . Merged to master for Apache Spark 4.0.0.


Remove Google Font loader

Removing dependency on external services and whitelisting in CSP.  We can distribute these to a CDN separately, and if they load a few more bits the first time they are cached that's a good tradeoff to be able to control this ourselves.

selfie


Broken again? TypeError: can’t access property "textContent" on 2022-03-15

Context:
const getThreadInfos = () => {
    const dict = new Map();
    for (const threadElement of document.querySelectorAll(`${threadListContainerSelector} div[data-testid=mwthreadlist-item-open] a > div > div:nth-child(1)`)) {
      const name = threadElement.querySelector('span > span').textContent;

Seems to work after reloading. So this must be a scenario where the data isn’t settled :-/.


Weird login screen

Hello there. Hope you're doing well. Thank you for creating this plugin because their vim emulator sucks big time.
However, my start-up screen looks weird. Is this an issue on my end? Thank you!

Do you have enabled whitespace characters like so :set listchars=...? If so It's because text is centered dynamically using spaces thus they are visible. I can disable those settings in local buffer options but its not the priority for now.
It might also be some plugin showing whitespace at the end of the line content

@kohane27 did the latest commit change anything? 401582b

Thank you for getting back to me. I really appreciate it. I tried and the same issue persists. It seems to be the problem on my end. I'll look into it and update if I found the problem. Thanks again!

Looking at your nvim config you are loading all of your vim.opt... after calling lazy.nvim so all of the local options my plugin defines get overriden. I've changed the plugin to mount on VimEnter so all of the options are set after startup. If the issue still persists, please reopen this issue.

@kawre  thank you so much for going the extra mile for me. I really appreciate it! I can confirm that the issue is fixed:

Thank you again!


Fixes for Issues 29,34,35

This pull request includes a newly generated H5 file that can be loaded by the ESSC module.  It also includes a fix in the spectrum.py module in the mler directory to fix the example_MLER_testrun.py file and lastly, it removes the import find statement in line 21 of fatigue.py to fix the example_fatigue.py file

@zmorrell-sand can you confirm that the new h5 file is working with example_contourApproach.py. This is throwing an error for me when I pulled this PR.

@ssolson In the example_envSampling.py file, it generates a contour output, which gets saved in the examples directory, under the same name as the buoy file (e.g. NDBC46022.h5).  If you use that file which gets generated by example_envSampling, it should work.  This is why the env file wasn't working in the past.  I think the best path moving forward would be to add a directory for Buoy outputs and a directory for contour outputs.  This does fix the issues specified above, but I guess this brought another issue to light

Closes #40


dashboard, syz-manager: split coverage reports

Our coverage reports have reached an enormous size (up to 500 MB / report). We now serve them as gzipped content, so at least we only transfer ~80MB, but it still requires a very fast computer to work with the page.
It seems that we will have to abandon the idea of generating one single html file at some point.
(At least) two options:

Keep it static -- generate lots of small html files and use relative links to navigate. We'd need at least ~4k html files per report: one for the directory structure + per-file stats, one for each file with source code, progs, etc.
Make it dynamic. We can store all those small pieces of data (source code + coverage, progs, etc.) in Cloud Storage and then let dashboard query the needed pieces dynamically. E.g. first we only load the list of files/directories. Then, as the user clicks on individual files, an HTTP request is made to the dashboard to query the associated source code, then, as the user clicks on the covered line, an HTTP request is made to query the program, etc.

The downside of (2) is that we still need A LOT of objects. E.g. the kasan-root-gce instance report mentions ~50K progs and ~4k source files.

Though, at least the problem with progs can be solved by caching -- they might be contained in lots of reports, so we might end up needing not ~50K per coverage report, but e.g. 100-200K in total for all reports (even 1M is ok in this case).

On the other hand, how will we clean up the unneeded progs in this case? There seems to be no support of hard links or ref counting in Google Cloud Storage.

The current self-contained-single-file has a number of important advantages in terms of simplicity on multiple levels, ease of distribution/saving reporting locally (including local syz-manager runs), running tools/syz-cover, etc.
So I would look at reducing the current format first.
First, we can make some parts options (e.g. per-function coverage, maybe don't include programs in syzbot reports, or save 2 versions smaller and larger).
Second, don't format everything statically, but instead include raw data and format with javascript.
E.g. we have:
input_dev_show_cap_snd---of 1

input_dev_show_cap_sw---of 1

which can be stored as a JS array as:
[input_dev_show_cap_snd,0,1],[input_dev_show_cap_sw,0,1]

Or, file sources include  for every cover point. While this can be represented just as an array of covered/uncovered line numbers.
Then we can render final html dynamically only when the file is opened, otherwise these are just large passive strings.
We probably need these changes anyway if we go for lots-of-files approach b/c I assume the endpoints will serve raw data (e.g. raw file contents).
This won't reduce the size radically, but I think it can make size manageable.
Btw Firefox handles these reports better.

If we want to share/download coverage for later analysis, we can still avoid the creation of any big HTML files.
E.g. for gcov there's an lcov tool that takes an intermediate coverage representation and then generate HTML coverage reports.
We could do the same -- introduce some simple format for processed coverage (e.g. simply a list of covered lines for each file with coverage) and a simple web server that would take that information + kernel sources. For each source file there can be a separate request to the web server, so it will be fast.
For a local syz-manager run we'll just such raw generate coverage info at runtime and reuse the web server functionality from a package.
For sharing,  we can make the preprocessed coverage reports downloadable and create some tools/syz-coverage-server that would reuse the same package -- the user would pass the kernel directory and the processed coverage file.
On syzbot, we can store the such raw files on GCS and, on demand, query them and render using the same web server package. If that raw format would also contain the kernel commit, it should be very easy -- we'd just use git show <revision>:<file> when generating HTML responses, so it should work fine even after we've just restarted and have to use the coverage info from the last run.


Star Wars Revised RPG Character Sheet

I've seen a couple people on the forums requesting a character sheet for the revised RPG edition of Star Wars. I also wanted to use it. It works great for me so I wanted to share.