fix($compile): correctly merge consecutive text nodes on IE11

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Bug fix. (Actually, IE11 bug work-around.)
What is the current behavior? (You can also link to an open issue here)
Under certain circumstances, IE11 will break up text nodes, thus breaking interpolation. In some cases Angular fails to fix this (by merging consecutive text nodes) or compiles the merged nodes twice.
See also #14924.
What is the new behavior (if this is a feature change)?
Angular does a better job merging consecutive text nodes and doesn't compile merged nodes twice.
Does this PR introduce a breaking change?
Yes.
Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format
[x] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Other information:
As explained in #11781 and #14924, IE11 can (under certain circumstances) break up a text node into multiple consecutive ones, breaking interpolated expressions (e.g. {{'foo'}} would become {{ + 'foo'}}). To work-around this IE11 bug, #11796 introduced extra logic to merge consecutive text nodes (on IE11 only), which relies on the text nodes' having the same parentNode.
This approach works fine in the common case, where compileNodes is called with a live NodeList object, because removing a text node from its parent will automatically update the latter's .childNodes NodeList. It falls short though, when calling compileNodes with either a jqLite/jQuery collection or an Array. In fails in two ways:

If the text nodes do not have a parent at the moment of compiling, there will be no merging.
(This happens for example on directives with transclude: {...}.)
If the text nodes do have a parent, just removing a text node from its parent does not remove it from the collection/array, which means that the merged text nodes will still get compiled and linked (and possibly be displayed in the view). E.g. ['{{text1}}', '{{text2}}', '{{text3}}'] will become ['{{text1}}{{text2}}{{text3}}', '{{text2}}', '{{text3}}'].

This commit works around the above problems by:

Merging consecutive text nodes in the provided list, even if they have no parent.
When merging a text node, explicitly remove it from the list (unless it is a live, auto-updating list).

This can nonetheless have undesirable (albeit rare) side effects by overzealously merging text nodes that are not meant to be merged (see the "BREAKING CHANGE" section below).
Fixes #14924
BREAKING CHANGE:
Note: Everything described below affects IE11 only.
Previously, consecutive text nodes would not get merged if they had no parent. They will now, which might have unexpectd side effects in the following cases:

Passing an array or jqLite/jQuery collection of parent-less text nodes to $compile directly:
// Assuming:
var textNodes = [
  document.createTextNode('{{'),
  document.createTextNode('"foo"'),
  document.createTextNode('}}')
];
var compiledNodes = $compile(textNodes)($rootScope);

// Before:
console.log(compiledNodes.length);   // 3
console.log(compiledNodes.text());   // {{'foo'}}

// After:
console.log(compiledNodes.length);   // 1
console.log(compiledNodes.text());   // foo

// To get the old behavior, compile each node separately:
var textNodes = [
  document.createTextNode('{{'),
  document.createTextNode('"foo"'),
  document.createTextNode('}}')
];
var compiledNodes = angular.element(textNodes.map(function (node) {
  return $compile(node)($rootScope)[0];
}));

Using multi-slot transclusion with non-consecutive, default-content text nodes (that form interpolated expressions when merged):
// Assuming the following component:
.compoent('someThing', {
 template: '<ng-transclude></ng-transclude>'
 transclude: {
   ignored: 'veryImportantContent'
 }
})

<some-thing>
 {{
 <very-important-content>Nooot</very-important-content>
 'foo'}}
</some-thing>

<some-thing>
 <ng-transclude>
   {{       <-- Two separate
   'foo'}}  <-- text nodes
 </ng-transclude>
</some-thing>

<some-thing>
 <ng-transclude>
   foo  <-- The text nodes were merged into `{{'foo'}}`, which was then interpolated
 </ng-transclude>
</some-thing>

<some-thing>
 {{
 <very-important-content>Nooot</very-important-content>
 'foo'}}
</some-thing>

<some-thing>
 <ng-transclude>
   {{       <-- Two separate
   'foo'}}  <-- nodes
 </ng-transclude>
</some-thing>

I am ok-ish with the PR. Anyhow, please move this fix to a new function that is called at the beginning of compileNodes. Is there a chance that nodeList is a line NodeList without a parent?

I am ok-ish with the PR.

Yeah, I am not too happy either :disappointed:

Anyhow, please move this fix to a new function that is called at the beginning of compileNodes.

Done. Or did you mean traverse the whole nodeList before entering the loop?

Is there a chance that nodeList is a line NodeList without a parent?

Not afaict. The only kind of live NodeList that Angular itself is passing is some element's childNodes, so by definition, if they lose their parent, they are removed from the live list. I tried other types of live lists (e.g. document.getElementsByClassName) and elements are also removed from them if they are removed from their parents.

Or did you mean traverse the whole nodeList before entering the loop?

Yep.
This a side, LGTM for 1.6 and 1.5 (for the last one, confirm with Pete)

Or did you mean traverse the whole nodeList before entering the loop?

Yep.

My only concern with that is that we are going to miss cases where a compile function adds a text node after the compiled element. It's a very rare usecase (I doubt anyone does that), so I am fine moving that before the loop if you think it's better.
Considering that the merging of consecutive text nodes was not backported to 1.5x (because it is kind of a breaking change), I assume this is for 1.6.x only as well. @petebacondarwin, thoughts?

Let's merge in 1.6. We should get immediate feedback from the google app, right?

I am experiencing exactly the same on Angular 1.6.3 .
My case is with these two spans one after the other and having the second one not binded:
 {{::model.myVar}}

@endamaco You should open a new issue with a reproduction.


when flutter build macos for Manager, it shows error: Undefined symbols for architecture arm64: "_g_players", referenced from: +[VideoOutlet outletForPlayer:withTextureRegistry:] in VideoOutlet.o

context

#186

can reproduce locally

Run flutter build macos
Changing current working directory to: /Users/runner/work/flutter_convenient_test/flutter_convenient_test/packages/convenient_test_manager

💪 Building with sound null safety 💪

Running pod install...                                             39.[8](https://github.com/fzyzcjy/flutter_convenient_test/runs/6543552468?check_suite_focus=true#step:8:9)s
Building macOS application...
[ 66%] Building CXX object CMakeFiles/dart_vlc_core.dir/api/api.cc.o
/Users/runner/work/flutter_convenient_test/flutter_convenient_test/packages/convenient_test_manager/macos/Flutter/ephemeral/.symlinks/plugins/dart_vlc/dartvlc/api/api.cc:41:48: warning: cannot delete expression with pointer-to-'void' type 'void *' [-Wdelete-incomplete]
static void DestroyObject(void*, void* peer) { delete peer; }
                                               ^      ~~~~
1 warning generated.
[100%] Linking CXX static library libdart_vlc_core.a
[100%] Built target dart_vlc_core
Install the project...
-- Install configuration: ""
-- Installing: /Users/runner/work/flutter_convenient_test/flutter_convenient_test/packages/convenient_test_manager/macos/Pods/../Flutter/ephemeral/.symlinks/plugins/dart_vlc/macos/deps/lib/libdart_vlc_core.a
install_name_tool: warning: changes being made to the file will invalidate the code signature in: /Users/runner/work/flutter_convenient_test/flutter_convenient_test/packages/convenient_test_manager/macos/Pods/VLCKit/VLCKit.xcframework/macos-arm64_x86_64/VLCKit.framework/VLCKit (for architecture x86_64)
install_name_tool: warning: changes being made to the file will invalidate the code signature in: /Users/runner/work/flutter_convenient_test/flutter_convenient_test/packages/convenient_test_manager/macos/Pods/VLCKit/VLCKit.xcframework/macos-arm64_x86_64/VLCKit.framework/VLCKit (for architecture arm64)
ld: warning: ignoring file /Users/runner/work/flutter_convenient_test/flutter_convenient_test/packages/convenient_test_manager/macos/Pods/../Flutter/ephemeral/.symlinks/plugins/dart_vlc/macos/deps/lib/libdart_vlc_core.a, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /Users/runner/hostedtoolcache/flutter/3.0.1-stable/x64/.pub-cache/hosted/pub.dartlang.org/dart_vlc-0.1.[9](https://github.com/fzyzcjy/flutter_convenient_test/runs/6543552468?check_suite_focus=true#step:8:10)/macos/deps/lib/libdart_vlc_core.a, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
Undefined symbols for architecture arm64:
  "_g_players", referenced from:
      +[VideoOutlet outletForPlayer:withTextureRegistry:] in VideoOutlet.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **

maybe it is because: it wants to link to arm64 but we only have x86_64?

try to only build for x86_64, ignore arm64

experiment: modify two places


Crushed when selecting output folder

OS Windows 10 Pro x64 1607
Steps:

drop a png file to the inputbox
select the output folder, choose desktop, and click the white background of the selection window
waifu2x-caffe have stopped working.

Screenshot:

I can confirm it also happens on Windows 7 Pro x64. It just closes on its own.

修正しました


TexLive is outdated

Issue description
TexLive 2017 has been released over a month ago now, and I expect the update to be nontrivial. I thought I'd create this issue to track the updating process.

cc @vcunat

Yes, probably nontrivial.  I don't think it will get to the top of my TODO within a few weeks at least.

Would also like to highlight the lack of a repstopdf symlink, as mentioned here https://github.com/NixOS/nixpkgs/issues/4210

Eh, well, I'll try adding that, though I really dislike their tendency to create a hundred executables.  epstopdf --restricted will do exactly the same...

@NickHu, @7c6f434c: this patch seems good 7aa140488aa – can you test repstopdf in your use cases, to be surer?

It adds repstopdf link unconditionally even if epstopdf doesn't exist?
I am not sure that hacking a repstopdf package with a single symlink into texlive package set is worse (I just install it in addition to some combined TeXLive expression)

@7c6f434c: it only adds repstopdf conditionally on having epstopdf.  I also tested that.  (cp would fail anyway)

Ah nice. If only I remembered what document required repstopdf to test…

@7c6f434c: your thesis? https://github.com/NixOS/nixpkgs/issues/4210#issuecomment-179920807

I had a hope there is a less hopeless test case, because in case of my thesis there is also disser package and bibliography style compatibility…

Hm, on the other hand, it breaks on eps include first, so I can still test even if I do not actually succeed.

@vcunat erm, in what branch is that repstopdf fix?

@7c6f434c, it's in my fork: https://github.com/vcunat/nixpkgs/tree/texlive-repstopdf

It might be easiest to curl https://github.com/NixOS/nixpkgs/commit/7aa140488aa.patch | git am in such cases...

One could naively expect that if GitHub agrees to show it in NixOS/NixPkgs, there is a branch of this repository that contains the commit. I certainly did.

It includes some "related" repositories, apparently, and I misused that here. It would be nice if they showed some reachability information, though.

It would be even nicer if Git handled branches in a saner way…
Looks like this hack does allow my thesis compilation to fail on bibliography instead of repstopdf.

Any news on texlive 2017 ?

@Nadrieril: not on my side, at least.

@NickHu, @7c6f434c: this patch seems good usable 7aa1404 – can you test repstopdf in your use cases, to be surer?

The created repstopdf this way worked on our end. However the check for epstopdf being a symlink seems to fail.


Add a name to SSM conformations in the title block

Very simple change to add a name in the TITLE block to all SSM conformations generated in the first step of the pipeline.
I included both the ligand number and the directory from which this .cnf file was first created.
The idea behind this change is to be able to notice more easily whether the pipeline is using the correct conformations in the later steps.

I tested it on my system, works as planned.


feat(discord.js-utilities): option to make Prompters edit a message

You can now give the editMessage option to any strategy, and if it is set & the message is editable, then the bot will edit it rather than send a new one.
Please pack it so I can test it further

@sapphiredev pack

I tested it and it works perfectly.


Functions mock feature

I propose to add the ability to mock functions
Like that:
const mockedFoo = mockFn();
const foo = instance(mockedFoo);

//and then use as usual
when(foo('bar')).thenReturn(42);
foo('bar'); // 42

verify(foo('bar')).once(); //ok

const [num] = capture(foo).last();
//num - 42

Would really appreciate this pull request

Can we have maintainer's input on this? This is really useful feature.


[FEA] The tools should be able to pass configuration to Hadoop

Is your feature request related to a problem? Please describe.
When the tools is running as a java command in local mode, we hit the problem that properties and configurations needed to authenticate is not passed to the Hadoop configuration constructor.
The current work around is to set the configuration files through setting environment variables. This is a burden for the local command.
This current feature will make it feasible to run the java command passing -Drapids.tools.hadoop.*=**
Additional context

unblocks https://github.com/NVIDIA/spark-rapids-tools/issues/294
https://github.com/apache/spark/blob/branch-3.4/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala

CC @cindyyuanjiang

Sample running the java CLI connecting to Azure DataLake
java -Xmx24g -cp $SPARK_HOME/jars/*:$LOCAL_JAR:$SCRATCH_DIR/jars/hadoop-azure-3.3.4.jar    \
     -Dspark.hadoop.fs.azure.account.key.$KEY.dfs.core.windows.net="$KEY_VALYE" \
     com.nvidia.spark.rapids.tool.qualification.QualificationMain    \
     --platform databricks-azure    \
     abfss://$ABFS_PATH

@cindyyuanjiang


CUBRID] Improve Keyword in SQL Editor

Description

Currently, some of the reserved keywords in SQL editor are missing and doesn't support for Cubrid.

Solution

Remove keywords that Cubrid doesn't support.
Add keywords that SQL Editor missed.

Reference link: https://www.cubrid.org/manual/en/11.3/sql/keyword.html

We passed your PR to our QA team for testing

verified


Losing messages when restarting ConcurrentMessageListenerContainer

I have a similar approach that was described here when there is a fatal error but instead of only stoping particular ConcurrentMessageListenerContainer I am also starting it as below.
    private static class RestartBatchErrorHandler implements BatchErrorHandler {
        private final KafkaListenerEndpointRegistry listenerEndpointRegistry;
        private final String listenerId;

        private final AtomicBoolean restarting = new AtomicBoolean(false);

        private RestartBatchErrorHandler(KafkaListenerEndpointRegistry listenerEndpointRegistry, String listenerId) {
            this.listenerEndpointRegistry = listenerEndpointRegistry;
            this.listenerId = listenerId;
        }

        @Override
        public void handle(Exception thrownException, ConsumerRecords<?, ?> data) {
            if (restarting.compareAndSet(false, true)) {
                listenerEndpointRegistry.getListenerContainer(listenerId).stop();
                listenerEndpointRegistry.getListenerContainer(listenerId).start();
                restarting.set(false);
            }
        }
    }

My ListenerContainerFactory configuration
    @PostConstruct
    private void kafkaListenerContainerFactory() {
        properties.getConsumers().forEach((key, value) -> {
            ConcurrentKafkaListenerContainerFactory<Integer, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
            factory.setConcurrency(value.getConcurrency());
            factory.setBatchListener(value.isBatchMode());
            factory.getContainerProperties().setPollTimeout(value.getPollTimeout());
            factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL);
            factory.getContainerProperties().setAckOnError(false);
            factory.getContainerProperties().setGenericErrorHandler(new RestartBatchErrorHandler(listenerEndpointRegistry,
                                                                                value.listenerId));
            factory.setConsumerFactory(consumerFactory(value));
            beanFactory.registerSingleton(value.containerId, factory);
        });
    }

I am using spring-kafka:1.1.3.RELEASE.
With the configuration above I can see that I am losing messages.
I thought at the beginning that the issue is that I am not using separate thread while restarting as was mentioned here but it does not look like.
Thanks in advance for any help.

Sorry for the delay; this one fell through the cracks. Can you show the rest of your configuration (consumer factory etc).
Also, I would recommend upgrading to at least version 1.3.3 (the current version is 2.1.4). 1.3.x introduced a much simpler threading model, thanks to KIP-62.

private ConsumerFactory<Integer, String> consumerFactory(Properties.Consumer consumer) {
        return new DefaultKafkaConsumerFactory<>(ImmutableMap.<String, Object>builder().
                put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()).
                put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()).
                put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, properties.getBootstrapServers()).
                put(ConsumerConfig.GROUP_ID_CONFIG, consumer.getGroup()).
                put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, consumer.getAutoOffsetReset()).
                put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, consumer.getMaxPartitionFetchBytes()).
                put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, 1).
                put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false).
                put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, consumer.getMaxPollRecords()).
                build());
    }

Please let me know if you need more details

I have:

upgraded to spring-kafka:1.3.3.RELEASE
started to invoking beanFactory.initializeBean(factory, value.containerId) just after registerSingleton

When I have deployed it to production I have noticed that topic's lag growing very fast like the offset was not committing (my kafka version on production is <IP_ADDRESS>)
Do I miss something in my configuration?

        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL);

With manual ack mode, you have to do the acks - are you doing that? Show your listener code. Do you really need MANUAL acks? It's generally better to let the container manage the offsets.

I have already set it please look at the code snippet above but I think it might be related to the fact that  put(ConsumerConfig.GROUP_ID_CONFIG, consumer.getGroup()) is not taken under consideration. I can see that a new group was created so all commits are going to it but I need to confirm it.

I don't understand what you are trying to do; how do all these factories get associated with a @KafkaListener ?

All these factories are associated by containerId please see below
@KafkaListener(
  id = "${value.listenerId}",
  topics = "${value.topic}",
  containerFactory = "${value.containerId}"
)

So the problem is with missing groupId in KafkaListener annotation before when I was using spring-kafka:1.1.3.RELEASE I set it by using put(ConsumerConfig.GROUP_ID_CONFIG, consumer.getGroup()) but now spring-kafka:1.3.3.RELEASE sets a default value for groupId .
I need to set groupId in @KafkaListener and then the problem should be fixed (I have already tested)

To revert to the previous behavior, you can set idIsGroup to false.
	/**
	 * When {@link #groupId() groupId} is not provided, use the {@link #id() id} (if
	 * provided) as the {@code group.id} property for the consumer. Set to false, to use
	 * the {@code group.id} from the consumer factory.
	 * @return false to disable.
	 * @since 1.3
	 */
	boolean idIsGroup() default true;


BottomSheetScrollView doesn't work!

Hello, I'm writing to you this as an urgent issue. After passing few hours to configure the bottom-sheet navigator in my BIG app. Now, I come to show the content of it, which is a list. Even with BottomSheetScrollView I can't scroll down or top. Please help.

I just figured it out! I've made a mistake, I didn't populate the scrollview with enough items. I consider this closed.


updata footer of subscribe-section

Leave it at the bottom of the page, not at the middle
Old-Footer :

New-Footer:

and move property of (border-radius and transform) because of :

so it can be better prefixing and more accurate arrangement

Thank you @Ayman98-art


Comments cannot be marked as issues

Feature request: when adding a comment via the diff viewer, it is not possible to open an issue for the comment (like in review board). This way it is much more difficult to see which reuests have been reviewed in the dashboard.

Could you please confirm if the issue is fixed in new build (https://github.com/ritesh-kapoor/review-board-idea-plugin/releases/tag/v0.1.3-beta.1)

Yes great, it is working now with the 0.1.3-beta version. Thanks!

Thanks @uekemp


Fixes to versions of packages

The requirements.txt file lists several Python library versions which Render can use. The particular combination of versions listed in the project instructions results in the deployed version throwing an ArrowTypeError. This PR fixes that by updating those versions to match the ones in my local's venv.

"We have investigated ourselves and found no evidence of wrongdoing."


[pg] add migrationsTable config support for migration

With mysql migrations you can change the migration table name, this PR add support for migration table name change for pg.
For context I'm trying to add dynamic schema support to my application. This can be achieved easily if we can change the migration table. I'm using the database connection to specify, through the search path, the schema to do the migration on but I need to have separate migration table for each schema.

Thanks for PR!
I think you need to add 1 more pg driver neon-http and and migrator changes there as well.
Also would be great to make drizzle schema customizable same as table name for migrations

@AndriiSherman done !

I just thought about one more addition I would like to have in this PR before the actual merge. I think we need to add a few tests for migrations. I will guide you a bit on what and where should be added:
Here is a test example for migrate(). In this test, we run migrations and then try to query the tables that are in the migration script. If no errors occur, it means migrate() worked as expected.
It would be great if you could create another set of tests to check:

Custom schema is working.
Custom table name is working.
Both custom schema and custom table name are working.

You can check it by querying the specific custom table and custom schema to see if those tables are created and not empty. Additionally, you can query tables from the migration script.
It would be great if you could add it for:

node-postgres
postgres-js
vercel-pg
neon-http

@AndriiSherman I've added the tests.
I was unable to run them for vercel/neon because you can't test it using a local docker DB.

Thanks for your work @g3r4n ! I actually need this now too and was going to do a PR of my own, glad to see someone already picked it up ❤!

@AndriiSherman anything more you need from end to merge this PR ?

@g3r4n this all looks good! Just resolve the conflicts and I'll merge this PR

@AndriiSherman Done !

@g3r4n it seems like there are new conflicts 🥺, do you have time to resolve them?
@AndriiSherman I'd love to see this merged once conflicts are resolved 🎉!

I'll resolve the conflicts

@AndriiSherman let me know if you need any help !

I think it's done. I just added this feature to SQLite as well. I'm going to merge it today and add it to the 0.29.5 release


Updates dependencies

Changes

Updates gulp-rename.
Updates silent-npm-registry-client.

Testing

gulp test should pass.

Notes

I'm not totally certain whether this change is covered by the tests or whether we need to make a release to be sure nothing is broken.

I don't know if it's related to this PR or was already happening, but when I run gulp test, I get a bunch of jest-haste-map: @providesModule naming collision warnings.

Yeah, but isn't it supposed to be there?

@Scotchester err right. Try it now.

I'm not totally certain whether this change is covered by the tests or whether we need to make a release to be sure nothing is broken.

I'm not sure of the answer here, but I'd like to do a release just to be sure, I think about 80% of the release stuff is unit tested.


i18n(de): update guides/deploy/gitlab.mdx

Description (required)

update guides/deploy/gitlab.mdx

Related issues & labels (optional)

#5130
#5294
#8167
#8811
#9240
Suggested label: i18n

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File
Note

de/guides/deploy/gitlab.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


Provide a fallback that returns next avaliable language

Based on the order of languages in GARNETT_TRANSLATABLE_LANGUAGES
Will also need a way to get which language is being displayed

Added in #36

Actually still a bit more to do on this

Finished in #40


Changes to reusable-test.yaml broke main-push.yaml

Incorporating the pandas version 1.x/2.x into the test_in_environments job caused the main-push workflow to break as there was no pandas-version variable added.
Triage:
Impact: 4 - currently, the main-push GH Action will always fail as it can't run the test_in_environments job without a pandas-version variable being specified
Probability: 2 - only affecting Features Squad, as branches are still merged into main even if the workflow fails. Hopefully it's unlikely that there would be significant errors in the branch being merged into main if workflows had passed during the PR process but we probably shouldn't assume too much.
Combined score 8 (important bug)

I'm not sure we should triage bugs that occur unless those bugs can be replicated in a version of csvcubed which has been released. If the bug hasn't made it out in a release yet, then we should hold off on releasing until either:

The bug has been fixed in main released,
The change which caused the bug has been reverted in main.


Helm: version update

@alrf Have you tested this thoroughly? Major updates like this typically come with breaking changes.

@DandyDeveloper I tested, unlike @rishabh6788.
Version update should have been checked and tested here:
https://github.com/opendistro-for-elasticsearch/opendistro-build/commit/79976f5dbb895b5ac0b5d83fe64ef833288d9964 but was not.
As result, helm package . command creates opendistro-es-1.3.0.tgz archive with imageTag: 1.4.0 inside yaml files due to this misconfiguration.
I just want to fix it.
Moreover, this https://github.com/opendistro-for-elasticsearch/opendistro-build/commit/e89aa262fc72a73fe86a5bb88f498d69f04288e6 commit broke the building of opendistro images (check my comments for that commit).
And I also tested that.
BTW, would be better for project use githab hooks for "base checks" of the builds before merging the commits - at least, compare imageTags and archive, produced by helm package command.

@alrf
@aetter Can you take a look at this?

Version updated to latest. Closing.


Add diagram for Data Bridge's Presentation building block

https://deploy-preview-65--wikidata-wikibase-architecture.netlify.app/systems/WikibaseClient/05-Building_Block_View.html#presentation

@Silvan-WMDE I like your idea from https://github.com/wmde/wikidata-wikibase-architecture/pull/56#pullrequestreview-576474520
What do the others think? @jakobw @addshore

@Silvan-WMDE I like your idea from https://github.com/wmde/wikidata-wikibase-architecture/pull/56#pullrequestreview-576474520
What do the others think? @jakobw @addshore

@Silvan-WMDE I like your idea from #56 (review)
What do the others think? @jakobw @addshore

It looks nice but I don't think it adds a lot to the diagram. Also, would that mean that all components in the other diagrams that aren't single files would need to become stacked boxes? :man_shrugging: I'm not strongly opposing but I'm not a big fan either.

@Silvan-WMDE I like your idea from #56 (review)
What do the others think? @jakobw @addshore

It looks nice but I don't think it adds a lot to the diagram. Also, would that mean that all components in the other diagrams that aren't single files would need to become stacked boxes? :man_shrugging: I'm not strongly opposing but I'm not a big fan either.

man_shrugging I'm not strongly opposing but I'm not a big fan either.

Ok, sounds like this change should not be handled here. Maybe it belongs to the "shapes" in https://phabricator.wikimedia.org/T273042, if we want it.

man_shrugging I'm not strongly opposing but I'm not a big fan either.

Ok, sounds like this change should not be handled here. Maybe it belongs to the "shapes" in https://phabricator.wikimedia.org/T273042, if we want it.


Added test for custom type encoding

We are seeing an issue where encodedContent in Custom types is unexpectedly base64 encoded which does not match the behavior on xmtp-js.
In Addition, the test in this PR shows that encodedContent.content is received as undefined, only on Android.
The goal in this PR is to fix the two issues caught by the new test register and use custom content type transaction reference

Similar test added in https://github.com/xmtp/xmtp-react-native/pull/209, and issue resolved


Unable to pipe fluids into IC2 machines

Running Mekanism 9.2.1 and IC2 2.6.138-ex110 on Minecraft 1.10.2 and Forge <IP_ADDRESS>5.

Place an IC2 machine that accepts fluids (e.g., Fluid/Solid Canning Machine).
Place a Mechanical Pipe next to the IC2 machine.

There is no way (that I can determine) to connect the pipe to the IC2 machine, let alone pipe fluids into the machine.

Able to reproduce with the following IC2 machines:

Fluid/Solid Canning Machine
Fluid Distributor
Fluid Regulator

There is a workaround for this issue:

Place a Basic Fluid Tank next to the IC2 machine:

Install a Fluid Pulling Upgrade into the IC2 machine:

Not on my end, IC2 is doing something funky with their fluid management.


sync UI, fix topo bugs

Please answer these questions before submitting pull request

Why submit this pull request?

[ ] Bug fix

[ ] New feature provided

[ ] Improve performance

Related issues

Bug fix

Bug description.

How to fix?

New feature or improvement

Describe the details and related test reports.

Codecov Report

Merging #4100 into master will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #4100      +/-   ##
=========================================
+ Coverage   27.28%   27.3%   +0.02%
=========================================
  Files        1140    1140
  Lines       25024   25024
  Branches     3618    3618
=========================================
+ Hits         6827    6833       +6
+ Misses      17592   17585       -7
- Partials      605     606       +1

Impacted Files
Coverage Δ

...walking/apm/agent/core/context/TracingContext.java
58.2% <0%> (-0.5%)
:arrow_down:

.../agent/core/context/trace/AbstractTracingSpan.java
61.26% <0%> (+0.9%)
:arrow_up:

...apm/agent/core/remote/GRPCStreamServiceStatus.java
54.16% <0%> (+25%)
:arrow_up:

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 6fce5ca...df25189. Read the comment docs.


fix: Use ember-fetch to avoid test failures

closes #187
I'm not sure how to stub fetch, and fix the tests. Any guidance is appreciated.
Maybe something like http://www.wheresrhys.co.uk/fetch-mock/ ?

Also, I'd like to confirm that this PR does solve the original issue.

fetch-mock looks like the simplest solution to me. Also, it seems like tests are failing in Travis due to some other thing unrelated to this PR, gah!

I ran into this issue too. It makes it impossible to write robust acceptance tests that cover login and took a while to debug. It would be great to get this fix merged, so that others won't hit the same issue.
@knownasilya I've put up a PR that fixes the tests.
@jpadilla Is that all that's preventing this PR from being merged?


@QuerydslPredicate

@QuerydslPredicate(root = SysUser.class) Predicate predicate
How to use like，ne ...   in parameters

This is a Spring Data annotation and is not from QueryDSL itself. Your question is better asked at one of the Spring forums 😄

This is a Spring Data annotation and is not from QueryDSL itself. Your question is better asked at one of the Spring forums 😄

thank you


Link copied feedback and some styling customisation would be sweet!

Hey this is really nice.
A few suggestions

When using the link copy button, it would be really nice to get a little bit of feedback rather than the dialog just disappearing suddenly
It would be nice to get a styling API, right now I've had to use !important to override the styling for the UI. Let me know if there's a better way
Just a nitpick with the component name - it's a bit odd to have the React in the name abbreviated to R, kind of non standard. I would simply change it to import { ReactWebShare } from 'react-web-share' or make it a default export.

No big deal either way, this is really helpful!

@rohan-deshpande
I appreciate you taking time to provide valuable feedback

When using the link copy button, it would be really nice to get a little bit of feedback rather than the dialog just disappearing suddenly
It would be nice to get a styling API, right now I've had to use !important to override the styling for the UI. Let me know if there's a better way

Yeah, I also wanted some to add some feedback but my primary goal was to keep it minimal with zero dependency on any styling library, (Anyways I'm happy to reconsider adding some minimal styling library like https://github.com/cristianbote/goober) but this will still add 1KB(gz) to runtime which  is too much for a 3KB(gz) Library

Just a nitpick with the component name - it's a bit odd to have the React in the name abbreviated to R, kind of non standard. I would simply change it to import { ReactWebShare } from 'react-web-share' or make it a default export.

I think making it default export might be better since there are no other component coming in future, I'll think of doing this in next major release

@rohan-deshpande
I appreciate you taking time to provide valuable feedback

When using the link copy button, it would be really nice to get a little bit of feedback rather than the dialog just disappearing suddenly
It would be nice to get a styling API, right now I've had to use !important to override the styling for the UI. Let me know if there's a better way

Yeah, I also wanted some to add some feedback but my primary goal was to keep it minimal with zero dependency on any styling library, (Anyways I'm happy to reconsider adding some minimal styling library like https://github.com/cristianbote/goober) but this will still add 1KB(gz) to runtime which  is too much for a 3KB(gz) Library

Just a nitpick with the component name - it's a bit odd to have the React in the name abbreviated to R, kind of non standard. I would simply change it to import { ReactWebShare } from 'react-web-share' or make it a default export.

I think making it default export might be better since there are no other component coming in future, I'll think of doing this in next major release

Yeah, I also wanted some to add some proper UI feedback but my primary goal was to keep it minimal with zero dependency on any styling library

I think you could easily achieve this by simply

Showing the user that the link has been copied via text in the modal
Fading out the modal after a small period of time

You can do this without any library, it's just a bit jarring right now.

@rohan-deshpande
Sounds good, If I get some time in upcoming days I'll try to incorporate this suggestions


fix update params

Description
fix https://github.com/apache/incubator-mxnet/issues/14216
see detailed analysis in the issue.
I added a unit test although this may not be a common/correct use case in MXNet.
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes
add check for empty list
Comments

If this change is a backward incompatible change, why must this change be made.
Interesting edge cases to note here

@eric-haibin-lin @apeforest @ptrendx could you help take a look? Thanks!

@mxnet-label-bot add[Module, Optimizer, Python, pr-awaiting-review]


Update to asyncio

This is a large PR so I'm marking it as draft first to get opinions / potential issues as I go through refactoring everything to use asyncio.
What it does

Makes most functions async
Removes threading

Should hopefully improve the speed & reliability of the library
Why
Bleak is not meant to be run in multiple threads (see https://github.com/hbldh/bleak/discussions/1191 and https://github.com/hbldh/bleak/issues/242) where the maintainers recommend against having multiple threads and event loops

the design paradigm for bleak is to have multiple connections all under 1 event loop in 1 thread

Concerns

This will be a breaking change – will require updating all code that uses spherov2 and updating documentation
I only have Sphero Bolts – it would be great if people with other Spheros could test this with theirs

ToDo:

[ ] Test! Test! Test!
[ ] Remove left-over comments from when updating

As you know this is breaking, so I'm hesitant to merge it into main branch. Again, I tried https://github.com/artificial-intelligence-class/spherov2.py/tree/async async before, the API will be confusing to use.
Using asyncio just forces this library to use the pattern that bleak was intended for. Bleak is a BLE library used by this project, not that this project is built with bleak in mind. We can always swap out bleak and use other BLE libraries (but last time I checked bleak was the best cross-platform one).
Hopefully you get my point here.

Just to clarify you feel that the SpheroV2 API would be confusing to use if switched to asyncio? It definitely would require changes however but I'm not sure it's that more confusing i.e. any old code that be quickly changed by putting it into an async function and then awaiting calls to SpheroV2
e.g. The Bolt test script goes from
print("Testing Starting...")
print("Connecting to Bolt...")
toy = scanner.find_BOLT()

if toy is not None:
    print("Connected.")
    with SpheroEduAPI(toy) as droid:
        print("Testing Start...")
        droid.set_main_led(Color(r=0, g=255, b=0)) #Sets whole Matrix

        droid.reset_aim()
        droid.set_main_led(Color(r=0,g=0,b=255))

        print("Luminosity: " + str(droid.get_luminosity()))
        print("Accel: " + str(droid.get_acceleration()))

        droid.set_main_led(Color(r=255, g=0, b=0)) #Sets whole Matrix

to
async def main():
    print("Testing Starting...")
    print("Connecting to Bolt...")
    toy = await scanner.find_BOLT()

    if toy is not None:
        print("Connected.")
        async with SpheroEduAPI(toy) as droid:
            print("Testing Start...")
            await droid.set_main_led(Color(r=0, g=255, b=0)) #Sets whole Matrix

            await droid.reset_aim()
            await droid.set_main_led(Color(r=0,g=0,b=255))

            print("Luminosity: " + str(droid.get_luminosity()))
            print("Accel: " + str(droid.get_acceleration()))

            await droid.set_main_led(Color(r=255, g=0, b=0)) #Sets whole Matrix
            print("Testing End...")

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

It also has some advantages especially with controlling multiple Spheros at once e.g. I need to send commands to multiple Spheros at once and having this be async makes that very easy.
I see what you mean with wanting to be adapter-agnostic and being able to switch out Bleak in that case then maybe switching to asyncio isn't worth it.
However IMO given that the library uses Bleak right now and not following Bleak's patterns has issues (I've been able to trace back https://github.com/artificial-intelligence-class/spherov2.py/issues/35, https://github.com/artificial-intelligence-class/spherov2.py/issues/36, and https://github.com/artificial-intelligence-class/spherov2.py/issues/37 to not being async) it makes sense to align. Switching out from Bleak is a hypothetical while this issues are actual.
In the end I'm happy to close this PR if it doesn't align with your plan for the project and just maintain my own fork

In your example, some methods are async and some not, which is confusing to use and prone to user errors.
The issues you are having, I think might be related to specific bleak versions, since I'm not having issues connecting to multiple droids.
In any case, seems to me that these are bleak issues, not this library's issue. If you think keeping one bleak instance/asyncio loop is the solution, then you should write an adapter that only uses one global bleak instance and one asyncio loop under a single thread, not rewriting the whole API.

Anyway I'll close this PR for now – if anything changes in regards to your project plans I'd be happy to reopen


cannot install by gem

ERROR:  Could not find a valid gem 'alfi' (>= 0), here is why:
Unable to download data from http://ruby.taobao.org/ - bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

Hey, I never heard of ruby taobao before, I uploaded to rubygems, maybe that's some kind of mirror?

yes ,it's a mirror,i reset sources to rubygems and install alfi success , thank you.


improve type stability of semidiscretize

Adding the "is-inplace" specification improves type stability (inferrability), see https://scimlbase.sciml.ai/stable/interfaces/Problems/#In-place-Specification. This should help with improvements in precompilation and downstream usage.

Yes - it's unrelated to this PR, I think. I caught a bug in the curved mesh initialization of StartUpDG.jl and pushed a hotfix. It broke the curved DGMulti tests (which were wrong anyways).
I can add a PR to fix this today, or would you prefer I just make the changes in this branch and add them to this PR?

Ah, thanks! So the current version of DGMulti.jl is fixed? I can update that, thanks!

I think StartUpDG.jl was already updated - I made it minor update since it was a bug fix.
The issue is that the Trixi.jl tests were computed using the buggy version of StartUpDG.jl 😅, so they need to be updated.

I am preparing the changes and will make a new PR to keep the history clean

Thanks!


Docs.MS Release Updates for Microsoft.Azure.Core.Spatial.NewtonsoftJson

Update docs metadata and targeting for release of Microsoft.Azure.Core.Spatial.NewtonsoftJson

Docs Build status updates of commit 49a7794:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

api/overview/azure/microsoft.core.spatial.newtonsoftjson-readme-pre.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


ios 9.0.0 ST Error: simulateTouch:atPoint:withType: index:0 type:1 pathIndex:0

iphone 5c,ios 9.0.0 use theos "tool"  success   "tweak" ST Error: simulateTouch:atPoint:withType: index:0 type:1 pathIndex:0

this only supports ios 6 and 7. ios 9, 10 are totally different. working on it

@hoangpx Thanks for the great work on simulateTouch. Do we currently have an ETA for supporton ios9?

While we wait for your aweome work, are there any alternatives for this library? Anyone?

FYI: if you install from the BigBoss repo it should work for you, i'm on iOS 9.0.2, after a reboot you might need to do: killall -9 backboardd


Merge error: file app.scss exists

[jan@arch exam-schedule]$ ember v
version: 1.13.8
node: 3.2.0
npm: 2.13.4
os: linux x64
[jan@arch exam-schedule]$ ember s --host ::
version: 1.13.8
Livereload server on http://:::49152
Serving on http://:::4200/
Merge error: file app.scss exists in /home/jan/ember/exam-schedule/tmp/broccoli_merge_trees-input_base_path-pudC0ESO.tmp/23 and /home/jan/ember/exam-schedule/tmp/broccoli_merge_trees-input_base_path-pudC0ESO.tmp/25
Pass option { overwrite: true } to mergeTrees in order to have the latter file win.
Error: Merge error: file app.scss exists in /home/jan/ember/exam-schedule/tmp/broccoli_merge_trees-input_base_path-pudC0ESO.tmp/23 and /home/jan/ember/exam-schedule/tmp/broccoli_merge_trees-input_base_path-pudC0ESO.tmp/25
Pass option { overwrite: true } to mergeTrees in order to have the latter file win.
    at mergeRelativePath (/home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/index.js:118:19)
    at BroccoliMergeTrees.build (/home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/index.js:36:3)
    at /home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/node_modules/broccoli-plugin/read_compat.js:61:34
    at lib$rsvp$$internal$$tryCatch (/home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/node_modules/broccoli-plugin/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:493:16)
    at lib$rsvp$$internal$$invokeCallback (/home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/node_modules/broccoli-plugin/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:505:17)
    at lib$rsvp$$internal$$publish (/home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/node_modules/broccoli-plugin/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:476:11)
    at lib$rsvp$asap$$flush (/home/jan/ember/exam-schedule/node_modules/ember-component-css/node_modules/broccoli-merge-trees/node_modules/broccoli-plugin/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:1198:9)
    at doNTCallback0 (node.js:407:9)
    at process._tickCallback (node.js:336:13)
[jan@arch exam-schedule]$ cat package.json
{
  "name": "exam-schedule",
  "version": "0.0.0",
  "description": "Small description for exam-schedule goes here",
  "private": true,
  "directories": {
    "doc": "doc",
    "test": "tests"
  },
  "scripts": {
    "build": "ember build",
    "start": "ember server",
    "test": "ember test"
  },
  "repository": "",
  "engines": {
    "node": ">= 0.10.0"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "broccoli-asset-rev": "^2.1.2",
    "ember-cli": "1.13.8",
    "ember-cli-app-version": "0.5.0",
    "ember-cli-autoprefixer": "0.5.0",
    "ember-cli-babel": "^5.1.3",
    "ember-cli-content-security-policy": "0.4.0",
    "ember-cli-dependency-checker": "^1.0.1",
    "ember-cli-emblem": "0.3.0",
    "ember-cli-htmlbars": "0.7.9",
    "ember-cli-htmlbars-inline-precompile": "^0.2.0",
    "ember-cli-ic-ajax": "0.2.1",
    "ember-cli-inject-live-reload": "^1.3.1",
    "ember-cli-mirage": "0.1.8",
    "ember-cli-qunit": "^1.0.0",
    "ember-cli-release": "0.2.3",
    "ember-cli-sass": "4.2.0",
    "ember-cli-simple-auth": "0.8.0",
    "ember-cli-simple-auth-token": "0.7.3",
    "ember-cli-sri": "^1.0.3",
    "ember-cli-uglify": "^1.2.0",
    "ember-component-css": "0.1.6",
    "ember-data": "1.13.8",
    "ember-disable-proxy-controllers": "^1.0.0",
    "ember-export-application-global": "^1.0.3",
    "ember-noscript": "2.0.0",
    "ember-page-title": "2.0.6",
    "ember-suave": "1.0.0",
    "liquid-fire": "0.21.2"
  }
}

Installing ember-page-title triggers the above error on build. I use a (non-empty) styles/app.sass file, if that matters.
Could this possibly be an incompatibility with another addon that uses the same hack?
As a temporary fix, this seems to work:
$ rm node_modules/ember-page-title/app/styles/app.scss

On a related note: What is the reason for this hack - what does this addon have to do with styles?

This addon builds documentation using the tests/dummy directory. There's a bug which prevents this from working without that file. It seems that this totally breaks apps that use this. I'll publish a new release without this file as a stop-gap measure.

See https://github.com/ember-cli/ember-cli/pull/3344 for more info on this.

@buschtoens could you try 2.0.7? I've fixed it by using a prepublish / postpublish script in package.json to prevent this from happening.

Awesome! Works like a charm. Thanks a lot. :)


[Question] Questions regarding ControllerData and ControllerStateType structure

Hi! I’m working with Vuer to process Quest 3 controller data, but I have a few questions that I hope you can help clarify.
/**
 * Significantly more accurate and stable than hand-tracking.
 */
export type ControllerData = {
  left?:       Matrix4Tuple;      // array with length==25
  right?:      Matrix4Tuple;     // array with length==25
  leftState?:  ControllerStateType;
  rightState?: ControllerStateType;
};

export type ControllerStateType = {
  trigger:    boolean;
  squeeze:    boolean;
  touchpad:   boolean;
  thumbstick: boolean;
  aButton:    boolean;
  bButton:    boolean;

  triggerValue:      number;
  squeezeValue:      number;
  touchpadValue:   [ number, number ];   // X and Y values for the touchpad
  thumbstickValue: [ number, number ]; // X and Y values for the thumbstick
  aButtonValue:      boolean;
  bButtonValue:      boolean;
};

Regarding left and right in ControllerData:
The left and right fields are of type Matrix4Tuple, with a length of 25. This length seems to match the number of key points in hand tracking. Could you clarify if these left and right matrices represent the hand keypoint poses just same as hand tracking?

Regarding the state fields in ControllerStateType:
What exactly do the fields trigger, squeeze, touchpad, thumbstick, aButton, and bButton represent? What are their specific functions?
Is there any documentation or detailed reference available for these fields?

Thanks in advance for your help. I look forward to your response!

I made a mistake, the length should be 16 as opposed to 25.  I have just fixed this in the current version of the doc.
The details of these buttons can be found here:

Button and Trackpad States
The Motion Controller API is covered by the XRInputSource.gamepad sectionin the web standard. You can find it through this MDN page.
attribute to get the button and trackpad states. The following code snippet shows how to extract the button and trackpad states from the gamepad:
Quest 3 Motion Controller States
The MotionController offers a way to stream the current pose,
button and trackpad states of the Quest 3 motion controller to
the python side.  To use this mixed reality (XR) feature, you
need to setup vuer behind a SSL proxy. I usually use
ngrok, which is a paid service. You can also
use local tunnel, which is free.
:class: warning
Please go through the relevant documentation of either ngrok
or localtunnel before preceding.
- **ngrok documentation:** [https://ngrok.com/docs](https://ngrok.com/docs)
- **local tunnel documentation:** [https://localtunnel.me](https://localtunnel.me)

Motion Controller API
You can get the full pose of the motion controllers by listening to the CONTROLLER_MOVE event.
You can add flags left and right to specify which side you want to track.
:class: warning
Make sure that you set the `stream` option to `True` to start streaming the
controller movement! Otherwise the event will not be triggered. This is to avoid
unnecessary clogging up the uplink from the client.

from vuer import Vuer, VuerSession
from vuer.schemas import MotionControllers
from asyncio import sleep

app = Vuer()

@app.add_handler("CONTROLLER_MOVE")
async def handler(event, session):
    print(f"Movement Event: key-{event.key}", event.value)

@app.spawn(start=True)
async def main(session: VuerSession):
    # Important: You need to set the `stream` option to `True` to start
    # streaming the controller movement.
    session.upsert @ MotionControllers(stream=True, key="motion-controller")

    while True:
        await sleep(1)

The returned data looks like the following:
/**
 * Significantly more accurate and stable than controller-tracking.
 */
export type ControllerData = {
  left?:       Matrix4Tuple;      // array with length==16
  right?:      Matrix4Tuple;      // array with length==16
  leftState?:  ControllerStateType;
  rightState?: ControllerStateType;
};

export type ControllerStateType = {
  trigger:    boolean;
  squeeze:    boolean;
  touchpad:   boolean;
  thumbstick: boolean;
  aButton:    boolean;
  bButton:    boolean;

  triggerValue:      number;
  squeezeValue:      number;
  touchpadValue:   [ number, number ];   // X and Y values for the touchpad
  thumbstickValue: [ number, number ]; // X and Y values for the thumbstick
  aButtonValue:      boolean;
  bButtonValue:      boolean;
};

Button and Trackpad States
The webXR Motion Controller API uses the XRInputSource's gamepad.
For detailed API, refer to the link
attribute to get the button and trackpad states. The following code snippet shows how to extract the button and trackpad states from the gamepad:
I plan to add a more event driven API for this in the future to make it easier to
register press events.

Buttons
xr-standard Mapping
Required

buttons[0]
Primary trigger
Yes

buttons[1]
Primary squeeze button
No

buttons[2]
Primary touchpad
No

buttons[3]
Primary thumbstick
No

Axes
xr-standard Mapping
Required

axes[0]
Primary touchpad X
No

axes[1]
Primary touchpad Y
No

axes[2]
Primary thumbstick X
No

axes[3]
Primary thumbstick Y
No

  const gamepad = inputSource.gamepad;
  const buttons = gamepad?.buttons || [];

  return {
    transform: Array.from(transform) as Matrix4Tuple,
    trigger: buttons[0]?.pressed  || false,
    squeeze: buttons[1]?.pressed  || false,
    touchpad: buttons[2]?.pressed || false,
    thumbstick: buttons[3]?.pressed || false,
    aButton: buttons[4]?.pressed || false,
    bButton: buttons[5]?.pressed || false,

    triggerValue: buttons[0]?.value || 0,
    squeezeValue: buttons[1]?.value || 0,
    touchpadValue: [gamepad?.axes[0] || 0, gamepad?.axes[1] || 0],
    thumbstickValue: [gamepad?.axes[2] || 0, gamepad?.axes[3] || 0],
    aButtonValue: buttons[4]?.pressed || false,
    bButtonValue: buttons[5]?.pressed || false,
  };

Matrix format
All 4x4 transform matrices used in WebGL are stored in 16-element Float32Arrays.
The values are stored in the array in column-major order; that is, each column is
written into the array top-down before moving to the next column to the right and
writing it into the array. Therefore, for the array [a0, a1, a2, …, a13, a14, a15],
the matrix looks like this:
                                  ⌈  a0 a4 a8 a12  ⌉
                                  |  a1 a5 a9 a13  |
                                  |  a2 a6 a10 a14 |
                                  ⌊  a3 a7 a11 a15 ⌋

For details, refer to the MDN documentation on XR Rigid Body Transformation

Thank you for providing the documentation! I have successfully implemented a remote control task for the robotic arm using the API, and I truly appreciate your support.
During my usage, I encountered the following issues and would like to ask for your advice on possible solutions:
Controller Tracking Issues
Tracking Performance: Compared to gesture tracking, the controller tracking appears less reliable. It often loses tracking, for example, when the controller is within the field of view or temporarily set down.
Recovery: Once tracking is lost, it seems impossible to recover automatically, which affects task continuity. Do you have any recommendations to improve these tracking issues?
Compatibility Between Gesture and Controller Tracking
I noticed that gesture tracking and controller tracking cannot run simultaneously. This limitation presents challenges in scenarios requiring mixed input methods. Is this a design restriction of the API? If so, is there any possibility to enable simultaneous tracking for both inputs?
Looking forward to your response, and thank you again!

Thank you for providing the documentation! I have successfully implemented a remote control task for the robotic arm using the API, and I truly appreciate your support.
During my usage, I encountered the following issues and would like to ask for your advice on possible solutions:

Controller Tracking Issues
Tracking Performance: Compared to gesture tracking, the controller tracking appears less reliable. It often loses tracking, for example, when the controller is within the field of view or temporarily set down.
Recovery: Once tracking is lost, it seems impossible to recover automatically, which affects task continuity. Do you have any recommendations to improve these tracking issues?

Compatibility Between Gesture and Controller Tracking
I noticed that gesture tracking and controller tracking cannot run simultaneously. This limitation presents challenges in scenarios requiring mixed input methods. Is this a design restriction of the API? If so, is there any possibility to enable simultaneous tracking for both inputs?

Looking forward to your response, and thank you again!


Custom template engine

Note: This pull request includes my previous https://github.com/waterlock/waterlock-local-auth/pull/71
This fork closes #57 and respects the default sails.js behaviour (where ejs is the template engine of choice).

Coverage remained the same at 37.313% when pulling 03f24e49f7ef78bd57178294cc54e656384a8f1d on enricodeleo:feature/template-engine into 5ac2f153e41cefaf91d5f90ffc86b50dab2dde0f on waterlock:master.


Fix package metadata to match default settings for aspnetcore

Part of https://github.com/aspnet/Coherence-Signed/issues/789.
Templates packages had the wrong metadata for project url, copyright, repository url, etc. This unifies metadata to what Internal.AspNetCore.Sdk defines.

@jbagga are there known issues in templates tests? This PR is not passing AppVeyor or Travis or locally

Appveyor is flaky. Travis has known issues. But they should build locally

Ok, I re-ran AppVeyor and it passed. Passed locally too

Spoke to @natemcmaster offline "dotnet pack" is failing because the repositoryCommit is not being correctly populated. Looks good otherwise. I'll approve once I can manually verify template creation.

We hit this: https://github.com/NuGet/Home/issues/6722. I'll make a fix to Internal.AspNetCore.Sdk to workaround it.

Oops, premature merge. If you find something I'll revert.


NEL Error Logging

A brief exploration of what NEL error logging could look like in OkHttp?
https://github.com/square/okhttp/issues/6413

I’m reluctant to introduce our own exception types that replace or wrap the built-in exception types. If we do it really well it’ll help users to debug their issues; but it also breaks all of our StackOverflow answers.
It’s also difficult to do fully because of where exceptions are thrown. Some are through Okio, some through JSSE/Conscrypt, and some through the JDK. Wrapping exceptions everywhere is going to be quite difficult to do well.

@swankjesse any thoughts on suppressed exception as a carrier for the detail we want?

Backing up a bit – the ultimate goal is to improve metrics right? So operators can tell the difference between a TLS failure, a DNS failure, a timeout failure, etc.?

Backing up a bit – the ultimate goal is to improve metrics right? So operators can tell the difference between a TLS failure, a DNS failure, a timeout failure, etc.?

I'd say site operators (i provide some APIs across multiple platforms used by other developers and I'd like to know how and possibly why it's failing).
Also as an app developer using OkHttp and Conscrypt (directly or through Android), I'd like to be able to self diagnore problems and report directly without asking for help in stackoverflow or OkHttp forums.
A wise man said

But one thing we could do, which would be pretty nice, is to report our errors using the taxonomy here:
https://www.w3.org/TR/network-error-logging/#predefined-network-error-types

Hence moving this down into Conscrypt also https://github.com/google/conscrypt/issues/922
Also after the fact there is often more we could have done if details of the failure were accessible without assumptions of the implementation.  For example
  try {
    sslSocket.startHandshake()
  } catch (s: SSLHandshakeException) {
    val r = generateSequence<Throwable>(s) { it.cause }.find { it is CertPathValidatorException } as? CertPathValidatorException

    if (r != null) {
      println(r.certPath.certificates.map { (it as X509Certificate).subjectDN })
    }
  }

Can we as OkHttp pull this out and make it a clear error solution like certificate pinning failures?


json decoder error

i followed the tutorial, but when i Generate anchors for data set, or start to train yolov3 this error is shown

json.decoder.JSONDecodeError: Invalid \escape: line 10 column 37 (char 306)

Hi, @Hashoma, tell me please did you solve this problem? I've faced the same one when tried to launch training

Hello, I have the same problem  / No comments in my Jason file ...
When I test with Spider I have the folowing error
from voc import parse_voc_annotation
Traceback (most recent call last):
File "", line 1, in
from voc import parse_voc_annotation
ModuleNotFoundError: No module named 'voc'

Hello, I did  : pip install voc
which was not installed
Now I have
from voc import parse_voc_annotation
ImportError: cannot import name 'parse_voc_annotation'

@RCC-GIT I suppose it's an 'import functions from another file in the same directory' problem. I don't quite understand what you could have installed with 'pip install voc' command as it is just another .py file in the directory.
Try this "from .voc import parse_voc_annotation"
Good luck and have a nice day

I close and open the console in spider . from voc import parse_voc_annotation is ok now but I have another error now
File "C:\ProgramData\Anaconda3\lib\json\decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
JSONDecodeError: Invalid \escape
I am working with windows 7 , is this have something do with UFT-8 encoding ?

For Windows7  anaconda + Phython  3.x
Path must be as \  in Jason file (not \ and not  /)  and file path must be be asbsolute in All files .
This has solved this problem for me .


I'm using Date.now() to check the expiry of the invoice.
"created_at":<PHONE_NUMBER>, is the timestamp in seconds
Current Date.now() delivers<PHONE_NUMBER>500, which is the timestamp in milliseconds.
LND responds with milliseconds & CLN in seconds, that could be an additional issue.
Created https://github.com/cstenglein/raspiblitz-web/issues/373 for that

@openoms decoding should now work with current master of raspiblitz-web.

New error when paying:
Jul 04 11:05:08 raspberrypi python[3056]: >
Jul 04 11:05:08 raspberrypi python[3056]: ERROR:uvicorn.error:Exception in ASGI application
Jul 04 11:05:08 raspberrypi python[3056]: Traceback (most recent call last):
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/uvicorn/protocols/http/h11_impl.py", line 366, in run_asgi
Jul 04 11:05:08 raspberrypi python[3056]:     result = await app(self.scope, self.receive, self.send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/uvicorn/middleware/proxy_headers.py", line 75, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     return await self.app(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/applications.py", line 269, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await super().__call__(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/applications.py", line 124, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.middleware_stack(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 184, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     raise exc
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 162, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, _send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/cors.py", line 92, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.simple_response(scope, receive, send, request_headers=headers)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/cors.py", line 147, in simple_response
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 93, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     raise exc
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 82, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, sender)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     raise e
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 670, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await route.handle(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 418, in handle
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/applications.py", line 269, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await super().__call__(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/applications.py", line 124, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.middleware_stack(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 184, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     raise exc
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 162, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, _send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 93, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     raise exc
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 82, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, sender)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     raise e
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 670, in __call__
Jul 04 11:05:08 raspberrypi python[3056]:     await route.handle(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 266, in handle
Jul 04 11:05:08 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 65, in app
Jul 04 11:05:08 raspberrypi python[3056]:     response = await func(request)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/routing.py", line 227, in app
Jul 04 11:05:08 raspberrypi python[3056]:     raw_response = await run_endpoint_function(
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/routing.py", line 160, in run_endpoint_function
Jul 04 11:05:08 raspberrypi python[3056]:     return await dependant.call(**values)
Jul 04 11:05:08 raspberrypi python[3056]:   File "./app/routers/lightning.py", line 386, in sendpayment
Jul 04 11:05:08 raspberrypi python[3056]:     return await send_payment(pay_req, timeout_seconds, fee_limit_msat, amount_msat)
Jul 04 11:05:08 raspberrypi python[3056]:   File "./app/repositories/lightning.py", line 124, in send_payment
Jul 04 11:05:08 raspberrypi python[3056]:     res = await ln.send_payment_impl(
Jul 04 11:05:08 raspberrypi python[3056]:   File "./app/repositories/ln_impl/cln_grpc.py", line 565, in send_payment_impl
Jul 04 11:05:08 raspberrypi python[3056]:     res = await _cln_stub.Pay(req)
Jul 04 11:05:08 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/grpc/aio/_call.py", line 290, in __await__
Jul 04 11:05:08 raspberrypi python[3056]:     raise _create_rpc_error(self._cython_call._initial_metadata,
Jul 04 11:05:08 raspberrypi python[3056]: grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:
Jul 04 11:05:08 raspberrypi python[3056]:         status = StatusCode.UNKNOWN
Jul 04 11:05:08 raspberrypi python[3056]:         details = "Error calling method Pay: RpcError { code: Some(-32602), message: "msatoshi parameter unnecessary" }"
Jul 04 11:05:08 raspberrypi python[3056]:         debug_error_string = "{"created":"@1656929108.783191862","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Error calling method Pay: RpcError { code: Some(-32602), message: "msatoshi parameter unnecessary" }","grpc_status":2}"
Jul 04 11:05:08 raspberrypi python[3056]: >

Also got another error if the invoice has a hop hint eg. from Muun:
LNBC1350N1P3V9W3XPP5WJKWDSDHM9YD6MDXYER4NLS7GVGQXJ3Z7JUC6VHK6Z6ETDZA6QMQDQQCQZZGXQYZ5VQRZJQWNVUC0U4TXN35CAFC7W94GXVQ5P3CU9DD95F7HLRH0FVS46WPVHDS5NGYXNGDWJYGQQQQRYQQQQTHQQPYRZJQW8C7YFUTQQY3KZ8662FXUTJVEF7Q2UJSXTT45CSU0K688LKZU3LDS5NGYXNGDWJYGQQQQRYQQQQTHQQPYSP5NHH0Q0U2KZTTQPQY0EEFW7P5UG3ZLNSSJYSCD80HRCMRDUEDAADQ9QYPQSQWNY6Y0J9W6VCFR0QUTH6TF77974DC8N35TPQA9346VH6WGGR6G94VFEWGKV0R3XNS553NAJ2VK9Y4LYJ7TEURJ6J82H6NUC5KWULUUSQTEC90M
Jul 04 11:01:04 raspberrypi python[3056]: ERROR:uvicorn.error:Exception in ASGI application
Jul 04 11:01:04 raspberrypi python[3056]: Traceback (most recent call last):
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/uvicorn/protocols/http/h11_impl.py", line 366, in run_asgi
Jul 04 11:01:04 raspberrypi python[3056]:     result = await app(self.scope, self.receive, self.send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/uvicorn/middleware/proxy_headers.py", line 75, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     return await self.app(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/applications.py", line 269, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await super().__call__(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/applications.py", line 124, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.middleware_stack(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 184, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     raise exc
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 162, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, _send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/cors.py", line 84, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 93, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     raise exc
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 82, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, sender)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     raise e
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 670, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await route.handle(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 418, in handle
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/applications.py", line 269, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await super().__call__(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/applications.py", line 124, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.middleware_stack(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 184, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     raise exc
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/middleware/errors.py", line 162, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, _send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 93, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     raise exc
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/exceptions.py", line 82, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, sender)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     raise e
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 670, in __call__
Jul 04 11:01:04 raspberrypi python[3056]:     await route.handle(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 266, in handle
Jul 04 11:01:04 raspberrypi python[3056]:     await self.app(scope, receive, send)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/starlette/routing.py", line 65, in app
Jul 04 11:01:04 raspberrypi python[3056]:     response = await func(request)
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/routing.py", line 227, in app
Jul 04 11:01:04 raspberrypi python[3056]:     raw_response = await run_endpoint_function(
Jul 04 11:01:04 raspberrypi python[3056]:   File "/usr/local/lib/python3.9/dist-packages/fastapi/routing.py", line 160, in run_endpoint_function
Jul 04 11:01:04 raspberrypi python[3056]:     return await dependant.call(**values)
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/routers/lightning.py", line 151, in list_all_tx_path
Jul 04 11:01:04 raspberrypi python[3056]:     return await list_all_tx(successful_only, index_offset, max_tx, reversed)
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/repositories/lightning.py", line 72, in list_all_tx
Jul 04 11:01:04 raspberrypi python[3056]:     return await ln.list_all_tx_impl(successful_only, index_offset, max_tx, reversed)
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/repositories/ln_impl/cln_grpc.py", line 229, in list_all_tx_impl
Jul 04 11:01:04 raspberrypi python[3056]:     pr = await decode_pay_request_impl(pay.bolt11)
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/repositories/ln_impl/cln_grpc.py", line 428, in decode_pay_request_impl
Jul 04 11:01:04 raspberrypi python[3056]:     return PaymentRequest.from_cln_json(json.loads(decoded))
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/models/lightning.py", line 1503, in from_cln_json
Jul 04 11:01:04 raspberrypi python[3056]:     routes = [RouteHint.from_cln_json(rh) for rh in r["routes"]]
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/models/lightning.py", line 1503, in <listcomp>
Jul 04 11:01:04 raspberrypi python[3056]:     routes = [RouteHint.from_cln_json(rh) for rh in r["routes"]]
Jul 04 11:01:04 raspberrypi python[3056]:   File "./app/models/lightning.py", line 386, in from_cln_json
Jul 04 11:01:04 raspberrypi python[3056]:     hop_hints = [HopHint.from_cln_json(hh) for hh in h.hop_hints]
Jul 04 11:01:04 raspberrypi python[3056]: AttributeError: 'list' object has no attribute 'hop_hints'

@openoms both issues should be fixed.

Good news! Was able to pay from the webUI, but the logs are still not very reassuring:
Jul 05 07:47:59 raspberrypi python[2450317]: ERROR:asyncio:Task exception was never retrieved
Jul 05 07:47:59 raspberrypi python[2450317]: future: <Task finished name='Task-93' coro=<_handle_invoice_listener() done, defined at ./app/repositories/lightning.py:223> exception=<AioRpcError of RPC that terminated with:
Jul 05 07:47:59 raspberrypi python[2450317]:         status = StatusCode.UNAVAILABLE
Jul 05 07:47:59 raspberrypi python[2450317]:         details = "Socket closed"
Jul 05 07:47:59 raspberrypi python[2450317]:         debug_error_string = "{"created":"@1657003672.119296627","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Socket closed","grpc_status":14}"
Jul 05 07:47:59 raspberrypi python[2450317]: >>
Jul 05 07:47:59 raspberrypi python[2450317]: Traceback (most recent call last):
Jul 05 07:47:59 raspberrypi python[2450317]:   File "./app/repositories/lightning.py", line 224, in _handle_invoice_listener
Jul 05 07:47:59 raspberrypi python[2450317]:     async for i in ln.listen_invoices():
Jul 05 07:47:59 raspberrypi python[2450317]:   File "./app/repositories/ln_impl/cln_grpc.py", line 629, in listen_invoices
Jul 05 07:47:59 raspberrypi python[2450317]:     i = await _cln_stub.WaitAnyInvoice(req)
Jul 05 07:47:59 raspberrypi python[2450317]:   File "/usr/local/lib/python3.9/dist-packages/grpc/aio/_call.py", line 290, in __await__
Jul 05 07:47:59 raspberrypi python[2450317]:     raise _create_rpc_error(self._cython_call._initial_metadata,
Jul 05 07:47:59 raspberrypi python[2450317]: grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:
Jul 05 07:47:59 raspberrypi python[2450317]:         status = StatusCode.UNAVAILABLE
Jul 05 07:47:59 raspberrypi python[2450317]:         details = "Socket closed"
Jul 05 07:47:59 raspberrypi python[2450317]:         debug_error_string = "{"created":"@1657003672.119296627","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Socket closed","grpc_status":14}"
Jul 05 07:47:59 raspberrypi python[2450317]: >
Jul 05 07:47:59 raspberrypi python[2450317]: INFO:     <IP_ADDRESS>:57866 - "POST /lightning/send-payment?pay_req=lnbc1p3v8hn5pp5ag56vn07t5puh775vyrl8xvq420jzffanw08re7hkf6mqcx5m9yqdqqcqzpuxqyz5vqsp5g5n5pkjgnmutcyjrgydm3vd2aa98wdy8rpajyy0yzde886nljl0s9qyyssq204yuhzdle45gpx0mjaaye285sld8pqhvrkpaj4u46mz08apav8k2qucnprp0grlxtaramn6ts88j2qfpndfwcy6uvp04svymvcsdhgq7857qn&amount_msat=10 HTTP/1.0" 500 Internal Server Error
Jul 05 07:47:59 raspberrypi python[2450317]: INFO:     <IP_ADDRESS>:57868 - "POST /lightning/send-payment?pay_req=lnbc1p3v8hn5pp5ag56vn07t5puh775vyrl8xvq420jzffanw08re7hkf6mqcx5m9yqdqqcqzpuxqyz5vqsp5g5n5pkjgnmutcyjrgydm3vd2aa98wdy8rpajyy0yzde886nljl0s9qyyssq204yuhzdle45gpx0mjaaye285sld8pqhvrkpaj4u46mz08apav8k2qucnprp0grlxtaramn6ts88j2qfpndfwcy6uvp04svymvcsdhgq7857qn&amount_msat=10 HTTP/1.0" 500 Internal Server Error
Jul 05 07:47:59 raspberrypi python[2450317]: INFO:     <IP_ADDRESS>:57870 - "POST /lightning/send-payment?pay_req=lnbc1p3v8hn5pp5ag56vn07t5puh775vyrl8xvq420jzffanw08re7hkf6mqcx5m9yqdqqcqzpuxqyz5vqsp5g5n5pkjgnmutcyjrgydm3vd2aa98wdy8rpajyy0yzde886nljl0s9qyyssq204yuhzdle45gpx0mjaaye285sld8pqhvrkpaj4u46mz08apav8k2qucnprp0grlxtaramn6ts88j2qfpndfwcy6uvp04svymvcsdhgq7857qn&amount_msat=10 HTTP/1.0" 500 Internal Server Error
Jul 05 07:47:59 raspberrypi python[2450317]: ERROR:asyncio:Task exception was never retrieved
Jul 05 07:47:59 raspberrypi python[2450317]: future: <Task finished name='Task-94' coro=<_handle_forward_event_listener() done, defined at ./app/repositories/lightning.py:233> exception=<AioRpcError of RPC that terminated with:
Jul 05 07:47:59 raspberrypi python[2450317]:         status = StatusCode.UNAVAILABLE
Jul 05 07:47:59 raspberrypi python[2450317]:         details = "Socket closed"
Jul 05 07:47:59 raspberrypi python[2450317]:         debug_error_string = "{"created":"@1657003672.119519089","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Socket closed","grpc_status":14}"
Jul 05 07:47:59 raspberrypi python[2450317]: >>
Jul 05 07:47:59 raspberrypi python[2450317]: Traceback (most recent call last):
Jul 05 07:47:59 raspberrypi python[2450317]:   File "./app/repositories/lightning.py", line 253, in _handle_forward_event_listener
Jul 05 07:47:59 raspberrypi python[2450317]:     async for i in ln.listen_forward_events():
Jul 05 07:47:59 raspberrypi python[2450317]:   File "./app/repositories/ln_impl/cln_grpc.py", line 650, in listen_forward_events
Jul 05 07:47:59 raspberrypi python[2450317]:     res = await _cln_stub.ListForwards(req)
Jul 05 07:47:59 raspberrypi python[2450317]:   File "/usr/local/lib/python3.9/dist-packages/grpc/aio/_call.py", line 290, in __await__
Jul 05 07:47:59 raspberrypi python[2450317]:     raise _create_rpc_error(self._cython_call._initial_metadata,
Jul 05 07:47:59 raspberrypi python[2450317]: grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:
Jul 05 07:47:59 raspberrypi python[2450317]:         status = StatusCode.UNAVAILABLE
Jul 05 07:47:59 raspberrypi python[2450317]:         details = "Socket closed"
Jul 05 07:47:59 raspberrypi python[2450317]:         debug_error_string = "{"created":"@1657003672.119519089","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Socket closed","grpc_status":14}"
Jul 05 07:47:59 raspberrypi python[2450317]: >
Jul 05 07:47:59 raspberrypi python[2450317]: INFO:     <IP_ADDRESS>:57874 - "POST /lightning/send-payment?pay_req=lnbc1p3v8hn5pp5ag56vn07t5puh775vyrl8xvq420jzffanw08re7hkf6mqcx5m9yqdqqcqzpuxqyz5vqsp5g5n5pkjgnmutcyjrgydm3vd2aa98wdy8rpajyy0yzde886nljl0s9qyyssq204yuhzdle45gpx0mjaaye285sld8pqhvrkpaj4u46mz08apav8k2qucnprp0grlxtaramn6ts88j2qfpndfwcy6uvp04svymvcsdhgq7857qn&amount_msat=10 HTTP/1.0" 500 Internal Server Error
Jul 05 07:47:59 raspberrypi python[2450317]: ERROR:asyncio:Task exception was never retrieved
Jul 05 07:47:59 raspberrypi python[2450317]: future: <Task finished name='Task-92' coro=<_handle_info_listener() done, defined at ./app/repositories/lightning.py:204> exception=<AioRpcError of RPC that terminated with:
Jul 05 07:47:59 raspberrypi python[2450317]:         status = StatusCode.UNAVAILABLE
Jul 05 07:47:59 raspberrypi python[2450317]:         details = "Socket closed"
Jul 05 07:47:59 raspberrypi python[2450317]:         debug_error_string = "{"created":"@1657003672.119549237","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Socket closed","grpc_status":14}"
Jul 05 07:47:59 raspberrypi python[2450317]: >>
Jul 05 07:47:59 raspberrypi python[2450317]: Traceback (most recent call last):
Jul 05 07:47:59 raspberrypi python[2450317]:   File "./app/repositories/lightning.py", line 208, in _handle_info_listener
Jul 05 07:47:59 raspberrypi python[2450317]:     info = await ln.get_ln_info_impl()
Jul 05 07:47:59 raspberrypi python[2450317]:   File "./app/repositories/ln_impl/cln_grpc.py", line 600, in get_ln_info_impl
Jul 05 07:47:59 raspberrypi python[2450317]:     res = await _cln_stub.Getinfo(req)
Jul 05 07:47:59 raspberrypi python[2450317]:   File "/usr/local/lib/python3.9/dist-packages/grpc/aio/_call.py", line 290, in __await__
Jul 05 07:47:59 raspberrypi python[2450317]:     raise _create_rpc_error(self._cython_call._initial_metadata,
Jul 05 07:47:59 raspberrypi python[2450317]: grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:
Jul 05 07:47:59 raspberrypi python[2450317]:         status = StatusCode.UNAVAILABLE
Jul 05 07:47:59 raspberrypi python[2450317]:         details = "Socket closed"
Jul 05 07:47:59 raspberrypi python[2450317]:         debug_error_string = "{"created":"@1657003672.119549237","description":"Error received from peer ipv4:<IP_ADDRESS>:4772","file":"src/core/lib/surface/call.cc","file_line":952,"grpc_message":"Socket closed","grpc_status":14}"
Jul 05 07:47:59 raspberrypi python[2450317]: >
Jul 05 07:47:59 raspberrypi python[2450317]: INFO:     <IP_ADDRESS>:57872 - "GET /lightning/list-all-tx?reversed=true HTTP/1.0" 500 Internal Server Error

Was early to say.
If I create a $0.01 invoice on https://ln.bitcoinbeach.com/openoms?amount=0.01&currency=USD it fails to pay failing to decode the description (same as in https://github.com/fusion44/blitz_api/issues/125#issuecomment-1174680062):
Jul 05 08:47:09 raspberrypi python[2450317]:   File "./app/repositories/ln_impl/cln_grpc.py", line 229, in list_all_tx_impl
Jul 05 08:47:09 raspberrypi python[2450317]:     pr = await decode_pay_request_impl(pay.bolt11)
Jul 05 08:47:09 raspberrypi python[2450317]:   File "./app/repositories/ln_impl/cln_grpc.py", line 428, in decode_pay_request_impl
Jul 05 08:47:09 raspberrypi python[2450317]:     return PaymentRequest.from_cln_json(json.loads(decoded))
Jul 05 08:47:09 raspberrypi python[2450317]:   File "./app/models/lightning.py", line 1523, in from_cln_json
Jul 05 08:47:09 raspberrypi python[2450317]:     description=r["description"],
Jul 05 08:47:09 raspberrypi python[2450317]: KeyError: 'description'

ok, decoding and paying an invoice is successful now on om my v0.12.0 CLN node


#465 additional figure and paragraph closing tags

This doesn't fix all the problems but gives an idea what is wrong with the formatting.
The changes from line 1898 are for the situation when markers are at the end of the paragraph, e.g.:
<p>[Insert <ref type="table">Table 1</ref>   <figure type="table">here]<lb/> [Insert Table 2 here]<lb/></figure>
Here the p tag is not closed although according to the text this data should comprise a whole paragraph. I'm making an additional check, it fixes the problem but I'm not sure if it the right way, e.g. when taking into account lists.
The line 1585 here fixes the problem when a new redundant p tag appears inside a paragraph.
The line 1874 closes figure type="table" with an appropriate tag.

Coverage decreased (-0.003%) to 37.292% when pulling 16062cb08fd02278f66ccc3a5f875933b2bf28e0 on Vitaliy-1:i465_createTraining_tags into 00c0dfc2ff970dbb77f0af11d9d34775dbda4f75 on kermitt2:master.

Thank you @Vitaliy-1 and sorry to have been so slow with this PR.
Due to merging mess, I added manually the changes in 7e69bd1bbd897d5dca4cd49c1585e3e39871740e


[W6.1e][W11-A2]Danny Ng Ming Xuan

@dannyngmx94
Some comments added. Please ack & close the PR after reading comments.


Rename variable sigset -> sig_set to avoid conflict w/function sigset

Fixes build with musl.

(Variable name was chosen based on style of surrounding file, but anything other than sigset works of course :))