It is only valid for dotnet 3.1

The doc is only valid for dotnet 3.1. It would be great to specify it somewhere in the doc.
Currently, there are no possibility to do the same for functions with target framework net5.0

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

ID: 5d505ab9-d351-6650-6d0c-bb65d2daa229
Version Independent ID: 2a1d3487-a93d-2206-7ef9-a91aa275ec4e
Content: Create Azure Functions on Linux using a custom image
Content Source: articles/azure-functions/functions-create-function-linux-custom-image.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

Thanks for bringing this to our attention. We will now close this issue. If there are further questions regarding this matter, please tag me in a comment. I will reopen it and we will gladly continue the discussion.

Hello @ggailey777, should we add a note ?

You should actually be able to create a Dockerfile that targets .NET 5.0 as a .NET isolated project. We need to update the article to show this, but you should be able to use the following func init command to do this:
func init LocalFunctionsProject --worker-runtime dotnet-isolated --docker

In the Dockerfile, you can see it's pulling from .NET 5.0 images:
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS installer-env

COPY . /src/dotnet-function-app
RUN cd /src/dotnet-function-app && \
    mkdir -p /home/site/wwwroot && \
    dotnet publish *.csproj --output /home/site/wwwroot

# To enable ssh & remote debugging on app service change the base image to the one below
# FROM mcr.microsoft.com/azure-functions/dotnet-isolated:3.0-dotnet-isolated5.0-appservice
FROM mcr.microsoft.com/azure-functions/dotnet-isolated:3.0-dotnet-isolated5.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

@ggailey777 thanks, I'll try and let you know

Hi @ggailey777, it doesn't work for me
I got this on dotnet publish command

#14 1.126 Microsoft (R) Build Engine version 16.10.2+857e5a733 for .NET
#14 1.126 Copyright (C) Microsoft Corporation. All rights reserved.
#14 1.126
#14 1.808   Determining projects to restore...
#14 30.26   Restored /src/Common/Common.csproj (in 27.8 sec).
#14 30.26   Restored /src/FunctionApp1/FunctionApp1.csproj (in 27.8 sec).
#14 33.88   Common -> /src/Common/bin/Release/net5.0/Common.dll
#14 34.38   FunctionApp1 -> /src/FunctionApp1/bin/Release/net5.0/FunctionApp1.dll
#14 35.09   Determining projects to restore...
#14 48.65   Restored /tmp/2dlg4dqp.x0u/WorkerExtensions.csproj (in 13.49 sec).
#14 49.20   WorkerExtensions -> /tmp/2dlg4dqp.x0u/buildout/Microsoft.Azure.Functions.Worker.Extensions.dll
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : It was not possible to find any compatible framework version [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The framework 'Microsoft.NETCore.App', version '3.1.0' was not found. [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :   - The following frameworks were found: [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :       5.0.8 at [/usr/share/dotnet/shared/Microsoft.NETCore.App] [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :  [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : You can resolve the problem by installing the specified framework and/or SDK. [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :  [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The specified framework can be found at: [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :   - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.0&arch=x64&rid=debian.10-x64 [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :  [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]
#14 49.57 /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Metadata generation failed. [/tmp/2dlg4dqp.x0u/WorkerExtensions.csproj]

I thought you were deploying a Linux container?

Yes, it is a Linux but the error occurs on build step, not deploy

OK, I'm getting your error. Let me look more into this, and sorry for the delay.

OK, so there are two things going on:

There is still a dependency on the .NET 3.1 Core SDK even in .NET 5.0 function projects, which seems to be "by design."
The Dockerfile that we generate for a project with --worker-runtime = dotnet-isolated --docker is missing a key line to add the reference to .NET Core 3.1.

To fix this, add the following lines after the first FROM statement in the Dockerfile:
# Build requires 3.1 SDK
COPY --from=mcr.microsoft.com/dotnet/core/sdk:3.1 /usr/share/dotnet /usr/share/dotnet

I'll make sure we get this noted in the docs.  Thanks for letting us know about this!

Cool, it works.
Thank you very much!!


Quarkus XMLSec moved to Quarkus CXF

Fix https://github.com/quarkiverse/quarkus-xmlsec/issues/168

We also need to remove the entry from the Extension Catalog, since it will no longer be updated

LGTM. I believe this repository can be archived too. This can be accomplished by providing a PR deleting the terraform script and the CODEOWNERS entry.

Thanks for the hint, done here: https://github.com/quarkiverse/quarkiverse-devops/pull/220


Removal of old Test 1 and addition of Tests 1 - 4 (as per Word document)

Changes to tests for FCS_TLSC_EXT.1.4. Please review.

Incorrect branch. Will sync to correct branch.


Moving DB off the Instance

Hi, Michael from OCHIN
We talked way back in the spring about what it would take to move the DB off the server to an RDS instance. I can set environmental variables on the instance pretty easily, and I think if I use the docker-compose.yml substitution then I can sub in the connection information for the RDS instance
It seems like I'd also need to remove the commands using ./wait-for-it.sh targeting db:5432 - ( ie ) - but are there any other concerns?
Like is there any data loading in db that would get missed? I looks like there is a schema_init.sql and maybe some tables get seeded?
Would I just need to run these by hand if I wasn't using the db container?

Hi Michael, I think this is a good idea. I don't think there's any issues here moving databases, just remember to update the ecr storage configuration, the job management system configuration, and the translate server configuration. On lines above the one you linked like here.

@MikeRileyGTRI Nice! I'd started doing that in this PR in the OCHIN fork but wanted to make sure it was the correct approach
I'd thought that you mentioned something about removing the calls to cmd calls to wait-for-it.sh which makes sense cause they're pointing at the db container. Is that correct?
What about translateconcept though? It looks like it connects to the same db but with a different user? Is there any reason for the different db user?

The main reason for the wait-for-it script is to have our containers wait for the database container to be  up and running, otherwise the containers can't connect to the db in a race condition, and they don't start up right. It's hard to get the containers to block until the db is started, and this was the best, even recommended way from the docker-compose folks. So now if the db is consistently up, there's no reason for wait-for-it scripts anymore.
The translate concept service itself is a bit of a special case, it has it's own db that's deployed from a dump file, and the dump is keyed to that user, so we just create that user in the db.


feat: yarn publish

added release-it package

For now, to simplify things, I've added two separate dependencies and publish scripts to two separate packages.
You can test it with:
yarn release:dry-run inside shared and types packages

* I don't think we can use the default tagging of `release-it` because it will give name the tag something like `0.1.0`, but we would need to prefix it to something like `shared-0.1.0`.

Right! Taking a look

* The same with the changelog, since it will include commits that don't affect the shared/types packages (and maybe changelogs should be written manually anyway if we are going to use them for these packages).

I will look into disabling this for time being

* The shared package has some missing peer dependency warnings that will need to be fixed before we publish to npm.

👍

* I'm not sure how to handle multicore, since we effectively have two builds of the shared package now. I guess we could bundle both builds in the same release, or make separate releases for each build.

We will just publish non multicore version for now :) as it has the same  "API"


[Management] Smoke test refactors.

Motivation
This small PR refactors some of the functionality in the smoke test to avoid duplication, help simplify the reader flow and maintain more consistent naming conventions.
Have you read the Contributing Guidelines on pull requests?
Yes.
Test Plan
The local smoke test still passes.
Related PRs
None.

https://github.com/libra/libra/pull/4686

:umbrella: The latest upstream changes (presumably f5c0e50b745a3c4ce6f34356d41b347c25d5735c) made this pull request unmergeable. Please resolve the merge conflicts.

Killing this as there's a bigger clean up going on. See above.


Introduced Travis CI

Codecov Report

:exclamation: No coverage uploaded for pull request base (develop@3fa6245). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             develop       #6   +/-   ##
==========================================
  Coverage           ?   32.19%
==========================================
  Files              ?       10
  Lines              ?     1112
  Branches           ?        0
==========================================
  Hits               ?      358
  Misses             ?      689
  Partials           ?       65

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 3fa6245...10cd189. Read the comment docs.


Community's opinion about creating a fork

There are some pull requests since november that have not been merged, and they include interesting things that are quite important, like #13 and #20 .
And I was thinking on creating a fork of davinci with all this features added and bugs fixed. I just wanted to know what the community thinks about this idea.
This, obviously, wouldn't be done if @shamsdev merges or comments on any PR or something like that.

Another option would be to move this repository to an organization or something similar and give write access to some maintainers and people willing to help with the project

Hello @Techie-Pi, Thank you for your comment. It's been a while I couldn't work on this project, but I have plans for this and new features will be added soon. Thank you again.
Regards.

Great! That's great to listen!


Allow redefinition of default error messages by a sfValidator subclass

I agree with Alexandre.
There is already a way to override the default messages from a child class.
class UuidValidator extends sfValidatorBase
{
    public function configure() {
        $this->setMessage('required', 'UUID is required.');
        $this->setMessage('invalid', 'Given UUID value is not valid.');
    }

    // ...
}

You're right. We keep our own set of patches to symfony1 and I was trying to keep the differences with upstream as little as possible, this seemed simple enought to be accepted without discussion and tought that adding it to upstream would shorten the list of custom patches.
But you're right and we just need to override the configure method instead of the property definition.


Implementation in Python

please implement this in python, would be very useful

please implement this in python, would be very useful

https://github.com/williamfzc/chat-gpt-ppt/tree/7fa6448c57eeb410202f991a337095beb138adc6
You can implement your own one easily. The older version was writen in Python.


HWP override not working ?

I have enabled HWP override to True (and removed the hash), I have masked the option on tlp (or disabled tlp altogether) for AC, I monitor with x86_energy_perf_policy, and when I stress the cpu with stress -c 1-8, there is no change to either EPB from 6 to 0, nor to epp from 128 to 0.
So I guess this doesn't work?
ThinkPad L380 Yoga (i5-8250u).
On a separate note, is throttled still needed. I get the same exact scaling (up) to the full 3400MHz, and  a nice idle at 800Mhz, with as I do without it. I haven't seen the 400Mhz lock since at least one bios version ago (withtout throttled).
Thank you.

throttled doesn't work by adjusting those hints from what I can tell. Or perhaps throttled does attempt to on other machines, but I don't see those hints go from 6 to 0 on mine, either. That is just a suggestion to the system on how much it should prioritize going back to idle state, though.
The more important thing I use throttled for is setting PL1 and PL2 to be 100w so that my system doesn't power down.
If you don't experience unnecessary throttling, though, and observe that your system is only limited according to thermals, then you don't need throttled.


Discord.js update

Your bot Is v13 upgrade in discord.js 14

Your bot Is v13 upgrade in discord.js 14

We currently depreciated this version and are working on shifting it to python.


Investigate rounding and adding issues regarding tax

@itbabu raised a point about the correct way to calculate tax for several products.
I'd add that we should also review questions regarding correct rounding for calculating rebates and tax.

Is this going to be fixed? This issue is now 2,5 yrs old...

Nevermind - I fixed the issue by overriding the exponent property in the strategy class:
class MyCustomStrategy(FixedRateTax):
    exponent = D('0.001')

I think we can revise basket total tax calculation as @itbabu suggest - calculate sum of product prices and then apply tax and run couple of tests to check how this would improve tax calculation precision.


[AST parser] Add README

As requested by @engelke and @tmatsuo

@ace-n One question. How does it injected? Is it injected in non-desruptive manner? If so, maybe it's worthwhile to call out in README.


Dont pass optional function to dict getter

Fixes #42

HI, I just tried it, and it stil fails:
    token_key, token_secret = xauth(username=user, password=password)
  File "/.../env/local/lib/python2.7/site-packages/readability/auth.py", line 48, in xauth
    consumer_key = xargs.get('consumer_key') or required_from_env('READABILITY_CONSUMER_KEY')

wy code is the following:
def readability_login(user, password):
    token_key, token_secret = xauth(username=user, password=password)
    rdd = ReaderClient(
        token_key=token_key,
        token_secret=token_secret,
        consumer_key=READABILITY_CONSUMER_KEY,
        consumer_secret=READABILITY_CONSUMER_SECRET)
    return rdd

with READABILITY_CONSUMER_KEY and READABILITY_CONSUMER_SECRET as cosntants in my code

@jpcaruana you'll need to pass consumer_key and consumer_secret to xauth as well:
def readability_login(user, password):
    token_key, token_secret = xauth(
        username=user,
        password=password,
        consumer_key=READABILITY_CONSUMER_KEY,
        consumer_secret=READABILITY_CONSUMER_SECRET)
    rdd = ReaderClient(
        token_key=token_key,
        token_secret=token_secret,
        consumer_key=READABILITY_CONSUMER_KEY,
        consumer_secret=READABILITY_CONSUMER_SECRET)
    return rdd

This is because the consumer key and secret are used in the key exchange as well.

ah yes you're right (I found it out while you replied to me)
sorry for the noise and thanks for the fix

No problem at all!


Make the vibration when you select chapters optional

Didn't know where else to post this but it would be nice if you could add categories
Also make the vibration when you select chapters in each novel optional
Also there are a lot of delays when reading and changing settings, like going to the next chapter or enabling something..

Didn't know where else to post this but it would be nice if you could add categories

There's an open issue for categories #45

Also there are a lot of delays when reading and changing settings, like going to the next chapter or enabling something

Performance should eventually get better.

Just about to make an issue about this. Please make the vibration go away 😿


Improve module metadata userguide

Context
Fixes typos, formatting and wording issues in publishing_gradle_module_metadata.adoc.
Contributor Checklist

[x] Review Contribution Guidelines
[x] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[x] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[x] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[ ] Provide unit tests (under <subproject>/src/test) to verify logic
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[ ] Ensure that tests pass locally: ./gradlew <changed-subproject>:check

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

Thank you for these documentation improvements!
I will rebase your change to integrate it on the release branch so it makes it for Gradle 6.8.


Restart scheduler when policy changes

When the scheduler policy file is changed, a restart of the scheduler pods is necessary to it to take effect.
Relates to #2346

ci check this


Difficulty with Custom Mesh

I am having difficulty getting my custom mesh to render correctly. The mesh processes my recipes just fine, though I would like for it to look correct as well. I also want to add a couple more meshes, but would like to get this one right before I do.
Thank you and I appreciate your help!
Details listed below:

Minecraft: 1.19.2
Forge: 43.2.3
Create: 1.19.2-0.5.0.h
Create Sifter 1.19.2-1.3.3.g

This what the mesh is supposed to look like from BlockBench.

This is how it renders in game

In order to get the mesh to work and render as well as it does I had to do the following:

In BlockBench, create the kubejs/assets/createsifter/models/block/meshes/amethyst_mesh.json
In BlockBench, create, edit and apply the textures found in kubejs/assets/createsifter/textures
Copy  kubejs/assets/createsifter/textures to kubejs/assets/kubejs/textures

Attached are the pertinent files kubejs.zip

Also, do you have a discord server that you could invite me to?

Hi!
I've updated the mod to patch I and fixed rendering issues.
I think your problem may be resolved.

Definitely a set in the right direction!
Would be nice if they were rotated to the same plane as the sifter.  :smile:
Also, the border frame as shown in the above BlockBench example still needs rendering.
Thank you very much for working on this!

Hi!
I'm reworking the models and doc to simplify the process.
In the meantime... could you try please:

StartupEvents.registry('item', event => {
	// Register new items here
	// event.create('example_item').displayName('Example Item')
	event.create('amethyst_mesh','createsifter:mesh').displayName('Amethyst Mesh').parentModel("createsifter:block/meshes/custom_mesh").texture("1","kubejs:item/amethyst_mesh").texture("0","kubejs:block/coal_block");
})

It just adds the custom model and texture overrides.

Looks GREAT!
Thanks! I look forward to the update!


Fixing rebuildswift

The script was complaining about a missing dir under tmp. The pathing
just appeared to be incorrect. After making the minor change included
in this commit, the script ran successfully.

I'm sorry to hear you've having trouble!  Thanks for diving in...
But this change doesn't wfm - I'm guessing this is a vagrant version thing :fearful:
It may be unforgivably dated, but this is what I'm running:
$ vagrant --version
Vagrant 1.6.5

Can you check what version you have and also list the chef dir's that you're getting:
vagrant@saio:~$ ls -d /tmp/vagrant-chef*
/tmp/vagrant-chef-2

I'm thinking /tmp/vagrant-chef* might be compatible with more versions of vagrant.  If so, we'll need to update all of the bin scripts (e.g. reinstallswift, remakerings, etc) instead of just rebuildswift.

How is the path generated? I was actually using the precise64 image, which is 12.04. My path in tmp looks more like /tmp/vagrant-chef/. Having said that, /tmp/vagrant-chef* looks like it'll capture both cases.

Also, i'm using Vagrant version 1.7.2.

Perhaps it is how vagrant handled chef provisioning. I can find/replace all current instances of the path and replace with /tmp/vagrant-chef* in this PR.

awesome, love it!


Add flags to include unit test files in coverage

Originating Project/Creator

Affected Component

Affected Architectures(s)

Related Issue(s)

Has Unit Tests (y/n)

Builds Without Errors (y/n)

Unit Tests Pass (y/n)

Documentation Included (y/n)

Change Description
Previous implementations did not allow for including test and autocoded test files in the coverage calculations.  This completes the set.  --all-ac is now --all-sources as it includes everything.

Added QoL addition of printing gcovr command args in '  such that it can be copied and pasted to run!


Build errors

1
[ 28%] Building CXX object Colorer-library/src/CMakeFiles/colorer_lib.dir/colorer/handlers/LineRegionsSupport.cpp.o
far2l-2.4.0/far2l-fuse/src/MountPoint.cpp: In member function ‘bool MountPoint::unmount()’:
far2l-2.4.0/far2l-fuse/src/MountPoint.cpp:79:9: error: ‘EscapeQuotes’ was not declared in this scope; did you mean ‘EscapeQuotas’?
   79 |         EscapeQuotes(c_mpid) +
      |         ^~~~~~~~~~~~
      |         EscapeQuotas
far2l-2.4.0/far2l-fuse/src/MountPoint.cpp: In member function ‘void MountPoint::mountCheck()’:
far2l-2.4.0/far2l-fuse/src/MountPoint.cpp:120:9: error: ‘EscapeQuotes’ was not declared in this scope; did you mean ‘EscapeQuotas’?
  120 |         EscapeQuotes(c_mpid) +
      |         ^~~~~~~~~~~~
      |         EscapeQuotas
make[2]: *** [far2l-fuse/CMakeFiles/far2l-fuse.dir/build.make:118: far2l-fuse/CMakeFiles/far2l-fuse.dir/src/MountPoint.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:625: far2l-fuse/CMakeFiles/far2l-fuse.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

But the "EscapeQuotas"  solve this issue, but the panel empty on FUSE page, plugin does not work.

When I've add fuse subdir to  last line of CMakeLists.txt. The issue solved if fuse subdir added before Winport subdir.

far2l-2.4.0/far2l-fuse/src/Configuration.cpp: In member function ‘void Configuration::save() const’:
far2l-2.4.0/far2l-fuse/../WinPort/WinPort.h:15:23: error: ‘WINPORT_RegOpenKeyEx’ was not declared in this scope
   15 | #define WINPORT(NAME) WINPORT_##NAME
      |                       ^~~~~~~~
far2l-2.4.0/far2l-fuse/src/Configuration.cpp:27:14: note: in expansion of macro ‘WINPORT’
   27 |   LONG res = WINPORT(RegOpenKeyEx)(HKEY_CURRENT_USER, m_registryFolder.c_str(),
      |              ^~~~~~~
far2l-2.4.0/far2l-fuse/../WinPort/WinPort.h:15:23: error: ‘WINPORT_RegCloseKey’ was not declared in this scope
   15 | #define WINPORT(NAME) WINPORT_##NAME
      |                       ^~~~~~~~
far2l-2.4.0/far2l-fuse/src/Configuration.cpp:35:3: note: in expansion of macro ‘WINPORT’
   35 |   WINPORT(RegCloseKey)(hKey);
      |   ^~~~~~~
far2l-2.4.0/far2l-fuse/src/Configuration.cpp: In member function ‘void Configuration::load()’:
far2l-2.4.0/far2l-fuse/../WinPort/WinPort.h:15:23: error: ‘WINPORT_RegOpenKeyEx’ was not declared in this scope
   15 | #define WINPORT(NAME) WINPORT_##NAME
      |                       ^~~~~~~~
far2l-2.4.0/far2l-fuse/src/Configuration.cpp:41:14: note: in expansion of macro ‘WINPORT’
   41 |   LONG res = WINPORT(RegOpenKeyEx)(HKEY_CURRENT_USER, m_registryFolder.c_str(),
      |              ^~~~~~~
far2l-2.4.0/far2l-fuse/../WinPort/WinPort.h:15:23: error: ‘WINPORT_RegCreateKeyEx’ was not declared in this scope; did you mean ‘WINPORT_CreateFile’?
   15 | #define WINPORT(NAME) WINPORT_##NAME
      |                       ^~~~~~~~
far2l-2.4.0/far2l-fuse/src/Configuration.cpp:47:11: note: in expansion of macro ‘WINPORT’
   47 |     res = WINPORT(RegCreateKeyEx)(HKEY_CURRENT_USER, m_registryFolder.c_str(),
      |           ^~~~~~~
far2l-2.4.0/far2l-fuse/../WinPort/WinPort.h:15:23: error: ‘WINPORT_RegCloseKey’ was not declared in this scope
   15 | #define WINPORT(NAME) WINPORT_##NAME
      |                       ^~~~~~~~
far2l-2.4.0/far2l-fuse/src/Configuration.cpp:62:5: note: in expansion of macro ‘WINPORT’
   62 |     WINPORT(RegCloseKey)(hKey);
      |     ^~~~~~~
make[2]: *** [far2l-fuse/CMakeFiles/far2l-fuse.dir/build.make:76: far2l-fuse/CMakeFiles/far2l-fuse.dir/src/Configuration.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1506: far2l-fuse/CMakeFiles/far2l-fuse.dir/all] Error 2
make: *** [Makefile:156: all] Error 2

‘EscapeQuotes’ was not declared in this scope

Just update far2l

the panel empty on FUSE page, plugin does not work

Shift+F4 on panel to add connection

error: ‘WINPORT_RegOpenKeyEx’ was not declared in this scope

try to build with -DLEGACY=yes


Assignment 1 - Attempt 2

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
I am trying to create an anagram checker.
What did you learn from the changes you have made?
I learned how to convert a string into a list of letters and how to sort those letters.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
I was thinking of using for loops and iterating over each letter but converting the string to a list of letters seemed easier.
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
I did not know that .lower() could not be applied to a list, but this was fine because I could apply .lower() to the words before converting the words into a list of letters.
How were these changes tested?
I ran the code on the example words.
A reference to a related issue in your repository (if applicable)
N/A
Checklist

[X] I can confirm that my changes are working as intended

You did a great job here!
Please go ahead and close this pull request now. Thanks!


Performance: slow metadata service

What happened:
copying linux kernel tree show few KB/sec throughput at best, mdtest showed 5 - 10 transactions per second
What you expected to happen:
10MB/sec throughput for similar class file systems for linux kernel tree copy, 1000 - 10000 transaction per second based on redis performance
How to reproduce it (as minimally and precisely as possible):
on decent/non-virtual AWS EC2 instance setup/run redis, 22ms latency away run juiceFS mounted as a local directory, copy a recent linux kernel tree using {rsync, cp, midnight commander, ...}
Anything else we need to know?:
Great project/undertaking!
When the mounted directory is much 'closer' to redis, the metadata service exhibits fair behaviour. IO ops for larger files are OK, and for multi GB files JuiceFS has excellent performance; although this has not been verified for multi host mixed read/write scenerio.
Environment:

JuiceFS version (use ./juicefs --version): 0.9.3-211 (2021-01-28 9cdfa8a)
Cloud provider or hardware configuration running JuiceFS: a1.2xlarge
OS (e.g: cat /etc/os-release): ubuntu 20.04
Kernel (e.g. uname -a): 0.9.3-211 (2021-01-28 9cdfa8a)
Object storage (cloud provider and region):  aws s3 us-east-1
Redis info (version, cloud provider managed or self maintained): 6.0.10
Network connectivity (JuiceFS to Redis, JuiceFS to object storage): 500Mbit/sec bell fiber to redis, same for s3
Others:

@steven-varga The latency of meta operation is critical to JuiceFS, that's why we choose to use Redis here. It's usually expected that the latency to Redis server is less than 2ms. JuiceFS will be unusable if the latency goes above 10ms, and there is not much we can do for now.
So I'd say the current performance is expected under your network condition.
What's the use case there?

@steven-varga The latency of meta operation is critical to JuiceFS, that's why we choose to use Redis here. It's usually expected that the latency to Redis server is less than 2ms. JuiceFS will be unusable if the latency goes above 10ms, and there is not much we can do for now.
So I'd say the current performance is expected under your network condition.
What's the use case there?

Move it into discussion.


deactivate first line deletion

How can I disable the possibility to delete the first set of form inputs (row) ?
the first row should always be there.

How can I disable the possibility to delete the first set of form inputs (row) ?
the first row should always be there.

isFirstItemUndeletable: true

How can I disable the possibility to delete the first set of form inputs (row) ?
the first row should always be there.

isFirstItemUndeletable: true

How can I disable the possibility to delete the first set of form inputs (row) ?
the first row should always be there.

isFirstItemUndeletable: true

thanks man !

How can I disable the possibility to delete the first set of form inputs (row) ?
the first row should always be there.

isFirstItemUndeletable: true

thanks man !


Add support for storeSVID

Added storeSVID field to the ClusterStaticEntry CRD and put to the list of unsupported fields as it was introduced in SPIRE 1.1.0
Closes #232

Thanks for this contribution @iron-s ! We're doing a point release soon to unblock some other feature work but I'll review this and get it merged shortly so it can go in our next minor release.


Switch to GitHub Actions?

I didn't/haven't followed the Travis CI controversy, but many projects have migrated away from it and now use GitHub Actions. I set it up with jsonnet-mode and the transition was super easy.
Here are some "actions" I think we'd need:

setup-ruby
elasticsearch

@tminor Completely forgetting about this issue and that you assigned it to yourself, over the past couple of days I made both GitLab CI and GitHub Actions work. The Actions config doesn't use the Elasticsearch action you mentioned, but I think that's worth trying one day.
However, done enough for now :)


Enable e2e tests for rook ceph

Add a new pool of c2.mediums with at least 3 nodes.
Install rook-ceph in ci.
Add e2e package for pod verification.

Partially done in #1084, also duplicate of #397.


How to initialize a CPU tensor in custom cu file?

I am trying to initialize a CPU tensor for a new operator in .cu file.
Stream *cpu_stream = ctx.get_stream();
Tensor<cpu, 1> workspace = ctx.requested[proposal::kTempSpace].get_space(Shape1(workspace_size * 5), cpu_stream);
but this fails. I believe this issue may be that I am using reference ctx provided in the operator, which may be GPU, and hence can't init a tensor on CPU.
Is there a workaround to initialize tensors on CPU while working on a .cu file?

@vasusingla619 If you're asking how to create a temporary CPU memory space in a .cu file, you can simply do this:
void YourFunction(...) {
    vector<char> temp_buffer(workspace_size * 5, 0);
    Tensor<cpu, 1, char> workspace(temp_buffer.data(), Shape1(workspace * 5));
}

Lemme know if this solves your question.

Thanks, this was solved!


Add toFixed call in parseFloat in order to mantains .0

Just add toFixed call in order to preserve .0 (e.g passing 10.0 as float, parseFloat method returns 10).
This generated an error because the AAS server (Basyx) interpreted the data as Int.

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


Update New-PnPSite.md

Type

[x] Bug Fix
[ ] New Feature
[ ] Sample

Related Issues?
The -Lcid parameter description does not contain an explanation about the fact that SharePoint does not support all possible IDs, while is seems to be that way. Copied the relevant text from the 'new-pnptenantsite' page (https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/new-pnptenantsite?view=sharepoint-ps), where it does get mentioned.
What is in this Pull Request ?
Guidance about the SharePoint support for a limited number of IDs for the -Lcid parameter

Good catch @WimVandierendonck ! Thanks for your contribution. I see the Wiki article you're referencing is on our previous repository. I've copied over that article to this repository and updated the link in both cmdlets. Resubmitting this through https://github.com/pnp/powershell/pull/1208 as I don't seem to have permissions to update your PR.


vim + ALE + analyser: Some errors/fixes not detected until file is saved

When using vim + ALE + rust-anlyser, some errors are highlighted when the buffer is changed, but others only when the file is saved.
Using this example:
fn main() {
  let x = 3;
  x += 4;
  println!("{}", x);
}

When loading the file, it shows the error "cannot assign twice to immutable variable x" on line 3, which is expected.
If I add a second t to "let" on the second line, and immediately get a syntax error. On the other hand, if I add the word mut on line 2, the error about a second assignment on line 3 does not go away until I save the file.
Again, if I delete the word 'mut', I don't get an error, not until I save the file.
Using vim + ALE with javascript, I have never run into a similar issue, so this seems specific to rust-analyser. Is this a rust-analyser issue? Is this by design? Is there a way to make it work?

Some diagnostics in rust-analyzer are provided by running cargo check. As cargo check doesn't have an API for providing a VFS we can only run it for saved files, and thus only trigger it when files are saved.

Yeah this is currently working as intended, so closing.


Branch find 2

Edit Find command, DG, UG.
closes #65 , closes #69

Hi @e0260222 , Please help merge it . thanks


feat: global http client

Motivation
To enhance the flexibility and maintainability of the HTTP client configuration across various components of the sparrow, I've adopted a context-based approach for managing the HTTP client. This allows the checks, the loader, and the Gitlab manager to customize their client configurations such as timeouts without affecting other parts of the system. This approach also simplifies the Sparrow struct by not including the HTTP client directly, thus adhering to the principles of separation of concerns and reducing coupling.
Closes #31
Changes

Implemented a context-based HTTP client management system across all checks, the HTTP loader, and the Gitlab manager.
Chose not to add the HTTP client directly to the Sparrow struct. This decision was made to keep the Sparrow struct focused on its core responsibilities.
When a client configuration needs to be changed (e.g., adjusting the timeout), the HTTP client is dereferenced after retrieval from the context. This creates a copy of the client that can be safely modified without causing race conditions or affecting other operations using the client.

For additional information, look at the commits.
Tests done

[x] Unit tests succeeded
[ ] Manual E2E test with a helm install using the parameters used in the E2E workflow succeded

TODO

[x] I've assigned this PR to myself
[x] I've labeled this PR correctly

I will do the e2e tests tomorrow

@puffitos I appreciate and share your concern for simplicity and understand your points about the context's intended use.
The motivation behind injecting the HTTP client into the context was to provide a flexible, centralized way to manage HTTP client configurations across all of our components. This approach is particularly relevant where different checks can require varied timeout settings and other configs:

Centralization: A centralized HTTP client reduces the init overhead and potential inconsistency across different checks.
Flexibility: Context configurations allow for per-request adjustments, providing the granularity needed for the checks or even more in the future.

I understand that each check creating and initializing its own HTTP client is a valid approach for simpler scenarios. However, as the sparrow grows with more checks, this could lead to redundancy and complexity:

Multiple checks mean multiple points of initialization and configuration, leading to code duplication.
As the number of checks grows, maintaining and updating the HTTP client configurations can become clunky.

@NiklasTreml I've considered the utilization of the default client and while it offers simplicity, there are several concerns for our case:

The default client doesn't easily allow for per-check configurations
Overwriting a global object can lead to unintended consequences

Nevertheless, I've implemented an alternative approach in the feat/default-http-client branch. This approach utilizes the http.DefaultClient to simplify the context and use the default HTTP client.

Alternative Considerations
Instead of overwriting the default client, we can consider other approaches that offer both simplicity and flexibility:

Client Pool: A pool of pre-configured HTTP clients could offer a balance between efficiency and configuration flexibility.
Dependency Injection: We could abstract the HTTP communication behind interfaces and provide concrete implementations at runtime. This offers flexibility and easier testing without compromising simplicity.

Let's find a solution that works well for everyone, catch you next week! 👋

The HTTP client should not be passed in the context in my opinion. Information that is passed along with the context is quite unclear. Active and important components for the functionality should be clearly traceable in the code. Debugging is made more difficult as well.
In terms of centralization & flexibility I agree. A default HTTP client that is used can be good idea (eg. predefined header information, ...)
Lets talk next week. 👌

After our meeting we came to the conclusion that we don't need a global http client anymore.
With this considerations and change of course I've introduced the following pattern:

If checks require the http client they initialize them for every interval execution
If other components require a http client with static configurations they initialize them in their struct

I didn't apply the pattern to the health check because I'm doing that in #64.


docker entrypoint: process environment variable masternode privkey

change the docker-entrypoint.sh script such that it processes the CORE_MASTERNODE_OPERATOR_PRIVATE_KEY environment variable. If present, this variable should be put in dash.conf under masternodeblsprivkey.
This is required for a fix to dashmate, to be able to access wallets on non-masternodes. See this PR (and this old PR)
Note that this will require rebuilding the dashcore docker image (and pushing it to docker hub?). If this is not done before merging https://github.com/dashevo/platform/pull/86 then dashmate will break.
This change will not have effect on other dashcore code as far as I know/tested.

Any progress on this one?


MJCF Parsing Error - Identifier Containing Separator

I really like using MJCF for configuring my robots and environments. Recently I tried to upgrade one of my packages to the robot_descriptions package which references the mujoco_menagerie robot models.
When making this transition I encountered parsing errors related to the latest robot models in mujoco_menagerie containing separators, which is raised as an error in the following section of the dm_control code.
The error can be reproduced with the latest versions of mujoco, robot_descriptions and mujoco_menagerie
import os

from dm_control import mjcf
from robot_descriptions import panda_mj_description

PANDA_MJCF_PATH = os.path.join(panda_mj_description.PACKAGE_PATH, 'panda_nohand.xml')

franka_mjcf = mjcf.from_path(PANDA_MJCF_PATH)

Error:
raceback (most recent call last):
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 205, in __init__
    self._attributes[attribute_spec.name] = attribute_spec.type(
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 59, in __init__
    self._check_and_assign(value)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 65, in _check_and_assign
    self._assign_from_string(new_value)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 106, in _assign_from_string
    self._assign(string)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 256, in _assign
    raise ValueError(
ValueError: An identifier cannot contain a '/', as this is reserved for scoping purposes: got 'panda/visual'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 210, in _parse_children
    mjcf_child = mjcf_element.add(xml_child.tag, **attributes)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 630, in add
    return self.insert(element_name, position=None, **kwargs)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 655, in insert
    new_element = _make_element(child_spec, self, attributes=kwargs)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 124, in _make_element
    return _DefaultElement(spec, parent, attributes)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 217, in __init__
    raise err_type(  # pylint: disable=raise-missing-from
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 205, in __init__
    self._attributes[attribute_spec.name] = attribute_spec.type(
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 59, in __init__
    self._check_and_assign(value)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 65, in _check_and_assign
    self._assign_from_string(new_value)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 106, in _assign_from_string
    self._assign(string)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 256, in _assign
    raise ValueError(
ValueError: during initialization of attribute 'class' of element <default>: An identifier cannot contain a '/', as this is reserved for scoping purposes: got 'panda/visual'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 104, in from_path
    return _parse(xml_root, escape_separators,
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 169, in _parse
    _parse_children(xml_root, mjcf_root, escape_separators)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 219, in _parse_children
    _parse_children(xml_child, mjcf_child, escape_separators)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 219, in _parse_children
    _parse_children(xml_child, mjcf_child, escape_separators)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 216, in _parse_children
    raise err_type(
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/parser.py", line 210, in _parse_children
    mjcf_child = mjcf_element.add(xml_child.tag, **attributes)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 630, in add
    return self.insert(element_name, position=None, **kwargs)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 655, in insert
    new_element = _make_element(child_spec, self, attributes=kwargs)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 124, in _make_element
    return _DefaultElement(spec, parent, attributes)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 217, in __init__
    raise err_type(  # pylint: disable=raise-missing-from
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/element.py", line 205, in __init__
    self._attributes[attribute_spec.name] = attribute_spec.type(
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 59, in __init__
    self._check_and_assign(value)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 65, in _check_and_assign
    self._assign_from_string(new_value)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 106, in _assign_from_string
    self._assign(string)
  File "/Users/peterfagan/Library/Caches/pypoetry/virtualenvs/mujoco-robot-environments-_OvGmQF9-py3.10/lib/python3.10/site-packages/dm_control/mjcf/attribute.py", line 256, in _assign
    raise ValueError(
ValueError: Line 15: error while parsing element <default>: during initialization of attribute 'class' of element <default>: An identifier cannot contain a '/', as this is reserved for scoping purposes: got 'panda/visual'

I think @erez-tom just dealt with a similar issue?

Can you try using escape_separators please?

Can you try using escape_separators please?

Ah my bad on this, I don't know how I managed to miss the escape_serparators function argument. Thanks for the responses on this, hopefully this helps someone else who also managed to miss this argument.


PasswordBox: Improve documentation describing the visibility behavior of the password reveal button

This PR

adds additional details about the visibility behavior of the password reveal button the PasswordBox's main documentation page
adds explanation for the chosen visibility behavior to the documentation of the PasswordRevealMode API

Originally discussed in https://github.com/microsoft/microsoft-ui-xaml/issues/3252.
@YuliKl FYI.

@Felix-Dev : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Setup Script Fails with 'psql: command not found' Error"

Issue Description:
When attempting to run the setup.sh script to initialize various databases in PostgreSQL, the script fails with an error indicating that the psql command-line utility is not found. This issue occurs during the database setup process.
Steps to Reproduce:

Execute the setup.sh script to initialize databases.
Observe the error message: ./setup.sh: line 15: psql: command not found.

Expected Behavior:
The script is supposed to connect to the PostgreSQL database and execute psql commands to drop, create, and import data into the specified databases.
Actual Behavior:
The script fails to execute as it cannot find the psql command, leading to a halt in the database initialization process. The error message displayed is: ./setup.sh: line 15: psql: command not found.
Any assistance in resolving this issue would be greatly appreciated. Please let me know if further information is required. Thank you!

Hi @Cisco141632 , as you rightly mentioned in the expected behaviour, we require psql installed (see instructions here). Could you verify that you can access psql on your command line, eg:
$ which psql
/opt/homebrew/opt/libpq/bin/psql

If you don't see anything returned then you don't have psql installed and can follow the instructions here to install it.


Add SQL Support to Web and Local App with Prisma ORM

Implement web SQL via authenticated API calls on the web, leveraging permissions.
Implement local SQLite Support with Prisma for Rust using Tauri Rust Commands.

Also need to create appropriate tools to migrate data from legacy IP2M databases


onmove in the vue.js

when I used onmove return data,the first data is "[ob: Observer]",I can`t  console.log(),the first data.

https://github.com/RubaXa/Sortable/blob/master/CONTRIBUTING.md#issue


cargo publish doesn't take a --target

I'm writing a build script for NVML, a persistent memory library for DRAM. NVML only supports x86-64 linux currently, but I'm working on my Mac. I have no problem with building using this approach, as I use a local cross-compile toolchain via --target. However, I can't publish from this machine as cargo publish doesn't take a --target.

Seems reasonable to me to add! In the meantime you can also just pass --no-verify to avoid compilation verification on publish

@alexcrichton Is anybody working on this? Can I pick it up? I believe it should not be too difficult of a task. I'm considerably new to Rust, hence, might be way off point. Please share your thoughts

@nisargthakkar no I believe it's up for grabs, feel free to do so! You may want to take a look at how cargo build works with --target and then you can likely adapt cargo publish to do something similar, likely threading through an option down to verification. Let me know if you need any help!

@alexcrichton Thanks for all the pointers. I'll try implementing this.

Looks like this was fixed in https://github.com/rust-lang/cargo/pull/4440, closing!


Bitmart - Getting unexpected errors after orders created

Describe the bug
While testing Bitmart, we noticed that the bot returns a Unexpected error after orders are  created. There are also instances that the orders failed to be cancelled resulting to error Failed to cancel order the order..
Tested on local connection:

Tested on AWS:

2022-03-09 15:13:50,054 - 26760 - hummingbot.connector.exchange.bitmart.bitmart_api_order_book_data_source - ERROR - Unexpected error.
Traceback (most recent call last):
  File "/home/rapcmia/github/dev/hummingbot/connector/exchange/bitmart/bitmart_api_order_book_data_source.py", line 168, in listen_for_trades
    async for raw_msg in ws.iter_messages():
  File "/home/rapcmia/github/dev/hummingbot/core/web_assistant/ws_assistant.py", line 63, in iter_messages
    response = await self._connection.receive()
  File "/home/rapcmia/github/dev/hummingbot/core/web_assistant/connections/ws_connection.py", line 60, in receive
    response = self._build_resp(msg)
  File "/home/rapcmia/github/dev/hummingbot/core/web_assistant/connections/ws_connection.py", line 120, in _build_resp
    data = msg.json()
  File "/home/rapcmia/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/http_websocket.py", line 95, in json
    return loads(self.data)
  File "/home/rapcmia/miniconda3/envs/hummingbot/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/rapcmia/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/rapcmia/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)

Steps To Reproduce

Create simple pure market making strategy
Start the bot and monitor the log panel

Release version
dev-1.2
Attachments
pmm-bitmart.zip

Please find additional information here:
I am having similar issues.
Running latest docker image Hummingbot v1.1.0
Discord Reuben (Firo)#0001
I'm getting
async_request_context_base - API relate limit on spot/v1/order_detail (50 calls per 1s) has almost reached Limits used is 50 in the past 1 seconds
and
Could not fetch account updates from BitMart. Check API key and network connection.
``Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist (See log file for stack trace dump)
This happens almost immediately when I start the bot and have no idea why it's hitting the API limits. It also actually creates the orders but keeps on getting spammed with this non stop.
########################################################
###       Pure market making strategy config         ###
########################################################

template_version: 22
strategy: pure_market_making

# Exchange and token parameters.
exchange: bitmart

# Token trading pair for the exchange, e.g. BTC-USDT
market: FIRO-USDT

# How far away from mid price to place the bid order.
# Spread of 1 = 1% away from mid price at that time.
# Example if mid price is 100 and bid_spread is 1.
# Your bid is placed at 99.
bid_spread: 0.35

# How far away from mid price to place the ask order.
# Spread of 1 = 1% away from mid price at that time.
# Example if mid price is 100 and ask_spread is 1.
# Your bid is placed at 101.
ask_spread: 0.35

# Minimum Spread
# How far away from the mid price to cancel active orders
minimum_spread: -100.0

# Time in seconds before cancelling and placing new orders.
# If the value is 60, the bot cancels active orders and placing new ones after a minute.
order_refresh_time: 120.0

# Time in seconds before replacing existing order with new orders at the same price.
max_order_age: 1800.0

# The spread (from mid price) to defer order refresh process to the next cycle.
# (Enter 1 to indicate 1%), value below 0, e.g. -1, is to disable this feature - not recommended.
order_refresh_tolerance_pct: 0.1

# Size of your bid and ask order.
order_amount: 250.0

# Price band ceiling.
price_ceiling: -1.0

# Price band floor.
price_floor: -1.0

# Whether to alternate between buys and sells (true/false).
ping_pong_enabled: false

# Whether to enable Inventory skew feature (true/false).
inventory_skew_enabled: true

# Target base asset inventory percentage target to be maintained (for Inventory skew feature).
inventory_target_base_pct: 60.0

# The range around the inventory target base percent to maintain, expressed in multiples of total order size (for
# inventory skew feature).
inventory_range_multiplier: 1.0

# Initial price of the base asset. Note: this setting is not affects anything, the price is kept in the database.
inventory_price: 1.0

# Number of levels of orders to place on each side of the order book.
order_levels: 2

# Increase or decrease size of consecutive orders after the first order (if order_levels > 1).
order_level_amount: 50.0

# Order price space between orders (if order_levels > 1).
order_level_spread: 1.5

# How long to wait before placing the next order in case your order gets filled.
filled_order_delay: 60.0

# Whether to stop cancellations of orders on the other side (of the order book),
# when one side is filled (hanging orders feature) (true/false).
hanging_orders_enabled: false

# Spread (from mid price, in percentage) hanging orders will be canceled (Enter 1 to indicate 1%)
hanging_orders_cancel_pct: 10.0

# Whether to enable order optimization mode (true/false).
order_optimization_enabled: false

# The depth in base asset amount to be used for finding top ask (for order optimization mode).
ask_order_optimization_depth: 0.0

# The depth in base asset amount to be used for finding top bid (for order optimization mode).
bid_order_optimization_depth: 0.0

# Whether to enable adding transaction costs to order price calculation (true/false).
add_transaction_costs: false

# The price source (current_market/external_market/custom_api).
price_source: external_market

# The price type (mid_price/last_price/last_own_trade_price/best_bid/best_ask/inventory_cost).
price_type: mid_price

# An external exchange name (for external exchange pricing source).
price_source_exchange: binance

# A trading pair for the external exchange, e.g. BTC-USDT (for external exchange pricing source).
price_source_market: FIRO-USDT

# An external api that returns price (for custom_api pricing source).
price_source_custom_api:

# An interval time in second to update the price from custom api (for custom_api pricing source).
custom_api_update_interval: 10.0

#Take order if they cross order book when external price source is enabled
take_if_crossed: false

# Use user provided orders to directly override the orders placed by order_amount and order_level_parameter
# This is an advanced feature and user is expected to directly edit this field in config file
# Below is an sample input, the format is a dictionary, the key is user-defined order name, the value is a list which includes buy/sell, order spread, and order amount
# order_override:
#   order_1: [buy, 0.5, 100]
#   order_2: [buy, 0.75, 200]
#   order_3: [sell, 0.1, 500]
# Please make sure there is a space between : and [
order_override:

# If the strategy should wait to receive cancellations confirmation before creating new orders during refresh time
should_wait_order_cancel_confirmation: true

# For more detailed information, see:
# https://docs.hummingbot.io/strategies/pure-market-making/#configuration-parameters

logs_conf_pure_bitmartfirousdt.log
2022-03-15 09:24:52,344 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - NETWORK - Failed to cancel all orders.
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 817, in cancel_all
    await safe_gather(*tasks)
  File "/home/hummingbot/hummingbot/core/utils/async_utils.py", line 22, in safe_gather
    return await asyncio.gather(*args, **kwargs)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 373, in _api_request
    raise IOError(f"Error calling {url}. HTTP status is {response.status}. "
OSError: Error calling https://api-cloud.bitmart.com/spot/v2/cancel_order. HTTP status is 400. Message: Order does not exist
2022-03-15 09:24:52,347 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - WARNING - Failed to cancel all orders on BitMart. Check API key and network connection.
2022-03-15 09:24:52,349 - 1 - hummingbot.client.hummingbot_application - INFO - start command initiated.
2022-03-15 09:24:52,351 - 1 - hummingbot.core.network_iterator - INFO - Network status has changed to NetworkStatus.CONNECTED. Starting networking...
2022-03-15 09:24:52,419 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - INFO - Network status has changed to NetworkStatus.CONNECTED. Starting networking...
2022-03-15 09:24:52,471 - 1 - hummingbot.connector.exchange.binance.binance_order_book_tracker - INFO - Initialized order book for FIRO-USDT. 1/1 completed.
2022-03-15 09:24:52,582 - 1 - hummingbot.connector.exchange.bitmart.bitmart_api_order_book_data_source - ERROR - Unexpected error.
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_order_book_data_source.py", line 168, in listen_for_trades
    async for raw_msg in ws.iter_messages():
  File "/home/hummingbot/hummingbot/core/web_assistant/ws_assistant.py", line 63, in iter_messages
    response = await self._connection.receive()
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 60, in receive
    response = self._build_resp(msg)
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 120, in _build_resp
    data = msg.json()
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/http_websocket.py", line 95, in json
    return loads(self.data)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
2022-03-15 09:24:52,584 - 1 - hummingbot.connector.exchange.bitmart.bitmart_order_book_tracker - INFO - Initialized order book for FIRO-USDT. 1/1 completed.
2022-03-15 09:24:52,701 - 1 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - INFO - Authenticating to User Stream...
2022-03-15 09:24:52,702 - 1 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - ERROR - Error occurred when authenticating to user stream.
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_user_stream_data_source.py", line 75, in _authenticate
    ws_response = await ws.receive()
  File "/home/hummingbot/hummingbot/core/web_assistant/ws_assistant.py", line 70, in receive
    response = await self._connection.receive()
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 60, in receive
    response = self._build_resp(msg)
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 120, in _build_resp
    data = msg.json()
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/http_websocket.py", line 95, in json
    return loads(self.data)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
2022-03-15 09:24:52,702 - 1 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - ERROR - Unexpected error with BitMart WebSocket connection. Retrying after 30 seconds...
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_user_stream_data_source.py", line 126, in listen_for_user_stream
    await self._authenticate(ws)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_user_stream_data_source.py", line 75, in _authenticate
    ws_response = await ws.receive()
  File "/home/hummingbot/hummingbot/core/web_assistant/ws_assistant.py", line 70, in receive
    response = await self._connection.receive()
File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 60, in receive
    response = self._build_resp(msg)
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 120, in _build_resp
    data = msg.json()
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/http_websocket.py", line 95, in json
    return loads(self.data)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
2022-03-15 09:24:52,703 - 1 - hummingbot.connector.exchange.bitmart.bitmart_api_order_book_data_source - NETWORK - Unexpected error with WebSocket connection.
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_order_book_data_source.py", line 231, in listen_for_order_book_diffs
    async for raw_msg in ws.iter_messages():
  File "/home/hummingbot/hummingbot/core/web_assistant/ws_assistant.py", line 63, in iter_messages
    response = await self._connection.receive()
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 60, in receive
    response = self._build_resp(msg)
  File "/home/hummingbot/hummingbot/core/web_assistant/connections/ws_connection.py", line 120, in _build_resp
    data = msg.json()
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/http_websocket.py", line 95, in json
    return loads(self.data)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
2022-03-15 09:24:52,703 - 1 - hummingbot.connector.exchange.bitmart.bitmart_api_order_book_data_source - WARNING - Unexpected error with WebSocket connection. Retrying in 30 seconds. Check network connection.
2022-03-15 09:24:52,704 - 1 - hummingbot.connector.exchange.binance.binance_api_order_book_data_source - INFO - Subscribed to public order book and trade channels...
2022-03-15 09:24:53,105 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - ERROR - Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 585, in _status_polling_loop
    await safe_gather(
  File "/home/hummingbot/hummingbot/core/utils/async_utils.py", line 22, in safe_gather
    return await asyncio.gather(*args, **kwargs)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 645, in _update_order_status
    raise response
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 373, in _api_request
    raise IOError(f"Error calling {url}. HTTP status is {response.status}. "
OSError: Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
2022-03-15 09:24:53,106 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - NETWORK - Unexpected error while fetching account updates.
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 585, in _status_polling_loop
    await safe_gather(
  File "/home/hummingbot/hummingbot/core/utils/async_utils.py", line 22, in safe_gather
    return await asyncio.gather(*args, **kwargs)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 645, in _update_order_status
    raise response
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 373, in _api_request
    raise IOError(f"Error calling {url}. HTTP status is {response.status}. "
OSError: Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
2022-03-15 09:24:53,106 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - WARNING - Could not fetch account updates from BitMart. Check API key and network connection.
2022-03-15 09:24:53,608 - 1 - hummingbot.core.api_throttler.async_request_context_base - INFO - API rate limit on spot/v1/order_detail (50 calls per 1s) has almost reached. Limits used is 50 in the last 1 seconds
2022-03-15 09:24:54,001 - 1 - hummingbot.strategy.pure_market_making.pure_market_making - INFO - (FIRO-USDT) Creating 2 ask orders at (Size, Price): ['5E+2 FIRO, 3.89 USDT', '6E+2 FIRO, 3.94 USDT']
2022-03-15 09:24:54,001 - 1 - hummingbot.strategy.pure_market_making.pure_market_making - INFO - (FIRO-USDT) Creating 2 ask orders at (Size, Price): ['5E+2 FIRO, 3.89 USDT', '6E+2 FIRO, 3.94 USDT']
2022-03-15 09:24:54,130 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - INFO - Created LIMIT_MAKER SELL order hummingbot-S-FIRO-USDT-1647336294001838 for 500.00 FIRO-USDT.
2022-03-15 09:24:54,140 - 1 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT_MAKER", "trading_pair": "FIRO-USDT", "amount": "500.00", "price": "3.89", "order_id": "hummingbot-S-FIRO-USDT-1647336294001838", "exchange_order_id": null, "leverage": 1, "position": "NIL", "ev>
2022-03-15 09:24:54,148 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - INFO - Created LIMIT_MAKER SELL order hummingbot-S-FIRO-USDT-1647336294001905 for 600.00 FIRO-USDT.
2022-03-15 09:24:54,155 - 1 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT_MAKER", "trading_pair": "FIRO-USDT", "amount": "600.00", "price": "3.94", "order_id": "hummingbot-S-FIRO-USDT-1647336294001905", "exchange_order_id": null, "leverage": 1, "position": "NIL", "ev>
2022-03-15 09:24:54,264 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - ERROR - Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 585, in _status_polling_loop
    await safe_gather(
  File "/home/hummingbot/hummingbot/core/utils/async_utils.py", line 22, in safe_gather
    return await asyncio.gather(*args, **kwargs)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 645, in _update_order_status
    raise response
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 373, in _api_request
    raise IOError(f"Error calling {url}. HTTP status is {response.status}. "
OSError: Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
2022-03-15 09:24:54,264 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - NETWORK - Unexpected error while fetching account updates.
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 585, in _status_polling_loop
    await safe_gather(
  File "/home/hummingbot/hummingbot/core/utils/async_utils.py", line 22, in safe_gather
    return await asyncio.gather(*args, **kwargs)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 645, in _update_order_status
    raise response
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 373, in _api_request
    raise IOError(f"Error calling {url}. HTTP status is {response.status}. "
OSError: Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
2022-03-15 09:24:54,264 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - WARNING - Could not fetch account updates from BitMart. Check API key and network connection.
2022-03-15 09:24:56,246 - 1 - hummingbot.connector.exchange.bitmart.bitmart_exchange - ERROR - Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist
Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 585, in _status_polling_loop
    await safe_gather(
  File "/home/hummingbot/hummingbot/core/utils/async_utils.py", line 22, in safe_gather
    return await asyncio.gather(*args, **kwargs)
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 645, in _update_order_status
    raise response
  File "/home/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_exchange.py", line 373, in _api_request
    raise IOError(f"Error calling {url}. HTTP status is {response.status}. "
OSError: Error calling https://api-cloud.bitmart.com/spot/v1/order_detail. HTTP status is 400. Message: order not exist

logs_hummingbot.log
2022-03-15 09:24:40,358 - 1 - hummingbot.core.utils.trading_pair_fetcher - ERROR - Connector k2 failed to retrieve its trading pairs. Trading pairs autocompletion won't work.
Traceback (most recent call last):
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/connector.py", line 969, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore  # noqa
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/asyncio/base_events.py", line 1050, in create_connection
    transport, protocol = await self._create_connection_transport(
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/asyncio/base_events.py", line 1080, in _create_connection_transport
    await waiter
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/asyncio/sslproto.py", line 529, in data_received
    ssldata, appdata = self._sslpipe.feed_ssldata(data)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/asyncio/sslproto.py", line 189, in feed_ssldata
    self._sslobj.do_handshake()
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/ssl.py", line 944, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1108)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/hummingbot/hummingbot/core/utils/trading_pair_fetcher.py", line 64, in call_fetch_pairs
    self.trading_pairs[exchange_name] = await fetch_fn
  File "/home/hummingbot/hummingbot/connector/exchange/k2/k2_api_order_book_data_source.py", line 62, in fetch_trading_pairs
    async with client.get(f"{constants.REST_URL}{constants.GET_TRADING_PAIRS}", timeout=10) as response:
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/client.py", line 1117, in __aenter__
    self._resp = await self._coro
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/client.py", line 520, in _request
    conn = await self._connector.connect(
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/connector.py", line 535, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/connector.py", line 892, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/connector.py", line 1051, in _create_direct_connection
    raise last_exc
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/connector.py", line 1020, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "/home/hummingbot/miniconda3/envs/hummingbot/lib/python3.8/site-packages/aiohttp/connector.py", line 971, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host api-q2.fourwordsalluppercase.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1108)')]

Are there any updates on this?

Hello, any updates?

Hi @reubenyap, @cossoft this has been reported to Bitmart's maintainer and he will look into it

Hi @reubenyap, @cossoft this has been reported to Bitmart's maintainer and he will look into it

Hello,
Whom did you write on Bitmart? I know their technical guys and I can push them to solve this.
BR,
Cosmin

Hi I'm dealing with Felix Zhi, I think it's an issue on the connector though.
I think it's in relation to the WS public channel address:
New WS subscription address.
Public Channel wss://ws-manager-compress.bitmart.com/api?protocol=1.1
Private Channel wss://ws-manager-compress.bitmart.com/user?protocol=1.1
Note: WS public channel address wss://ws-manager-compress.bitmart.com?protocol=1.1 will be taken down on 2022-02-28 UTC time. The new address is wss://ws-manager-compress.bitmart.com/api?protocol=1.1

Hi I'm dealing with Felix Zhi, I think it's an issue on the connector though.
I think it's in relation to the WS public channel address:
New WS subscription address. Public Channel wss://ws-manager-compress.bitmart.com/api?protocol=1.1 Private Channel wss://ws-manager-compress.bitmart.com/user?protocol=1.1
Note: WS public channel address wss://ws-manager-compress.bitmart.com?protocol=1.1 will be taken down on 2022-02-28 UTC time. The new address is wss://ws-manager-compress.bitmart.com/api?protocol=1.1

They said you can update the code with this new addresses.

I believe it's in relation to this
https://developer-pro.bitmart.com/en/spot/#2022-01-20
and I can see the wrong WS URL here:
https://github.com/hummingbot/hummingbot/blob/cec60a50629707b1bae73122ab4bd38339a35a32/hummingbot/connector/exchange/bitmart/bitmart_constants.py#L8

Ok..can you correct it?

I'm not a coder and am unable to test it unfortunately.

hi @reubenyap I tried to change the WSS_URL to wss://ws-manager-compress.bitmart.com/api?protocol=1.1 and start a simple PMM strategy but still getting the unexpected errors on the client. I also informed our CMs about this update for Bitmart to follow up with the maintainer so they can fix it.
Here's a recording what I did earlier:
https://user-images.githubusercontent.com/73840223/162408404-c0e2eb12-6968-4d0f-a0a0-6def13f89834.mp4

Hi!
I also tried to change the wss link but now the error is this one:
{"errorMessage":"Invalid channel param","errorCode":"90004","event":"subscribe"}

Hi!
I also changed the wss link with the new one but now the error is this one:
2022-04-09 09:20:05,466 - 1215389 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - INFO - Authenticating to User Stream... 2022-04-09 09:20:05,764 - 1215389 - hummingbot.core.web_assistant.connections.ws_connection - INFO - Received message: {"errorMessage":"Server Error","errorCode":"95000","event":"login"} 2022-04-09 09:20:05,764 - 1215389 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - ERROR - WebSocket login errored with message: Server Error NoneType: None 2022-04-09 09:20:05,765 - 1215389 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - ERROR - Error occurred when authenticating to user stream. Traceback (most recent call last):   File "/home/iulian/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_user_stream_data_source.py", line 82, in _authenticate     raise ConnectionError ConnectionError 2022-04-09 09:20:05,765 - 1215389 - hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - ERROR - Unexpected error with BitMart WebSocket connection. Retrying after 30 seconds...

And another problem is that the new wss link is returning a not so valid json message. It' using ' instead of "
{     'data': [         {             'price': '0.000091',             's_t':<PHONE_NUMBER>,             'side': 'sell',             'size': '211756',             'symbol': 'DODGE_USDT'         },

Are there any updates on this?

Hi @reubenyap, I will talk with the team. Seems like the maintainer is not responsive with our request. We will update you when the team talks to a new maintainer.

@JeremyKono Thank you, we are all looking forward

Any updates on this ?

We're still looking for a maintainer for Bitmart, no updates yet @reubenyap

Understand a new maintainer has been found has there been any progress?

I have the other errors resolved in a PR https://github.com/hummingbot/hummingbot/pull/5347
 File "/Users/phatjay/Development/hummingbot/hummingbot/connector/exchange/bitmart/bitmart_api_order_book_data_source.py", line 173, in listen_for_trades     messages = ujson.loads(messages) TypeError: Expected String or Unicode
When I log messages it is a "valid" JSON object - despite when printing out it uses single quotes.

I am getting also
hummingbot.connector.exchange.bitmart.bitmart_api_user_stream_data_source - ERROR - WebSocket login errored with message: Server Error
I have inspected the code and managed to fix the orderbook endpoint, but still receiving Internal Server Error 95000

I have gone through and fixed this issue on my repo fork. https://github.com/hummingbot/hummingbot/pull/5353 if someone can look into this that would be great. Thanks.

I have gone through and fixed this issue on my repo fork. #5353 if someone can look into this that would be great. Thanks.

I am testing it, I was missing the damned /user path in my fix. Thanks for sharing this

I have gone through and fixed this issue on my repo fork. #5353 if someone can look into this that would be great. Thanks.

it works fine

The fix for this issue has been applied on the release of Hummingbot version 1.5


Update

Hi @Kulbear there's a "Residual Networks - v2.ipynb" on Coursera, can you please update this repository accordingly ? Thanks !

@scamianbas Hi, this repo is just for reference purposes and I am not going to provide all solutions to pass the course.  AND... I didn't see any difference between this two version in the coding part.


support define log level

Currently, if the user wants to output more logging level logs other than INFO, it should provide the log settings for different pulsar function runtimes, like for java, it should provide a replacement of kubernetes_instance_log4j2.xml config file.
It will be useful if function-mesh provides a runtime level setting logLevel and let the controller update the log level of each function instance.

proposal
Logging module in Runtimes
Java
library: log4j https://logging.apache.org/log4j/2.x/manual/configuration.html
supported logging levels:

off
trace
debug
info
warn
error
fatal
all

Python
library: logger https://docs.python.org/3/howto/logging.html
supported logging levels:

debug
info
warning
error
critical

Golang
library: logrus https://github.com/sirupsen/logrus
supported logging levels:

panic
fatal
error
warning
info
debug
trace

Implementation in FunctionMesh
I propose to place the log level configuration entry under the Runtime field.
type FunctionSpec struct {
    ...
    Runtime `json:",inline"`
    ...
}

It will look like:
Java
apiVersion: compute.functionmesh.io/v1alpha1
kind: Function
metadata:
  name: function-sample
  namespace: default
spec:
  java:
    logLevel: "debug"

Python
apiVersion: compute.functionmesh.io/v1alpha1
kind: Function
metadata:
  name: function-sample
  namespace: default
spec:
  python:
    logLevel: "debug"

Golang
apiVersion: compute.functionmesh.io/v1alpha1
kind: Function
metadata:
  name: function-sample
  namespace: default
spec:
  golang:
    logLevel: "debug"

Implementation of logging level settings in Runtimes
Java

Option 1
Mount the configmap volume associated with the kubernetes_instance_log4j.xml file for Function statefulsets via FunctionMesh, and then we can update kubernetes_instance_log4j.xml based on the Function Spec.

Python

Option 1
Add the --logging_level argument to python_instance_main.py to pass in the logging level, and add the following handle logic to log.py to set the logging level for each handlers.
def init_logger(level, logfile, logging_config_file):
    global Log
    # get log file location for function instance
    os.environ['LOG_FILE'] = logfile
    logging.config.fileConfig(logging_config_file)
    Log = logging.getLogger()
    Log.setLevel(level)

    # set logging level for each handler
    for h in Log.handlers:
        h.setLevel(level)

Option 2
Use only /pulsar/conf/functions-logging/console_logging_config.ini for logging configuration；Mount the configmap volume associated with the console_logging_config.ini file for Function statefulsets via FunctionMesh, and then we can update console_logging_config.ini based on the Function Spec; Remove the following handle logic from log.py:
def init_logger(level, logfile, logging_config_file):
    global Log
    # get log file location for function instance
    os.environ['LOG_FILE'] = logfile
    logging.config.fileConfig(logging_config_file)
    Log = logging.getLogger()
    # Log.setLevel(level) # remove this line

Go

Option 1
Pass in the logging level via environment variable, such as setting LOGGING_LEVEL, then add parsing of the LOGGING_LEVEL environment variable in log.go, , and finally set the logging level.
const (
	logLevel             = "LOGGING_LEVEL"
  defaultLogLevel      = log.InfoLevel
)

func init() {
	if levelStr := os.Getenv(logLevel); levelStr != "" {
		if level, err := log.ParseLevel(levelStr); err == nil {
			log.SetLevel(level)
		}
	}
	log.SetLevel(defaultLogLevel)
	log.AddHook(&contextHook{})
	log.SetFormatter(&TextFormatter{})
}

PTAL when you have time @streamnative/serverless

Some questions here:

do we need to unify the options of the log level for all languages?
https://github.com/apache/pulsar/pull/16939 is in Pulsar 2.11, so the log level support for python and golang should only applied to 2.11+, right?

do we need to unify the options of the log level for all languages?

I have adjusted the Spec as shown below:
spec:
  java:
    log:
      level: "debug" # Log level
      logConfig: "config-file" # ConfigMap name

And the following is the design of the log level options:
const (
	// Off indicates no logging and is only available for the Java runtime
	Off LogLevel = "off"
	// Trace indicates the detailed debugging purposes, available for Python, Go and Java runtime
	Trace LogLevel = "trace"
	// Debug indicates the debugging purposes, available for Python, Go and Java runtime
	Debug LogLevel = "debug"
	// Info indicates the normal purposes, available for Python, Go and Java runtime
	Info LogLevel = "info"
	// Warn indicates the unexpected purposes, available for Python, Go and Java runtime
	Warn LogLevel = "warn"
	// Error indicates the errors have occurred, available for Python, Go and Java runtime
	Error LogLevel = "error"
	// Fatal indicates the server is unusable, available for Python, Go and Java runtime
	Fatal LogLevel = "fatal"
	// All indicates that all logs are logged and is only available for the Java runtime
	All LogLevel = "all"
	// Panic indicates the server is panic and is only available for the Go runtime
	Panic LogLevel = "panic"
)

[feature][function] add the ability to customize logging level for Go & Python functions apache/pulsar#16939 is in Pulsar 2.11, so the log level support for python and golang should only applied to Pulsar 2.11+, correct?

Yes, I was just about to discuss this...
I have some plans:

For the 2.11+ function images, we can apply logging levels and logging config directly
For the 2.11- function images, we need to hack the Golang or Python function code during controller processing before applying the logging level and logging config**

or do we have any guidelines to follow?


Document behaviour of mixed derivatives

It might exist, but I couldn't find any examples on how ordering of derivatives act, for scalar functions with multiple vector inputs. It would be nice if this could exist in The Autodiff Cookbook or Advanced Automatic Differentiation in JAX.
Here's an example to explain what I mean:
from jax import jacfwd, grad
from jax import numpy as jnp

def M1(x, y):
    return x[0]*y[0]*jnp.array(\
        [[1, 2],
         [3, 4]], dtype=jnp.float64)

def M2(x):
    return x[0]*x[0]*jnp.array(\
        [[0.1, 0.2],
         [0.3, 0.4]], dtype=jnp.float64)

def f(x: jnp.ndarray, y: jnp.ndarray):
    return jnp.squeeze(jnp.transpose(x) @ M1(x, y) @ y + jnp.transpose(y) @ y - jnp.transpose(y) @ M2(x) @ x)

x = jnp.array([[4],[2]], dtype=jnp.float64) # full dimensional inputs
y = jnp.array([[6],[9]], dtype=jnp.float64) # full dimensional  inputs
xSqzd = jnp.squeeze(jnp.array([[4],[2]], dtype=jnp.float64)) # squeezed inputs
ySqzd = jnp.squeeze(jnp.array([[6],[9]], dtype=jnp.float64)) # squeezed inputs

gradX = grad(f, 0)
jacX = jacfwd(f, 0)
gradY = grad(f, 1)
jacY = jacfwd(f, 1)

# Printing
def printTheStuff(gradX, jacX, gradY, jacY, x, y):
    print("gradX\n", gradX(x, y), "shape:", gradX(x, y).shape)
    print("jacX\n", jacX(x, y), "shape:", jacX(x, y).shape)
    print("gradY\n", gradY(x, y), "shape:", gradY(x, y).shape)
    print("jacY\n", jacY(x, y), "shape:", jacY(x, y).shape)
    print("\njacfwd(gradX, 1)\n", jacfwd(gradX, 1)(x, y), "shape:", jacfwd(gradX, 1)(x, y).shape)
    print("\njacfwd(jacX, 1)\n", jacfwd(jacX, 1)(x, y), "shape:", jacfwd(jacX, 1)(x, y).shape)
    print("\njacfwd(gradY, 0)\n", jacfwd(gradY, 0)(x, y), "shape:", jacfwd(gradY, 0)(x, y).shape)
    print("\njacfwd(jacY, 0)\n", jacfwd(jacY, 0)(x, y), "shape:", jacfwd(jacY, 0)(x, y).shape)

# Without squeezed inputs
print("------- No squeeze ---------------------------------")
printTheStuff(gradX, jacX, gradY, jacY, x, y)
print("----------------------------------------------------")

print("\n\n------- Reshaped (2, 2) ----------------------------")
print("jnp.reshape(jacfwd(gradX, 1), (2,2))\n", jnp.reshape(jacfwd(gradX, 1)(x, y), (2,2)))
print("\njnp.reshape(jacfwd(jacX, 1), (2,2))\n", jnp.reshape(jacfwd(jacX, 1)(x, y), (2,2)))
print("\njnp.reshape(jacfwd(gradY, 0), (2,2))\n", jnp.reshape(jacfwd(gradY, 0)(x, y), (2,2)))
print("\njnp.reshape(jacfwd(jacY, 0), (2,2))\n", jnp.reshape(jacfwd(jacY, 0)(x, y), (2,2)))
print("----------------------------------------------------")

# With  squeezed inputs
print("\n\n------- Squeeze ------------------------------------")
printTheStuff(gradX, jacX, gradY, jacY, xSqzd, ySqzd)
print("----------------------------------------------------")

The output of the prints is then:

Where we can see that the ordering of the derivatives taken has the effect of transposing the result.
Since jacobians, gradients, and total derivatives (and their notation) is already easy to make mistakes with, it would be nice if the documentation could include examples of this kind of thing (since it already includes the normal hessian case), with the correponding math given alongside.
Also, although it doesn't matter here, it's notable that the jax jacobian is not the transpose of the jax gradient of the same (scalar) function, since that's a quite common convention.
I'm sure other linear-algebraically challenged individuals out there would also appreciate this.
And if anyone else is often confused by why order matters:

Hi, thanks for the question. It looks like you explored this pretty deeply!
Do you have an idea of specifically what you would say and where in the documentation you would say it to clarify this?
For the record, I don't think this is fundamentally an issue of how JAX treats mixed derivatives, but rather how JAX transformations compose. If you have a function $f: \mathbb{R}^N \to \mathbb{R}^M$, the signature of the JVP will have signature $f^\prime: \mathbb{R}^N \to \mathbb{R}^{(N, M)}$. I think everything else about the shape of mixed derivatives follows logically from that. And that is true whatever f represents: a simple function, a derivative w.r.t. its first argument, a derivative w.r.t its second argument, etc.

Yes, you are right about the composition of JAX transformations of course, and I agree that everything follows logically. For some context, I was at first confused not because of anything to do with JAX, but because I found the math notation $\frac{\partial^2{\cal L}}{\partial \mathbf{x} \partial \dot{\mathbf{x}}}$ (derivatives w.r.t. x and x_dot of lagrangian) to be a bit ambiguous. Since it's at least the case for scalars, my (misplaced) gut instinct was that the order of derivatives shouldn't matter, in which case it's fine. But after looking into it, this is not the case.
Now, to be clear, this is a skill issue :), but in:
https://jax.readthedocs.io/en/latest/jax-101/04-advanced-autodiff.html#higher-order-derivatives
chaininig of grad() calls is shown for the single-variable case, and how the Jacobian of the gradient computes the Hessian is also shown and verified. Below the Hessian case is where one could add a similar example, but with the Jacobian being taking w.r.t. a different vector than the gradient was taken against (and show how the ordering matters). Since one is the transpose of the other in something that, at least to me, at first glance seems like it should commute, it feels like an easy pitfall.
That's pretty much my 2 cents, but I understand that it might be too specific. Anyway, thanks for the reply!