BuildError on iOS and How do i get supporting bitcode binary in iOS

Simular issue
#66 BuildError on IOS 11
#74 Build using modern Xcode
chromium bitcode command
enable_ios_bitcode link
Question
Hello
I need to build stellite for bitcode in iOS
Could you guild me any solution for bitcode?
And, I tried to build using stellite > tools > build.py
but, It failed T T
Please give me some guide
My development environment is XCode 11, MacOS Catalina
Last login: Thu Oct 17 10:49:32 on ttys000
AL01166682:~ user$ cd /Users/user/Desktop/stellite
AL01166682:stellite user$ ./tools/build.py --target-platform=ios --target stellite_http_client build
Running: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git /Users/user/Desktop/stellite/third_party/depot_tools
Cloning into '/Users/user/Desktop/stellite/third_party/depot_tools'...
remote: Sending approximately 27.22 MiB ...
remote: Counting objects: 2, done
remote: Finding sources: 100% (2/2)
remote: Total 35324 (delta 24564), reused 35324 (delta 24564)
Receiving objects: 100% (35324/35324), 27.22 MiB | 3.11 MiB/s, done.
Resolving deltas: 100% (24564/24564), done.
Running: /Users/user/Desktop/stellite/third_party/depot_tools/fetch --nohooks chromium
Running: gclient root
WARNING: Your metrics.cfg file was invalid or nonexistent. A new one will be created.

Running: git submodule foreach 'git config -f $toplevel/.git/config submodule.$name.ignore all'
Running: git config --add remote.origin.fetch '+refs/tags/*:refs/tags/*'
Running: git config diff.ignoreSubmodules all
Running: /Users/user/Desktop/stellite/third_party/depot_tools/gclient sync --jobs 32
Syncing projects: 100% (106/106), done.

WARNING: 'src/third_party/lighttpd' is no longer part of this client.
It is recommended that you manually remove it or use 'gclient sync -D' next time.

WARNING: 'src/chrome/installer/mac/third_party/xz/xz' is no longer part of this client.
It is recommended that you manually remove it or use 'gclient sync -D' next time.
Hook 'vpython src/build/landmines.py' took 173.71 secs
Running hooks:   6% ( 5/79) nacltools
________ running 'vpython src/build/download_nacl_toolchains.py --mode nacl_core_sdk sync --extract' in '/Users/user/Desktop/stellite/third_party/chromium_ios'
INFO: --Syncing nacl_arm_glibc to revision 053185d68ed3b96640f15c4ae457b1ff373c6cac--
INFO: Downloading package archive: binutils_arm_x86_64_apple_darwin.tgz (1/6)
INFO: Downloading package archive: gcc_arm_x86_64_apple_darwin.tgz (2/6)
package_version: Could not download URL (https://storage.googleapis.com/nativeclient-once/object/gcc_arm_x86_64_apple_darwin_8fafa63c02d585ed41994ac603472106f84d584d.tgz): ('The read operation timed out',)
Error: Command 'vpython src/build/download_nacl_toolchains.py --mode nacl_core_sdk sync --extract' returned non-zero exit status 1 in /Users/user/Desktop/stellite/third_party/chromium_ios
Hook 'vpython src/build/download_nacl_toolchains.py --mode nacl_core_sdk sync --extract' took 950.32 secs
Traceback (most recent call last):
  File "./tools/build.py", line 2037, in <module>
    sys.exit(main(sys.argv[1:]))
  File "./tools/build.py", line 2014, in main
    build.fetch_chromium()
  File "./tools/build.py", line 746, in fetch_chromium
    return self.fetch_toolchain()
  File "./tools/build.py", line 1571, in fetch_toolchain
    self.gclient_sync()
  File "./tools/build.py", line 1018, in gclient_sync
    self.execute(command, cwd=self.chromium_path)
  File "./tools/build.py", line 723, in execute
    raise Exception('command execution are failed')
Exception: command execution are failed
AL01166682:stellite user$

Build environment : XCode8, MacOS High sierra

Hey @suhchansu I just want to that how you solved this error
I am getting the kind of same error while build Brave Browser
TBH new to open source not sure why this error occured

My development environment is : macOS Big sur 11.5.2 , macbook air (with apple chip )

您好，邮件已经收到，我会尽快回复您！祝您开心...


#411 - Apply @jacobEAdamson's suggested changes

@theothertom @ianw What is the current status of this PR?

@keachi unfortunately, I've moved on to a new project and am no-longer in a position to test anything around this. Thinking back, I raised it as a patch posted in an issue comment was working for us, and it felt potentially useful to merge.
Given my lack of context, it's perhaps better for someone closer to https://github.com/pytest-dev/pytest-testinfra/issues/411 to raise a new PR that takes into account the last few years of changes.


Consider adding methods under field of contract object

Currently the API attaches functions for each function in the ABI based on name, but this can cause issues if the function name overlaps with one of the functions we currently do or will support in the future.
Might be the safest to just have a methods field on the contract. Worth getting input from someone with more JS exp than me.
Benefits:

Improves typing for the AnyContract object. Currently there are no types available since the wildcard on the fields of the contract overwrites the TS types
Avoids overlap and potentially buggy behaviour

Cons:

Can't call the method on the contract object directly (slightly less ergonomic):

contract.add([1, 2], [3, 4], 5);

// Would be
contract.methods.add([1, 2], [3, 4], 5);

I agree with this. As a case study, we can look at the two most popular web3 client libraries in JS;
web3js takes the contract.methods.add approach, returning an object with send (view) and call (change) methods. https://web3js.readthedocs.io/en/v1.8.0/web3-eth-contract.html#id28

let sum = await contract.methods.add([1, 2], [3, 4]).call();

Whereas ethersjs takes the contract.add approach, making a view / change call depending on the method definition in the ABI. https://docs.ethers.io/v5/api/contract/example/#erc20-meta-methods

let sum = await contract.add([1, 2], [3, 4]);

As for how they avoid collisions, since Solidity allows function overloading, both of these libraries also provide the raw function signatures.
web3js

let sum = await contract.methods.add([1, 2], [3, 4]).call()
let sum = await contract.methods['add(uint256[], uint256[])']([1, 2], [3, 4]).call()
let sum = await contract.methods['0x58cf5f10']([1, 2], [3, 4]).call()

And finally, since ethersjs injects the methods directly into the Contract object, it simply doesn't add methods that already exist in the Contract object or have overrides in the ABI.

let sum = await contract.add([1, 2], [3, 4])
let sum = await contract['add(uint256[], uint256[])']([1, 2], [3, 4])
let sum = await contract['0x58cf5f10']([1, 2], [3, 4])

Personally, I think the contract.methods._.{view,call} flow is preferable. Especially since our case is even less generic.


[WFLY-19480] Upgrade WildFly Core to 25.0.0.Beta5

Jira issue: https://issues.redhat.com/browse/WFLY-19480

Tag: https://github.com/wildfly/wildfly-core/releases/tag/25.0.0.Beta5
Diff: https://github.com/wildfly/wildfly-core/compare/25.0.0.Beta4...25.0.0.Beta5

        Feature Request

[WFCORE-6503] -         Add support for deployments with YAML extension

        Bug

[WFCORE-6857] -         Unmanaged deployment cannot be deployed using yaml without calling deploy in CLI

[WFCORE-6865] -         DefaultResourceAddDescriptionProvider omits the stability of the operation from its generated description

        Task

[WFCORE-6115] -         Remove deprecated items in key server kernel modules

[WFCORE-6807] -         Prune deprecations from wildfly-service and wildfly-subsystem

[WFCORE-6863] -         Add ServiceDescriptor convenience method for adding a requirement to a RuntimeCapability

[WFCORE-6872] -         Add forRemoval=true|false attributes to @Deprecated items in key server kernel modules

        Component Upgrade

[WFCORE-6860] -         Upgrade XNIO to 3.8.16.Final

[WFCORE-6861] -         Upgrade JBoss Remoting to 5.0.29.Final

[WFCORE-6862] -         CVE-2024-6162 CVE-2024-27316 Upgrade Undertow to 2.3.14.Final

[WFCORE-6867] -         Upgrade WildFly Elytron to 2.5.0.CR1

        Enhancement

[WFCORE-6868] -         Update tests that use CAGenerationTool to use it to load KeyStores etc..

Thanks @yersan


added options, promise method, ability to run sync mode, and much more

This is very important to me and I have spent a lot if time on this. Please proceed with a more then usual amount of care.
Added

options have been added to the method .files

options.sync=true allows the entire process to run Synchronously
options.shortName=true works just like shortName for other methods
options.recursive=false disables recursion like other methods

added type 'combine' that works like the argument combine of other methods
promiseFiles method that uses native Promises
tests to back-up all my work
readme.md has been advanced to be far more helpful

Working on a releasing a new version with your PR to NPM soon. Thanks.

FYI tested with Bluebird, and it works great. Can't wait for NPM release.

Fantastic, much appreciate the comment. Before this goes live to NPM, the README.md Table of Contents needs to be realigned.
ALSO, I would like to add options{shortName:'relative'} as options{shortName:true} is just the last names of all items which is not terribly helpful.
I actually have time right now, I will get to the above mentioned now.

New pull request has been created with some fantastic material. Lets get this one on NPM!
#43 43


HUD color

Path being used is "C:\Users\Jon\AppData..."

Yep, I spotted it just as I posted 1.2.1; Fixed in 1.2.2.


dev: metadata struct

Current Behavior
Right now the metadata struct is in every struct SpotMedian, Twap.
struct Metadata {
    bytes32 feedId;
    uint64 timestamp;
    uint16 numberOfSources;
    uint8 decimals;
}

struct SpotMedian {
    Metadata metadata;
    uint256 price;
    uint256 volume;
}

struct TWAP {
    Metadata metadata;
    uint256 twapPrice;
    uint256 timePeriod;
    uint256 startPrice;
    uint256 endPrice;
    uint256 totalVolume;
    uint256 numberOfDataPoints;
}
...

Expected Behavior
struct ParsedData {
    Metadata metadata,
    FeedType dataType;
    SpotMedian spot;
    TWAP twap;
    RealizedVolatility rv;
    Options options;
    Perp perp;
}

struct SpotMedian {
    uint256 price;
    uint256 volume;
}

Working on this.
Setting up the metadata on the parsedData will have an impact on the storage configuration. Currently, we are storing the data feeds like this:
    mapping(bytes32 => SpotMedian) public spotMedianFeeds;
    mapping(bytes32 => TWAP) public twapFeeds;
    mapping(bytes32 => RealizedVolatility) public rvFeeds;
    mapping(bytes32 => Options) public optionsFeeds;
    mapping(bytes32 => Perp) public perpFeeds;

and before updating a given data feed, we consider the associated stored feed and compare if the new publish time is greater than the stored one, like this:
if (publishTime > spotMedianFeeds[feedId].metadata.timestamp) {
               spotMedianFeeds[feedId] = parsedData.spot;
               emit EventsLib.SpotMedianUpdate(feedId, publishTime, parsedData.spot);
           }

If we choose to remove the metadata from the feed level, we will have to stored the ParsedData instead of spotMedianFeeds/twapFeeds/rvFeeds, ..., which is fine, but will require some additional work from the user if they want to call directly the getter. An alternative solution could be to define a new storage slot for publish_time

Working on this. Setting up the metadata on the parsedData will have an impact on the storage configuration. Currently, we are storing the data feeds like this:
    mapping(bytes32 => SpotMedian) public spotMedianFeeds;
    mapping(bytes32 => TWAP) public twapFeeds;
    mapping(bytes32 => RealizedVolatility) public rvFeeds;
    mapping(bytes32 => Options) public optionsFeeds;
    mapping(bytes32 => Perp) public perpFeeds;

and before updating a given data feed, we consider the associated stored feed and compare if the new publish time is greater than the stored one, like this:
if (publishTime > spotMedianFeeds[feedId].metadata.timestamp) {
               spotMedianFeeds[feedId] = parsedData.spot;
               emit EventsLib.SpotMedianUpdate(feedId, publishTime, parsedData.spot);
           }

If we choose to remove the metadata from the feed level, we will have to stored the ParsedData instead of spotMedianFeeds/twapFeeds/rvFeeds, ..., which is fine, but will require some additional work from the user if they want to call directly the getter.
 This can lead to errors on the side of the user (if they call another feed, it will not panic but return an entry full of 0.
An alternative solution could be to define a new storage slot for publish_time, where for a given feedId, we store the publish time, that will be updated at the same time as the entry itself.

Makes sense, let's keep it as it right now and revisit in the future if it really becomes a bottleneck


GetBuildVersion task fails with System.MissingMethodException when building with Mono MSBuild on macOS

Version information

Component
Version

Nerdbank.GitVersioning
2.3.125

Mono.Framework
5.16.0

Visual Studio for Mac
7.8.2 (build 1)

MSBuild
16.0.40-preview+ge6c3a1f9e4

.NET Core SDK
2.2.104

macOS
10.14.3 (Mojave)

Repro Steps

Create a new .NET Standard class library in Visual Studio for Mac
Add the Nerdbank.GitVersioning NuGet package
Create a simple version.json file (see below)
Build > Build All (or msbuild /t:restore && msbuild from a Terminal outside VSMac)

(Note: I also tried installing the nbgv tool and doing nbgv install.. the same error/behaviour surfaces. I don't think this is a solution/project configuration issue.)
Expected behaviour
The build is successful 😄
Actual behaviour
Build error 😢

System.MissingMethodException: Method not found: void Newtonsoft.Json.Converters.StringEnumConverter.set_NamingStrategy

Curiously, when using the .NET Core CLI toolchain then the build succeeds (dotnet build rather than msbuild, the latter being what VSMac uses).
Build output
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018: The "Nerdbank.GitVersioning.Tasks.GetBuildVersion" task failed unexpectedly.
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018: System.MissingMethodException: Method not found: void Newtonsoft.Json.Converters.StringEnumConverter.set_NamingStrategy(Newtonsoft.Json.Serialization.NamingStrategy)
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Nerdbank.GitVersioning.VersionFile.TryReadVersionJsonContent (System.String jsonContent) [0x00000] in <60a3cf7da8fe4c9d80305de7a36e73b4>:0
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Nerdbank.GitVersioning.VersionFile.GetVersion (LibGit2Sharp.Commit commit, System.String repoRelativeProjectDirectory) [0x000eb] in <60a3cf7da8fe4c9d80305de7a36e73b4>:0
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Nerdbank.GitVersioning.VersionOracle..ctor (System.String projectDirectory, LibGit2Sharp.Repository repo, LibGit2Sharp.Commit head, Nerdbank.GitVersioning.ICloudBuild cloudBuild, System.Nullable`1[T] overrideBuildNumberOffset, System.String projectPathRelativeToGitRepoRoot) [0x000a8] in <60a3cf7da8fe4c9d80305de7a36e73b4>:0
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Nerdbank.GitVersioning.VersionOracle.Create (System.String projectDirectory, System.String gitRepoDirectory, Nerdbank.GitVersioning.ICloudBuild cloudBuild, System.Nullable`1[T] overrideBuildNumberOffset, System.String projectPathRelativeToGitRepoRoot) [0x0001f] in <60a3cf7da8fe4c9d80305de7a36e73b4>:0
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Nerdbank.GitVersioning.Tasks.GetBuildVersion.ExecuteInner () [0x000c5] in <b9250c5c0ff64d0facfbd2c9542bc589>:0
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at MSBuildExtensionTask.ContextAwareTask.Execute () [0x0005e] in <b9250c5c0ff64d0facfbd2c9542bc589>:0
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00023] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-06/external/bockbuild/builds/msbuild-15/src/Build/BackEnd/TaskExecutionHost/TaskExecutionHost.cs:573
/Users/<user>/.nuget/packages/nerdbank.gitversioning/2.3.125/build/Nerdbank.GitVersioning.targets(63,5): error MSB4018:   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x001f6] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-06/external/bockbuild/builds/msbuild-15/src/Build/BackEnd/Components/RequestBuilder/TaskBuilder.cs:784
    0 Warning(s)
    1 Error(s)

version.json
{
  "$schema": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json",
  "version": "1.0-beta",
  "publicReleaseRefSpec": [
    "^refs/heads/master$"
  ]
}

Project file
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Nerdbank.GitVersioning">
      <Version>2.3.125</Version>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>
</Project>

Solution file
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "netstandardlib", "netstandardlib\netstandardlib.csproj", "{B1FA5F49-E24B-4D73-9FA5-E961A67811CB}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{B1FA5F49-E24B-4D73-9FA5-E961A67811CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{B1FA5F49-E24B-4D73-9FA5-E961A67811CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{B1FA5F49-E24B-4D73-9FA5-E961A67811CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{B1FA5F49-E24B-4D73-9FA5-E961A67811CB}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
EndGlobal

If you use package version 2.3.38 then the issue does not reproduce, meaning that it is something that has changed since then to 2.3.125.

We are consistently getting this on our project ReactiveUI, downgrading to 2.3.38 is a workaround

I'm getting the same issue here (Building with Visual Studio for Mac).
The method it's complaining about looks to be a recent addition to Newtonsoft.Json, so possibly down to the package version being updated in https://github.com/AArnott/Nerdbank.GitVersioning/commit/c147f3723ec1f10e9ce1288be1a22cd7faa1a9f4#diff-574082642ffdd7d9cbcbe853e627a843 ? (sounds like it's trying to use the old version of the assembly that is missing the new method?)

I'm hitting the same issue.

@radical ^ I think we need to update the NewtonSoft.Json in Mono's MSBuild
ikdasm /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/msbuild/Current//bin/Newtonsoft.Json.dll | grep FileVersion
  .custom instance void [System.Runtime]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0B 39 2E 30 2E 31 2E 31 39 38 31 33 00 00 ) // ...<IP_ADDRESS>13..

If the newtonsoft.json assembly version changed (from 11 to 12) then why would mono's msbuild's version of newtonsoft.json matter? If it shipped 11 or older, and I want 12, I should still get 12. Unless either mono doesn't follow the same binding rules that the CLR does, or mono's msbuild.exe.config redirects 12 to 11, which would be bad.

@japj do you recall why you upgraded newtonsoft.json in #296? A simple solution might be to revert back to v11.

I'm noticing a bunch of bugs with the mono msbuild with it having one version which prevents the newer one being used. Eg https://github.com/NuGet/Home/issues/7956#issuecomment-480427346 for example required me to downgrade my nuget package version on a tool recently.

Yes, Mono's binding rules have historically been simpler. IIRC unless the relatively recently added strict mode is enabled, then only one dll with a particular name can be loaded regardless of version. The MSBuild.dll.config doesn't appear to have any binding redirects either.

That copy of Newtonsoft.Json.dll is being added as a dependency of the nuget build tasks. I can't update it separately.
re:strict-mode, it isn't enabled yet, but I'm testing regular builds with that.

@mhutch How do you enable the strict mode?

@glennawatson see https://github.com/mono/mono/issues/9225

What version of newtonsoft.json does mono msbuild ship? I don't mind downgrading for now to unblock folks.

Is it referencing the newer newtonsoft.json that causes issues, or just using the new NamingStrategy property? (the change in https://github.com/AArnott/Nerdbank.GitVersioning/pull/296/commits/845badf6be5a3faa56250839cfcdfb64110455c2) ?

Apparently mono has no problem with us referencing a higher assembly version. But I refuse to just remove our use of the property while continuing to reference the newer version, as that is a very fragile situation.

The FileVersion appears to be <IP_ADDRESS>13

@radical do we know why the NuGet tasks use such an old version?

Would someone who can repro the problem please help verify #362 is effective by downloading the nupkg from the PR build artifacts, install it, and see if it works?

that build seems to work for me in Visual Studio for Mac (8.2)

Works in our CI build environment that was failing before.

I had this issue with a Xamarin project build.  Thinking it might be the fix I needed, too.

Great. I'll merge and push to nuget.org then.

This is fixed in v2.3.183.


When generated code is regenerated via ctrl+shift+g Types in DLanguageTypes are missing

When the code in gen/ is regenerated the DLanguageTypes class is missing these static members:
IElementType KEYWORD = new DLanguageElementType("KEYWORD");
 IElementType OPERATOR = new DLanguageElementType("OPERATOR");
  IElementType NUMBER = new DLanguageElementType("NUMBER");
  IElementType STRING = new DLanguageElementType("STRING");
  IElementType PARENTHESES = new DLanguageElementType("PARENTHESES");
  IElementType BRACES = new DLanguageElementType("BRACES");
  IElementType BRACKETS = new DLanguageElementType("BRACKETS");
  IElementType COMMA = new DLanguageElementType("COMMA");
  IElementType SEMICOLON = new DLanguageElementType("SEMICOLON");
 IElementType DOT = new DLanguageElementType("DOT");
 IElementType MODULE_DEFINITION = new DLanguageElementType("MODULE_DEFINITION");
  IElementType FUNCTION_DEFINITION = new DLanguageElementType("FUNCTION_DEFINITION");

I was originally using the same lexer for the language and for the syntax highlighting - but I saw another plugin using a dedicated lexer for syntax highlighting so I switched to doing that thinking I would be able to get more detailed highlighting - however after I talked to the author he was going to back it out and use the single lexer as he didn't gain anything from it. I realised he is right and we should move back to using the one lexer for both. But I haven't had time to make those changes.

So for now I/We should just copy paste these types in every time the main parser and lexer are regenerated?

yes for now till we get rid of the other lexer

Ok. Closing then. Have you seen my pr?


feature request: youtube html5 player

Is it possible to allow html5 version of the youtube player, instead of using the flash version? This limits support for most mobile apple devices.
let me clarify: is there a way to include the ability to force users to use html5 by default.

By default I'm using the iframe option for embed. I think in this version youtube will handle the switch between flash and html. If it's possible to use html the embed will be in html5. If that is not possible the embed will be in flash.
Forcing that I think is not possible. At least when I was doing the helper I didn't found any param in for the youtube embed that would force that choice. Have you ever found something like that? If you have some example on it I could add it to the helper, no problem at all.
cheers.

from what i've researched this isn't possible to force a user to use the html5 version of the player. Issue Closed.


Rerolling leaves items currently in crafting window, or held on cursor

Picture taken immediately after rerolling via server command

The shovel's currently held on my cursor, that's why it's floating.

Thanks for this. I'm wondering if called entityPlayer.inventory.dropAllItems() will fix it.

Fixed in 047c939cc0ab505951a50f787b29540d6a08572b


[Najdorf] appliance comes with user manageiq but with no home

Discussed in https://github.com/ManageIQ/manageiq/discussions/22165

Originally posted by szajac01 October 12, 2022
Installing a new appliance Najdorf  from manageiq download shows that application runs now with the new manageiq user.
But this one has no home directory. Is it a wanted behavior ?
What about ansible configuration ? (Using embedded ansible)
How to configure it ? Running as root, as manageiq ?
Can someone give more explanations on how to deal with this change?
thank you

I've also seen that /opt/manageiq/manageiq-appliance/LINK/root directory has been removed on Najdorf

Closing as duplicate of https://github.com/ManageIQ/manageiq/discussions/22165


I removed maxLength and iOS chrome keyboard paste problem fixed

I removed maxLength and iOS chrome keyboard paste problem fixed

We have updated the code fixing iOS chrome paste issue.


Removing todo items or context doesn't reset todo counter

Consider repeatedly running:
todo rmctx pizza_list --force
todo add "Pepperoni" --context pizza_list
todo add "Margarita" --context pizza_list
todo add "Veggie" --context pizza_list
todo add "Supreme"  --context pizza_list
todo pizza_list

The todo item counter keeps incrementing forever.

Could also not find a way to delete all todos (reset the database) to achieve this (reset counter)...

Hello!
Yes, previously removed IDs can't be used by new tasks. One advantage of this behavior is that if you have any external reference to a removed task ID (i.e. you have written it down somewhere back when the task existed), there cannot be any ambiguity with a new task that would have "taken its place". I believe it is typical behavior in many applications not to allow the recycling of IDs.
Also, todo indeed does not remove its application files upon uninstalling it, and a re-installation will re-use the application files from the previous installation.
If you want to completely "reset" all todo data, you can first identify where it is located with the command:
todo --location

which will print the location of todo's data directory. You can then remove this directory with rm -r. I would advice making a backup of the directory beforehand just in case as the removal will of course be irreversible.

Well I think in this case that keeping the index makes sense if a task was marked as done. Meanwhile, if I remove a task, it's likely that it doesn't exist anywhere physically (or I don't want it to if it does). Consider if someone gets access to my todo and decides to add 20 useless tasks (or I do with a script by mistake!); after removing them, I won't be so happy that it's impossible to reset it to the original state (in terms of the index).
In all cases, I understand your point, the task removed could somehow still exist physically. In this case, it would be nice to have both options. Regardless, for my particular use case being able to rm -r the todo to reset it is sufficient. Thank you for helping.
Thanks for this nice project. It's the most feature-rich and comprehensive Todo CLI that I have found except for the fact that it's nontrivial to move individual items from one context to another xD.

Thanks for the feedback!
I'll consider adding an option to recycle IDs from removed tasks depending on how easy it is to implement.

it's nontrivial to move individual items from one context to another

The command is todo task <id> -c <context>, but I guess you would like to do it for multiple IDs in one command. Support for multiple IDs for the task command is something I intend to implement in the next version.

The command is todo task <id> -c <context>
So this moves the task with id id from whatever context it currently is in to <context> right?

I wonder if this is reflected in the reference as I was looking for that. Also, the fact that it can't done be done for multiple ids is okay for me.
Thank you.


Manage search input content with history state

Description

Make the category label persistent in the main search input, when going from a POI list to a single POI of the list.
Remove it when the user exits exit the category (ex: closing it explicitely, clicking elsewhere on the map, opening another feature, etc.)

To achieve that, instead of managing the content at the individual component level (PoiPanel and CategoryPanel), we do it at the same level as the router.
The logic is that content is dependant on the app navigation state (poiFilters, pushed as part of the history state of the POI list and a single POI). So if we update it at each route change, it will always be up-to-date with the application state, including when navigating back/forward.
This also makes the code cleaner, regrouping imperative manipulations of this search input in a single component.

Putting this PR back in draft as it currently breaks the current feature of keeping the POI query search in the input. Will have to change some stuff in how the suggest works.


AI UK 2023 Preparations

High level list of things to prepare, owners in brackets:

[ ] Organise setup w/Turing (@JimCircadian / @aldenc)

[ ] 4 x plinths
[ ] 8 x stools
[x] Plasma connectivity
[x] Discussion around 500mA limit over a four way

[x] Posters (@JimCircadian)

[x] Banner poster
[x] Demo times / descriptions poster (one each side of screen)
[x] Find out about fixings

[ ] Preparation of demo narratives (all of these are new issues in new repository)

Probably want to limit a narrative runthrough to 5-10 minutes)
[x] Create new repo for aiuk23 (publishable via zenodo after event)
[ ] Motivation and overview for what we're doing
[ ] SIC cycling video (both hemispheres together / input variables visualised)
[ ] Narrative overviews for each individual - discuss and highlight single owners for each (@JimCircadian)
[ ] Machine learning research and validation (@rchan26)
[ ] Conservation and research use (@EllieBowler)
[ ] Infrastructure / software engineering (@JimCircadian)
[ ] End user usage (@JimCircadian)

[x] Explore plasma screen usage (@JimCircadian)

[x] Get sea ice heavy promo video
[x] Ensure everyone can run their demos

[x] Book Feb meeting (@JimCircadian)
[ ] Promotion: @JimCircadian get in contact with BAS communications

Ensure BAS comms link in with Turing / research engineering account (e.g. through twitter handle links)
@gecoombs to check in on existing conversations with comms
Pick up twitter posts existing

Discussion points from meeting:

Need to check screens are provided with external cables, suggestion is that they're intending USB sticks to be used to display items which won't work for us - HDMI and USBc should be available, we can request spec sheet
Furniture and equipment can be bought separately, but the venue will need to be liaised with for deliveries.
10th February deadline should be used to request everything from<EMAIL_ADDRESS>

Connect plasma to individual laptop
Banner poster prepared, demo poster not required
QR codes for "menus" - demos that are available?
Revised themes:

Research usage
ML research and validation
Software infrastructure
Operational usage and integrations

Use slides and/or notebooks in a dedicated github repository

Include motivators and background for SIC prediction

Tickets half sold, perhaps promote personally

@ots22 @aldenc @rchan26 @EllieBowler @MartinSJRogers @ampersandmcd @tom-andersson The repository for AI UK 2023 is here and license set up to OGL (which is an equivalent to CC-BY-4.0)

We only had 4 stools, but rarely needed them. It was all a lot of fun..
Closing this project issue, big thanks @EllieBowler @rchan26 @tom-andersson @MartinSJRogers @scotthosking @aldenc @ampersandmcd @ots22  for your efforts both during and before the event, really much appreciated and totally living up to the "IceNet dream team" moniker I've decided to label y'all with!


hebrew fonts look weird, the font loads correctly but the positioning is off

basically the title, the font is rendering ok but the positioning is completely off, here is how it looks when I open the svg in chrome

and this is how it renders with resvg

the relevant svg code is this
<text
    filter="url(#textShadow-uy58f0o68)"
      x="541"
      y="1012"
      font-family="BA Ziporen Plus Bold"
      font-size="38"
      fill="#b09554"
      alignment-baseline="hanging"
      text-anchor="middle"
      transform="rotate(0 541 1024.8)"
    >

          <tspan
            dy="0"
            x="541"
            text-anchor="middle"
            letter-spacing="0.2em"
            alignment-baseline="hanging"
          >
            מושי &  חני
          </tspan>
          ,
          <tspan
            dy="0.9em"
            x="541"
            text-anchor="middle"
            letter-spacing="0.2em"
            alignment-baseline="hanging"
          >
            גרינבוים
          </tspan>

    </text>

as i am looking at it now maybe the issue is the multiline, because it doesn't happen to other elements only to the multiline ones, so maybe the em syntax is not supported?

Will take a look. You have a very complicated text element. Hard to say.
But we do support all those properties. Including em units.
It feels like dy is handled incorrectly here.

Here is how your file is rendered in using other libraries.

As you can see - it's a mess.
The first rule of SVG - never use text.

Looks like I have to invert characters positions on RTL layout as well. No idea how to do this. RTL is hard.
For now, you can simply use y instead of dy.

I would also suggest using separate text for each line. tspan support is extremely tricky and you will never get expected/reproducible results.

Sometimes it also doesn't apply the font family properly to the first tspan, so if I switch everything to use regular text instead of tspan I should get better results? also why would y instead of dy solve anything? I am asking because I am curious
Thanks for this wonderful library, my entire project is based on this and it's been a pleasure working with it

also why would y instead of dy solve anything?

Because they are handled in different ways. dx/dy introduces a shift to the current baseline, which resvg incorrectly applies only to the last character, because of RTL. But y defines a new baseline, so it's fine.
In your case, you do have two text elements. When a tspan has x or y, it is treated as a new text chunk, which is essentially a new text element. dx and dy do not.

Sometimes it also doesn't apply the font family properly to the first tspan

Probably because of RTL. Everything have to be properly inverted in the text layout. It's hard.
Also, remember that text-anchor has no effect on tspan without x or y. You can try googling about SVG text chunks for more details. It's a very advance and poorly documented topic and most SVG users are not aware of it.
Use text-anchor only on text if you want reproducible results.

so if I switch everything to use regular text instead of tspan I should get better results?

Yes. Not perfect, but better. Look at Safari on my screenshot - it even able to mess up lines order.
If you want reproducible results - use text just for a single line. I.e. never use x,y,dx and dy on tspan.
Use tspan only for styling, not positioning.
Also, never use whitespaces. I.e. prefer
<text>a <tspan>b </tspan>c</text>

to
<text>
     a
     <tspan>
          b
     </tspan>
     c
</text>

resvg and chrome are fine, but other libraries would struggle in this case. Yes, including Firefox and Safari. Especially Safari.

Thanks, that was really helpful, I refactoring my entire application to never use tspan and I think it's working fine, I need to wait for feedback from my team but it looks ok


MATCH Query Always Using Sequential Scan, Ignoring Index Scan

Hi everyone,
I'm encountering an issue with Apache AGE where a complex MATCH query always defaults to using a sequential scan, even though indexes exist on the queried columns. Disabling sequential scans via SET enable_seqscan=off has no effect, and the query plan i.e. explain analyze output continues to show a sequential scan.
Query Example:
Here's a simplified version of the query we are using:
SELECT * FROM cypher('graph_name', $$
MATCH (n1:NodeType1)
WHERE n1.attribute1 = '<value1>'
  AND n1.attribute2 IN ('<value2>')
WITH n1
OPTIONAL MATCH (n1)-[:RelType1_NodeType1]-(n2:NodeType2)
WITH n1, n2
OPTIONAL MATCH (n1)-[:RelType2_NodeType1]-(n3:NodeType3)
WITH n1, n2, n3
OPTIONAL MATCH (n1)-[:RelType3_NodeType1]-(n4:NodeType4)
RETURN DISTINCT n1 AS Node1, n2 AS Node2, n3 AS Node3, n4 AS Node4
$$) AS (result_column agtype);

Data Setup:
We have populated the graph with data using queries like the following :
SELECT * FROM cypher('graph_name', $$
MERGE (n:NodeType1 {key1: "value1"})
SET n.property1 = "value1",
    n.property2 = "value2",
    n.property3 = "value3",
    ....
$$) AS (result_column agtype);

Problem:
The query plan indicates that a sequential scan is being used on NodeType1 and other nodes, despite indexes being present on attribute1 and attribute2. For performance, we expect the query to utilize the indexes for an index scan.
Observed Behavior:
The query consistently uses sequential scans.
Setting enable_seqscan = off doesn't change the behavior.
Expected Behavior:
The query should leverage the indexes on NodeType1.attribute1 and NodeType1.attribute2 to perform an index scan.
Environment Details:
We are running a containerised apache age docker image on k8s.
Apache AGE version: release_PG16_1.5.0
PostgreSQL version: 16
K8S Version: v1.29.6
What We've Tried:

Verified that the relevant indexes exist.

Created indexes on individual properties, e.g., attribute1 and attribute2.
CREATE INDEX idx_attribute1 ON graph_table USING btree ((properties->>'attribute1'));
CREATE INDEX idx_attribute2 ON graph_table USING btree ((properties->>'attribute2'));

Created indexes on the entire properties column for broader coverage.
CREATE INDEX idx_properties ON graph_table USING gin (properties);

Set enable_seqscan = off.

Rebuilt the indexes and reanalyzed the table using ANALYZE.

Simplified the query to test individual segments but observed the same issue.

The Merge queries are working as expected with indexes, as we see as significant difference in write latencies with and without indexes.

We have ingested a good amount of data (around 25k rows) so as to warrant an index scan.

Questions:
Why does the MATCH query ignore available indexes and use sequential scans?
Are there any specific configurations or query optimizations required to enable index scans in Apache AGE for graph queries?
Could this be a limitation or a bug in Apache AGE?
Any help or insights from the community would be greatly appreciated!
If additional information, logs, or examples are needed, please let me know.
Thank you!

@pritish-moharir
You have to create index on the expression used by age to access a certain property.
issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH (n1:NodeType1)
WHERE n1.name = 'node1'
RETURN n1
$$) AS (result agtype);
                                              QUERY PLAN
------------------------------------------------------------------------------------------------------
 Seq Scan on "NodeType1" n1
   Filter: (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]) = '"node1"'::agtype)
(2 rows)

issue_2137=# CREATE INDEX idx_btree_name
ON test."NodeType1"
USING btree (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]));
CREATE INDEX

issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH (n1:NodeType1)
WHERE n1.name = 'node1'
RETURN n1
$$) AS (result agtype);
                                                QUERY PLAN
----------------------------------------------------------------------------------------------------------
 Index Scan using idx_btree_name on "NodeType1" n1
   Index Cond: (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]) = '"node1"'::agtype)
(2 rows)

If you want to utilize gin index, you need to use the filter like MATCH (n {att1: 'value1'}), since containment operator in where clause is not supported as of now. Below is an example:
issue_2137=# CREATE INDEX idx_gin
ON test."NodeType1"
USING gin (properties);
CREATE INDEX

issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH (n1:NodeType1 {name: "Node1"})
RETURN n1
$$) AS (result agtype);
                           QUERY PLAN
-----------------------------------------------------------------
 Bitmap Heap Scan on "NodeType1" n1
   Recheck Cond: (properties @> '{"name": "Node1"}'::agtype)
   ->  Bitmap Index Scan on idx_gin
         Index Cond: (properties @> '{"name": "Node1"}'::agtype)
(4 rows)

I hope this helps.

@MuhammadTahaNaveed Thanks for the reply, I believe having this documented would help the community.

Hey @MuhammadTahaNaveed thank you for the quick response, we were able to successfully create and use index scan for one of the label properties for ex "NodeType1".name in this case.
A few questions we still have are :

The other labels like "NodeType2", "NodeType3" are still running sequential scans, so we were wondering if there is a way to index on the joins that are happening?

One of the queries we are using is like below:

SELECT * FROM cypher('graph_name', $$
MATCH (n1:NodeType1)
WHERE n1.attribute1 = '<value1>'
  AND n1.attribute2 IN ['<value2>']
WITH n1
OPTIONAL MATCH (n1)-[:RelType1_NodeType1*1..1]-(n2:NodeType2)
WITH n1, n2
OPTIONAL MATCH (n1)-[:RelType2_NodeType1*1..1]-(n3:NodeType3)
WITH n1, n2, n3
OPTIONAL MATCH (n1)-[:RelType3_NodeType1*1..1]-(n4:NodeType4)
WITH n1, n2, n3, n4
OPTIONAL MATCH (n2)-[:RelType4_NodeType2*1..1]-(n5:NodeType5)
WITH n1, n2, n3, n4, n5
OPTIONAL MATCH (n3)-[:RelType5_NodeType3*1..1]-(n6:NodeType6)
WITH n1, n2, n3, n4, n5, n6
OPTIONAL MATCH (n5)-[:RelType6_NodeType5*1..1]-(n7:NodeType7)
WITH n1, n2, n3, n4, n5, n6, n7
WHERE n7.attribute3 = '<value3>'
  AND n6.attribute4 = '<value4>'
  AND n4.attribute5 = '<value5>'
WITH DISTINCT(n1) AS n1, n1.attributeKey AS n1_key
ORDER BY n1.attributeKey SKIP 0 LIMIT 10
OPTIONAL MATCH (n1)-[:RelType7_NodeType1*1..1]-(n8:NodeType8)
WITH DISTINCT n8 AS n8, n1, n1.attributeKey AS n1_key, n8.attributeKey AS n8_key
ORDER BY n1.attributeKey, n8.attributeKey SKIP 0 LIMIT 10
OPTIONAL MATCH (n1)-[:RelType8_NodeType1*1..1]-(n9:NodeType9)
WITH DISTINCT n9 AS n9, n1, n8, n1.attributeKey AS n1_key, n8.attributeKey AS n8_key, n9.attributeKey AS n9_key
ORDER BY n1.attributeKey, n8.attributeKey, n9.attributeKey SKIP 0 LIMIT 10
OPTIONAL MATCH (n1)-[:RelType9_NodeType1*1..1]-(n10:NodeType10)-[:RelType10_NodeType10*1..1]-(n11:NodeType11)
WITH DISTINCT n11 AS n11, n1, n8, n9, n1.attributeKey AS n1_key, n8.attributeKey AS n8_key, n9.attributeKey AS n9_key, n11.attributeKey AS n11_key
ORDER BY n1.attributeKey, n8.attributeKey, n9.attributeKey, n11.attributeKey SKIP 0 LIMIT 10
RETURN DISTINCT n1 AS NodeType1, n8 AS NodeType8, n9 AS NodeType9, n11 AS NodeType11
$$) AS (n1 agtype, n8 agtype, n9 agtype, n11 agtype);

Its a bit complex but we were able to run the index scan for NodeType1 attribute1 and attribute2, but even after creating index on the other NodeType attributes which are also queried, they are running sequential scan. Is there something we are missing, do you have any suggestions as to what fields can be indexed here? I apologise if this is a very straightforward question but any inputs will be really helpful!
Please let me know if you need any additional information. Thanks!

@pritish-moharir You need to create index on id column of node label, and index on start_id and end_id of edge label. PR #2117 does that by default btw.
issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH p=(:NodeType1)-[:RelType1_NodeType1]->(:NodeType2)
RETURN p
$$) AS (result agtype);
                                  QUERY PLAN
------------------------------------------------------------------------------
 Hash Join
   Hash Cond: (_age_default_alias_1.end_id = _age_default_alias_2.id)
   ->  Hash Join
         Hash Cond: (_age_default_alias_1.start_id = _age_default_alias_0.id)
         ->  Seq Scan on "RelType1_NodeType1" _age_default_alias_1
         ->  Hash
               ->  Seq Scan on "NodeType1" _age_default_alias_0
   ->  Hash
         ->  Seq Scan on "NodeType2" _age_default_alias_2
(9 rows)

issue_2137=# CREATE UNIQUE INDEX idx_n1_id ON test."NodeType1" USING btree (id);
CREATE INDEX
issue_2137=# CREATE UNIQUE INDEX idx_n2_id ON test."NodeType2" USING btree (id);
CREATE INDEX
issue_2137=# CREATE INDEX idx_r1_id ON test."RelType1_NodeType1" USING btree (start_id, end_id);
CREATE INDEX

issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH p=(:NodeType1)-[:RelType1_NodeType1]->(:NodeType2)
RETURN p
$$) AS (result agtype);
                                     QUERY PLAN
-------------------------------------------------------------------------------------
 Hash Join
   Hash Cond: (_age_default_alias_1.end_id = _age_default_alias_2.id)
   ->  Merge Join
         Merge Cond: (_age_default_alias_0.id = _age_default_alias_1.start_id)
         ->  Index Scan using idx_n1_id on "NodeType1" _age_default_alias_0
         ->  Index Scan using idx_r1_id on "RelType1_NodeType1" _age_default_alias_1
   ->  Hash
         ->  Index Scan using idx_n2_id on "NodeType2" _age_default_alias_2
(8 rows)

Also, I would like to reiterate that querying undirected paths can really slow down the performance, so consider using directed paths in MATCH clauses wherever possible.
@neerajx86 The agtype_ functions are primarily intended for internal use. You can find a list of available functions in the documentation. The documentation is a bit outdated but covers most of the available functions.

Hey @MuhammadTahaNaveed thanks again for the reply! We were able to create these indexes and the explain output is showing them being used.
Also thanks for the suggestion about the directions, but for us, the data is in such a way that results with and without direction is the same.
One more doubt we had was that even though our query is showing the indexes in explain output the actual query is taking a lot of time to converge. But for the same query if we specify max hop to be 1, i.e.,  *1..1 the query is using sequential scan and converging a lot faster even though indexes exist. Can you help us understand the scenario here?
Thanks again for all your help !

that

I have created the btree index and it works.
But when i use 'LIMIT 500' to filter data, it doesn't work.
Here is my query:
`
create index node_name_idx on graph_name."MyNode" (ag_catalog.agtype_access_operator(properties,'"name"'));
EXPLAIN ANALYZE SELECT *
FROM cypher('graph_name', $$
MATCH (v:MyNode)
WHERE v.name = 'test'
RETURN v
SKIP 0
LIMIT 500
$$) as (V agtype);

Limit  (cost=0.00..442.63 rows=500 width=32) (actual time=965.468..970.870 rows=500 loops=1)
->  Seq Scan on "MyNode" "v"  (cost=0.00..50239.95 rows=56751 width=32) (actual time=965.465..970.816 rows=500 loops=1)
Filter: (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]) = '"test"'::agtype)
Rows Removed by Filter: 326964
Planning Time: 0.280 ms
Execution Time: 970.948 ms
`
Thanks!

@pritish-moharir
You have to create index on the expression used by age to access a certain property.
issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH (n1:NodeType1)
WHERE n1.name = 'node1'
RETURN n1
$$) AS (result agtype);
                                              QUERY PLAN
------------------------------------------------------------------------------------------------------
 Seq Scan on "NodeType1" n1
   Filter: (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]) = '"node1"'::agtype)
(2 rows)

issue_2137=# CREATE INDEX idx_btree_name
ON test."NodeType1"
USING btree (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]));
CREATE INDEX

issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH (n1:NodeType1)
WHERE n1.name = 'node1'
RETURN n1
$$) AS (result agtype);
                                                QUERY PLAN
----------------------------------------------------------------------------------------------------------
 Index Scan using idx_btree_name on "NodeType1" n1
   Index Cond: (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]) = '"node1"'::agtype)
(2 rows)

If you want to utilize gin index, you need to use the filter like MATCH (n {att1: 'value1'}), since containment operator in where clause is not supported as of now. Below is an example:
issue_2137=# CREATE INDEX idx_gin
ON test."NodeType1"
USING gin (properties);
CREATE INDEX

issue_2137=# SELECT * FROM cypher('test', $$EXPLAIN (costs off) MATCH (n1:NodeType1 {name: "Node1"})
RETURN n1
$$) AS (result agtype);
                           QUERY PLAN
-----------------------------------------------------------------
 Bitmap Heap Scan on "NodeType1" n1
   Recheck Cond: (properties @> '{"name": "Node1"}'::agtype)
   ->  Bitmap Index Scan on idx_gin
         Index Cond: (properties @> '{"name": "Node1"}'::agtype)
(4 rows)

Also, querying undirected paths can really slow down the performance, so consider using directed paths in MATCH clause wherever possible. I hope this helps.

I have created the btree index and it works.
But when i use 'LIMIT 500' to filter data, it doesn't work.
Here is my query:
create index node_name_idx on graph_name."MyNode" (ag_catalog.agtype_access_operator(properties,'"name"'));
EXPLAIN ANALYZE SELECT * FROM cypher('graph_name', $$ MATCH (v:MyNode) WHERE v.name = 'test' RETURN v SKIP 0 LIMIT 500 $$) as (V agtype);
Limit  (cost=0.00..442.63 rows=500 width=32) (actual time=965.468..970.870 rows=500 loops=1)    ->  Seq Scan on "MyNode" "v"  (cost=0.00..50239.95 rows=56751 width=32) (actual time=965.465..970.816 rows=500 loops=1)          Filter: (agtype_access_operator(VARIADIC ARRAY[properties, '"name"'::agtype]) = '"test"'::agtype)          Rows Removed by Filter: 326964  Planning Time: 0.280 ms  Execution Time: 970.948 ms
Thanks!

When you did the LIMIT test, did you turn off sequential scans? If you didn't the reason might be this: https://stackoverflow.com/questions/8566931/index-not-used-when-limit-is-used-in-postgres

What do u prefer, using gin index or btree on node lable?


Fix bug in CoregPipeline.fit()

This PR fixes a bug in CoregPipeline that made all fits erroneous (using the original tba_dem instead of the updated one).
This was only 4 characters, but not easy to find.

[x] Resolves #447,
[x] Tests added.

Will fix the documentation error with #451, merging.


Issues connecting to TAK Server using TLS

Hello, I'm having an issue trying to connect to my TAK server over TLS. I am able to connect to this TAK server from android phones, and with wintak. It seems like its not using the correct cert with the trust store. But, I have tried about a million different combinations. My truststore.pem does have the complete chain from the TAK server.  I have also tried switching to a datapackage, but that does not seem to set the COT_URL correctly.  I was hoping to get some ideas on what to try next.
Thanks so much!
Similar error with TAK server:
https://mytecknet.com/tak-certificate-error-peer-not-verified/
Example code I'm using:
#!/usr/bin/env python3

import asyncio
import xml.etree.ElementTree as ET
import pytak
import cryptography

from configparser import ConfigParser

def gen_cot():
    """Generate CoT Event."""
    root = ET.Element("event")
    root.set("version", "2.0")
    root.set("type", "a-h-A-M-A")  # insert your type of marker
    root.set("uid", "name_your_marker")
    root.set("how", "m-g")
    root.set("time", pytak.cot_time())
    root.set("start", pytak.cot_time())
    root.set(
        "stale", pytak.cot_time(60)
    )  # time difference in seconds from 'start' when stale initiates

    pt_attr = {
        "lat": "40.781789",  # set your lat (this loc points to Central Park NY)
        "lon": "-73.968698",  # set your long (this loc points to Central Park NY)
        "hae": "0",
        "ce": "10",
        "le": "10",
    }

    ET.SubElement(root, "point", attrib=pt_attr)

    return ET.tostring(root)

class MySender(pytak.QueueWorker):
    """
    Defines how you process or generate your Cursor-On-Target Events.
    From there it adds the COT Events to a queue for TX to a COT_URL.
    """

    async def handle_data(self, data):
        """Handle pre-CoT data, serialize to CoT Event, then puts on queue."""
        event = data
        await self.put_queue(event)

    async def run(self, number_of_iterations=-1):
        """Run the loop for processing or generating pre-CoT data."""
        while 1:
            data = gen_cot()
            self._logger.info("Sending:\n%s\n", data.decode())
            await self.handle_data(data)
            await asyncio.sleep(5)

class MyReceiver(pytak.QueueWorker):
    """Defines how you will handle events from RX Queue."""

    async def handle_data(self, data):
        """Handle data from the receive queue."""
        self._logger.info("Received:\n%s\n", data.decode())

    async def run(self):  # pylint: disable=arguments-differ
        """Read from the receive queue, put data onto handler."""
        while 1:
            data = (
                await self.queue.get()
            )  # this is how we get the received CoT from rx_queue
            await self.handle_data(data)

async def main():
    """Main definition of your program, sets config params and
    adds your serializer to the asyncio task list.
    """
    config = ConfigParser()
    config["mycottool"] = {
        "COT_URL": "tls://<IP_ADDRESS>:8089",
         "PYTAK_TLS_CLIENT_CAFILE": "truststore.pem",
        "DEBUG": 1,
        "PYTAK_TLS_CLIENT_CERT": "user.p12",
        "PYTAK_TLS_CLIENT_PASSWORD": "PASSWORD",
        }
    config = config["mycottool"]

    # Initializes worker queues and tasks.
    clitool = pytak.CLITool(config)
    await clitool.setup()

    # Add your serializer to the asyncio task list.
    clitool.add_tasks(
        set([MySender(clitool.tx_queue, config), MyReceiver(clitool.rx_queue, config)])
    )

    # Start all tasks.
    await clitool.run()

if __name__ == "__main__":
    asyncio.run(main())

Python Error:
Traceback (most recent call last):
File "/workspaces/tak/main.py", line 110, in <module>
  asyncio.run(main())
File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
  return runner.run(main)
         ^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
  return self._loop.run_until_complete(task)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
  return future.result()
         ^^^^^^^^^^^^^^^
File "/workspaces/tak/main.py", line 98, in main
  await clitool.setup()
File "/home/vscode/.local/lib/python3.11/site-packages/pytak/classes.py", line 366, in setup
  reader, writer = await pytak.protocol_factory(self.config)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vscode/.local/lib/python3.11/site-packages/pytak/client_functions.py", line 280, in protocol_factory
  reader, writer = await asyncio.open_connection(host, port, ssl=ssl_ctx)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/streams.py", line 48, in open_connection
  transport, _ = await loop.create_connection(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
  transport, protocol = await self._create_connection_transport(
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
  await waiter
ConnectionAbortedError: SSL handshake is taking longer than 60.0 seconds: aborting the connection

Error on TAK Server:
takserver-messaging.log:2024-05-16-19:05:54.696 [epollEventLoopGroup-4-7] ERROR c.b.m.n.n.h.NioNettyHandlerBase - NioNettyServerHandler error. Cause: io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record. Additional info: Remote address: <IP_ADDRESS>; Remote port: 61050; Local port: 8089; Certificate error: peer not verified;

Also, I am using 6.4.0 of pytak, and 3.11.4 is my version of python.

It was a network issue, disregard :-)


Multi-tenant or dynamic ClientID - identityServer 4 and ASP.NET Core 2.0

Hi People.
We have 1 Website (Client), and 1 Identity Server (Authorization Server with IdentityServer4).
Our website it is multi-tenant, then our customers will do something like http://customerName.MyWebsite.com
I would like in the Client side, when I am creating the Authentication, to use as cleintID the URL, so in the Authorization server I will call ClientStore =>FindClientByIdAsync(string clientId) to search in my database the URL to bring the right information.
The problem is this:
`public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
                options.Authority = "http://localhost:5000";
                options.RequireHttpsMetadata = false;

                options.ClientId = CONTEXT IS NULL to bring the URL;
                options.ClientSecret = "ThisShouldBeAGoodSecret";

etc
});`
Since the Context is always null in the ConfigurationService I cannot read the URL.
Is it possible to create or add or edit the OpenIdConnect after the Startup.cs is called?
I read tons of examples with Core 1 about multi-tenancy, but in Core 2 does not apply those solutions, because many of the solutions are in Core 1, and are deprecated for Core 2.
Any suggestions? Ideas?
Thanks guys.

You wouldn't change the client ID dynamically - the client is always the same.
You rather pass some extra parameter in the authorize request to indicate the tenant - this can be done using the OnRedirectingToIdentityProvider event on the handler.

Thanks for the tip @leastprivilege  I will try today to do that. My wife just deliver our baby yesterday so I wasn't able to code/read anything :) I'll let you know in a while (probably on Monda) if I was able to do your suggestion with OnRedirectingToIdentityProvide. I'm still in the Hospital until Sunday.
--Luis

My wife just deliver our baby yesterday

Congrats!

My wife just deliver our baby yesterday

Congrats!

Just one silly question, where or how I can find OnRedirectingToIdentityProvider?

Have a look at this one. While being targeted to IDS3 it still applies to IDS4 https://github.com/IdentityServer/IdentityServer3/issues/841

All set on this issue -- can we close?

Sorry guys! Yes!! If any is curious I solve it by  creating a Controller (I am using Razor Pages, and Core 2) and  calling a StartAuthentication method (Login) in the client, and then in the acrValues I send the url.
`public async Task StartAuthentication()
{
//Get the hosting, these are some options
//1) _context.HttpContext.Request.Host.Value = localhost:5002
//2) _context.HttpContext.Request.Host.Host = "localhost"
//3) _context.HttpContext.Request.Host.Port = 5002
var host = _context.HttpContext.Request.Host.Host; // Option 2
        // read discovery document to find authorize endpoint
        var disco = await DiscoveryClient.GetAsync(Constants.Authority);
        var authorizeUrl = new RequestUrl(disco.AuthorizeEndpoint).CreateAuthorizeUrl(
            clientId: "Web.Client",
            responseType: "code id_token",
            scope: "openid profile AspCore.API offline_access",
            redirectUri: "http://localhost:5050/Account/callback",
            state: CryptoRandom.CreateUniqueId(), //"random_state",
            nonce: CryptoRandom.CreateUniqueId(), //"random_nonce",
            responseMode: "form_post",
            acrValues: host);

        return Redirect(authorizeUrl);
    }`

Thanks again.

how to deal with tenantid on the id server side?


Typo probably leading to warning at parse time

https://github.com/Montreal-Analytics/dbt-snowflake-utils/blame/73142f2731ceb87150906ebbf6a8d407f0365857/macros/macros.yml#L52
The dbt --warn-error parse step in our CI/CD is failing with the following warning:
[WARNING]: Found patch for macro "grant_ownershop_on_schema_objects" which was not found

I'm guessing it has to do with the typo linked above

#47 already open


Use newer BREW_URL and brew update instead of libgit2

There were several issues with https://github.com/JuliaLang/Homebrew.jl/pull/106#issuecomment-204593240, taps were not actually getting updated, libgit2 doesn't support shallow clones (the cause of the "Object not found" errors), and legacy homebrew doesn't support unshallowing already-installed taps. We might want to make this change even on 0.4, but that may be a bit riskier than staying on legacy homebrew there. Though I suppose it means we won't get updated homebrew-core formulae since we're only updating via git instead of whatever migration magic brew update automatically handles.
I can't tell for sure whether or not legacy homebrew will automatically tap the new homebrew-core...

Coverage decreased (-1.9%) to 59.701% when pulling e3ddbdcc1123a05c1c7a9af5f1baca4b67610e32 on tk/libgit2-fixes into f6e70f61241dbcb6446cd3c0117d8797998c25e5 on master.

I'd love if a mac user could test this branch for a while. Even better if anyone who remembers the history of why this package works the way it does could speak up about why it hasn't been shelling out to brew update. If I don't hear anything for a few days I'll be merging this since it works better in my limited remote testing than master does.

@staticfloat re: https://github.com/JuliaLang/Homebrew.jl/pull/106#discussion_r65407765 most people seem to be under the impression that git is a developer tool and not installed by default unless you install the command-line tools. It's tough to find an untouched system to test that things stay working there though.
So I think because we're using git directly to install and update homebrew, we missed out completely on their migration and repo split between brew and putting the core formulas in a tap. So we may need to figure out the right way to migrate existing installs too, otherwise the state of their formulas may be stuck. Maybe we use the Homebrew.jl tapping functionality to always add homebrew-core?
We have some conflicting requirements here of managing branches vs avoiding shallow clones if libgit2 is being used.

Turns out Homebrew won't install without the commandline tools.  By which I mean it automatically downloads the commandline tools when you install brew through the script given at https://brew.sh.  We can, of course, install Homebrew by ourselves, without the commandline tools, (either by using libgit2 or by downloading a tarball from Github) but if we do so without a valid git, this happens:
$ brew update --verbose
You must: brew install git
You must: brew install git
You must: brew install git
You must: brew install git
==> Downloading https://homebrew.bintray.com/bottles/git-2.8.3.mavericks.bottle.
######################################################################## 100.0%
==> Pouring git-2.8.3.mavericks.bottle.1.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions

Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/git
==> Summary
🍺  /usr/local/Cellar/git/2.8.3: 1,421 files, 30.7M

So one way or another, we will need to have a command-line git around if we want to use brew update.

so that automatically installed homebrew's git on the first call to brew update?
another alternative might be to manually unshallow by deleting the .git folder then doing a new bare clone?

Yes.  Installing brew's git isn't a great solution, as it's not cellar: any so it will need a compiler for Homebrew.jl, since we don't install to /usr/local/.
Can we get the original remote and branch on a shallow clone with libgit2, or do all operations fail on shallow clones?

Hi everyone, I'd just like to point that the Homebrew.jl package is currently broken after this commit by the Homebrew folks: https://github.com/Homebrew/legacy-homebrew/commit/dde20cd805d0b65e3df66ea5c26ba1860b384979
They essentially removed everything from the repo, and when one tries to install or update Homebrew.jl, an error message shows up.
I was able to install it correctly by updating the URL as you propose here. This should probably be done soon though, since so many other packages depend on this one!

So much for a smooth migration then. I think we need to create a branch here from just before the libgit2 commits were merged, since those aren't working yet.

Can we get the original remote and branch on a shallow clone with libgit2

I'll have to look into it. I think the remote piece of that may have been made irrelevant by the above homebrew commit? Is there a brew command line API for changing branches? Based on the discussion that I just had with some of the homebrew maintainers it sounds like using anything else is going to be fragile.

obsoleted by #113 I think


ENH: Add index_as_fid option to write_dataframe?

There is an fid_as_index option in read_dataframe to be able to... read the fid. However, there is no explicit option to e.g. index_as_fid in write_dataframe to write it again.
For e.g. shapefiles writing fid's is not relevant at all as they don't save fid's.
For Geopackages there is a workaround: if you add the index as a column named "fid" to the dataframe you will write the fid.
Not sure if an explicit option is needed... an alternative could be to just document the "workaround" or use this issue as documentation :-).

Do you know if GDAL exposes some information or metadata about this? For example so that we can raise an error if the file format actually does not support it?

Do you know if GDAL exposes some information or metadata about this? For example so that we can raise an error if the file format actually does not support it?

Yes, if OGR_L_GetFIDColumn()  returns "", the file type cannot save fid's. If it returns another string, that's the column name used to store the fid.
Examples:

for shapefile "" is returned.
for Geopackage "fid" is returned: that's the default name of the column the fid is stored in.
for sqlite files I never tested/used it, but according to the gdal doc the default column name for the fid is "OGC_FID", so I suppose that OGR_L_GetFIDColumn() will return that and I suppose that you'll have to call the column like that in the GeoDataFrame if you want the fid's to be retained.

Nice, in that case this sounds as a good option to me.

I just found another way to save the index of the GeoDataFrame as "fid" (primary key) in a GPKG: if the name of the index is "fid" it will also be saved as "fid" in the file.
xref: https://github.com/geopandas/geopandas/issues/3217

(moved this to the next milestone)

Additionaly, one can pass fid="custom_index_name" to the kwargs of write_dataframe, and make any column the primary key in a GPKG. See https://gdal.org/drivers/vector/gpkg.html#layer-creation-options.
Ideally we would then also set the correct index name on reading when fid_as_index is True, instead of hardcoding it to "fid". OGR_L_GetFIDColumn should give us the name to use here.


improve docs about adding custom resources

Took me a while to find how to add custom resources. So improving the docs here

Thanks @hisabimbola 👍


Android: getChannel & getChannel returns an error Resource ID #0x7f0e0000

I have this function to create notifications channels which I will use later in my code this function is called everytime my app wakes up, I have an array of pushSound from which I will create a channel every time. From here I pass a variable id = soundName which verified is a string (Im using typescript). The function getSoundFileName just removes the ".wav" chain from the file's name nothing fancy
2 scenarios
First one: I pass an id as soundName, when I try to check my channel already with soundName or the string with the same value it breaks, if I pass another string then it returns null. getChannels() always breaks no matter what, In the documentation is not clear when and where can we use getChannels()
Second scenario: instead of "id: soundName" I write "id: test" and getChannel("test") if I pass another string value it works, it returns the channel and if the channel id does not exists it returns null, getChannels() still breaks even if I call it after the forEach loop, outside of this function, with a setTiemout, etc.
export async function createNotificationChannels() {
// Request permissions (required for iOS)
await notifee.requestPermission();
if (Platform.Version >= 26) {
PushSounds.forEach(async sound => {
const { title, fileName } = sound;
  const soundName = getSoundFileName(fileName);

  await notifee.createChannel({
    id: soundName,
    name: title,
    importance: AndroidImportance.LOW,
    description: `${title} sound channel`,
    sound: soundName,
    vibration: true,
  });

  console.log('getChannel', await notifee.getChannel(soundName).catch(e => e.message));

 //THIS METHOD ALWAYS RETURNS AN ERROR
  console.log('getChannels', await notifee.getChannels().catch(e => e.message));

});

}
}

I has the same issue here on creating channels in device!
Device: Motorola - moto g(9) play (Android 11)
creatingChannels: error
err: Resource ID #0x7f0e001d

@alelaru can you comment on this thread the error? Is it definitely coming from getChannels and not createChannel?

hey there, it might be an issue with the sound file... when you display a push notification, does your custom sound play? I will take a look, and prevent getChannels from throwing an error, if it can't find the sound file/name (if that's happening).

This is specific for one user, to others users sounds and notifications are correctly. :/

Sorry I was a bit sick. So this is what I found

The error appears once I try to create a Channel from the string soundName, in this case soundName comes from a function which makes a sustring() of a string that has at the end .wav e.g. sound.wav, so this 4 characters are removed This will throw an error even if I don't assign a sound to the channel so I don't think is the custom sounds file.

The problem was that one of these channels had "demonstrative.wav" as a name, with the method it returned demonstrative and then the methods getChannel or getChannels crashed, if I removed this one it will work
I was thinking that maybe the word demonstrative cannot be assigned because those names were already reserved, idk
My workaround was to add statically "demonstrative_channel" into one object, which I retrieved and then everything works good


SOL-112930:

Create a snippet to demonstrate how to set websockets in the host property.

@RagnarPaulson Is this ready to be reviewed?  It's still in Draft.

@RagnarPaulson Is this ready to be reviewed? It's still in Draft.

Websockets has not been released yet.   You can review it, which is the goal with draft PRs, but you can't merge it until we release JCSMP 10.24.0

How can I review it if I can't run it..? 🤔
On Wed, 19 Jun 2024, 09:07 Ragnar, @.***> wrote:

@RagnarPaulson https://github.com/RagnarPaulson Is this ready to be
reviewed? It's still in Draft.
Websockets has not been released yet. You can review it, which is the goal
with draft PRs, but you can't merge it until we release JCSMP 10.24.0
—
Reply to this email directly, view it on GitHub
https://github.com/SolaceSamples/solace-samples-java-jcsmp/pull/91#issuecomment-2178680011,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB2AJBCYBA5G7AVOFKHRF23ZIF7AJAVCNFSM6AAAAABHU57E36VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZYGY4DAMBRGE
.
You are receiving this because your review was requested.Message ID:
@.***>

Snippet is good, have tested it actually works in JCSMP with another app.


DeYAHPificiation

WIP
Depends on https://github.com/mosaicml/yahp/pull/99

Going to close this PR as #317 implemented many of these changes, and it will require significant changes to yahp.


NFT MARKETPLACE (HACKTOBER ISSUE NOW CLOSED PLEASE REOPEN)

@TechnicallyKiller I'm merging you project can you please list it to project.js file with it's icon


HTTP/2 support

http://hyper.readthedocs.org/en/latest/quickstart.html#requests-integration
https://github.com/Lukasa/hyper/pull/82#issuecomment-72364932

https://github.com/jakubroztocil/httpie-http2

:cake:

Any plan to merge it ?

@Yamakaky it's a plugin that you can install separately. What needs merging?

It would be easier if it was a builtin. HTTP/2 is the future of HTTP, it would be great if it was supported by this great utility.

Also it's not on homebrew and after pip install -U httpie httpie-http2, running httpie gives me this error:
Traceback (most recent call last):
  File "/usr/local/bin/http", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/site-packages/httpie/__main__.py", line 11, in main
    sys.exit(main())
  File "/usr/local/lib/python2.7/site-packages/httpie/core.py", line 183, in main
    plugin_manager.load_installed_plugins()
  File "/usr/local/lib/python2.7/site-packages/httpie/plugins/manager.py", line 33, in load_installed_plugins
    plugin = entry_point.load()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2368, in load
    self.require(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2385, in require
    items = working_set.resolve(reqs, env, installer)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 835, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyOpenSSL 0.14 (/usr/local/lib/python2.7/site-packages), Requirement.parse('pyOpenSSL>=0.15'), set(['hyper']))

I wish HTTPie could also support HTTP/2, that would be awesome 👍

I think it's time to raise this topic again, I created a new issue #692 and listed all the reasons I could think of for merging the plugin into the httpie itself.


CRUD structure of ng2-admin

I'm submitting a ...
[ ] bug report
[x] feature request
[ ] question about the decisions made in the repository

Thanks for creating this awesome repo for angular 2 community.
This is really helpful, and I learned a lot from it.
Sincerely appreciate.
I plan to use this repo to create a simple CRUD cms, but I have some question during development.
I go through the article to create a new page. It's working, but what about adding a child to it?
Let's say I have a page called /staff to list all staffs and I need a page to create/edit staff also.
Here's my staff.routing.ts:
const routes: Routes = [
  { path: '', component: StaffComponent, pathMatch: 'full' },
  { path: 'new', component: StaffFormComponent },
];

But if I do this, breadcrumb cannot show properly and side menu cannot highlight properly as well.
I not sure whether I'm doing it right or not, please do correct me if I'm on the wrong way.
Any help and suggestion would be appreciated.
Thanks ya.

this is covered in #666 same idea applies for the child routes, as it does for the parent routes.


fix: update template refs with better backwards compat

This updates the "template refs" proposal with betters backwards compatibility with existing Lightning Web Components.

This commit implements the proposed change.
The only way I can imagine that this would still cause an observable change is if someone is doing:
if ('refs' in this) {}

...rather than:
if (!this.refs) {}

This possibility seems so vanishingly small that I can't imagine it's actually a problem in practice. Developers are much more likely to use the shorter (second) one rather than the longer (first) one.

One downside of this change is that we would be introducing a footgun for component authors using refs and multiple templates:

<template>

</template>

<template>

</template>

if (this.refs.foo) // throws an error when template B is rendered

The fix is relatively simple, though:
if (this.refs?.foo)

And hopefully this isn't a very big deal in practice.

Ok, I still don't understand what the problem is in the first place... yes, the in operator or any other way to observe that there is a NEW api in the base element is observable but that doesn't mean it is going to be a problem.
This proposal it more problematic IMO because it only works for default templates if any since the details of the html are not always associated to a class declaration, how can you know if you need the ref or not?

@caridy

Ok, I still don't understand what the problem is in the first place... yes, the in operator or any other way to observe that there is a NEW api in the base element is observable but that doesn't mean it is going to be a problem.

Yeah I admit it's a stretch. The reason it might be a problem is something like this:
connectedCallback() {
  if (!('refs' in this)) {
    this.refs = 'foo'
  }
  // user expects this.refs to be a string, or a boolean, or whatever, but it's undefined
  // because LWC has now claimed it
  this.message = this.refs
}

Again, it's a stretch.

This proposal it more problematic IMO because it only works for default templates if any since the details of the html are not always associated to a class declaration, how can you know if you need the ref or not?

This proposal works with dynamic templates as well. When the user calls the this.refs getter, we check on-demand for the current state of the refs. And whatever template rendered last will have set this state.
The state is updated here when the template is invoked (i.e. html.call()).
And then the this.refs getter refers to it here.

I don't understand... if I use the in operator in the constructor... how can you know that it should be there or not before getting the template to be renderer?

@caridy Imagine that someone is using a property called refs today. Maybe they expect it to be a string:
class extends LightningElement {
  constructor() {
    if (!('refs' in this)) {
      this.refs = 'foo'
    }
    console.log(this.refs.toUpperCase()) // throws if we ship template refs
  }
}

The above code works today, but it throws as soon as we ship template refs, because we're now squatting on the refs property. The user expects refs to be a string, but with template refs, it's an object (or undefined, with this PR).
Again, it's not very likely, but it is possible.

I will NOT consider this an issue, for few main reasons:

Imagine that tomorrow HTML adds a new property to HTMLElement.prototype, you will have the exact same issue because we pipe all global props.
We have explicit documentation discouraging the use of expandos, in fact, the refs in the example above is not even reactive.
Non-declared fields are not reactive, we have documentation for that... so the usage of non-declared fields should be very low... then on top of that to match that name refs is even lower.

Imagine that tomorrow HTML adds a new property to HTMLElement.prototype, you will have the exact same issue because we pipe all global props.

I don't think this is actually the case. Looking at base-lightning-element.ts, it seems we apply only a subset of HTMLElement properties to LightningElement. It looks like we document this as HTMLElementTheGoodParts.
For instance, you can test this with a relatively recent addition to Element.prototype, part:
connectedCallback() {
  console.log(this.part) // logs undefined
}

We have explicit documentation discouraging the use of expandos, in fact, the refs in the example above is not even reactive.

This is a valid point, although unfortunately people do use expandos, hence the concern about observerable changes.

@nolanlawson if we don't keep those two lists up to date, a dev will have no ways to use those attributes, nor to customize their behavior, so this is a bullet that we will have to bite.

@caridy My understanding was that, historically, we made a distinction between the LightningElement when accessed internally versus externally. So internally you don't have access to things like this.shadowRoot, but externally you do have access to elm.shadowRoot. Are you saying we should change that distinction and allow access to all HTMLElement props via this?

@jodarove @pmdartus @caridy Could I get a +1 on this PR please?


How to handle variable length decoder_input_ids for batch prediction in the Nougat family model?

https://huggingface.co/docs/transformers/main/en/model_doc/donut

For example, the donut-base-finetuned-docvqa model.

Should I change the padding method of decoder_input_ids to left padding, like in the transformers library?

Currently, when I increase the batch_size, all data except the first one do not yield correct results.

There are two issues here.
The first issue is that when the batch_size is set to more than 1, the current model cannot get the correct batch prediction results.
The second issue is how to handle variable length decoder_input_ids for batch prediction?

I also changed the encoder output shape for batch inference

Hi @sjtu-cz

Can you use scripts from latest main branch? We added support for batch_size > 1 last week. Note that same image is repeated batch_size times. To process different images in a batch, change this line accordingly.
You can compute custom decoder_input_ids and pass them to generate() call here.
For example, for batch size 2,

self.decoder_input_ids = self.tokenizer(["Custom prompt 1 ", "Custom prompt 2"], return_tensors="pt", padding=True).input_ids
output_ids = self.model.generate(input_ids, self.decoder_input_ids, ...)

您好，你的邮件我已经收到~


Perler Caps Palette?

Really enjoy Beadifier a lot! Was wondering if it would be possible to add a Palette for just the Perler Caps? There's only 26 colors at the moment and it's not really known if Perler will continue support

@Exodeca1
Definitely something that could happen, do you have all the color references? (in RGB or Hex?)

Awesome! I've been using this template for the Perler Caps. Maybe just using the values already for the Perler colors would work? There's currently only 26 colors
Black | 323234
Blueberry Creme | 85A8E3
Blush | F99297
Brown | 674C44
Cheddar | FBB146
Cobalt | 0065B1
Cotton Candy | F479B0
Dark Gray | 585C61
Gray | 909497
Kiwi Lime | 69B845
Lagoon | 00A4AC
Light Brown | 936848
Light Gray | B3BAB8
Magenta | E04284
Orange | EB7B31
Plum | A75D9D
Prickly Pear | BBC938
Purple | 684B86
Red | B0353C
Rust | 995043
Sand | E5BE9E
Shamrock | 008F53
Tan | C5AC90
Toothpaste | 96D1D4
White | EAEFEE
Yellow | E7CE3E

You might be right since it seems to be produced by Perler itself. However I would like to be sure the color code are correct before adding those, might be misleading for people otherwise. Do you have the reference as well ? (not speaking about the color, but the reference of the color itself, eg: 80-15181, 80-15182, etc).

Sure! This is from the Perler Website where they have the 750 caps beads listed
Black Beads_80-16086
Blueberry Cream Beads_80-16101
Blush Beads_80-16092
Brown Beads_80-16105
Cheddar Beads_80-16093
Cobalt Beads_80-16099
Cotton Candy Beads_80-16088
Dark Gray Beads_80-16111
Gray Beads_80-16110
Kiwi Beads_80-16096
Lagoon Beads_80-16098
Light Brown Beads_80-16106
Light Gray Beads_80-16109
Magenta Beads_80-16090
Orange Beads_80-16091
Plum Beads_80-16103
Prickly Pear Beads_80-16094
Purple Beads_80-16102
Red Beads_80-16089
Rust Beads_80-16104
Sand Beads_80-16108
Shamrock Beads_80-16097
Tan Beads_80-16107
Toothpaste Beads_80-16100
White Beads_80-16087
Yellow Beads_80-16095

@Exodeca1
Perler caps support has been added and should also be available from beadcolors as well as beadifier.
Feel free to close this issue once it's ok on your side.
PS: You might have cache issue if you are trying right now, please make sure to clear everything :)

Awesome! It's working great! Thank you for such an awesome tool!


Merge abandonware changes

Hi,
This is the first serie of patches, once merged I will rebase @abandonware on it and forward a new set.

review welcome

Hi and hacky new year !
Is anyone still alive here ? :)
Relate-to: https://github.com/abandonware/abandonware.github.io/issues/8

Hi and hacky new year !
Is anyone still alive here ? :)
Relate-to: https://github.com/abandonware/abandonware.github.io/issues/8

I tried to reach @sandeepmistry once but no feedback since ... help welcome

Becauee of the fact that bleno now not actively maintained since 5 years we now neeed to break the idea to just release patch releases. Bleno was coverted to ES6 classes and also dependencies requires breaking changes, so we will soon release 0.6.0 of the abandonware package (https://github.com/abandonware/bleno/pull/42) ... It would be great to get in the end all aandonware changes in here and pot reactivate te noble orga

Feedback welcome on our latest release:
<EMAIL_ADDRESS>Relate-to: https://github.com/abandonware/bleno/issues/17


Fix @typescript-eslint/await-thenable instances

Summary
When updating to ESLint 9, some rules had to be ignored as their recommendations changed. Of which, was the @typescript-eslint/await-thenable rule.
This removes instances of awaiting values that are not "thenable".
Changes

Enable @typescript-eslint/await-thenable ESLint rule
Remove unnecessary escape characters from:

__tests__/util/retry.ts
datasources/balances-api/coingecko-api.service.spec.ts
datasources/balances-api/safe-balances-api.service.ts
datasources/config-api/config-api.service.spec.ts
routes/common/interceptors/route-logger.interceptor.spec.ts

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.881%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
6890

Relevant Lines:
7233

💛  - Coveralls


added index.d.ts file for typescript

Used file from pull #314 on the original repo from @ynigoreyes, added the static methods into the definitions as well as adding cards & renderCard props, making all optional props optional, and made it generic on the card type to enforce the same typing across renderCard and keyExtractor.

Thanks @gitschwifty , @webraptor can you merge this in?

hey @kevinhylant yes sure I can, but @gitschwifty , can you bump package version (patch).
Thanks!

Sure just bumped


ENH/REF: add public qiime.sdk.Result class/factory for interacting with Artifacts and Visualizations in a generic way

Result.load, Result.peek, and Result.extract act as generic interfaces/factories for interacting with Artifacts and Visualizations.  Result prevents an Artifact from being interacted with as a Visualization, and vice-versa (in addition to other incompatible types we may have in the future).

Thanks @jairideout!

Thanks @jairideout and @ebolyen!

Thanks for reviewing Evan! Agree about the error message from extract,
maybe it can be rewritten to make sense in either context, or extract can
catch the error and raise a new one.
On Friday, July 8, 2016, Greg Caporaso<EMAIL_ADDRESS>wrote:

Thanks @jairideout https://github.com/jairideout and @ebolyen
https://github.com/ebolyen!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/qiime2/qiime2/pull/79#issuecomment-231433750, or mute
the thread
https://github.com/notifications/unsubscribe/ABwvwKwVka6VoF7Clr2Joq5k22L3ihl6ks5qTpQxgaJpZM4JIQVu
.

--
Sent from my phone.


Upgrade to latest Docker for macOS

Have any of our fine users upgraded to latest Docker for macOS?   If so, any issues with laradock?

There shouldn't be any issues. It's just a bugfix release.

@franceslavoie famous last words :) I assumed that, but one never knows.   Thx though, updating now!


Dashboard: Paths overview

As a user I would like to get a path overview, the sources for each operation and whether validation is applied.

@donnalux I believe this has been implemented.
Can you close the issue if that's the case


friendly error message when missing pcsc-lite-devel

When I'm compiling locally and I don't have nettle-devel installed on Fedora, it's really nice that the error message shows a friendly dnf install command for me.
  Building nettle-sys failed.
  Because:
  pkg-config exited with status code 1
  > PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags nettle

  The system library `nettle` required by crate `nettle-sys` was not found.
  The file `nettle.pc` needs to be installed and the PKG_CONFIG_PATH environment variable must contain its parent directory.
  The PKG_CONFIG_PATH environment variable is not set.

  HINT: if you have installed the library, try setting PKG_CONFIG_PATH to the directory containing `nettle.pc`.

  Please make sure the necessary build dependencies are installed.

  If you are using Debian (or a derivative), try:

      $ sudo apt install clang llvm pkg-config nettle-dev

  If you are using Arch (or a derivative), try:

      $ sudo pacman -S clang pkg-config nettle --needed

  If you are using Fedora (or a derivative), try:

      $ sudo dnf install clang pkg-config nettle-devel

  See https://gitlab.com/sequoia-pgp/nettle-sys#building for more information.

  Error: "Building nettle-sys failed."
warning: build failed, waiting for other jobs to finish...
💥 maturin failed

Can we do the same when pcsc-lite-devel is missing on Fedora?

That's a good idea although I think it should go into https://github.com/bluetech/pcsc-rust (just like nettle-sys prints this message, not pysequoia).
If you'd like to create an issue there with the text that you have here it'd be the best. If not I can do so tomorrow.
Have a nice day! 👋

Thank you, I've reported it at https://github.com/bluetech/pcsc-rust/issues/51


Interfaz displaying an incorrect date in related resource tab

There looks to be a mismatch in date displayed when I look in our hosted portal in related resources tab. In this record of Cryptotis thomasi it showns 11 may for the related occurrence:

And it looks weird considering that they are supposed to be clustered because they have some equal information.
But when I look for that occurrence in GBIF it shows 12 of may: https://gbif.org/occurrence/3710474697

And it is shown correctly in occurrence search in GBIF
No idea why it is showing some dates mismatched by one day, but other records were behaving similarly.
Thanks in advance,

I  haven't looked yet, but I'm 99% sure it is because it is using the browsers timezone when formatting the date. I probably didn't properly specify that it should use UTC. And dates used to include the timezone, but after a change within the last year in how we handle dates, precision and ranges, then the timezone Z is not longer included in the date string. And so the formatting falls back to using local time.

I've looked and annoyingly I do not really get it. The first time shows correctly with hours. And the second that only has date resolution shows the wrong date. Neither of them has a time zone specified. So I would have expected the browser to handle them the same.
Anyhow, I've tried to be more explicit and add Z when not specified to the interpretation. And then similarly define it as UTC when displayed. That should hopefully fix it. Could you please check the behaviour in staging?


SetSelectionType and SetSelectionFilter modeling commands

@mlfarrell could you please ensure the docs I wrote are actually correct (these docs are included in all user-facing documentation)
@Irev-Dev or @franknoirot could you please check that this API is actually useful to you as-is, or LMK if the frontend would prefer something slightly different.

Had a quick poke around to see what the entity types were
https://github.com/KittyCAD/modeling-api/blob/main/modeling-cmds/src/shared.rs#L488
And yeah this looks good to me, it's possible we'll find edge cases when implementing, but at first glance I don't have any comments.


Remove the sleep wait in config checker e2e test

Signed-off-by: xuezhaojun<EMAIL_ADDRESS>

/assign @zhiweiyin318

/retest

/unhold
/cherry-pick release-2.4
/lgtm
/approve

Here, we also removed the entire config-checker e2e test case.
The reason is config-checker is relying on the change of work-manager-hub-kubeconfig secret. After we change the content of this secret, the registration will reconcile this secret back quickly.


add sounds

Sounds

car engine
honk (by pressing H)
brakes (while braking)
train engine

In the future I would love to have the vehicle sounds more dynamic. (engine & brake)

Yeah, I thought this would be good for a start.
In the future, we can make the engine and brake volume based on the acceleration and the drift.

that was fast :-D awesome, thanks!
the screeching could be two tier. the state model differs between sliding and breaking. it slides already when you see the dust tail. that should also gives some sound, breaking would intensify it.
the engine is a little annoying, maybe something more realistic with revving and breaking up. good start though, and love the train sound.

also wav seems to be really big, i've quickly compressed them to mp3, but i think it still could be less

Yup, the sound files were pretty big 😅


to_parquet when column with only null values

I did create a file named 'system_data.txt' with the following content :
SYSTEM_DATE,col1
Test1,Test1
Test2,Test2
,Test3

This code produces an error :
import dask.dataframe as dd
df = dd.read_csv('system_data.txt',  dtype={"SYSTEM_DATE":'str', 'col1':'str'})
df = df.repartition(npartitions=3)
df.to_parquet('test')

What happened:
RuntimeError: AppendRowGroups requires equal schemas.
I tried with fastparquet, and there is no errors.
What you expected to happen:
The parquet file should be created without errors.
Environment:

Dask version: 2022.2.1
Python version: 3.8
Pyarrow : 7.0.0
Operating System: Linux
Install method : pip

Thanks for opening this issue. I suspect this has to do with one of the partitions (the last one) having an entirely nan column. If you look at the error message, you'll see that it recommends using to_parquet(..., schema="infer"). That worked for me to solve the issue. Does that also work for you?
RuntimeError: Schemas are inconsistent, try using `to_parquet(..., schema="infer")`, or pass an explicit pyarrow schema. Such as `to_parquet(..., schema={"column1": pa.string()})`

ping @rjzamora just to make sure I got that right.

Hi @jsignell, I did try to use schema="infer"but the computation was taking too long (many additional tasks on the real example). Possible it would have worked but I didn't wait until the end.

Ah in that case maybe passing an explicit schema (also mentioned in the error message) would be preferable.

@scharlottej13 yes, it worked when passing explicit schema. I thought that the dtypes that we see on the dask dataframe should be the one used for all partitions.

This seems to be resolved by setting the explicit schema. @odovad Please feel free to reopen if there's more that needs to be done!


Bug fixes to Anna Python client

Aditya Ramkumar and myself were testing out the Anna client for use with droplet, and ran into a few compilation errors in the python client. Specifically, they were in base_client.py and lattices.py. No changes to functionality have been made.

Codecov Report

Merging #10 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #10   +/-   ##
=======================================
  Coverage   67.32%   67.32%
=======================================
  Files          44       44
  Lines        1723     1723
=======================================
  Hits         1160     1160
  Misses        563      563

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 f9fad3d...a9b38a8. Read the comment docs.


Support int8 llama2 (for demo)

Type of Change
feature or bug fix or documentation or others
API changed or not
Description
detail description
JIRA ticket: xxx
Expected Behavior & Potential Risk
the expected behavior that triggered by this PR
How has this PR been tested?
how to reproduce the test (including hardware information)
Dependency Change?
any library dependency introduced or removed

Do NOT merge this PR.

This is done per demo requester. Close it.