Connect to multiple companies on the same server

Hello, first of all, thanks for this amazing job, it's very useful.
I am trying to achieve a connection to multiple companies on the same server but I'm having troubles because the post/patch methods are going to the same service layer instance.
I have the following:
List<Configuration> listConfigs;
listConfigs = new List<Configuration>();
Configuration config = new Configuration("DB1", "manager", g_Pass, serviceLayerURI);
listConfigs.Add(config);
config = new Configuration("DB2", "manager", g_Pass, serviceLayerURI);
listConfigs.Add(config);
config = new Configuration("DB3", "manager", g_Pass, serviceLayerURI);
listConfigs.Add(config);

The "Configuration" class constructor is the following:
public Configuration(string pDatabaseName, string pSAPUsername, string pSAPPassword, string pServiceLayerURI)
{
       DatabaseName = pDatabaseName;
       SAPUsername = pSAPUsername;
       SAPPassword = pSAPPassword;
       serviceLayer = new SLConnection(pServiceLayerURI, DatabaseName, SAPUsername, SAPPassword);
}

Inside the "Configuration" class I have methods that does post/patch to serviceLayer depending if the item exists or not (control is done previously). Then in the main program, I have a for each loop which use the method to post/patch items to each companies that are in the "List" with ItemMasterData objects, the problem is, it seems the post/patch is done to always the 1st company in the List which serviceLayer was connected to.
But when I declare SLConnection one by one in the code it seems to work fine and as expected (if I create SLConnection sl1, SLConnection sl2, etc.).
I've checked if the Cookies SessionId were ok using the "call.Request.Cookies" and it seems so but only the 1st database is "updated" (multiple times).
My objective is to be able to replicate an item from one "master" database (not in the List) to other "child" databases (in the List).
Do you have any idea of the problem?

Hi, @juaxpa. It's a bit difficult to understand exactly what's happening without having the full context of your code.
B1SLayer manages the connection in the SLConnection object, so if you are connecting to multiple databases/companies, you need multiple instances of SLConnection (one for each) and use the appropriate one when making each request.
When you say that when you declare your SLConnection objects one by one it works as expected, it makes me think that there's something wrong on your Configuration class and all your requests are being originated from the same SLConnection instance, which should not be the case as explained above.
If you are able to provide more context or maybe a code snippet where I can simulate the issue, that would be helpful.

Of course, I will provide a better code sample of what I'm trying to achieve.
In the example below, updating DB1, DB2 and DB3 with items from DBMASTER does not work, only the DB1 is updated like if the Request was sent only to DB1 but since in the code it's looping through every configs it should execute request to DB1, then DB2 and DB3... but it's not and I don't understand why.
It is a test app for the moment so it's not well organized but here's the context:
Main console Program.cs:
static List<Configuration> listConfigs;
static Configuration mrdConfig;

static void Main(string[] args)
{
    SetupConfig();
    StartSync();
}

static void SetupConfig()
{
    g_Pass = "password";
    serviceLayerURI = "https://.........";
    mrdConfig = new Configuration("DBMASTER", "manager", g_Pass, serviceLayerURI);

    listConfigs = new List<Configuration>();
    Configuration config = new Configuration("DB1", "manager", g_Pass, serviceLayerURI);
    listConfigs.Add(config);
    config = new Configuration("DB2", "manager", g_Pass, serviceLayerURI);
    listConfigs.Add(config);
    config = new Configuration("DB3", "manager", g_Pass, serviceLayerURI);
    listConfigs.Add(config);
}

async static void StartSync()
{
    await mrdConfig.GetItemsToSynchronize();
    if (mrdConfig.listItemMasterData.Count > 0)
    {
        foreach (Configuration fe_Config in listConfigs)
        {
            await fe_Config.GetItems(mrdConfig.listItemMasterData);
            foreach (ItemMasterData fe_Item in mrdConfig.listItemMasterData)
            {
                ItemMasterData itemProd = fe_Config.listItemMasterData.FirstOrDefault(o => o.ItemCode == fe_Item.ItemCode);
                if (itemProd != null)
                {
                    if (fe_Item.GetConcat(true) != itemProd.GetConcat(false))
                    {
                        fe_Item.SetAction(ItemMasterData.ItemMode.Update);
                        fe_Config.listOfItemsForAction.Add(fe_Item);
                    }
                }
                else
                {
                    fe_Item.SetAction(ItemMasterData.ItemMode.Create);
                    fe_Config.listOfItemsForAction.Add(fe_Item);
                }
            }
            fe_Config.ProcessItemMasterData();
        }
        foreach (ItemMasterData fe_Item in mrdConfig.listItemMasterData)
        {
            fe_Item.syncStatus = true;
            foreach (Configuration fe_Config in listConfigs)
            {
                ItemMasterData itemProd = fe_Config.listOfItemsForAction.FirstOrDefault(o => o.ItemCode == fe_Item.ItemCode);
                if (itemProd != null)
                {
                    Console.WriteLine("Sync status " + fe_Item.ItemCode + ": " + itemProd.syncStatus.ToString());
                    fe_Item.syncStatus &= itemProd.syncStatus;
                }
            }
            if (fe_Item.syncStatus)
            {
                mrdConfig.SetSynchronizeSuccess(fe_Item.ItemCode);
            }
        }
    }
    else
    {
        Console.WriteLine("No Item Master Data in 'to synchronize' status");
    }
}

The "Configuration" class is the following:
SLConnection serviceLayer;
public IList<ItemMasterData> listItemMasterData;
public List<ItemMasterData> listOfItemsForAction;
string DatabaseName { get; set; }
string SAPUsername { get; set; }
string SAPPassword { get; set; }
public Configuration(string pDatabaseName, string pSAPUsername, string pSAPPassword, string pServiceLayerURI)
{
    DatabaseName = pDatabaseName;
    SAPUsername = pSAPUsername;
    SAPPassword = pSAPPassword;
    serviceLayer = new SLConnection(pServiceLayerURI, DatabaseName, SAPUsername, SAPPassword);
    listItemMasterData = new List<ItemMasterData>();
    listOfItemsForAction = new List<ItemMasterData>();
}

public async Task GetItemsToSynchronize()
{
    try
    {
        Console.WriteLine("Gathering " + DatabaseName);
        string valuesToGather = "ItemCode, ItemName, etc."; // removed all values to shorten the code
        // "U_APStatut eq '3' means "Items needs to be synchronized"
        listItemMasterData = await serviceLayer.Request("Items").Select(valuesToGather).Filter("U_APStatut eq '3'").WithPageSize(0).GetAllAsync<ItemMasterData>();
     }
     catch (AggregateException ex)
     {
         foreach (var inEx in ex.InnerExceptions)
         {
             Console.WriteLine("[" + DatabaseName + "] Error during data gathering: " + inEx.Message);
         }
     }
}

public async Task GetItems(IList<ItemMasterData> pListOfItemCodes)
{
    try
    {
        Console.WriteLine("Gathering " + DatabaseName);
        string valuesToGather = "ItemCode, ItemName, etc."; // removed all values to shorten the code
        var filterString = "ItemCode eq 'dummy'";
        foreach (ItemMasterData fe_Item in pListOfItemCodes)
        {
            filterString += " or ItemCode eq '" + fe_Item.ItemCode + "'";
        }
        listItemMasterData = await serviceLayer.Request("Items").Select(valuesToGather).Filter(filterString).WithPageSize(0).GetAllAsync<ItemMasterData>();
    }
    catch (AggregateException ex)
    {
        foreach (var inEx in ex.InnerExceptions)
        {
            Console.WriteLine("[" + DatabaseName + "] Error during data gathering: " + inEx.Message);
        }
    }
}

public void CreateItemMasterData(ItemMasterData itemToCreate)
{
    try
    {
        serviceLayer.Request("Items").WithTimeout(100).PostAsync(itemToCreate).Wait();
        itemToCreate.syncStatus = true;
        Console.WriteLine("Item Master Data created: " + itemToCreate.ItemCode);
    }
    catch (AggregateException ex)
    {
        foreach (var inEx in ex.InnerExceptions)
        {
            itemToCreate.syncStatus = false;
            Console.WriteLine("[" + DatabaseName + "] Error during creation of item " + itemToCreate.ItemCode + ": " + inEx.Message);
        }
    }
}

public void UpdateItemMasterData(ItemMasterData itemToUpdate)
{
    try
    {
        serviceLayer.Request("Items", itemToUpdate.ItemCode).WithTimeout(100).PatchAsync(itemToUpdate).Wait();
        itemToUpdate.syncStatus = true;
        Console.WriteLine("Item Master Data updated: " + itemToUpdate.ItemCode);
    }
    catch (AggregateException ex)
    {
        foreach (var inEx in ex.InnerExceptions)
        {
            itemToUpdate.syncStatus = false;
            Console.WriteLine("[" + DatabaseName + "] Error during update of item " + itemToUpdate.ItemCode + ": " + inEx.Message);
        }
    }
}

public void SetSynchronizeSuccess(string pItemCode)
{
    try
    {
        var item = new { ItemCode = pItemCode, U_APStatut = "1" };
        serviceLayer.Request("Items", pItemCode).WithTimeout(100).PatchAsync(item).Wait();
        Console.WriteLine("Item Master Data synchronized: " + pItemCode);
    }
    catch (AggregateException ex)
    {
        foreach (var inEx in ex.InnerExceptions)
        {
            Console.WriteLine("[" + DatabaseName + "] Error during update of item to synchronized status " + pItemCode + ": " + inEx.Message);
        }
    }
}

public void ProcessItemMasterData()
{
    foreach (ItemMasterData fe_Item in listOfItemsForAction)
    {
        switch (fe_Item.itemAction)
        {
            case ItemMasterData.ItemMode.Create:
                CreateItemMasterData(fe_Item);
                break;
            case ItemMasterData.ItemMode.Update:
                UpdateItemMasterData(fe_Item);
                break;
        }
    }
}

Well, I made another test this morning after a good sleep and... it seems it's well updating each database (using modification history), but the ItemMasterData seems to be changed after the 1st sync to the 1st database.

Ok it was a mistake on my side about object reference. I'm sorry for bothering. Thanks for your help anyway.


Wrong endpoints fixes

In the Recommendation APIs section there are wrong endpoints for neighbors of an item and neighbors of an item in category.
Wrong Endpoints
| GET | /item/{item-id} | Get neighbors of an item. |
| GET | /item/{item-id}/{category} | Get neighbors of an item in category. |
Endpoints must be
| GET | /item/{item-id}/neighbors | Get neighbors of an item. |
| GET | /item/{item-id}/neighbors/{category} | Get neighbors of an item in category. |

thank you


Microwin issue

Describe the bug
When the debloat process was starting, I accidentally clicked on the exit button on the terminal window, and now I cannot use it anymore, despite restarting computer and uninstall windows adk
To Reproduce
Steps to reproduce the behavior:

Launch Winutil
Use microwin feature
Click on "start the process"
See error like below

Expected behavior
Works normally
Screenshots
Index chosen: '1' from 1 : Windows 11 Home
Mounting Windows image. This may take a while.
Mounting complete! Performing removal of applications...
Remove Features from the image
Removing features complete!
Removing Appx Bloat
Invoke-WPFMicrowin : An unexpected error occurred: The specified image is invalid.
Unmount the image or clean up the Wim and then try again.
At line:1940 char:24

    "WPFMicrowin" {Invoke-WPFMicrowin}

                   ~~~~~~~~~~~~~~~~~~

CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Invoke-WPFMicrowin

Unmounting Registry...
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
Cleaning up image...
Cleanup complete.
Unmounting image...
Exporting image into c:\microwin\sources\install2.wim
Unmounting Registry...
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
ERROR: The parameter is incorrect.
Unmounting image...
Creating ISO image
OSCDIMG 2.56 CD-ROM and DVD-ROM Premastering Utility
Copyright (C) Microsoft, 1993-2012. All rights reserved.
Licensed only for producing Microsoft authorized content.
Scanning source tree (500 files in 44 directories)
Scanning source tree complete (970 files in 91 directories)
Computing directory information complete
Image file is<PHONE_NUMBER>0 bytes (before optimization)
Writing 970 files in 91 directories to C:\Users\CONQUE~1\AppData\Local\Temp\microwin.iso
100% complete
Storage optimization saved 4 files, 24576 bytes (0% of image)
After optimization, image file is<PHONE_NUMBER>0 bytes
Space saved because of embedding, sparseness or optimization = 24576
Done.

(____
_   \ \ ___  ____   ____
| |   | / _ |  _ \ / _  )
| |/ / |_| | | | ( (/ /
|/ _/|| ||___)
ISO creation failed. The  c:\microwin  directory has not been removed
Additional context
I did manage to create a debloated ISO using the same ISO file I used this time (for using different editions), but when I accidentally clicked the exit button I cannot use it anymore

Same Issue, it seems that it is not retrieving the drive letter properly after it mounts the ISO.
from what I can tell the drive letter returns "ISO" or ""

Made a pull request with a simple fix #1223

I have the same issue. I am on Windows 11 23H2 (22631.2715)

Same issue. Can't create my ISO

I did manage to create a debloated ISO using the same ISO file I used this time (for using different editions), but when I accidentally clicked the exit button I cannot use it anymore

@quan1232004 could you please launch your terminal as Admin and delete c:\microwin and c:\microwinscratch?
Microwin portion of the tool is pretty new and there are still scenarios that we are aware of but not sure how to fix it yet. Exiting the tool in the middle of the process is one of them. :) Right now we only support "happy path" where everything goes smoothly.


Terminal can't display U+E000 to U+F8FF and U+10000 afterward

Windows Terminal version
1.11.3471.0
Windows build number
10.0.22000.556
Other Software
No response
Steps to reproduce
Add this to a Batch file and run it:
chcp 65001
echo <anything between U+E000-F8FF to U+10000 afterward>
pause

chcp 65001 is for UTF-8
This will either display as an unknown character, or if Windows's own font set supports it, it will display as default text
It doesn't matter if your font can display these characters, it will not display correctly.
Expected Behavior
The terminal should display the characters as the font displays them normally
Actual Behavior
Either displays the specified characters as unknown characters, or if Windows's own font set supports it, it will display as default text
Doesn't matter if the font supports the characters

Terminal can display characters from the PUA and above 10000 just fine -- most emoji are up there, and "power line" and "nerd fonts" are camping out the PUA.

do you have some specific examples of what's not working?

Terminal can display characters from the PUA and above 10000 just fine -- most emoji are up there, and "power line" and "nerd fonts" are camping out the PUA.

do you have some specific examples of what's not working?

 U+F897 and 🃆 U+1F0C6

Did you make sure to save the file as UTF-8?

~IIRC there was some weirdness around how cmd.exe parsed files that were encoded with utf-8~(but now that I think about it, that might have been just unix line endings)

yup i did

I am guessing it's because the command line (cmd.exe) itself and not Windows Terminal


LICENSE file needs to be updated with release info.

Currently, we need some kind of confirmation from the folks at the following locations that this is ok to release.

[x] LANL
[ ] LLNL
[x] ORNL
[x] DDN Japan

Please add anyone to this list who may need something added to the LICENSE file before a public release.

LICENSE is up to date and code is now public!

Fantastic!


Video flickers severely on my own data

Hi，Thank you very much for your great work. it's really awesome！
I successfully ran the entire project on my own dataset, but the generated results seem to flicker much more severely compared to the example data. Is there a way to stabilize the results like the examples do?
The tools I used are as follows:
0x1. To ensure the stability of the running results, I deliberately resized the ref_image and motion_data to the same dimensions. The ref_image was regenerated based on the pose from the motion data.
0x2. I obtained complete motion data based on the project at https://github.com/kijai/ComfyUI-champWrapper, and then imported the data into CHAMP to run the process:
1.1 DSINE Normal Map to obtain normal data
1.2 DWpose Estimator to obtain dwpose data
1.3 Depth Anything to obtain depth data
1.4 DensePose Estimator to obtain semantic_map data
0x3. The motion data and ref image I used are attached.
Thank you very much.
data.zip

Hi there, thanks for your detailed description. It's a great ComfyUI Wrapper for Champ. But for the Semantic_map, we actually use a different ColorMap and different part segmentation. This "gap" may introduce severe artifacts for diffusion models. Now we have released our SMPL & Rendering code, which can solve this problem. Let me know if it will fix the flickers👏

Hi there, thanks for your detailed description. It's a great ComfyUI Wrapper for Champ. But for the Semantic_map, we actually use a different ColorMap and different part segmentation. This "gap" may introduce severe artifacts for diffusion models. Now we have released our SMPL & Rendering code, which can solve this problem. Let me know if it will fix the flickers👏

Thank you very much for your response, but I couldn't find the code related to SMPL & Rendering in this project. However, I found this link in another issue: Champ GitHub Repository. Following the instructions of this project, I completed the Fit SMPL and Transfer SMPL steps. But when I was processing Rendering with Blender, I encountered an error:

I executed the following command under the 4D-Humans directory:blender smpl_rendering.blend --background --python rendering.py --driving_path ../transfer_result/smpl_results --reference_path ../reference_imgs/images/ref.png --device 0

The version of Blender I used is the latest one: Blender 4.1.0 (hash 40a5e739e270 built 2024-03-26 00:31:19).
The error output is as follows:Blender 4.1.0 (hash 40a5e739e270 built 2024-03-26 00:31:19)
Read blend: "/data/wangy/workspaces/future_dev/champv2/4D-Humans/smpl_rendering.blend"
Traceback (most recent call last):
File "/data/wangy/workspaces/future_dev/champv2/4D-Humans/rendering.py", line 3, in <module>
  import pandas as pd
ModuleNotFoundError: No module named 'pandas'
unknown argument, loading as file: --driving_path
Error: Cannot read file "/data/wangy/workspaces/future_dev/champv2/4D-Humans/--driving_path": No such file or directory

Blender quit

The error message here indicates that pandas is not installed, but in fact, I already have pandas installed in my local virtual environment. Moreover, I have configured all the other parameter paths according to the documentation, but I have not been able to identify where the issue lies.
Since I am not very familiar with Blender, could you please help me identify where the problem is?

Hi there, thanks for your detailed description. It's a great ComfyUI Wrapper for Champ. But for the Semantic_map, we actually use a different ColorMap and different part segmentation. This "gap" may introduce severe artifacts for diffusion models. Now we have released our SMPL & Rendering code, which can solve this problem. Let me know if it will fix the flickers👏

Additionally, I found a potential error in the file transfer_smpl.py at line 60, where it states:
smooth_smpl_path = os.path.join(driving_folder, "smpl_results", "smpls_group.npz")

The actual path should be:
smooth_smpl_path = os.path.join(driving_folder, "smpls_group.npz")

After the Fit SMPL step, the smpls_group.npz file and the smpl_results folder are at the same level of hierarchy.

谢谢！我刚刚在我的叉子/主叉中修复了它。我们使用 Blender 3.x 进行了测试。要在搅拌机中安装熊猫，这可能对您有所帮助！

感谢您的及时回复。第三步“渲染”已成功执行。我将 Blender 降级到 3.5 版，并在 Blender 中安装了额外的依赖包，现在它成功运行。
但是，我觉得它有点慢，GPU利用率也不高。还有其他加速计划或解决方案吗？是否支持多 GPU？

please tell me how to change blender to 3.5  in linux 。thanks

@lxwkobe24
I installed Blender using the Snap tool, and the official documentation can be found at: Installing on Linux - Blender 4.1 Manual. To install a specific version, you can refer to the following steps:

Uninstall the existing version.
Install the specified version using the following command:sudo snap install blender --channel=3.5/stable --classic

Please note that the command provided is an example and the channel name 3.5/stable should be replaced with the desired version's channel if it's available on Snap.

@lxwkobe24 I installed Blender using the Snap tool, and the official documentation can be found at: Installing on Linux - Blender 4.1 Manual. To install a specific version, you can refer to the following steps:

Uninstall the existing version.
Install the specified version using the following command:sudo snap install blender --channel=3.5/stable --classic

Please note that the command provided is an example and the channel name should be replaced with the desired version's channel if it's available on Snap.3.5/stable

i try , look this error .
(error: cannot add authorization: open /home/AIlab/.snap/auth.json: permission denied)
how to solve this problem.thanks you reply。

@lxwkobe24 I installed Blender using the Snap tool, and the official documentation can be found at: Installing on Linux - Blender 4.1 Manual. To install a specific version, you can refer to the following steps:

Uninstall the existing version.
Install the specified version using the following command:sudo snap install blender --channel=3.5/stable --classic

Please note that the command provided is an example and the channel name should be replaced with the desired version's channel if it's available on Snap.3.5/stable

i try , look this error . (error: cannot add authorization: open /home/AIlab/.snap/auth.json: permission denied) how to solve this problem.thanks you reply。

This appears to be a permission error; ensure that you have sufficient privileges to access the auth.json file.

it's very strange！
i use chmod change the permission, but i don't have this document with auth.json!
could you tell me how to solve?
thank you so much

@lxwkobe24 I installed Blender using the Snap tool, and the official documentation can be found at: Installing on Linux - Blender 4.1 Manual. To install a specific version, you can refer to the following steps:

Uninstall the existing version.
Install the specified version using the following command:sudo snap install blender --channel=3.5/stable --classic

Please note that the command provided is an example and the channel name should be replaced with the desired version's channel if it's available on Snap.3.5/stable

i try , look this error . (error: cannot add authorization: open /home/AIlab/.snap/auth.json: permission denied) how to solve this problem.thanks you reply。

This appears to be a permission error; ensure that you have sufficient privileges to access the file.auth.json

it's very strange！
i use chmod change the permission, but i don't have this document with auth.json!
could you tell me how to solve?
thank you so much

@WyHy Yeah this blender script is a little bit slow, even with GPU. I am wondering if that's caused by slow I/O stream. We met the same problems when we rendered through the whole dataset. What's the resolution of your video? I suggest to downscale it to around 500.

@WyHy Yeah this blender script is a little bit slow, even with GPU. I am wondering if that's caused by slow I/O stream. We met the same problems when we rendered through the whole dataset. What's the resolution of your video? I suggest to downscale it to around 500.

I am using a landscape video with a resolution of 2084x1080. Once this run is finished, I will try to see if reducing the resolution can improve the processing speed. I am very much looking forward to seeing whether the use of SMPL and Blender effectively improves the flickering issue in the video. 😊

it's very strange！ i use chmod change the permission, but i don't have this document with auth.json! could you tell me how to solve? thank you so much

I apologize, but I am unable to assist with this issue as I am also new to Blender. I suggest you visit the official forums to seek a solution.

这很奇怪！ 我使用 chmod 更改权限，但我没有这个文档auth.json！你能告诉我怎么解决吗？非常感谢

我很抱歉，但我无法协助解决这个问题，因为我也是 Blender 的新手。我建议您访问官方论坛以寻求解决方案。
i have download blender3.5 successfull.
hello ,please tell me how to start blender .thanks

@Leoooo333
I have completed all the processes on my own dataset. The flickering in the video is much better than before, but now two new issues have arisen:

I feel as though there might be a frame drop issue, as the characters appear to be jittery. I'm not sure what's causing this. I've inspected the data of the processed video frames individually, and it seems like when played in sequence, it should be very smooth, Where can this be adjusted?

The video clarity has decreased. It seems to be significantly different in quality compared to the frame images in the 'transfer_result' subfolder. I'm not sure what the reason for this is. Is it because my original resolution was 2084x1080 and the processing program compressed it? Where can this be adjusted?

https://github.com/fudan-generative-vision/champ/assets/13045015/ba3fbd4e-5141-4db3-bc84-19fdb7cf7c60

@Leoooo333 I have completed all the processes on my own dataset. The flickering in the video is much better than before, but now two new issues have arisen:

I feel as though there might be a frame drop issue, as the characters appear to be jittery. I'm not sure what's causing this. I've inspected the data of the processed video frames individually, and it seems like when played in sequence, it should be very smooth, Where can this be adjusted?
The video clarity has decreased. It seems to be significantly different in quality compared to the frame images in the 'transfer_result' subfolder. I'm not sure what the reason for this is. Is it because my original resolution was 2084x1080 and the processing program compressed it? Where can this be adjusted?

animation.23.06.36.mp4

It's caused by SMPL inconsistency between frames. The SMPL Smooth tutorial is coming soon!
Actually we will resize the input video to align with our neural network, the output will then be interpolated to the original resolution. That may cause the blur.

For better results, I recommend using a half-body portrait with a front face as the reference image. We are going to solve the face problem(like the one shown in your full-body example) in the following version. Keep an eye on Champ🤸♂

sudo snap install blender --channel=3.5/stable --classic

please tell me how to download pandas in blender ?
thanks.

这很奇怪！ 我使用 chmod 更改权限，但我没有这个文档auth.json！你能告诉我怎么解决吗？非常感谢

我很抱歉，但我无法协助解决这个问题，因为我也是 Blender 的新手。我建议您访问官方论坛以寻求解决方案。我已经成功下载Blender3.5。您好，请告诉我如何启动Blender.thanks谢谢

试试这个 https://github.com/Leoooo333/champ/tree/master

please tell me how to download pandas in blender ?
thanks.

@Leoooo333 I have completed all the processes on my own dataset. The flickering in the video is much better than before, but now two new issues have arisen:
1. I feel as though there might be a frame drop issue, as the characters appear to be jittery. I'm not sure what's causing this. I've inspected the data of the processed video frames individually, and it seems like when played in sequence, it should be very smooth, Where can this be adjusted?

2. The video clarity has decreased. It seems to be significantly different in quality compared to the frame images in the 'transfer_result' subfolder. I'm not sure what the reason for this is. Is it because my original resolution was 2084x1080 and the processing program compressed it? Where can this be adjusted?

animation.23.06.36.mp4

Hello，I‘m still confused what caused the flickers in the background? Do you know the reasons and how to solve it?

I used blender3.5, but I still got the same problem. @WyHy

这很奇怪！ 我使用 chmod 更改权限，但我没有这个文档auth.json！你能告诉我怎么解决吗？非常感谢

我很抱歉，但我无法协助解决这个问题，因为我也是 Blender 的新手。我建议您访问官方论坛以寻求解决方案。我已经成功下载Blender3.5。您好，请告诉我如何启动Blender.thanks谢谢

试试这个 https://github.com/Leoooo333/champ/tree/master

please tell me how to download pandas in blender ? thanks.

My solution was to write an installation script called 'blender_python.py', the content of which is as follows:
import sys
import subprocess

# Get the path to the Blender's Python executable
blender_python_executable = sys.executable

# Construct the command to install pandas using the system's pip
install_command = [blender_python_executable, "-m", "pip", "install", "tqdm"]

# Call the system's pip to install the package
subprocess.check_call(install_command)

Then, use the Blender command to execute this installation script:
blender --background --python blender_python.py

 I used blender3.5, but I still got the same problem. @WyHy

you need install tqdm in Blender, which operates in a separate Python environment.
follow https://github.com/fudan-generative-vision/champ/issues/41#issuecomment-2049656596

@Leoooo333 I have completed all the processes on my own dataset. The flickering in the video is much better than before, but now two new issues have arisen:
1. I feel as though there might be a frame drop issue, as the characters appear to be jittery. I'm not sure what's causing this. I've inspected the data of the processed video frames individually, and it seems like when played in sequence, it should be very smooth, Where can this be adjusted?

2. The video clarity has decreased. It seems to be significantly different in quality compared to the frame images in the 'transfer_result' subfolder. I'm not sure what the reason for this is. Is it because my original resolution was 2084x1080 and the processing program compressed it? Where can this be adjusted?

animation.23.06.36.mp4

Hello，I‘m still confused what caused the flickers in the background? Do you know the reasons and how to solve it?

see https://github.com/fudan-generative-vision/champ/issues/41#issuecomment-2045593731

@Leoooo333 I have completed all the processes on my own dataset. The flickering in the video is much better than before, but now two new issues have arisen:
1. I feel as though there might be a frame drop issue, as the characters appear to be jittery. I'm not sure what's causing this. I've inspected the data of the processed video frames individually, and it seems like when played in sequence, it should be very smooth, Where can this be adjusted?

2. The video clarity has decreased. It seems to be significantly different in quality compared to the frame images in the 'transfer_result' subfolder. I'm not sure what the reason for this is. Is it because my original resolution was 2084x1080 and the processing program compressed it? Where can this be adjusted?

animation.23.06.36.mp4

Hello，I‘m still confused what caused the flickers in the background? Do you know the reasons and how to solve it?

see #41 (comment)

I'm confused about the flickers in the background, it is reasonable that bugs in smpl module cause the jitter of foreground(human), but the flickers in the background are also caused by this ?


Add new rule: use named argument for constants

A similar PR may already be submitted!
Please search among the Pull requests before creating one.
Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. Link to relevant issues if possible.
For more information, see the CONTRIBUTING guide.

I suppose you're still working on this @VovaStelmashchuk right?
If so, you have a red CI that needs to be addressed.

🤔 Why do you only care about constant values? I mean, something like this seems risky too, right?
Fun Foo(world: String, hello: String)

foo(hello(), world())

@BraisGabin Yes, the function case is risk too. I will resench the way to improve the rule or create a separate rule.


Bump max_frame_size

We use the WebSocket connection to send binary data (in the form of shapefiles) from the engine to the client. These can very easily get larger than the default 16MB limit on the max_frame_size. I don't understand why it won't stich multiple frames together - but given what I can see when this crashes, the max_message_size isn't the LIMFAC, max_frame_size is.
That's an issue for future-us.

Thank you @paultag 🚀
I was looking at these tungstentite config properties, but only on the engine side, didn't realise it needed to be both 🫢

@Irev-Dev absolutely! happy to help; thanks for cutting the release :mechanical_arm:


Typewriter effect animation exporting with smoothing, when smoothing is at 0%

Hi, just wondering if anybody would know why my text animation isnt exporting properly to a lottie, from adobe after effects. I am using a plugin called Bodymovin to export it. The problem is that it is exporting with smoothing on the text, when I do not want that. I have created this simple typewriter text animation by adding a character offset, and adding an opacity property like this tutorial (https://www.youtube.com/watch?v=_28MzZIVuQQ&t=25s). I also turned the smoothness down to 0% so that the typewriting effect comes through, just like the video [does.] I don't want the smoothing because that is what makes it look like a typewriter effect. I have attached a video of how I want it to look (it looks like this in the editor), then how it looks after exporting (the attached GIF) . Is there any way to fix this? For example creating it in a different way or export settings

https://user-images.githubusercontent.com/91607775/135264946-60ae9d7d-e670-4117-b1d2-a256090622a2.mp4
?

hi, can you share a simple .ape project as an example?

Typewriter Animation1.1 - Logo.zip
Is this ok? @bodymovin

@bodymovin In that file I animated both words on a separate text layer because I noticed that when I export using bodymovin, it doesnt export two different fonts on one layer. It seems to read the front of the text layer to determine the font for the whole layer. Resulting in the whole layer being exported as one font, when there was two on the same layer. That is not an issue anymore as i just built the animation on two text layers with different fonts, but I thought I would mention it.

@bodymovin Thank you, Im sorry but where can I find that version or above? I can ony find version 5.7.12 on github

you can get the extensio here
https://github.com/airbnb/lottie-web/tree/master/build/extension
and the players are here
https://github.com/airbnb/lottie-web/tree/master/build/player


MWPW-142935 [Project PEP] PEP <> Geo Routing Modal Interactions

Both Georouting v1 and v2 now return a boolean value depending on whether or not they show the modal (the showModal function)
The boolean value is stored in the config for PEP to use
If the Georouting modal was shown, PEP will check to see if the modal has been dismissed every 200ms (this can be changed) in a non blocking manner (setTimeout will add the rechecking function to the event queue). Once the modal is no longer in the DOM, PEP's init function will fire
If the Georouting modal was not shown for any reason, PEP will load normally

Resolves: MWPW-142935
Test URLs:

Before: https://main--milo--adobecom.hlx.page/?martech=off
After: https://pep-georouting--milo--adobecom.hlx.page/?martech=off
QA: https://stage--cc--adobecom.hlx.page/products/photoshop/ai?milolibs=pep-georouting&skipPepEntitlements=true

Verified the flow in the below url :
when the GRM is loaded the PEP modal is not seen
https://stage--cc--adobecom.hlx.live/products/firefly?milolibs=pep-georouting&skipPepEntitlements=true

after the modal close

https://stage--cc--adobecom.hlx.page/products/photoshop/ai?milolibs=pep-georouting&skipPepEntitlements=true

after the geo routing cookie is set , PEP modal is seen loaded on page load only

@vhargrave After some experimentation I believe it would be less bad to go with a pull (polling) approach over a push approach (events), simply because it allows us to reduce the surface area of the change. As described by my earlier comment and the video, the modal is not closed when the milo:modal:closed event is fired and its event listener callback is  called. While in many situations polling can cause a performance impact (e.g. polling multiple services for relatively rare changes), in other situations it's the preferred option (e.g. keyboard interrupts). In this particular situation:

The polling is for a relatively short amount of time, and it ends after it finds what it's looking for.
it happens only every 200ms and does not block the main thread
execution time of the function checking the DOM isn't the bottleneck (even if it's done many times)
The GRM (or another modal) will be open during the polling, so we should see minimal impact (if at all) on users even on the long tail of devices (the state of the page in the background is less relevant)

@vhargrave After some experimentation I believe it would be less bad to go with a pull (polling) approach over a push approach (events), simply because it allows us to reduce the surface area of the change. As described by my earlier comment and the video, the modal is not closed when the milo:modal:closed event is fired and its event listener callback is called.
While in many situations polling can cause a performance impact (e.g. polling multiple services for relatively rare changes), in this particular situation:

The polling is for a relatively short amount of time, and it ends after it finds what it's looking for.
it happens only every 200ms and does not block the main thread
execution time of the function checking the DOM isn't the bottleneck (even if it's done many times)
The GRM (or another modal) will be open during the polling, so we should see minimal impact (if at all) on users even on the long tail of devices (the state of the page in the background is less relevant)

I do see the point regarding performance, but for me it's also about architecture. If there's an event that one can listen to then it's better to listen for an event than to poll. Even kicking off polling after the event happens is better than polling from the get go.

@vhargrave After some experimentation I believe it would be less bad to go with a pull (polling) approach over a push approach (events), simply because it allows us to reduce the surface area of the change. As described by my earlier comment and the video, the modal is not closed when the milo:modal:closed event is fired and its event listener callback is called.
While in many situations polling can cause a performance impact (e.g. polling multiple services for relatively rare changes), in this particular situation:

The polling is for a relatively short amount of time, and it ends after it finds what it's looking for.
it happens only every 200ms and does not block the main thread
execution time of the function checking the DOM isn't the bottleneck (even if it's done many times)
The GRM (or another modal) will be open during the polling, so we should see minimal impact (if at all) on users even on the long tail of devices (the state of the page in the background is less relevant)

I do see the point regarding performance, but for me it's also about architecture. If there's an event that one can listen to then it's better to listen for an event than to poll. Even kicking off polling after the event happens is better than polling from the get go.

If that's acceptable I can change the implementation to start polling only after the event is emitted.

@vhargrave After some experimentation I believe it would be less bad to go with a pull (polling) approach over a push approach (events), simply because it allows us to reduce the surface area of the change. As described by my earlier comment and the video, the modal is not closed when the milo:modal:closed event is fired and its event listener callback is called.
While in many situations polling can cause a performance impact (e.g. polling multiple services for relatively rare changes), in this particular situation:

The polling is for a relatively short amount of time, and it ends after it finds what it's looking for.
it happens only every 200ms and does not block the main thread
execution time of the function checking the DOM isn't the bottleneck (even if it's done many times)
The GRM (or another modal) will be open during the polling, so we should see minimal impact (if at all) on users even on the long tail of devices (the state of the page in the background is less relevant)

I do see the point regarding performance, but for me it's also about architecture. If there's an event that one can listen to then it's better to listen for an event than to poll. Even kicking off polling after the event happens is better than polling from the get go.

If that's acceptable I can change the implementation to start polling only after the event is emitted.

@sharmrj for me it's not perfect, but it's good enough yeah. And it means that you don't need to make any changes to the event emit that would require thorough testing. 👍

@vhargrave After some experimentation I believe it would be less bad to go with a pull (polling) approach over a push approach (events), simply because it allows us to reduce the surface area of the change. As described by my earlier comment and the video, the modal is not closed when the milo:modal:closed event is fired and its event listener callback is called.
While in many situations polling can cause a performance impact (e.g. polling multiple services for relatively rare changes), in this particular situation:

The polling is for a relatively short amount of time, and it ends after it finds what it's looking for.
it happens only every 200ms and does not block the main thread
execution time of the function checking the DOM isn't the bottleneck (even if it's done many times)
The GRM (or another modal) will be open during the polling, so we should see minimal impact (if at all) on users even on the long tail of devices (the state of the page in the background is less relevant)

I do see the point regarding performance, but for me it's also about architecture. If there's an event that one can listen to then it's better to listen for an event than to poll. Even kicking off polling after the event happens is better than polling from the get go.

If that's acceptable I can change the implementation to start polling only after the event is emitted.

@sharmrj for me it's not perfect, but it's good enough yeah. And it means that you don't need to make any changes to the event emit that would require thorough testing. 👍

@vhargrave Cool thanks for all the great feedback. Could you take one more look at the code?

Is the reverse a concern as well? As in: PEP prompt is open, but the georouting modal pops up. The user wouldn't be able to dismiss the PEP prompt and would get redirected, potentially causing confusion. It might be valuable to pause the PEP timer or find some alternative solutions.

We don't need to worry about the PEP modal being loaded before the GRM, because we have an await loadGeoRouting(...) before we even begin loading the global header (in loadPostLCP). In general, modals that open after PEP has already begun its countdown won't stop the countdown. If that needs to change we'll revisit it later.

Validation done on the pr in below url :
https://stage--cc--adobecom.hlx.page/products/photoshop/ai?milolibs=pep-georouting&skipPepEntitlements=true

Validation done on below feature url :
https://main--cc--adobecom.hlx.page/creativecloud/animation/testdoc/peprollout?milolibs=pep-georouting&skipPepEntitlements=true

until the geo popup is closed the prompt is not seen


Changed how we configure env

Unfinished - just wanted to check that the approach is what @brecke had in mind when first raising this. I've added dotenv and I imagine this would lead to us incrementally moving to .env files in puppet-hilary as well for environmentally dependant stuff, so would also like comments from @davidoae.

Righto, as dotenv doesn't support nested variables (which we do quite rely on), it seems that it's not the tool for us. Instead, I propose the following: we add another config file to the repository called 'development.js' with the dev settings. As this file is loaded after config.js, it should override values in that. We can then slowly move environment dependent vars to similarly named files in puppet-hilary (qa.js for qa etc) instead of using puppet & hiera to rewrite config.js. Does this make sense to people outside my head?

Yes, it does make sense 🕺

Cool - this should now work. There's a related PR in oaeproject/puppet-hilary#242.


Discussion: Is the ES6 class hierarchy really needed?

This is not something that will be tackled for the 0.1.0 release.
While I really like ES6 classes, I am contemplating if they are really needed in the flockn game engine. Every object is described as a function and not as a class. Internally they are being converted to ES6 classes with a base class. I'm wondering if it that is really needed or we could opt for a more mixin-based approach. I'm even wondering if we need classes all-together, as I feel it might create a rift between how the game engine is implemented and how it is used.

I personally feel like the most intuitive way to use a game engine would be to create a class that extends from a base class for different types of objects, and defining methods on those classes. I feel like using mixins with functions would be more convoluted.

@Tankenstein I love this idea and with ES7 class decorators I think that could be something really special (https://twitter.com/frostney_/status/582828034371223553).
I'm not sure that's the direction I want to take flockn in, but if I find the time I would love to take this ideas and create a seperate repository/project out of those.

I might just write a small wrapper (without annotations), that could handle doing that, once i get some time off work, since i also REALLY want a javascript game engine like that.


set min date

hook up min date property

Thank you very much for this contribution @yanglang!
Can you please add tests to cover your code against future regressions?
Other, not mandatory, but greatly appreciated additions would be:

Update the readme so it communicates the new feature.
Maybe add the counterpart property maxDate too.

Feel free to reopen this pull request once you addressed the things I pointed out.


Array.Empty should not be included for .NET 4.6 and .NET Core 1.0 and above builds.

Describe the bug
.NET 4.6 and .NET Core 1.0 have Array.Empty.
This creates ambiguity.
To Reproduce
using CodeJam.Collections;
using System;

var a = Array.Empty<int>();

Expected behavior
No ambiguity

Could you revise the issue to clarify that Array (the class) is the problem and not .Empty (which would be resolved based on however you directed the language to resolve Array)?

@NN--- , could you try reproducing the issue in full rather than a snippet? This looks impossible since there isn't an Array in this library, there is only Array<T>.


Feat: Add weighted moving average (WMA)

Hey there, this PR implements the weighted moving average indicator, which assigns weights that decrease linearly (n, n-1, etc) as opposed to exponentially as in the EMA.
From what I can see the WMA seems to be a requirement to implement the hull moving average (Issue #36), which I'll likely be tackling next.

Update: I finished implementing the hull moving average on this branch. If you'd like I can merge that with this pull request, or just submit a new one later.

@menkaru, is your branch for QuantitativeQualitativeEstimation WIP/unfinished? The indicators::quantitative_qualitative_estimation::tests::test_next for this feature fails for me:
thread 'indicators::quantitative_qualitative_estimation::tests::test_next' panicked at 'assertion failed: `(left == right)`
  left: `(44.52, 24.53)`,
 right: `(46.11, 23.18)`', src/indicators/quantitative_qualitative_estimation.rs:241:9

@virtualritz, it's been a while but iirc I ran into issue #46 due to all the EMAs required. It's pretty much done, but it just gives slightly different results to the reference I used (pandas_ta) to generate the test cases.

What does "pretty much done" mean? You consider it close enough and won't touch the code or minor tweaks are needed to fix? In the former case we could just update the test case values, I guess?

Sorry, I should have been more specific. The implementation is correct and complete. From what I can tell the problem is the same as issue #46, which seems to require structural changes to the library. I considered changing the test cases, but the results didn't seem close enough to warrant it.

@menkaru Sorry, it took way too long.. Thanks for the PR!


Frame and camera groupping v2

https://synthesisai.atlassian.net/browse/TECH-1074

Thank you. I will be more thoughtful of this from now on.
Fixed.


Release 0.3.6

@rultor release it; the tag is 0.3.6.

@rultor release it; the tag is 0.3.6.

@rafamizes OK, I will release it now. Please check the progress here

@rultor release it; the tag is 0.3.6.

@rafamizes Done! FYI, the full log is here (took me 2min)


Building flutter snapshot is internet speed dependent

Delete flutter tool snapshot, connect to GIN-2g or some such, run flutter. Takes a long time to Building flutter tool...

We do download the dependencies of flutter tool with pub upgrade before actually creating the snapshot. Both actions happen under the header Building flutter tool.... So, I guess it's kinda expected that this action is internet speed dependent...

I think the more complete fix for this is to create pre-compiled, pre-bundled SDKs on the bots.

Duping into #6491


Add instructions for dealing with generic JSON

I came to this doc and was thoroughly confused until I realized why Filter array wasn't working as described in this doc.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@cparker4486 : Thanks for your contribution to the Azure documentation! The author, @jeffhollan, has been notified to review your proposed change.

To clarify on my original comment, the doc shows Body and 'Followers count' being used. The question going through my head was, "Where does 'Followers count' come from??"

@cparker4486 : Thanks for your contribution to the Azure documentation! The author, @jeffhollan, has been notified to review your proposed change.

@cparker4486 : Thanks for your contribution to the Azure documentation! The author, @jeffhollan, has been notified to review your proposed change.

@cparker4486 : Thanks for your contribution to the Azure documentation! The author, @jeffhollan, has been notified to review your proposed change.

@jeffhollan Hi Jeff, could you please review this PR for @cparker4486? Thanks!
https://github.com/MicrosoftDocs/azure-docs/pull/2873

Thanks @cparker4486 - can we change it to the following and we can merge it in (we can open a separate if easier):

If you're calling an HTTP endpoint, and receiving a JSON response, use the Parse JSON action to parse the JSON response. Without taking this step, Filter Array will see only Body and not understand the structure of the JSON payload.

Hi @jeffhollan. That is absolutely fine by me. Is there something I need to do?

@cparker4486 you can either edit this current pull request (Go to "Changed Files" and you should see a pencil 'edit' icon you can edit), or if you give me permission to the branch in your repo I'm happy to as well.  Your branch is at https://github.com/cparker4486/azure-docs and the patch-1 branch.
I don't want to make this difficult though (as hopefully contributing is easy 👍 ) so let me know and I can just open a separate PR with the changes and do it for you.  Let me know what's easiest for you.  Thanks again.

@jeffhollan OK I think I've done it.

Perfect. Thanks @cparker4486 #sign-off


feat(auth): Add TotpInfo field to UserRecord

Original PR based off master
This is based off dev branch.

Good Afternoon Team 👋🏻
Any status updates on getting this MR merged in?
Thanks!

@pragatimodi 👋🏻 Thanks for pushing the changes to get this merged into the dev branch. Looking through the CONTRIBUTING page I did not see any details about how the release process works for this project.
Do you have any idea on when my team can see it pushed to a new version?
Thanks!

@pragatimodi  Can you please provide ETA on the next release of SDK that has this feature. A critical release is blocked due to this feature missing in the current version of SDK

@lahirumaramba Please provide an update on the estimated release for this?

Thanks for your patience folks! We will include this change in the planned upcoming release this week.


Headless service: only publish ready pods?

Currently external-dns publishes the IPs of all pods of headless services that are in phase Running (since #645 was merged). However, for a headless service + external-dns I think the idea would be to use DNS as a kind of load balancing. This would mean that only ready pods from a headless service should be published via DNS.
For example, when I'm doing a rolling deployment with pods that have a longer terminationGracePeriodSeconds, currently the terminating pods will keep being published, even though are not ready anymore. Same goes for pods that fail their readiness probe (they will keep being published).
Any thoughts on this? I would suggest adding a command line flag or service annotation to specify if a pods readiness should be verified in order for it to be considered for DNS registration (in order to not break existing setups).

ServiceSpec has publishNotReadyAddresses field which external-dns should use for this.
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/#servicespec-v1-core

@nmiculinic Thanks! I wasn't aware of that. Will rework my pull request to reflect that.


Freezing files to stop incorrect metadata coming from author-hosted netkans

Per roverdude's request when there's an issue with metadata coming from him I'm freezing the netkans. This can be reverted once a new release is issued which agrees with the metadata set in https://github.com/BobPalmer/CKAN/commit/9f35f7b6a9079e01bd19de9251885e14dbc97eb8 or when the metadata is corrected to agree with the licenses of the current releases of the mods.
Pinging @BobPalmer to let you know your extant netkans are supplying us incorrect metadata. As soon as it's fixed feel free to ping me personally, comment in this PR, or open an issue ticket at your convenience.

The license is now ARR.  Please un-freeze these.

The license in the download and on the forum pages says CC-BY-NC-SA-4.0.

The current releases were already issued under CC and to the best of my understanding licenses can't be changed retroactively. Will the next release(s) be ARR? Absolutely. But that's not the case for the current releases.
If I'm in error I'll happily read any literature provided.

There are now a set of new releases, so we may as well unfreeze now and let Bob have his way.

I wasn't expecting ARR releases so quickly. I'm incredibly impressed by the speed with which @BobPalmer got the consent and/or re-wrote the contributions of all code contributors made in order to change licensing on all the mods he leads. I mean 49 contributors to MKS alone including our own @Olympic1 who I thought was incommunicado.
At any rate, since a new release was issued and all contributions were either released to, or re-written by @BobPalmer there's no "letting him have his way" he followed all steps to legally change the licenses the mods and the netkans he hosts are now accurate.


Add german translation

This adds a german translation based on the chinese translation file.
I am willing to maintain this, you can just notify me if new strings are added or something changes - Otherwise I will update this as soon as I am aware of the change myself.

Thank you! Any contribution or participation is welcome.

@jlkDE
I added some new contents in the file de_DE/translations.php, please have a look.
Thank you.

Hey @greyaz , I just updated the translations and opened #14 for this. :)


Type of "bpy" is unknown

Environment data

Language Server version: 2022.7.20
OS and version: Fedora Linux 36
Python version (& distribution if applicable, e.g. Anaconda): Python 3.10.5

Code Snippet

import bpy

for area in bpy.context.screen.areas:
    print(area)

Repro Steps

Follow this guide to build Blender as a Python module
Install it globally
Import bpy in a project

Expected behavior
Able to pick up at least some type information from the module. The module should be installed correctly as it can be imported from the interactive console.

Actual behavior
The type of the whole module is marked as unknown.

Logs

Logs

I would try to launch the code to make sure your python environment sees it.
also recommend not installing things globally and to use a virtual environment.

did we set correct python interpreter?
this one?

I have set the interpreter properly I believe.

And yes the code does run fine when I execute it.

FYI, BPY is a native Python module. When installing the module it added bpy.so and a folder named 3.2 to the site-packages folder located at /usr/lib/python3.10/site-packages/.

if bpy is a native module, it will need stubs ie. a .pyi file

Closing old issue. As bschnurr mentions, this will need stubs from the python blender authors.


Targets on FTP are sometimes annotated with fewer GO terms than on the production Platform

Describe the bug
The arrays of Gene Ontology terms I found in the "go": field of https://ftp.ebi.ac.uk/pub/databases/opentargets/platform/23.12/output/etl/json/targets/part-*.json are sometimes shorter than the ones in the section of the corresponding targets' profile pages on https://platform.opentargets.org/. Is one of the two perhaps out of date?
Observed behaviour
One example I ran into: the GO section on the NOD2 profile page lists 204 associated terms, whereas the JSON files only list 200 for that EnsEMBL ID.
Expected behaviour
I expected the data on the FTP server to match the data in the indices used to respond to the GraphQL query for this section.
To Reproduce
Steps to reproduce the behaviour:

Go to the profile page linked above.
Scroll down to Gene Ontology
See the number 204 in the bottom-right corner of the table.
Download the targets folder using a command listed on the downloads page or another FTP client
Run grep -Fh '"id":"ENSG00000167207"' targets/part-*.json | jq -c '.go[]' | wc -l or use the folder along with other folders such as go/ to host another installation of the Platform.
See the number 200 instead.

Additional context
NOD2 was not the only gene I found to be affected.

Thanks for reporting this! Unfortunately I could reproduce this issue: the go term counts are consistent across the data exports:
(
    spark.read.parquet('gs://open-targets-pre-data-releases/23.12/output/etl/parquet/targets')
    .filter(f.col('id') == 'ENSG00000167207')
    .select(f.size('go')).show()
) # 200

(
    spark.read.json('gs://open-targets-pre-data-releases/23.12/output/etl/json/targets')
    .filter(f.col('id') == 'ENSG00000167207')
    .select(f.size('go')).show()
) # 200

Interestingly:
(
    spark.read.parquet('gs://open-targets-pre-data-releases/23.09/output/etl/parquet/targets')
    .filter(f.col('id') == 'ENSG00000167207')
    .select(f.size('go')).show()
) # 204

We'll need to investigate why this could happen.

@jdhayhurst has refreshed the API cache and now the returned data is consistent with the files.


ViewModelBuilder initializes FutureViewModel two times if onModelReady is specified

Hey i am not sure if this is intended behavior but i just got stuck on this.
I noticed that my FutureViewModel calls the async method that is defined for futureToRun() two times. The reason was that i still had onModelReady: (viewModel) => viewModel.initialise(), in my ViewModelBuilder. Even if i set fireOnModelReadyOnce: true the ViewModel initializes two times.
As soon as i removed onModelReady the ViewModel gets initialized one time as expected. It was not clear to me that i can't use the combination of onModelReady and FutureViewModel.
I was using the following code:
View
class SkizzeView extends StatelessWidget {
  final String pkSchadensskizze;
  const SkizzeView({Key? key, required this.id}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ViewModelBuilder<SkizzeViewModel>.reactive(
        viewModelBuilder: () => SkizzeViewModel(pkSchadensskizze),
        onModelReady: (viewModel) => viewModel.initialise(),
        fireOnModelReadyOnce: true,
        builder: (context, viewModel, child) {
          return Scaffold(
              floatingActionButton: FloatingActionButton(
                child: Text(viewModel.counter.toString()),
                onPressed: () {},
              ),
              body: (viewModel.isBusy) ? const LoadingIndicator() : const Sheet());
        });
  }
}

ViewModel
class SkizzeViewModel extends FutureViewModel<void> {
  @override
  Future initialise() {
    return super.initialise();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Future<void> futureToRun() => load(id);

  Future<void> load(String id) async {}
}

Hey, yes. That's intended.
The FutureViewModel will automatically execute futureToRun. What you can do is change the name of the function you want to call in onViewModelReady and not use the initialise function. The initialise will be executed automatically.

Ok. Thanks!


allow extra fields in singup forms like phone number

how to add extra fields in the singup forms ?

Create your serializer and set it via settings


utils/update-checkout: Fix for --tag breakage in SR-3810

If invoked with --tag, and the specified tag does not exist in a repository,
update_repository_to_tag() will return with no value instead of an argument
list. update_all_repositories() must check for an absent value (meaning this
repository does not have the tag) before it appends the expected argument
list to the pool_args list of pooled arguments.

The fix is pretty simple: check whether the result returned by update_repository_to_tag() is an
actual list before appending it to the pooled list. (Before we were appending a None value, which
caused a Python library routine to break once the update commands were spawned.) If there's no list to append, nothing will be done for this repository, which is appropriate since it lacks this tag.
I tested this using the same test case described in SR-3810, and it appropriately did nothing
instead of triggering a Python traceback.
@erg, @gottesmm Could you give this a lookover? If it meets your approval, could one of you trigger appropriate CI test runs? I'm not sure what best fits an infrastructure script like this, and I don't think my account has the privileges to automatically trigger Swift CI runs anyway.

Resolves SR-3810.

@swift-ci Please smoke test

Alternate fix: https://github.com/apple/swift/pull/7190
Do we still want to do the actions that don't involve checking out the tag, or just do nothing?

I'm not sure myself. I based my fix on what I assumed was the intent of the code as originally written.

I think we want to call update_single_repository no matter what. Otherwise, nothing at all will get done to repositories that don't have the tag, which is clearly against the spirit of an update script.

@colinhowell Closing in favor of the patch that still does some work in case the tag does not exist. Thanks for the bug report and potential fix!
The --tag option does some work in serial before going parallel. If you had the time, maybe you could make this step go in parallel.

@erg, I'm looking into your suggestion about making the --tag option do its work in parallel. Actually, it looks like the --scheme option could be partly parallelized too, especially when it comes to the cross-repos stuff.
By the way, it looks to me like the --tag processing sets the cross_repo flag simply to prevent a rebase after the tag checkout. Is my understanding correct?

@colinhowell Yes, I think the cross-repo line was hack to avoid dealing with the rebasing bugs and such. If the behavior is preserved, we can take out the hack.
It would be great to parallelize everything that makes sense!

@erg (Probably I should discuss this in a new PR, but since we're talking about it already...)
Actually I now have a modified version of update-parallel which parallelizes all per-repo activity that was in update_all_repositories(), update_repository_to_tag(), and update_repository_to_scheme(). This required refactoring the work in those functions, completely eliminating update_repository_to_tag() and update_repository_to_scheme(), with the (slightly simplified) results included in or called from update_single_repository() (whose size was kept down a bit by making two new helper functions corresponding to the old tag- and scheme-related functions).
Unfortunately it also means that I now have to pass eight arguments to update_single_repository(), rather than five, to give it all the info it needs. Though now I see that obtain_additional_swift_sources() gets passed nine arguments, so this isn't unprecedented.

@erg Oh, by the way, it also assumes that #7232 will eventually be accepted, which is why I haven't yet made a new PR.


actually honor the return value of FollowerInfo::addFollower

Scope & Purpose
Make FollowerInfo::add return if adding the follower succeeded or not.

[x] Bug-Fix for devel-branch (i.e. no need for backports?)

Testing & Verification
It is unclear to me if adding/dropping followers is covered by existing tests. Probably it isn't yet.
What's the best place/test suite to add automated tests for this functionality?
https://jenkins01.arangodb.biz/view/PR/job/arangodb-matrix-pr/4990/

Added integration test for FollowerInfo::add:
https://jenkins01.arangodb.biz/view/PR/job/arangodb-matrix-pr/4995/


Repl.run should be a proper function (T1, T2, T3) => R

It currently is basically Unit => Unit. There are two steps here:

(T1, T2, T3...) =>: This would make it actually useful for debugging things; currently, when you call Repl.run, you cannot pass any values into the Repl for you to poke around with. In theory you could stuff things in global variables and fetch them later, but if Repl.run did that for you it would make it actually usable
=> R: this would let you use Ammonite as a super-powered ???: you could plug it in anywhere, and when the execution reaches that point, live-code something until you have something usable and return it to substitute in the enclosing expression. That would be cool

Fixed by http://lihaoyi.github.io/Ammonite/#Debugging


[Contribution Idea] Support OpenVINO as a backend in Keras 3

Dear Keras team, @fchollet,
My name is Roman Kazantsev and I work as an AI frameworks engineer with the OpenVINO team at Intel. OpenVINO  is a popular solution from Intel for optimizing AI inference.
We like the idea of multi-backend functionality offered by Keras 3, which allows users to easily switch between different deep learning frameworks (JAX, PyTorch, and TensorFlow) for the same model. This is very cool!
How about collaborating to cover more DL frameworks? For example, the OpenVINO team would like to contribute to Keras 3 by adding OpenVINO as a new backend to support inference. We are ready to implement and maintain this feature. Please share your thoughts on this.
Best regards,
Roman

Hi Roman,
Absolutely, if you want to work on an OpenVINO backend we'd be happy to support you. We don't really bandwidth to actively develop new backends (e.g. our MLX backend is not making progress due to lack of resources) but we're able to answer your questions and review any PRs you submit.

adding OpenVINO as a new backend to support inference

Does OpenVINO not support gradients? Or is it otherwise not a good fit for training?

Does OpenVINO not support gradients? Or is it otherwise not a good fit for training?
Hi François,

Thanks a lot for your response. OpenVINO provides functionality only for inference and its optimization using compression and quantization. So the plan is to support Keras API for inference in case OpenVINO backend.
I see that we need to add openvino directory into backends with implemented helpers for Keras op decompositions using OpenVINO opset. Anything else can you recommend to take a look? Or other useful developer documentation?
Now we plan to estimate  required work, implement protype to infer some basic network and get back.
Will be grateful to you for further response.
Best regards,
Roman

So the plan is to support Keras API for inference in case OpenVINO backend. Don't you mind us to add OpenVINO due to this "limitation"?

We already have a backend that is inference-only, the NumPy backend. This is not a big issue.

I see that we need to add openvino directory into backends with implemented helpers for Keras op decompositions using OpenVINO opset. Anything else can you recommend to take a look? Or other useful developer documentation?

Since you're only targeting inference, there's a lot you won't need to implement -- no Trainer class, no optimizers. I suggest you look the most closely at what is implemented in keras/backend/numpy/, since that's the other inference-only backend. If something is confusing, you can look at how it's implemented in other backends -- you have 3 other reference implementations for each function.
I think the main point of difficulty might be static shape inference (compute_output_spec), depending on how OpenVINO works.

Now we plan to estimate required work, implement protype to infer some basic network and get back.

Great -- don't hesitate to reach out with questions!


KEP-3453 to GA

(The fact that it looks like we missed adding a Beta feature-gates line for 1.27 is an artifact of the current state of the dev-1.28 branch. The line exists in main.)

/approve
Not sure if we want to merge this because the 'dev-1.28' is not well sync'ed with 'main'.
/hold
Feel free to lift the hold if the potential conflict is not a big issue.

updated... I still don't have a good sense of how we refer to different versions in the docs. (I feel like we should say "kube-proxy 1.28 and later do X" but it seems like the preferred style is to always talk about currentVersion instead?)
Current subsection order is
#### Optimizing iptables mode performance
##### `minSyncPeriod`
##### Updating legacy `minSyncPeriod` configuration {#minimize-iptables-restore}
##### `syncPeriod`

And I feel like maybe the "Updating" section breaks the flow? But it doesn't seem like it fits after syncPeriod either. And putting syncPeriod first also feels wrong since the minSyncPeriod section is more important.
Maybe it could be "minSyncPeriod, syncPeriod, Updating legacy config", ane the part in the syncPeriod section about "in the past, it was sometimes useful to set [syncPeriod] to a very large value (eg, 1h). This is no longer recommended" could be moved to the "legacy config" section?

updated

/hold cancel
sorry, this has been ready to go for a while but I didn't notice it was marked /hold

/hold cancel
rebased (no changes)

nit: changing the status of this KEP to "Docs PR Ready for review" in the board

@danwinship
Is this PR ready to merge?

yes

/approve

/lgtm


Restarting SPAdes in STRONG with --continue option

Hi Chris,
I am running STRONG on a large metagenomic dataset and will need to restart the assembly step from a checkpoint. How do I provide this option in the config file? Is it something like optional_args: '--continue' under the assembly step?
Thank you for any advice,
Corinna

Hello Corina,
I try to suing STRONG on my study. However, the COG database url was broken (https://strongtest.s3.climb.ac.uk/rpsblast_cog_db.tar.gz). If you have download this database, would you please transfer this database to me? much thanks!
Tao Jianchang

Thank you very much for your help ! Now STRONG is running.

Great! :)

On 8. Feb 2023, at 01:30, Taojianchang @.***> wrote:
Thank you very much for your help ! Now STRONG is running.
—
Reply to this email directly, view it on GitHub https://github.com/chrisquince/STRONG/issues/130#issuecomment-1422083589, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASNTQF57CGIGLYHM44O7VYTWWM4Q3ANCNFSM6AAAAAAQDKGESY.
You are receiving this because you authored the thread.

Hi Tao,
I try to use STRONG on my simulated dataset. However, I can't run the STRONG straightly. Could you please share the code and pipeline used? Very Thanks.
StickHu


[BUG] Admin UI displays liquidity in one asset scale and withdrawal input in a different scale

Bug Report
Describe the bug
When you view liquidity information it is displayed in asset scale two but when withdrawing liquidity it converts back to the original asset scale without warning the user.
Expected behavior
Either make it clear to the user that the asset scale has changed, or even better, make the asset scale consistent.
Screenshots

@Emanuel-Palestino that would be lovely. Thanks for the offer of help!

The expected result based on your screenshots is<PHONE_NUMBER>.60 USD right? So the problem is that it is ambiguous on what scale the user is withdrawing or depositing, correct?
Yes, exactly!

If you have any more questions please feel free to ask.

For some additional context that might be helpful:

I think this is a problem comes up for withdrawing or depositing liquidity for peers, assets, incoming and outgoing payments, and wallet addresses.
The bug shows up whenever asset scale is not set to 0.
The approach may be to use the loaders to get asset details and pass them into the liquidity dialog so that we can at least display 1 = $0.01 for instance.
Also open to other suggestions if you have a different approach.

I opened a pull request #2817 implementing your approach c:

Fantastic @Emanuel-Palestino, thank you. I am out of office but will review on Wednesday when I am properly back at my desk.


Update build SHA and upgrade spdlog to 0.14.0

-updating envoy build SHA to include the commit that added fmtlib as a dependency
-upgrading spdlog to 0.14.0
-modifying spdlog build to use our included version of fmt, instead of spdlog's bundled fmt
-changed test/common/upstream/utility.h to include fmt/printf.h (necessary because of changes in spdlog)

Did you want to include the other header include changes in this change? (Removing spdlog/spdlog.h from various places)?

I figured I was going to have to do a third PR to update the build SHA again, so I was planning on making those header changes in that PR.

I see, OK, sure np.


[FR] Adopt setuptools_scm to derive version from SCM metadata and simplify manifest

What's the problem this feature will solve?
Currently, setuptools uses a janky approach to indicate the version of the code. It commits a version number to the repo, and then relies on egg_info.tag_build and egg_info.tag_date to add a post-release tag. Then, when cutting a release, that number is bumped and a release is cut suppressing the tags.
This approach has some serious downsides.

setup.py --version returns the wrong version (doesn't honor the tags).
Requires maintaining a separate tooling workflow to bump the tag in the repo.
Means even tagged commits in the repo won't render the correct released version (will have the post-release tags).
Project follows a separate release workflow than all other projects maintained according to jaraco/skeleton.

Describe the solution you'd like
I'd like to employ setuptools_scm for managing the versions. Doing so would have the following advantages:

setup.py --version will return the correct version.
Tagged commits will render the correct version.
Simplified and unified release workflow without the workarounds and variance from jaraco/skeleton.
Saves a commit for every version bump. Any commit with a version tag is that version and that version number is derived from the tag. Creating a release is an atomic operation on the repo (no opportunity for tag and release version to mismatch).
Correct versions are rendered in docs and other tooling.
Removes the need for a manifest (as source code files will be included through file finders).

The reason I haven't adopted this approach previously is because I'm concerned about bootstrapping issues. In particular, how can Setuptools install from source without dependencies? Let's find a way to solve that issue but have setuptools_scm (and its discovery through metadata) work.
Alternative Solutions
No response
Additional context
No response
Code of Conduct

[X] I agree to follow the PSF Code of Conduct

a release is cut suppressing the tags.

This reminded me of a trick I use to publish each push to devel to TestPyPI. So basically, this is the case when I need to tell setuptools-scm to use a different versioning scheme (without the local version part) so I change that setting in pyproject.toml and mark the file as unchanged in Git (so that it doesn't produce a "dirty" tag): https://github.com/ansible/pylibssh/blob/1af102d/.github/workflows/build-test-n-publish.yml#L345-L367.
Not sure how helpful this is for the current FR but I thought I'd share just in case.


[@lit-labs/router] Use new version of URLPattern polyfill

3.0.0 was just released https://www.npmjs.com/package/urlpattern-polyfill and it made some changes to import and the d.ts file
@justinfagnani

Even 4.0.3 now. I have a TS error like :
node_modules/@lit-labs/router/routes.d.ts:7:15 - error TS2305: Module '"urlpattern-polyfill"' has no exported member 'URLPattern'.urlpattern-polyfill"' has no exported member 'URLPattern'
=>  import type { URLPattern as URLPatternType } from 'urlpattern-polyfill;
I don't know if it's related.


chore: add client getters

Stack:

#2035 ⬅
#2034
#2033
#2032
#2030
#2029
#2028

⚠ Part of a stack created by spr. Do not merge manually using the UI - doing so may have unexpected results.

This change is

✓ Commit merged in pull request #2041


Issue with strings

Details
After installing FLARE-VM, the first strings in path is not the sysinternals strings, but:

I had expected the sysinternals one. Should we add the sysinternals path at the beginning of PATH in the package? Are there any better solutions? @vm-packages
Also, should we add a shortcut for strings in the Tools directory?

I'd also expect strings.exe. I don't think we need a shortcut (there are other strings tools integrated).


Images in region template

Since {{my-image}} returns site:img/avatar.png and I can't seem to use PHP code in the region template, how exactly are we supposed to use the images in region templates?
In my opinion, the result of a mediamanager field type should always return the relative path.
Any workarounds?
The documentation did not mention this.

Try url_to() to get relative path from it.

This works

{{ $Heading }}

  {{ $Text }}

This should be in the documentation.
Thanks Amdad.


fix: does not remove nulls in plugin configs

What this PR does / why we need it:

Do not remove nil values in config of plugins, to allow users to explicitly set some fields to null in plugin configs, for example host in datadog plugin.
Which issue this PR fixes:

fixed #3908
Special notes for your reviewer:

PR Readiness Checklist:
Complete these before marking the PR as ready to review:

[x] the CHANGELOG.md release notes have been updated to reflect any significant (and particularly user-facing) changes introduced by this PR

+1 Can you add a test for this? Ideally a simple UT where e.g. we provide our own mock of ConfigService

Added. Also I did a simple test in my local dev env, we successfully configured host to null in datadog plugin.

The risks of this fix outweigh the benefits, because Kong's plugin schema is not guaranteed to be very robust yet, and there is a high probability that a 500 error will be triggered if a null is passed through. For example, this one: https://github.com/Kong/kong-ee/pull/4882
From the user's perspective, I think this behavior is a breaking change.

Is there a list of known plugins, keys that could accept nils so that we could do a filtered nil clean up of config?

The risks of this fix outweigh the benefits, because Kong's plugin schema is not guaranteed to be very robust yet, and there is a high probability that a 500 error will be triggered if a null is passed through. For example, this one: Kong/kong-ee#4882
From the user's perspective, I think this behavior is a breaking change.

@ms2008 @pmalek  For whether allowing nulls in configs of kong plugins, KIC has different behaviors: nils are cleared when using dbless to directly marshal configurations, but passed to kong when using db and configuring through decK. I did not see any special processing on null or nil values in decK.
Could we confirm again the two things:

How did decK process config of plugins
What process should KIC take for null/nils in plugin config:
(1) clean up all nils
(2) pass all nils and marshal them to nulls
(3) Allow only explicitly specified fields, clean up nils for other fields
(4) Clean up only  explicitly specified fields, pass nils for other fields

@pmalek I don't think there is such a list yet. It's probably not just plugins, but other entities will have this problem too, I guess.
And seems it's better that the KIC team needs to sync up with the gateway team about this null thing.

Is there any place to warn this as it may be a potential breaking change for users? Let's say there is an old KIC config and contains some-key: nil, it may be rejected by the Kong Admin API once KIC upgraded.

There is another issue. KIC sends requests to Kong occurs in two places:

Admission webhook
Sendconfig

In the admission webhook, KIC does not remove any null values, whereas in the sendconfig, it does. These different behaviors can easily cause confusion for users.
If you are sure you want to remove the null values, then remove them from both places; otherwise, keep them in both places. We should always ensure that the behavior of these two places is consistent.

Added a "Work in Progress" label since that will require more effort to get a proper fix.

Closing this as #3914 has been closed as "Not Planned".
cc: @randmonkey


Downgrade scarb-metadata

Introduced changes

downgrade scarb-metadata to avoid problems with missing field experimental_features at line 1 column 3126

Checklist

[X] Linked relevant issue
[X] Updated relevant documentation
[X] Added relevant tests
[X] Performed self-review of the code
[X] Added changes to CHANGELOG.md

We need metadata >= 1.11.0 for #1636, but metadata fix the fix will be released today. Maybe we can bump it up instead of downgrading it?

We need metadata >= 1.11.0 for #1636, but metadata fix the fix will be released today. Maybe we can bump it up instead of downgrading it?

Indeed, bumped


›TimeoutError: time out

I'm running the docker logs -f command to look. I just built a fresh VM to try and run your code. I keep getting the following error when connecting to the game.

Any idea what it might be? I've followed your instructions to a T. Hopefully it's not negligence on my part.

Normally this problem can come from

VM built-in firewall problem
ffxiv_dx11.exe needed to be updated.

I personally retired from FFXIV but by friends are still using my docker and they haven't report any problem (yet). So I suspect the firewall rule.
Could you try set environment variable MITIGATOR=false and try enter game again? This will disable the XivMitmLatencyMitigator but still allow you to route game traffic through VM. If it's still not working then the problem should be from firewall rule.
Anyway, could you please post your docker run command or docker-compose.yml file content here too?


Improves the RCD

All RCD modes are implemented, RCD ammo exists, and the RCD can no longer build walls on blocked tiles.
There is a bug with @Acruid 's helper method that prevents the RCD from working on a tile adjacent to a wall, which I don't know how to fix. I did, however, fix the helper method's returns being inverted.

Pretty sure the test failing is not my fault.

Fix the conflict and I'll merge this right away!

Would have preferred RCDDeconstructible


FR: header.typ should be set : FirebaseAuth.getInstance().createCustomToken

firebase-admin maven version: 7.0.1
When creating custom token with FirebaseAuth.getInstance().createCustomToken(..), the resulting token is missing header.typ field.
FirebaseTokenFactory.createSignedCustomAuthTokenForUser seems to only set the alg field, see this.
If you try to set the typ field yourself, the factory restricts you, see this

Why do you want this header set? The Firebase Auth service doesn't require it.

hi, thanks for the response @hiranya911 .
yes firebase auth service doesn't require it, but other downstream apps that integrates with an app that uses firebase based apps may require it.  Which is what happened in my case. e.g. i sent firebase jwt token to an external jwt awared app.  So since its a standard field per spec (see this), i figured i ask if the team can please include it.  What do you think?
Also, since firebase auth service doesnt require it like you've pointed out, it probably shouldn't be restricted by this when one is trying to create a custom token.  what do you think?

@bojeil-google wdyt?
I don't mind setting the typ header. But sending Firebase custom tokens to other external services sounds iffy. Custom tokens can be exchanged for ID tokens, which allows those services to impersonate users. That can have serious security implications. I'd recommend minting your own JWTs (with your own iss and aud claims) for such third-party integrations.

Also, since firebase auth service doesnt require it like you've pointed out, it probably shouldn't be restricted by this when one is trying to create a custom token. what do you think?

typ should be set on the header portion of the JWT. Setting it as a claim on the payload won't really help with your use case, even if the token factory allowed it.

typ should be set on the header portion of the JWT. Setting it as a claim on the payload won't really help with your use case, even if the token factory allowed it.
actually, i just noticed that.  You guys are restricting it on the payload; that is interesting as well.

thanks for considering tho.

I think we can set the typ header field to JWT. However, I do not recommend that the tokens be passed to other services. The tokens would allow full access to user accounts.

I think it depends on the tokens are being used with other services and how trusted they are.  But, again, thanks 4 considering.

I'm going to close this now as won't fix. Adding the typ header is not required by Firebase Auth services, and this API works as is without it.


dataclass inheritance with keyword-only args [3.10]

Python 3.10 adds the ability to specify keyword-only args in dataclasses. Especially with inheritance, this allows some combinations that would previously have been an error, and are currently still detected as such.
For example, it's now possible to specify fields without a default in a derived class if only keyword-only args in the base class have a default. This will work since keyword-only args need to come after positional/keyword args. https://docs.python.org/3.10/library/dataclasses.html#re-ordering-of-keyword-only-parameters-in-init
from dataclasses import dataclass, KW_ONLY

@dataclass
class Base:
    x: str
    _: KW_ONLY
    y: int = 0
    w: int = 1

@dataclass
class D(Base):
    z: str  # (1)
    a: str = "a"

>>> D("Hello", "World")
D(x='Hello', y=0, w=1, z='World', a='a')

At the moment, pylance indicates an error for z at position (1):
Fields without default values cannot appear after fields with default values

--
On a related note, the tip for D is also not correct.

Due to the reordering it should be
D(x: str, z: str, *, y: int = 0, w: int = 1, a: str = "a") -> None

This functionality will be included in the next release.

fixed in 2021.8.1