Unable to start due to ValidationError and ValuError related to Dexalot connector

Describe the bug
After we successfully build again the backend-api from staging/development branch, it kept on failing with errors that seem related to dexalot connector
                                                                                 ✔  1m 38s
 ~/github/hummingbot/backend-api/dev-backendapi  development ⇣2 !1  make run                                                                                 ✔  backend-api 
uvicorn main:app --reload
INFO:     Will watch for changes in these directories: ['/Users/rapcomia/github/hummingbot/backend-api/dev-backendapi']
INFO:     Uvicorn running on http://<IP_ADDRESS>:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [27116] using WatchFiles
Process SpawnProcess-1:
Traceback (most recent call last):
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_account/account.py", line 823, in _parsePrivateKey
    return self._keys.PrivateKey(HexBytes(key))
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_keys/datatypes.py", line 246, in __init__
    validate_private_key_bytes(private_key_bytes)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_keys/validation.py", line 81, in validate_private_key_bytes
    validate_bytes_length(value, 32, "private key")
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_keys/validation.py", line 52, in validate_bytes_length
    raise ValidationError(
eth_utils.exceptions.ValidationError: Unexpected private key length: Expected 32, but got 0 bytes

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

Traceback (most recent call last):
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
    target(sockets=sockets)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/uvicorn/server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "uvloop/loop.pyx", line 1518, in uvloop.loop.Loop.run_until_complete
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/uvicorn/server.py", line 69, in serve
    await self._serve(sockets)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/uvicorn/server.py", line 76, in _serve
    config.load()
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/uvicorn/config.py", line 434, in load
    self.loaded_app = import_from_string(self.app)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/uvicorn/importer.py", line 19, in import_from_string
    module = importlib.import_module(module_str)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/Users/rapcomia/github/hummingbot/backend-api/dev-backendapi/main.py", line 4, in <module>
    from routers import manage_accounts, manage_backtesting, manage_broker_messages, manage_docker, manage_files, manage_market_data
  File "/Users/rapcomia/github/hummingbot/backend-api/dev-backendapi/routers/manage_backtesting.py", line 16, in <module>
    directional_trading_backtesting = DirectionalTradingBacktesting()
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/strategy_v2/backtesting/backtesting_engine_base.py", line 36, in __init__
    self.backtesting_data_provider = BacktestingDataProvider(connectors={})
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/strategy_v2/backtesting/backtesting_data_provider.py", line 35, in __init__
    self.connectors = {name: self.get_connector(name) for name, settings in self.conn_settings.items()
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/strategy_v2/backtesting/backtesting_data_provider.py", line 35, in <dictcomp>
    self.connectors = {name: self.get_connector(name) for name, settings in self.conn_settings.items()
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/strategy_v2/backtesting/backtesting_data_provider.py", line 53, in get_connector
    connector = connector_class(**init_params)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/connector/exchange/dexalot/dexalot_exchange.py", line 65, in __init__
    self._tx_client: DexalotClient = self._create_tx_client()
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/connector/exchange/dexalot/dexalot_exchange.py", line 205, in _create_tx_client
    return DexalotClient(
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/hummingbot/connector/exchange/dexalot/data_sources/dexalot_data_source.py", line 36, in __init__
    self.account: LocalAccount = Account.from_key(dexalot_api_secret)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_utils/decorators.py", line 31, in _wrapper
    return self.method(objtype, *args, **kwargs)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_account/account.py", line 266, in from_key
    key = self._parsePrivateKey(private_key)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_utils/decorators.py", line 31, in _wrapper
    return self.method(objtype, *args, **kwargs)
  File "/Users/rapcomia/miniconda3/envs/backend-api/lib/python3.10/site-packages/eth_account/account.py", line 825, in _parsePrivateKey
    raise ValueError(
ValueError: The private key must be exactly 32 bytes long, instead of 0 bytes.

Steps to reproduce bug

For hummingbot,  first clone the hummingbot using the staging/development branch

Build local .whl and copy the dir from ./dist/your_local.whl backend-api's environment.yml

On Backend-api, run make install && make run
Observed after 1-2mins and error will occur

Tried to copy dexalot.yml file see if this fixed the issue but nogo, getting same error causing backend-api to not start and sync with dashboard and broker

here https://github.com/hummingbot/hummingbot/pull/7287

This issue does not occur after building a local .whl with the current development branch


[python] more detailed docs for trees_to_dataframe(), create_tree_digraph(), plot_tree()

I've been looking at the [lightgbm] tag on Stacck Overflow recently, and have seen a few questions about how to interpret the output of some visualization methods in the Python Package.
I think there is an opportunity to improve the documentation for those methods. This PR proposes more detailed docs on trees_to_dataframe(), create_tree_digraph(), and plot_tree() to help people understand them better. It's very possible that I've also misunderstood the meaning of some of the these things, so I appreciate your thorough reviews.
Notes for Reviewers
I opened this from a LightGBM branch so that we can hopefully enable RTD builds and see if I made any formatting mistakes. @StrikerRUS if you agree with the spirit of this PR, could you enable RTD builds for this branch?

@jameslamb

could you enable RTD builds for this branch?

Sure, done!
https://readthedocs.org/projects/lightgbm/builds/

There are some warnings, will fix them tonight

/basic.py:docstring of lightgbm.Booster.trees_to_dataframe:6: WARNING: Unexpected indentation.
/basic.py:docstring of lightgbm.Booster.trees_to_dataframe:8: WARNING: Block quote ends without a blank line; unexpected unindent.
/plotting.py:docstring of lightgbm.create_tree_digraph:26: WARNING: Unexpected indentation.
/plotting.py:docstring of lightgbm.create_tree_digraph:27: WARNING: Block quote ends without a blank line; unexpected unindent.
/plotting.py:docstring of lightgbm.plot_tree:31: WARNING: Unexpected indentation.
/plotting.py:docstring of lightgbm.plot_tree:32: WARNING: Block quote ends without a blank line; unexpected unindent.
looking for now-outdated files... none found

https://readthedocs.org/projects/lightgbm/builds/12463523/

build is passing (https://readthedocs.org/projects/lightgbm/builds/12467879/) and I think the docs look ok, so this is ready for review.

https://lightgbm.readthedocs.io/en/docs-trees-to-dataframe/pythonapi/lightgbm.plot_tree.html#lightgbm.plot_tree
https://lightgbm.readthedocs.io/en/docs-trees-to-dataframe/pythonapi/lightgbm.create_tree_digraph.html#lightgbm.create_tree_digraph
https://lightgbm.readthedocs.io/en/docs-trees-to-dataframe/pythonapi/lightgbm.Booster.html#lightgbm.Booster.trees_to_dataframe

Please check that my descriptions are correct, I'm not sure about all of them.


Create new Config for Trainer based on LiTGPT config

Currently we define arguments like fix_head_size in tests directly
It would be optimal to create a new config for our model+trainer

@aaronkl can I work on this?


Add sbt-plugin topic for Scaladex

Scaladex lets you filter sbt plugins:
https://index.scala-lang.org/search?topics=sbt-plugin
It reads metadata from GitHub so tagging the project here with the "sbt-plugin" topic should be enough for it to show up as sbt plugin (after the next Scaladex index update).

Good idea, thanks. Done :)


REST API ignores "required" property in defaultParamsQueryAll (List)

It seems, this plugin does neglect "required" property from defaultParamsQueryAll list in Config.groovy
In Config.groovy:
grails.plugins.restapidoc.defaultParamsQueryAll =  [
    [name:"isValid",description:"Some description of 'isValid' query param", required: "true", type: "String"]
]

As per JSONDocUtilsLight, we are hard-coding required as false:
DEFAULT_PARAMS_QUERY_ALL.each {
    queryParameters.add(new RestApiParamDoc(it.name, it.description, it.type, "false", new String[0], Enum, ""))
}

Is it expected behavior?
Shall we read this property from Config.groovy where default would be false?
Something like this:
DEFAULT_PARAMS_QUERY_ALL.each {
     queryParameters.add(new RestApiParamDoc(it.name, it.description, it.type, it.required ?: "false", new String[0], Enum, ""))
}

Thank you

Yes, I commit the fix. Should be available in the next release.


Building / Office annotation icons

I would love to have some building / office annotation icons in the phosphor icon set. For example: toilet, elevator, stairs, lockers and reception.

I would also love a desk and a meeting room icon :)

Added elevator, escalator-down, escalator-up, stars, steps, lockers, door-open, call-bell in v2.0.0, and buildings, doors, toilet and toilet-paper have been around since previous releases. Hope this is what you need!

desk is in our backlog.


How to access the frames from each video stream?

We would like to build an application which reads the video streams from a P7304 4-channel encoder so we can pass it to AWS Kinesis Producer C SDK (https://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/samples/KvsVideoOnlyStreamingSample.c).
Sorry if this is a foolish question, as we are not yet very familiar with the ACAP SDK.
We see that there is a a sample application that looks very relevant; https://github.com/AxisCommunications/acap3-examples/tree/master/vdostream , but as there are several streams available on this encoder, please could you advice us how to select a given stream? "

If you take a look at the most recent version of the ACAP3 documentation, multiple setting options for new streams are listed and one of them is "channel" which represent different video channels such as overview and each respective video input.
https://www.axis.com/techsup/developer_doc/acap3/3.2/api/vdostream/html/vdo-stream_8h.html
This can then in turn be applied in the same way as for example "format" is used in the example when starting a new stream.
Does that answer your question?

If you take a look at the most recent version of the ACAP3 documentation, multiple setting options for new streams are listed and one of them is "channel" which represent different video channels such as overview and each respective video input.
https://www.axis.com/techsup/developer_doc/acap3/3.2/api/vdostream/html/vdo-stream_8h.html
This can then in turn be applied in the same way as for example "format" is used in the example when starting a new stream.
Does that answer your question?


Mobile API

Another attempt to merge in the latest API changes along with all resolved conflicts from master. I believe this will avoid the problems we're having in PR #660.
Please merge this without rebasing.
@BillWagner @tonysurma

Once this is merged, I believe you can then merge mobile_rework into master without problems.


Eclipse: add libsecret dependency

Motivation for this change
Eclipse's integration with the system keyring was broken because of the missing libsecret dependency.
fixes #133628
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 133731 at 3fa0d94a run on x86_64-linux 1

9 packages built successfully:

eclipses.eclipse-committers
eclipses.eclipse-cpp
eclipses.eclipse-java
eclipses.eclipse-jee
eclipses.eclipse-modeling
eclipses.eclipse-platform
eclipses.eclipse-rcp
eclipses.eclipse-scala-sdk
eclipses.eclipse-sdk

3 suggestions:

warning: build-tools-in-build-inputs
makeWrapper is a build tool so it likely goes to nativeBuildInputs, not buildInputs.
Near pkgs/applications/editors/eclipse/build-eclipse.nix:20:3:
   |
20 |   buildInputs = [
   |   ^

warning: license-missing
Package is missing a license.
Near pkgs/applications/editors/eclipse/build-eclipse.nix:58:3:
   |
58 |   meta = {
   |   ^

warning: maintainers-missing
Package does not have a maintainer. Consider adding yourself?
Near pkgs/applications/editors/eclipse/build-eclipse.nix:58:3:
   |
58 |   meta = {
   |   ^


"Can I use the projects in the courses in my portfolio? Is in necessary to build my own projects in a portfolio?"

Thanks for the question! I added the answer in the FAQ section! Good luck :)


'FileSink' is obsolete when setting FailureSink

A few questions before you begin:
Does this issue relate to a new feature or an existing bug?
Bug ?
What version of Serilog.Sinks.Elasticsearch is affected?  Please list the related NuGet package.
What is the target framework and operating system? See target frameworks & net standard matrix.

[x] netCore 2.0

Please describe the current behavior?
It is showing a warning like
'FileSink' is obsolete: 'This type will be removed from the public API in a future version; use WriteTo.File()
When I follow the example code to configure FailureSink option
Moreover, the failureSink option doesn't really work with Readfrom.configuration way
There is no way to setup fileSink as failureSink through configuration.

Ok I figured out. It seems like we should use RollingFileSink instead of FileSink because writeto.file call it here.
However, it doesn't solve the issue that failureSink can't be config since there is no way to put options

Not everything is configurable using the AppSettings unfortunately.

I agree. But maybe we should put this in the document? like setting failureSink through configuration will lead to some side effect  like that there will be another sink and not just for failure. (if you put that sink in the configuration as well)

Ok I figured out. It seems like we should use RollingFileSink instead of FileSink because writeto.file call it here.
However, it doesn't solve the issue that failureSink can't be config through appsettings since there is no way to put options

How do we use RollingFileSink to configure FailureSink?

One more issue with this, the FileSink constructor has the only a subset of parameters. For instance, it's impossible to set shared options for the sink.
https://github.com/serilog/serilog-sinks-file#shared-log-files

Old issue, cleaning up. Still facing this issue, feel free to reopen.

How do we set FailureSink using the Write.ToFile . Is there any example for this?

@nblumhardt Is there other advice now that LoggerSinkConfiguration.Wrap is deprecated?

Has anyone found a solution for this?

:wave: Give this a shot:
// Before configuring Serilog:

ILogEventSink failureSink;
LoggerSinkConfiguration.Wrap(
        new LoggerConfiguration().WriteTo,
       target => failureSink = target,
       // Here's the `WriteTo.File()` call:
       wt => wt.File("some_file.txt"));

// Then when configuring Elasticsearch sink options:
options.FailureSink = failureSink;

If this doesn't work, Stack Overflow will be the best place to get a fully worked answer.
HTH,
Nick


'fatal error: openssl/opensslconf.h: No such file or directory' while building x11 32-bit export templates

Location of opensslconf.h file is /usr/include/x86_64-linux-gnu/openssl/ so builder can't find it.

What distro are you building on? It seems quite weird to me to have an arch-dependent path for headers, usually Debian-based distros will use /usr/lib/x86_64-linux-gnu for binary libraries and /usr/include for arch-independent headers.

Ah actually I checked and it looks like Debian does put this very header in an arch-dependent path, I guess it's generated at build time and contains arch-dependent info (like the path to the .so or something): https://packages.debian.org/sid/amd64/libssl-dev/filelist

I would say that it's a Debian bug though, as they should expose this path in the pkgconfig file. They can't expect all downstream projects to hardcode arch-specific paths in their buildsystem, we rely on pkgconfig for precisely that purpose: https://github.com/godotengine/godot/blob/master/platform/x11/detect.py#L134-L135
Can you check the contents of /usr/lib/x86_64-linux-gnu/pkgconfig/openssl.pc, and file a bug report upstream to Debian (or *buntu if it's what you're using, they would likely handle getting a fix upstream to Debian) if it lacks a mention to /usr/include/x86_64-linux-gnu in the include flags?

Solved this problem by installing libssl-dev:i386. However there are some i386 libraries required to compile x11 templates that conflict with each other(libfreetype6-dev:i386, libgl1-mesa-dev:i386, libglu1-mesa-dev:i386, ibpng12-dev:i386, mesa-common-dev:i386). Can't build 32-bit x11 templates on 64-bit ubuntu.

"Note that cross compiling for the opposite bits (64/32) as your host platform in linux is quite difficult and might need a chroot environment."
Got it. Sorry for disturbing.


Unauthorized 401 for any call made to luis-actions.cloudapp.net

I'm trying to use action fulfillment to get parameters missing in the intent. The intent gets saved, and the model API returns
{
  "query": "what's the status huh?",
  "topScoringIntent": {
    "intent": "Status",
    "score": 0.9957357,
    "actions": [
      {
        "triggered": false,
        "name": "Status",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "value": null
          }
        ]
      }
    ]
  },
  "entities": [],
  "dialog": {
    "prompt": "What's your username?",
    "parameterName": "username",
    "contextId": "e147a5b1-dde2-40f1-b24b-e1c141dbeb56",
    "status": "Question"
  }
}

However the actions endpoint configured for the bot framework always throws 401 Unauthorized - https://luis-actions.cloudapp.net/api/v1/botframework?app-id=18543d0e-e419-4aac-bae4-c662a75e9f54&subscription-key=**********
What am I missing? Appreciate any info.
Thanks!

We have a issue resulting from deprecating botframework v1 UI. Will working on migrating to v3 to fix this.

OK, I'm on v3, the model APIs still work, but unable to do the actions fulfillment because of the schema difference in preview

LUIS our fulfillment is not compatible with v3 it an issue from the LUIS side and we are working on the fix. Can I ask which fulfillment channel are you using?

HTTP JSON request type

We are working on a fix and it will be out soon

@aravindbaskaran I'm closing this issue, since it's being addressed by the LUIS team. Please reopen or let us know if you need anything else. Thank you!


.NET Core Support?

I was wondering if this library supports .NET Core? I want to use it in a project.

It does, but only if you use master branch. NuGet version is out of dated and doesn't support it.
https://github.com/lontivero/Open.NAT/issues/91

I have no time available for this project right now but I would be happy to accept pull requests. In case someone wants to make the changes to the nuget spec file I can publish the a new package.

I attempted to build the master branch on my machine and got this error: Here

@chilipepperhott Based on the error, you don't have .NET 3.5 installed. You can install it based off this guide in Microsoft docs

Look at my fork: https://github.com/zezba9000/Open.NAT

Working on this. It will be ready next week. See: https://github.com/lontivero/Open.NAT/tree/netstd2


Simple and easily explorable example of usage needed

This should be,  obviously, some working Java application, enhanced with this AspectJ agent?!
Please!

Диагностируем причину, выживаем в JAR hell: не дышим серой и не варимся в котле
Публикация логов в Elasticsearch — жизнь без регулярных выражений и без logstash
Протоколирование JDBC запросов и их параметров в существующем приложении
Хабр шелл: встраиваем кросплатформенный ssh server в java приложение
Внедрение веб консолей в jvm процесс на примере SonarQube
Доклад: «Аспектно-ориентированное программирование в распределенных системах для java разработчиков и QA»
Напильники бывают разные или повествование про «напильник» для java программ

Thank you for the links, @igor-suhorukov
BTW, we already discussed that modification of the Minecraft game, written in Java, could be a good candidate for a showcase of the aspectJ features. If only this is legally allowed.
I could find a proof that this is allowed, in the Minecraft EULA here: https://account.mojang.com/documents/minecraft_eula
Quote:
If you've bought the Game, you may play around with it and modify it by adding modifications, tools, or plugins, which we will refer to collectively as "Mods." By "Mods," we mean something original that you or someone else created that doesn't contain a substantial part of our copyrightable code or content. When you combine your Mod with the Minecraft software, we will call that combination a "Modded Version" of the Game. We have the final say on what constitutes a Mod and what doesn't. You may not distribute any Modded Versions of our Game or software, and we’d appreciate it if you didn’t use Mods for griefing. Basically, Mods are okay to distribute; hacked versions or Modded Versions of the Game client or server software are not okay to distribute.

Thanks Yuri
You are right http://habrahabr.ru/post/265741/#comment_8556777
But this idea "on hold" still. I don't own Minecraft licence and don't play in games last 10 years


Extending to edit the css of the element?

Hi!
Love the project.
I'm building a form of website builder and would like to use ContentTools, do you have any advice on how I could go about editing the html elements further just like a website editor but via content tools?
Thanks

Hi @KriiV, to extend the editable elements you need to spend some time reviewing the API docs and source code for ContentEdit:

http://getcontenttools.com/api/content-edit
https://github.com/GetmeUK/ContentEdit/tree/master/src/scripts

It's not overly difficult to support new types of element but a good understanding of the ContentEdit library is a prerequisite.

Perfect. Appreciate your time taken to reply :)


Update jsonrpsee to 0.10

Only minor tweaks to the RPC tests were needed.
Obviates https://github.com/AleoHQ/snarkOS/pull/1721.

Added a cargo update run, as jsonrpsee just had a quick patch release.

Updated to include https://github.com/AleoHQ/snarkOS/pull/1732, https://github.com/AleoHQ/snarkOS/pull/1733 and https://github.com/AleoHQ/snarkOS/pull/1734.


Bug: can't exit pause menu when window is unfocused

When unfocused input is enabled, when I click the mouse outside the window, it automatically goes to the pause screen and cannot be exited by the controller (by pressing b or hitting a on return to game). The menu works fine when the window is in focus. The controller still works when unfocused but can't go out of the menu.
The game and all mods are on the latest versions (mc 1.20.4, fabric loader 0.15.10, fabric api 0.97.0, midnight lib 1.5.3, midnight controls 1.9.4). I am on Linux Manjaro if that makes a difference.

have u tried doing F3 + P ingame?

Didn't know that was a thing but it worked, thanks so much! Feel like maybe that should be enabled by default when unfocused input is enabled.


Avoid the use of MouseEvent.toElement

It looks like MouseEvent.toElement and MouseEvent.fromElement are deprecated and rather target and relatedTarget should be used.
See also: https://github.com/w3c/pointerevents/issues/167#issuecomment-375100532

@bpasero , Can i change this ?
I looked through the code and I assume e.toElement should be changed to (<HTMLInputElement>e.target) in all the occurrences (src/vs/workbench/parts/preferences/browser/settingsTree.ts , src/vs/base/browser/ui/selectBox/selectBoxCustom.ts , src/vs/base/browser/dom.ts)
To change fromElement , I am not able to do e.relatedTarget .

@skprabhanjan it is @bpasero call...

I got it thanks @skprabhanjan


Letting the user choose query mode on Zuul source

The Zuul source now provides two ways of functioning:

Normal mode -> Will not be able to list jobs below pipelines, much faster in exchange.
Verbose mode -> Lists jobs below pipelines, takes much longer.

Mode is selected with '--mode', being 'normal' the default.

I have thought of a better way of deciding. I will create soon a new PR with that proposal.


Test Method throws exception: System.NullReferenceException: Object reference not set to an instance of an object.

In this particular test that is being run, I am unable to interact with the "Add a Phone Call" activity in a contacts page. Our developers do not believe this is code that we have written, but the issue has been narrowed down to the element's onclick attribute having an assignment of "return false;". Normally, a click on this element yields the intended result of the dropdown (second image attachment) being expanded; but, using various script actions do not yield this same result. See below attachments:
Contact page overview:

Add Phone Call tab expanded:

Add Phone Call code:

The code used that throws this exception in particular is:
xrmBrowser.Document.getElementByXPath("//*[@id='activityLabelinlineactivitybar4210']").Click();
I have also tried using xrmBrowser.Driver.ExecuteScript to include javascript code to edit the attribute to not have this returnfalse code. How can this element be clicked?

Solution: Used xrmBrowser.ActivityFeed.AddPhoneCall("string",false,false);

Yes, getting the below error while i tried with Activityfeed
"The Activity Feed is not available. Please check that the Activities tab is selected."


Is there any way to analyze External memory!

External heap

Our team is using cached_ network_image load image, it is found that the memory used is large, So I use observatory to analyze the memory of the application. In the process of analysis, we found that external memory is large and the main object was image, but we could not find the reference path of the image through the observatory. Thank you so much for your reply！
wangjinlongdeMacBook-Pro:UplusModule long1$ flutter analyze
The plugin `flutter_boost` is built using an older version of the Android plugin API which assumes that it's running in a full-Flutter environment. It
may have undefined behaviors when Flutter is integrated into an existing app as a module.
The plugin can be updated to the v2 Android Plugin APIs by following https://flutter.dev/go/android-plugin-migration.
Analyzing UplusModule...
No issues found! (ran in 4.5s)

wangjinlongdeMacBook-Pro:UplusModule long1$ flutter doctor -v
[✓] Flutter (Channel unknown, v1.17.2, on Mac OS X 10.15.7 19H2, locale zh-Hans-CN)
    • Flutter version 1.17.2 at /Users/long1/flutter
    • Framework revision 5f21edf8b6 (10 个月前), 2020-05-28 12:44:12 -0700
    • Engine revision b851c71829
    • Dart version 2.8.3

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/long1/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 12.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0, Build version 12A7209
    ✗ CocoaPods installed but not working.
        You appear to have CocoaPods installed but it is not working.
        This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
        This can usually be fixed by re-installing CocoaPods. For more info, see https://github.com/flutter/flutter/issues/14293.
      To re-install CocoaPods, run:
        sudo gem install cocoapods

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin installed
    • Dart plugin version 201.9335
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.17.0

[✓] Connected device (1 available)
    • MI MAX 3 • 2044ca03 • android-arm64 • Android 9 (API 28)

! Doctor found issues in 1 category.

Analyze with Android Studio Profiler, The Graphics is used too much.
hprof.zip

Hi @coderloveryan,
If you facing any issue related to the cached_network_image package, I suggest to file an issue i its repository.
To report bugs or feature request regarding devtools please open an issue in the dedicated github.
Note: Your Flutter version is ten months old, do make sure you update Flutter to get the latest performance improvements.
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you


chores: use zipped json

working with https://github.com/SJTU-Plus/course-plus-data/pull/8

Thanks for your contribution! In fact, all of our servers (Github Pages, and the one inside school) have enabled gzip, which can already reduce transfer size of these files. I'm afraid that this optimization is not that necessary.

LGTM


Memory

How I Can dispose memory in this method?
webcam.getImage()

The memory is occupied by a BufferedImage instance returned from this method. When you get rid of it, the memory will be reclaimed in next garbage collection.


Login 419 (unknown status)

Detailed description
I cloned my project, but when i try to login, ajax request returns POST error 419 (unknown status). In production login works, but in my local machine not. Can someone help me?
My environment

Version used: PHP 7.0
Operating system and version: MacOS 10.12.6

You have to provide us with more info please and exact steps to reproduce your problem.

Please feel free to reopen the issue/open new issue once you can provide us with more info, Thanks!


[Alpine Linux] Dotnet6 package

I am currently working on an Alpine Linux dotnet6 package, and in the process of having packages merged for dotnet31 and dotnet5. As the build process is different for dotnet6 and above, I've been working on redesigning the APKBUILD.
Here is the repo where the work is being done: https://gitlab.alpinelinux.org/ayakael/aports/-/tree/testing/dotnet6
Patch notes

aspnetcore_always-build-App.Ref-and-the-targeting-packs.patch (dotnet/aspnetcore#39471)
Aspnetcore doesn't build certain packages every build, This patches forces building them.
build_copy-sbrp-from-artifacts-instead-of-move.patch (see dotnet/installer#13118)
It is expected that location of --with-packages should be writable, thus allowing SBRP to be moved. In cases where Artifacts are provided by distro packages (like with Fedora and Alpine), that folder will be read-only. Thus build fails when there is an attempt at moving SBRP. This patch adjusts so that SBRP is copied rather than moved.
build_fix-musl-build.patch (see dotnet/installer#13119)
Aspnetcore looks for linux-x64 version of nupkgs that, under Alpine, should be linux-musl-x64. Adjusting aspnetcore has a downstream effect on installer, thus needing adjustment there as well.
command-line-api_fix-musl.build.patch
Command-line-api looks for Runtime nupkgs for non-musl systems, causing errors as they are not provided by artifacts package. This patch fixes this by making linux-nusl-x64 the only platform supported
command-line-api_use-work-tree-with-git.patch (see dotnet/command-line-api#1401)
This makes things work better in a source-tarball build, where there may be a .git directory but it's for a different repo than command-line-api.
fsharp_use-work-tree-with-git.patch (see dotnet/source-build#2445)
This makes things work better in a source-tarball build, where there may be a .git directory but it's for a different repo than fshap.
installer_include-musl-bits-in-source-build-bootstrap-tarball.patch (see dotnet/installer#13076)
This makes the "portable" tarball portable to musl-based Linux distributions as well.
installer_internal-repo-fix.patch (see dotnet/installer#12852)
Add logic to convert internal repo uris in version.details.xml
installer_musl-build-fix.patch
Installer doesn't know to look for CrossGen2 nupkg on anything other than linux-$(BuildArchitecture). It should rather be $(SharedFrameworkRid) to match actual RID,
runtime_add-rid-for-alpine-315.patch (see dotnet/runtime#64304)
Adds RID for Alpine 3.15
runtime_disable-package-validation.patch (see dotnet/runtime#60881)
Disable package validation which breaks build.
runtime_force-microsoftnetcoreilasmpackageruntimeid-as-musl.patch
Runtime doesn't know to look for linux-musl version of Microsoft.NETCore.Ilasm nupkgs. This forces looking for it
runtime_non-portable-distrorid-fix-alpine.patch (see dotnet/runtime#62942)
Runtime doesn't generate a proper distro-rid for Alpine, leaving the last version digit. This, treating the RID like RHEL, removes the trailing digit
runtime_release-6.0-Build-all-packages-when-in-source-build.patch (see dotnet/runtime#63653)
Similar to aspnetcore, not all packages are built every build. This forces building them.
sdk_telemetry-optout.patch
Optouts of SDK telemetry
source-build-reference-packages_musl-check.patch (see dotnet/source-build-reference-packages#318)
Use the same logic as dotnet-isntall.sh to identify whether a system is musl-based or not. For musl-based Linux systems, use linux-musl as the platform name, which leads to better RID names.
vstest_use-work-tree-with-git.patch (see microsoft/vstest#3046)
This makes things work better in a source-tarball build, where there may be a .git directory somewhere in our parent directories but it's for a different repo than vstest
xliff-tasks_use-work-tree-with.git.patch (see dotnet/source-build#2445)
This makes things work better in a source-tarball build, where there may be a .git directory somewhere in our parent directories but it's for a different repo than xliff-tasks

For issue page for dotnet31 and dotnet5 package, please see dotnet/source-build#2695

@MichaelSimons Many thanks!

@omajid How did you get s390x architecture built on Fedora without prebuilt binaries? Did you crosscompile?

Basically, yes. @uweigand did the initial cross compile and produced the s390x SDK and nuget packages. I put them in a tarball and used them to bootstrap source-build on s390x, same way we did for arm64.
@uweigand, can you helps us figure out how to cross compile for alpine (musl, s390x)?

Basically, yes. @uweigand did the initial cross compile and produced the s390x SDK and nuget packages. I put them in a tarball and used them to bootstrap source-build on s390x, same way we did for arm64.
@uweigand, can you helps us figure out how to cross compile for alpine (musl, s390x)?

To plug easily into the current build process, it'd be a question of indeed having a prebuilt tarball available online similar to dotnet-sdk-6.0.102-linux-musl-x64.tar.gz and Private.SourceBuilt.Artifacts.0.1.0-6.0.100-bootstrap.29.tar.gz

I'm experimenting with https://github.com/redhat-developer/dotnet-regular-tests/ to see about using that testing suite for alpine. Unfortunately, lots of tests fail with dotnet 6.0.3, which makes me wonder if the testing suite is the problem. How portable is this testing suite to linux-musl environment?

That test suite was designed and tested with the assumption that it would be testing rpm-packaged .NET SDKs in a rpm+glibc based Linux distribution. There are going to be lots of test failures on other environments, even on linux-x64.
If you are interested, we can try and improve that test suite by diasbling certain tests on linux-musl and/or fixing the broken tests to handle linux-musl correctly. Can you share test results and/or logs?
Or, better yet, help me add Alpine to the CI matrix ?

@uweigand  I'd appreciate access to those scripts :) As a package maintainer, I've never had the chance to experiment with crosscompiling, so this looks like a fun project. Ideally, I'd like to be able to run a single script in a alpine-x64 environment that builds an linux-musl-s390x sdk + artifacts tar that can be pulled by Alpine's dotnet6-stage0 package.
The completionist in me would eventually like to build for x86, armhf, ppc64le. Cross-compiling for s390x sets the groundworks for those.
BTW excellent news, dotnet6 is slated for inclusion in Alpine 3.16 on x86_64, aarch64 and armv7 platform ^^ looks like it'll be released in May. dotnet31 and dotnet5 won't make it for they're EOL soon. dotnet6 will be supported for a long time given its LTS status.

One last thing that has been in the back of mind is the naming convention. Why is runtime packaged under dotnetx-runtime and sdk under dotnetx-sdk? Why not have dotnetx package runtime bits and dotnetx-dev package sdk bits? I feel like that is more in line with how most distros do it. Alpine, for example, has the -dev subpackage. I suppose now that 3.16 is weeks away, I'm getting cold feet about certain decisions.

Above bug was introduced with musl 1.2.3, opened up an issue with runtime here https://github.com/dotnet/runtime/issues/67763

dotnet6 is now in community, rejoice! After many moons of work, it is time to close this issue

@uweigand I'd appreciate access to those scripts :)

@ayakael sorry for the late reply, I've been out sick.   Not sure if you still need those at this point, but I've attached the set of scripts I've been using to cross-build a 6.0.100 SDK for s390x.   These are intended to run on Ubuntu 20.04 (or 18.04) with a cross-compile environment targeting s390x installed.
dotnet-s390x.tar.gz

@uweigand Awesome, much obliged! Do you consent for me to share this with a select few Alpine developpers so we can work on creating this cross-compile environment on Alpine?

Absolutely, feel free to share.


Force module restore when there are configuration changes

If a module is failed to restore due to a configuration error, it will not be restored again even when the configuration is fixed because of the module failure cache (unless we reload the Bicep VS Code extension). One possible solution is to update ModuleDispatcher to invalidate the module restore failure cache whenever there are configuration change.

I think the force flag is one option, but there may be a potential perf concern with it. The worst case for this is a file where you have many module refs and they all have typos. When the config is reloaded, we will queue up all those references for restore again. (The cache basically exist to prevent every key stroke from restoring the module and hitting the throttling limits on the ACR.)
The upside of this approach is that bumping the config file will also be useful for situation when you reference a module first and then publish it. However, the eventual experience I want for this is to have a code fix or command to reset the cache for that particular module reference.

I looked through the code. The key in the failure cache appears to be using the resolved reference for comparisons, so the scenario of editing an alias in config after a restore failure should behave correctly because the key will be different each time the alias is edited in the config file.
@shenglol What was the edit you were making when you hit the restore failure being cached? Was it an auth or cloud profile change? Or something else?

One thought I had is that we could incorporate all the settings that affect the outcome of restore in the failure cache key (the resolved ref, URIs that make up the cloud profile, and credential precedence). I think eliminating restore storms entirely is not possible, but this could scope them down only to config edits that affect restores. (Changing analyzer settings wouldn't trigger a restore storm in the worst case, for example.)
It might also be easier to implement because we have the root config object available when we're parsing the module refs. We'd just need to include some of that info in the Equals() and GetHashCode() implementations on the various classes derived from ModuleReference.
Another thought I had is that running bicep restore is a good workaround for users to unblock themselves without restarting VS code. But this leads me to conclude that we should at some point add a Restore command to the VS code extension (similar to Build). This command would have to use its own dispatcher instance (a new one every time) so it wouldn't cache, but should be fairly simple to do.

@shenglol What was the edit you were making when you hit the restore failure being cached? Was it an auth or cloud profile change? Or something else?

Both auth and cloud profile changes.

One thought I had is that we could incorporate all the settings that affect the outcome of restore in the failure cache key (the resolved ref, URIs that make up the cloud profile, and credential precedence). I think eliminating restore storms entirely is not possible, but this could scope them down only to config edits that affect restores. (Changing analyzer settings wouldn't trigger a restore storm in the worst case, for example.)

Creating a composite failure cache key sounds a good idea. I'll try to create a fix with this approach.


Fulscreen window without sending a fullscreen signal to the app

Description
Is there a way to fullscreen a window without sending the fullscreen signal to the opened app and 'unfullscreen' without sending the signal?
My usecase is:
sometimes I have yt fullscreen and I want to see my bar for a second. I used to be able to do it on bspwm, where 'unfullscreening' a window doesn't go out of yt fullscreen, but on Hyprland my yt goes back to being a normal player and I have to fullscreen again (which takes valuable miliseconds).
Thanks in advance

yes, fullscreenstate


[Paginator] Does not emit event when changed programatically

Bug, feature request, or proposal:
Bug
What is the expected behavior?
Changing the page index programmatically should emit a page event.
What is the current behavior?
Assigning to .pageIndex does not emit a page event.  There is no method to jump to a specified page and ensure that an event is emitted.
What are the steps to reproduce?
Open this plunker.  Enter a (different) page number in the input at the top of the page and click "Go To".  The displayed paginator offset ("11-20") changes but the table results do not.
What is the use-case or motivation for changing an existing behavior?
The current behavior is wrong.  The documentation for the page Output says "Event emitted when the paginator changes the page size or page index"; the page index has changed but the event was not emitted.
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Still happening as of Beta 12, at least.
Is there anything else we should know?
I checked paginator.ts and the event is emitted in various methods that change the page index (next / previous) but not in the setting for pageIndex itself.  I don't know why this design decision was made so I hesitate to suggest that it be changed, but we need some way to tell the paginator to go to a page as though the user had clicked to get to that page.
In the short term, I noticed that the private method _changePageSize is exposed in the typings for this component, and does not check if the size being set is the current size.  So I can call
this.paginator._changePageSize(this.paginator.pageSize);

to force the paginator to emit a page event.  Of course it's a pretty awful hack, but it gets the intended behavior.  It'd be nice to avoid this in a future release.

I meant to leave a trackback to #6220 in the original issue -- not exactly the same thing, but related.

I had to add this.paginator._changePageSize(this.paginator.pageSize); to get mine working also

It says : "Property '_pageIndex' is private and only accessible within class 'MatPaginator'"

Quite some time ago, I believe they added a public accessor for pageIndex so you don't have to use the underscore-prefixed field anymore.  You still have to use the prefix for _changePageSize though.

I haven't looked at this in ages.  @andrewseguin is there any debate about this?  I'm pretty sure it's unambiguously a bug, and can be fixed by inserting a call to this._emitPageEvent() in the setter for pageIndex.  Do you know why this has sat open for a year and a half?  Would you accept a PR?

Hello again as we near the 2-year anniversary of this bug!  #6220 just got auto-closed so I figured I should stop by here to provide some activity and avoid the same fate.  Ping! 😁

@thw0rted Just FYI - that bot only locks already closed issues, it doesn't close them. So open issues like this should be OK without a bump.

Hi all any workaround on this ?

Hello Everyone. Here is My working example.
first you need to change paginator.pageIndex
and emit event .page for a change page
this.paginator.pageIndex = this.currentPage;
this.dataSource.paginator.page.emit({
  length: this.dataSource.paginator.getNumberOfPages(),
pageIndex: this.currentPage,
pageSize: 10,
previousPageIndex: this.previousPage
})

AshotAleqs solution works very good - without flickering (as with setTimeout). Little improvement:

      this.paginator.pageIndex = pageIndex;
      this.dataSource.paginator.page.emit({
        length: this.paginator.getNumberOfPages(),
        pageIndex: pageIndex,
        pageSize: this.paginator.pageSize
      })

@b-mi ah I see, Thank you I forgot to change my properties

What version is used where emitting the page event or using the public pageIndex works? In 7.2, the only working solution is still the one I posted above with _pageIndex and _changePageSize (use // @ts-ignore to ignore the private variable error)

Hello, @alexpearce92 I  have used a 7.2 version of angular. And the solution works correctly. without any errors

What version is used where emitting the page event or using the public pageIndex works? In 7.2, the only working solution is still the one I posted above with _pageIndex and _changePageSize (use // @ts-ignore to ignore the private variable error)

Only works on my end with the setTimeout

Maybe anyone can help me with an issue. I've create a generic table component and the mat-paginator is inside of this component. I've created an Output() called changePageAction and attribute a new instance of EventEmitter() to it. In my  I´ve add the (page) property passing a function emitChangePage with $event as parameter.
The function is like that:
  emitChangePage(event: any) {
    this.changePageAction.emit(event);
  }

In my list component in the generic table call I´ve add the property (changePageAction) and add a function to get the pageIndex and pageSize coming from the API and then send back to the table component.
The function is like that:
  public onChangePagination(event: PageEvent): void {
    this.page = event.pageIndex;
    this.perPage = event.pageSize;

    switch (this.filterSelected) {
      case 'reference':
        this.searchByRefence();
        break;
      case 'processKey':
        this.searchByProcessKey();
        break;
      case 'params':
        this.searchByParams();
        break;
    }
  }

The problem is when I change the page size or try to change the pagination the  set the pageIndex to 0 and this behavior broken the pagination, but the request in the network is correct.
Any help is appreciated, thank you :)

Maybe anyone can help me with an issue. I've create a generic table component and the mat-paginator is inside of this component. I've created an Output() called changePageAction and attribute a new instance of EventEmitter() to it. In my <mat-paginator> I´ve add the (page) property passing a function emitChangePage with $event as parameter.
The function is like that:
  emitChangePage(event: any) {
    this.changePageAction.emit(event);
  }

In my list component in the generic table call I´ve add the property (changePageAction) and add a function to get the pageIndex and pageSize coming from the API and then send back to the table component.
The function is like that:
  public onChangePagination(event: PageEvent): void {
    this.page = event.pageIndex;
    this.perPage = event.pageSize;

    switch (this.filterSelected) {
      case 'reference':
        this.searchByRefence();
        break;
      case 'processKey':
        this.searchByProcessKey();
        break;
      case 'params':
        this.searchByParams();
        break;
    }
  }

The problem is when I change the page size or try to change the pagination the <mat-paginator> set the pageIndex to 0 and this behavior broken the pagination, but the request in the network is correct.
Any help is appreciated, thank you :)

Ran into this again. Taking a look at the source, fairly confident that the problem is the fact that no PageEvent is emitted  when you set the pageIndex via the setter.
Pretty sure where it is currently:
/** The zero-based page index of the displayed list of items. Defaulted to 0. */
  @Input()
  get pageIndex(): number {
    return this._pageIndex;
  }
  set pageIndex(value: number) {
    this._pageIndex = Math.max(coerceNumberProperty(value), 0);
    this._changeDetectorRef.markForCheck();
  }
  private _pageIndex = 0;

It needs to be more like this:
/** The zero-based page index of the displayed list of items. Defaulted to 0. */
  @Input()
  get pageIndex(): number {
    return this._pageIndex;
  }
  set pageIndex(value: number) {
    const previousPageIndex = this._pageIndex;
    this._pageIndex = Math.max(coerceNumberProperty(value), 0);
    this._emitPageEvent(previousPageIndex);
    this._changeDetectorRef.markForCheck();
  }
  private _pageIndex = 0;

I haven't seen any reason mentioned as to why we would explicitly NOT want to emit the PageEvent from the setter;
I did see: #6220 and #5822
The latter of which seemed to fix a problem with the change detection, however, this issue is distinctly different from the change detection. When you set the pageIndex you see the changes in the Paginator element, but the visible rows don't update unless you call one of the paging functions (which would negate the setting you did) or manually call paginator.emit() and specify the PageEvent values.
Also, I did make a work around for the time being, for those of you who want a quick fix:
Want I decided to do was extend the MatPaginator class with an interface:
interface Paginator extends MatPaginator {
  hasPageAt: Function,
  pageByIndex: Function,
  refresh: Function
}

Then in my Component get a reference to the paginator like so, @ViewChild(MatPaginator) paginator!: Paginator;
Then in my ngAfterViewInit() I am implementing the new functions:
// set up the paginator refresh
    this.paginator.refresh = function () {
      // store the page index before change
      let previousIndex = this.pageIndex;

      // emit the PageEvent just before next browser repaint
      window.requestAnimationFrame(() => {
        this.page.emit(
          {
            previousPageIndex: previousIndex,
            pageIndex: this.pageIndex,
            pageSize: this.pageSize,
            length: this.length
          }
        );
      })
    }

    // set up paginator page check
    this.paginator.hasPageAt = function (index: number) {
      const maxPageIndex = this.getNumberOfPages() - 1;
      return (0 <= index && index <= maxPageIndex);
    }

    // set up page by index function
    this.paginator.pageByIndex = function (index: number) {

      // check for a page at index
      if(!this.hasPageAt(index)) {
        return;
      }

      // store the page index before change
      let previousIndex = this.pageIndex;

      // update the pageIndex
      this.pageIndex = index;

      // emit the page event
      this.page.emit({
        previousPageIndex: previousIndex,
        pageIndex: this.pageIndex,
        pageSize: this.pageSize,
        length: this.length,
      });
    }

Notes:

paginator.pageByIndex(index: number) is fairly straightforward, and it will emit the PageEvent that triggers the table update.
paginator.refresh() has a less obvious purpose. Basically it can be used to capture PageEvent where they don't usually activate. I used it in a custom filter function to keep blank <tr> elements up to pageSize elements. The reason for this was to ensure a set number of rows were always visible even when there was no data. Feel free to remove it from the interface if you dont need it of course.

Update 2022: Tried both @alexpearce92 and @AshotAleqs workaround, however only @alexpearce92 's worked for me.

Update 2023: I am still having the same issue. I can set pageSize dynamically without problem. But pageIndex does not emit. So I get the current page size from store and then assign them to my paginator with no success.
`
this.dataSource.paginator = this.paginator;
      //set the paginator with the values from store
      this.paginator.pageSize = paginator.pageSize;
      this.paginator.pageIndex = paginator.pageIndex;

      this.dataSource.paginator.page.emit({
        length: this.paginator.getNumberOfPages(),
        pageIndex: paginator.pageIndex,
        pageSize: paginator.pageSize
      } as PageEvent);

`
With above code changes only pageSize

@celalettin-turgut This behavior is seemingly intentional and a "fix" would break existing workflows. If you want to navigate programmatically, you should use the firstPage(), lastPage(), nextPage(), and previousPage() methods which all emit page event.

The original issue is about going directly to a page, not first/last or increment/decrement. Is there a method for jumping to a specific page?

The original issue is about going directly to a page, not first/last or increment/decrement. Is there a method for jumping to a specific page?

@thw0rted Perhaps this link can help you: https://stackoverflow.com/a/51552039

Hello All,
I have the same issue MatPaginator can't jump to a specific page changed programatically (v14.2)


Use Serial1 as logging output

For the H801 there's only UART1 available as serial interface. So I need to have my log on Serial1. I found no way to do this without code changes. It would be nice to have this possibility as well.

http://marvinroger.github.io/homie-esp8266/2.0.0-beta.1/advanced-usage/logging/
(if you are using version develop or 2.0 beta)

Thanks, it's working. My fault, should have seen it in the docs.


Individual organize edit form fields and tabs 695

updated the individual edit page

hi @myugetsu this looks great :) some comments:

One quick thing on the photo upload: when I go to the edit page the saved photos do not show. It says 'no file selected'. Expected behavior would be to see the name of the uploaded photo file.
'Delete' is not working for individuals

@myugetsu to rebase PR

hi @myugetsu this looks great :) some comments:
1. One quick thing on the photo upload: when I go to the edit page the saved photos do not show. It says 'no file selected'. Expected behavior would be to see the name of the uploaded photo file.

2. 'Delete' is not working for individuals

@myugetsu Let me know if you are having any issues to address the above issues

@myugetsu

Is it possible to only limit upload to 200KB and not have any other restrictions like minimum height or width? And if possible show the error message using the error message alert box

Delete is not working for me locally:(

@ninetteadhikari i had reduced the width of the photo to 500 to match the height which is also 500 what would you suggest for a default?

@ninetteadhikari i had reduced the width of the photo to 500 to match the height which is also 500 what would you suggest for a default?

I don't have any requirements on the height/width of the photo but on the size like 200kb. But if this is not an easy fix you can comment out the photo upload option as well. We can leave it out for now and find a better solution for later

@ninetteadhikari i had reduced the width of the photo to 500 to match the height which is also 500 what would you suggest for a default?

I don't have any requirements on the height/width of the photo but on the size like 200kb. But if this is not an easy fix you can comment out the photo upload option as well. We can leave it out for now and find a better solution for later

@myugetsu I agree with @ninetteadhikari but a suggestion we can go with minimum 500x500 pixels for the image if that is what you have it conformed but like was suggested, image file sizes should be limited to 200kb.


Reimport doesn't update instanced scenes in the 3D editor viewport

Godot version
v4.0.dev.20211117.official [175690957]
System information
Windows 11, Vulkan, Nvidia Quadro K2000 461.92
Issue description
Been tweaking auto mesh LOD generation settings, and Reimporting, and I've noticed that after reimport, the Mesh wasn't changed in any way.. then I disabled Mesh LOD totally, reimported, and the mesh still had Auto LODs active
Steps to reproduce
Import Mesh With Auto LOD Enabled
Disable Auto LOD in Import Settings
Reimport -> LODs still active and unchanged
Note: Restarting the Editor Loads the changes
Minimal reproduction project
No response

Duplicate of https://github.com/godotengine/godot/issues/14338.

This issue has been happening to me as well regardless of LOD settings. Even happens in 3.x for me.
In my case I've had to close and reopen my scenes for the instanced meshes to update.
Godot 4 has a shortcut option to reload the current scene luckily, but it's still kinda irritating to do
In a more extreme case in 4.0 (beta 2), I've had to restart the entire engine after adding/changing around external materials for the materials to update.


Migrate stream selection dropdown in move topic modal to use tippy dropdown library.

I was trying to abstract and migrate everything at once but it was driving me insane, so instead a better approach would be to just migrate everyone one by one and then abstract it so that the abstraction can benefit from all the use cases and it is easier to do.

Looking good, Aman! I left a few inline comments.

I left a few more comments :) this is getting so close, though!

All right, Aman! I think this is ready for Tim's review, so I'll mark it as such.

Yeah.

@timabbott fixed the blocker by dropping that comment. I will open multiple PR for you other comments. Definitely something I have thought to do as well.

Sounds good, merged, thanks @amanagr!


Column selector buttons translation

Thanks!

Would it be possible to have a release soon with this fix?
Thank you


Add command prompt variables

Summary:
This PR introduces the ability to use dynamic variables in the command prompt for interactive mode in the ChatGPT CLI. The following variables have been added:

%date: The current date in the format YYYY-MM-DD.
%time: The current time in the format HH:MM:SS.
%datetime: The current date and time in the format YYYY-MM-DD HH:MM:SS.
%counter: The current counter value.
%usage: The current usage value.

Changes:

Updated the README to reflect the new variables.
Modified the main file to utilize the new FormatPrompt function for dynamic command prompts.
Added unit tests for the FormatPrompt function to ensure correctness.
Set the default command prompt to [datetime] [Qcounter] in the configuration store.

Implementation:

config/utils.go: Added FormatPrompt function to handle dynamic prompt formatting.
config/utils_test.go: Added unit tests for FormatPrompt.
cmd/chatgpt/main.go: Updated to use the FormatPrompt function.
config/store.go: Set the default command prompt to [datetime] [Qcounter].
README.md: Documented the new variables and updated the Table of Contents.

Ah very cool! Was wondering how this would be handled in Go.


Add params to Route class

Move the params function into the Route class and update docs.

Waiting on #25

Closing since we moved away from classes via #49


plotfit fix

Resolves #90 and adds a unit test.

Definitely a quick and dirty solution but plot_fit_1d will be deprecated soon anyway.


Document a verify script pattern

I think for many people it'd be useful to run some simple tests whenever their r2d image is built. This is similar to postBuild (and the same behavior could be done w/ a few assert statements at the end of one of these files), but I wonder if it'd be worth having a file that specifically has the job of "throw a tests aren't passing error" so that the user knows their code isn't working.
Alternatively, we could try to set guidelines for this in the documentation, basically include a section on how to ensure your container runs after it builds. Thoughts?

It could be something like 'verify' that runs like postBuild, and should exit cleanly for success or non-cleanly for failure.
I don't know how useful it will be, however, or what specific need it solves.

The way I think of it is that a lot of people create repositories that are just for showing off a binder, and aren't really part of a development package. In this case, you probably aren't using proper testing or CI, so you may be able to build an image w/ repo2docker just fine, but there will be some underlying flaw that you didn't know about.
E.g., in the case of the "cost estimator" notebook, bqplot had been updated that introduced an error in the notebook code. However you'd only knew that if you actually opened the notebook and ran the cells. If there were something like a verify script, then I could have written that into the repo and caught it.

I do like the idea. However if it runs an expensive test suite that might
take quite a while. Would we want to limit the amount of time this could
run? Resources it could consume?
On Oct 11, 2017 7:18 PM, "Chris Holdgraf"<EMAIL_ADDRESS>wrote:

The way I think of it is that a lot of people create repositories that are
just for showing off a binder, and aren't really part of a development
package. In this case, you probably aren't using proper testing or CI, so
you may be able to build an image w/ repo2docker just fine, but there will
be some underlying flaw that you didn't know about.
E.g., in the case of the "cost estimator" notebook, bqplot had been
updated that introduced an error in the notebook code. However you'd only
knew that if you actually opened the notebook and ran the cells. If there
were something like a verify script, then I could have written that into
the repo and caught it.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/jupyter/repo2docker/issues/93#issuecomment-336000803,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAB23rqrNrk3yF3wswNMLb6sJaK9cPPfks5srXbrgaJpZM4P2Q2T
.

ya I agree with you - not sure the best way to set limitations there...but I imagine something like this will need to exist long-term for reproducibility anyway (e.g. ensuring that some conditions are always there, such as the result of an analysis being the same number)

we discussed this a bit today - @Carreau suggested a script whose contents would be run after the docker image was built.

FWIW, there is interest in this issue from the ML community.

@alando46 and I have been discussing this idea a bit in https://github.com/pangeo-data/pangeo/issues/544. Something users could do today is include a test suite in their repo and test a built image like this:
docker run -i -t ${IMAGE_NAME} "py.test"

I suppose a generic verify interface would be useful as well if you wanted to add this as an option to repo2docker cli or binderhub in someway.

Maybe the way forward is to create some examples (like @jhamman showed) and see what people do and use.
I don't think we should execute anything verify during the build process. For me it is more about agreeing a "spec" on where to find and how to run what ever scripts/tests/machinery the repo author envisioned to be used to determine if "this container still works".

I think "verify" is basically just some version of "run some tests" and "emit a verify-specific message depending on how it goes".
Eventually (e.g. if you wanted a binderhub specifically for publication), you'd want to distinguish between "this repo didn't build because it had an error in repo2docker" vs. "this repo didn't build from the verify step"
However in the meantime (and to get inspiration for what this would look like in the future) it'd be great to start collecting some "best practices" patterns for reproducibility with Binder

It seems like there is potentially some overlap with the conversation happening on discourse about testing: https://discourse.jupyter.org/t/testing-notebooks/701/2. Although the discourse post is mostly focussed on notebooks, testing the environment as a first step seems like an appropriate first step

Now that we've got Zenodo integration with BinderHub, I think this question is more relevant than ever. A couple main points of discussion:

Should this be a specification for testing, or just a file that gets run?
Should these tests be run at build time, or should they be executed through some other mechanism (e.g. optionally after a container is launched from the built image)

Answers to these will affect which repositories need changes. Maybe this is another benefit of extending the REE specification outside of just repo2docker. Then we could add a specification for "how to define validation tests in a repository" that repo2docker wouldn't necessarily touch, but that BinderHub could leverage to occasionally test certain repositories (we probably wouldn't do this for mybinder.org, but if you were e.g. a journal running a binderhub then you'd want something like this)

I think we could/should establish a convention for the name of a script that a robot/human can run to convince themselves that the repo was properly setup and its contents "works".
For that I think we should promote verify as a friend of postBuild and start. It should be an "executable" that is executed inside a built image and returns 0 if all is good or anything but zero to signal "stuff is broken". What exactly the script does should be left to the user. With some docs and examples for "run all notebooks in my repo" and similar tasks.
I don't think we should try and offer the convenience of running all notebooks in the repo because my feeling is that there are enough cases where running all notebooks would be super expensive or impossible because something is missing. Basically too many edge cases.

@betatim I agree about using a postBuild-like file that is just a way to signal to either a reader or a builder "this should be run to determine if the repository does what it says it does". Also +1 on others deciding what goes into that file.
It sounds like you're also leaning towards: treat this as a pattern but don't automatically run it within a build process?

Nods, I would not run this as part of building the repo as it could/should be something that takes minutes or hours to run.
Following the mantra that repo2docker doesn't introduce new conventions but copies existing ones I'd say lets start using verify in our own repos with a CI setup like repo2docker . ./verify that should build and run the verify step as part of the CI. Maybe together with some docs this pattern will start spreading and then we can have a CLI flag for repo2docker like  --verify that builds and runs the verify script?!

@betatim that sounds good to me - I think we could codify this in the REES page and then just mention it in the docs to see where it goes from there.

FWIW, the verify script is what we started using in pangeo-stacks.

Here's an example: https://github.com/pangeo-data/pangeo-stacks/blob/master/pangeo-notebook/binder/verify
And its execution as part of our CI workflow: https://github.com/pangeo-data/pangeo-stacks/blob/0425c2df72c0badd2f37dde4b6f02f2a55b8de2b/build.py#L77-L88

@jhamman perfect - do you think this sounds like a reasonable pattern to codify in the repo2docker spec?

Ping! It sounds like there was a good discussion here, anyone want to follow up?

I'd close it or convert it into a issue about creating documentation that suggest to people that a pattern we encourage is to create a verify script that exits with status 0 or 1 depending on whether the image is "good". However I wouldn't add much tooling in repo2docker itself for this (for example automatically running the script after building the image).

Do we have agreement that the verify script is a reasonable pattern worth suggesting, but we won't develop a repo2docker feature to use it?
I'll assume so, and update this issue to an issue about documentation.


Unable to expand the broker node

I was able to configure a managed Kafka using the wizard. But when I want to expand the Brokers/id node, I have an error that authentication failed. Do I need extra configuration ?

no it should just work. I need to take a look.

So the issue is that RHOSAK clusters don't allow you to list the broker config, hence the message "Cluster authorization failed" (it's not about authentication). Nothing we can do about it.
I can only update the doc to mention this limitation.


CPU Zipper strategy execution error

I am encountering an issue when trying to execute a Zipper strategy on the CPU. The problem occurs specifically with the code provided below.
https://github.com/euro-hpc-pl/SpinGlassEngine.jl/blob/Zipper_CPU/test/mwe.jl

@tomsmierz this should be an easy fix ...

@lpawela has this been resolved and merged?

There are hard-coded CuArray calls in https://github.com/euro-hpc-pl/SpinGlassTensors.jl/blob/Zipper_CPU/src/contractions/central.jl which probably lead to mixed CPU-GPU matrix multiplications. Probably can be relative easily resolved. The more important question is: why the test suite didn't catch this earlier?
Another problem I encountered when trying to reproduce this using the provided MWE using the code on the master branch is
ERROR: LoadError: UndefVarError: `save_object` not defined
Stacktrace:
 [1] truncate_potts_hamiltonian_2site_BP(potts_h::LabelledGraphs.LabelledGraph{MetaGraphs.MetaDiGraph{Int64, Float64}, Tuple{Int64, Int64, Int64}}, beliefs::Dict{Any, Any}, num_states::Int64, result_folder::String, inst::String; beta::Float64)
   @ SpinGlassNetworks ~/.julia/packages/SpinGlassNetworks/04D6H/src/truncate.jl:132
 [2] truncate_potts_hamiltonian_2site_BP
   @ ~/.julia/packages/SpinGlassNetworks/04D6H/src/truncate.jl:107 [inlined]
 [3] truncate_potts_hamiltonian(potts_h::LabelledGraphs.LabelledGraph{MetaGraphs.MetaDiGraph{Int64, Float64}, Tuple{Int64, Int64, Int64}}, β::Float64, cs::Int64, result_folder::String, inst::String; tol::Float64, iter::Int64)
   @ SpinGlassNetworks ~/.julia/packages/SpinGlassNetworks/04D6H/src/truncate.jl:188
 [4] top-level scope
   @ ~/new-zksi-repo/SpinGlassEngine.jl/test/mwe.jl:32
in expression starting at /home/lpawela/new-zksi-repo/SpinGlassEngine.jl/test/mwe.jl:32


Getting LateInitializationError randomly

I/flutter (13418): LateInitializationError: Field 'adIdManager' has not been initialized.


Mention that Doctrine does not use Entities public API

As discussed in https://github.com/doctrine/DoctrineBundle/issues/778

@localheinz updated

@jwage updated


rpcsrv: handle preflight OPTIONS with CORS kludge, fix #2721

Problem
Not broken enough CORS.
Solution
Break more of it.

EnableCORSWorkaround is off on all our public nodes (testnet, mainnet)

It's on.

EnableCORSWorkaround is off on all our public nodes (testnet, mainnet)

It's on.

Ok, I've just looked at our default mainnet/testnet config, it's set to false there.

Yes, it's off by default (as it should be, it makes CORS useless), but we have it enabled on public servers (because people want to break CORS).


Playground samples don't provide log output

When I try and run any of the examples in the Playground, nothing shows up in the Log.
https://www.typescriptlang.org/en/play?target=1
The Hello World Javascript file when run, I get no output, in the errors I get "Cannot find name 'console'. Do you need to change your target library? Try changing the lib compiler option to include 'dom'."
I didn't see any option in the TS Config tab to enable the DOM.
Not sure if this is because of the V2 testing or if it's something on my side.  I'm running this in Chrome Version 80.0.3987.149 (Official Build) (64-bit) on Mac High Sierra latest version.

I have the same issue when compiling to ES5 using v3.8.3 of TS.  If I increase the version of either, then the problem goes away

Just noticed that using @ts-ignore works however:
class Hello{
private _name:string;
constructor(name: string){
  this._name = name;
}
public get name():string{ return this._name;}

}
var x = new Hello("Smith");
//@ts-ignore
console.log(x);

That works fine for me in ES5 as the target

That said, this issue was because the DOM APIs weren't in the playground and they are now - so I'm closing. You're welcome to re-create the issue if you have a sharable reproduction


Sum problem

Hello, I noticed that when I use sum function the digits after the comma (that in my case represent decimals) are not loaded so result isn't correct.
If I change my values in the table, from which I load data, putting a dot instead of a comma, then it works.
I use Italian localization and I tried to look at the code too without success.
Maybe I should look elsewhere or probably I'm doing something wrong, but I can't figure it out.
Could you help me out? Thanks.

I managed to find a solution anyway so I changed this string: return this.sum += parseFloat(record[attr]); to: return this.sum += parseFloat(record[attr].replace(",", ".")); and now seems to work smoothly.


DEX-680: missing bounds on annotation & DEX-694: Sighting error

Pull Request Overview

Modifies GET /api/v1/sightings/GUID schema to include one which shows bounds on the Annotations
Bonus bugfix for DEX-694 (empty jobs on Sighting)

/rebase


Proposal for the base function

We maybe can setup Fn to be generic of input types. like so :
interface Fn<T=unknown> {
  input: T;
  output: unknown;
}

This allows to implement specialised algorithms (for arrays, strings, numbers) without having to type cast, exemple  for pipe:
interface PipeFn extends Fn<{
    acc: unknown;
    item: Fn;
  }> {
  output: Call<this["input"]["item"], this["input"]["acc"]>
}

Making these actually easier to read

After some testing, this proves to not work if T is a complex object like
{
    acc: unknown;
    item: Fn;
  }

I'm going for this instead:
export interface Fn {
    args: unknown[];
    output: unknown;
  }

This makes dealing with function arguments super intuitive IMO:
export interface Head extends HOT.Fn {
   output: HeadImpl<this["args"][0]>;
 }

// or the more complexe
interface MapFn<fn extends HOT.Fn> extends HOT.Fn {
   output: this["args"] extends [infer acc extends any[], infer item]
     ? [...acc, HOT.Call<fn, item>]
     : never;
 }


FileBrowser Connector for PHP for 3.x

Jodit Version:  3.3.x
Browser:  Chrome
OS:  Windows
Expected behavior: upload image
Actual behavior: upload file
https://github.com/xdan/jodit-connectors  here is not updated for 3.x ?

The connector has its own version. She is not dependent on iodit


What subsampled type are netCDF variables with sensor/scan angles?

The VIIRS M band example has solar and sensor angle variables in the tie_points group. These variables seem to represent a new type of subsampled data because they are not subsampled coordinates but are only given at the tie points geolocation. Why sensor, solar, and any other viewing geometry-related data cannot be considered the same as radiance in that example file?
**cc @AndersMS **

In the original VIIRS data the viewing geometry data is provided at the same resolution/dimensions as the radiance data and the latitude/longitude.
The overall target is to minimize the product file size, that is the argument for compacting both the latitude/longitude and the viewing geometry data.
Location and viewing geometry is closely related in that the main reason for the viewing angles changing across the swath is that you are changing location. Indeed, for that reason, it is efficient to compress and expand location and viewing geometry as part of the same algorithm.

I see the point of having sub-sampled view/sun geometry interpolated across the swath. But I also do not think they can be added to the interpolation group without some work in the root group that they exist and be explicit about what they are.

The idea was that tie_point_interpolation in the main dataset points to the interpolation  container variable:
variables: 	float radiance(track, scan, channel) ; 		radiance:tie_point_interpolation = "tie_points/interpolation" ;
The container variable in turn points to each of the variables for location, sensor sensor direction (if present) and solar direction (if present):
 variables:   	int interpolation ;   		....   		interpolation:location_tie_points = "latitude longitude" ;   		interpolation:sensor_direction_tie_points = "sensor_azimuth_angle sensor_zenith_angle" ;   		interpolation:solar_direction_tie_points = "solar_azimuth_angle solar_zenith_angle" ;
The VIIRS Day-Night-Band even requires a lunar direction.
We would need to explain this structure in documentation. As solar_azimuth_angle, solar_zenith_angle, sensor_azimuth_angle and sensor_zenith_angle are standard names, they have a well defined meaning.

(Sylvain speaking)
I may be missing something but since radiance is already at full resolution, does it really need an interpolation-related attribute?
I agree with @ajelenak and @TomLav regarding the declaration of view/sun geometry variables because I don't think there is a concept of derived/virtual variable in the convention, so it would add another layer of complexity to our proposal.
Can we simply keep subsampled variables in the global scope and indicate the interpolation information (container variable + index variables + [optional] auxiliary variables) required to reconstruct the full resolution using an attribute?
For example, if we say the attribute is called "interpolation":
Global scope:
dimensions:
      track
      scan
      channel
      subsampled_track
      subsampled_scan

variables:
      double time(track, scan);
      float radiance(track, scan, channel) ;
      float lon(subsampled_track, subsampled_scan);
            lon: interpolation = "somegroupename/method1"
      float lat(subsampled_track, subsampled_scan);
            lat: interpolation = "somegroupname/method1"
      float solar_azimuth_angle(subsampled_track, subsampled_scan);
            solar_azimuth: interpolation = "somegroupname/method1"
      ...
      float other_subsampled_var(subsampled_track, subsampled_scan);
            other_subsampled_var: interpolation = "somegroupname/method2"

Then we have the "somegroupname" group which only contains information required to interpolate from subsampled to full resolution:
variables:
      int tiepoint_track_index(subsampled_track, subsampled_scan);
      int tiepoint_scan_index(subsampled_track, subsampled_scan);
      char method1;
            method1: standard_name = "some_method_name"
            method1: formula_terms = "subtrack: somegroupname/tiepoint_track_index subscan: somegroupname/tiepoint_scan_index"
            method1: fullres_dimensions = "track scan"

      float aux_lookup_table(subsampled_track, subsampled_scan);
      char method2;
            method2: standard_name = "other_method_name"
            method2: formula_terms = "auxiliary: time lut: somegroupename/aux_lookup_table subtrack: somegroupname/tiepoint_track_index subscan: somegroupname/tiepoint_scan_index"
            method2: fullres_dimensions = "track scan"

This way all the main variables are clearly declared in the global scope with minor overhead (one attribute) for subsampled variables and the only new mechanism we introduce is the description of the transformation from subsampled to fullres dimensions using container variables.

It seems we have identified a new use case: parameters (variables) that are not coordinates but are given at a subsampled coordinate (tie point) resolution and must be interpolated to a higher coordinate resolution of a data variable. I would delay considering this until we complete the work on subsampled/interpolated coordinates.

In the viirs_compact.cdl I modified the variables names that were identical to the corresponding standard_names, to make it clearer what is what.
@Sylvain: Referencing the interpolation container variable from the radiance variable is equivalent to having the grid_mapping reference in the main data set. I agree you could argue that both of them are properties of the coordinates and not of the data set, but by convention the grid_mapping is referenced from the data set. So it would not be wrong to do it with the interpolation  as well.
In the example viirs_compact_interpolation_in_root_group.cdl, the interpolation container variable has ben moved out to the root group. Note that all the variable names referenced from the container variable now have the relative path of the tie-point group (tp/). Possibly it could work the way that if the interpolation container variable is in the root group, then it it is implicitly linked to the data sets matching its expanded dimensions. If it is not, it would need to be referenced via an attribute o the data set. What do you think?
If you have the lat and lon on tie-point dimension in the root group, then the question is what to call the lat and lon variables expanded onto full dimensions. The convenience of having the lat and lon on tie-point dimensions inside the tie-point group would be that you could then expand lat and lon directly to the root group without a name conflict. Every thing in the root group would be on full dimensions, everything in the tie-point group on tie-point dimensions.

For what it's worth I am strongly in favour of explicitly linking interconnected variables via attribute references -explicit is better than implicit in my view.
Also I concur with @ajelenak - subsampled view angles are an important feature but they don't necessarily need to be ready by next week, although I would incorporate them into the first draft of the proposal already, as they are likely to be needed in order to make use of many data products.

Thank you for all the good contributions, it is a valuable discussion.
I will leave it to those of you who are more experienced with CF-convention work to judge when to present what, but I would like to add a couple of comments in support of the viewing directions.
The viewing angles are part of many level-1 products, including several of the Sentinel, Metop-SG and and JPSS level-1 products. They are needed at full resolution; in some cases they are provided in full resolution and in others they are given at tie-points only.
Imagine you add a range to the zenith and azimuth angle of the sensor, then you have the position of the sensor relative to the cell, showing how closely they are related with latitude/longitude/height. As I read the section 4 of the CF-convention they do qualify as coordinate variables and additionally have standard names as for example sensor_azimuth_angle and sensor_zenith_angle.
I suggest that we think of what we are now introducing into the CF-convention, as a framework for coordinate variables, that are well suited for being stored at tie-points and interpolated to full resolution using a well-defined method. Beyond what we discussed already, I can think of range, lunar_azimuth_angle, lunar_zenith_angle and geoid_height_above_reference_ellipsoid, but there are probably more candidates.
The more use cases we validate the framework against now, at least conceptually, the more confident we will be that the framework will be suited for later additions.

@AndersMS

If you have the lat and lon on tie-point dimension in the root group, then the question is what to call the lat and lon variables expanded onto full dimensions.

From my point of view using full-dimensions or subsampled-dimensions+interpolation algorithm are just two methods to store data, the only difference being the memory/computing tradeoff. The storage method should only matter for software that decode the file, not to people who will use its content so it should not have any effect on how you name variables.
@ajelenak

It seems we have identified a new use case: parameters (variables) that are not coordinates but are given at a subsampled coordinate (tie point) resolution and must be interpolated to a higher coordinate resolution of a data variable. I would delay considering this until we complete the work on subsampled/interpolated coordinates.

I think the interpolation part of our work on subsampled/interpolated coordinates will cover this use-case anyway, so I agree with @erget and @AndersMS about mentioning it in the proposal.

I, too, am in favor of including viewing angles. I expect that to be easier after we finalize the approach for subsampled coordinates.

Hei all,
Sorry for not interacting more, but here are two thoughts towards the meeting tomorrow:

(Sylvain speaking)
... I don't think there is a concept of derived/virtual variable in the convention, so it would add another layer of complexity to our proposal.

I suppose one could say that CF>=1.8 introduces "virtual / derived" lat/lon variables in the case of grid_mapping when the 2D lat/lon fields are not included. An application that wants lat/lon has to do all the work, guessing from grid_mapping and the x and y coordinates variables.
Also, I wanted to raise again the example of EPS-SG MWI L1B data products where the subsampling is only performed in the along-scan dimension, while the the along-track direction is not subsampled. So we could imagine fields with a mix of subsampled/full coordinates variables to compute the full lat/lon.

I suggest that we think of what we are now introducing into the CF-convention, as a framework for coordinate variables that are well suited for being stored at tie-points and interpolated to full resolution using a well-defined method. Beyond what we discussed already, I can think of range, lunar_azimuth_angle, lunar_zenith_angle and geoid_height_above_reference_ellipsoid, but there are probably more candidates.

We can at least add "time" when time represents the sensing time for each FoV. It is a full 2D field, but is very often stored as e.g. 1 time per scanline.

@oceandatalab

From my point of view using full-dimensions or subsampled-dimensions+interpolation algorithm are just two methods to store data, the only difference being the memory/computing tradeoff. The storage method should only matter for software that decode the file, not to people who will use its content so it should not have any effect on how you name variables.

I agree that for a people with software that takes care of decoding the file, this will not matter.
But could there be a use case where a user that receives a compact file and in a first step would like to expand that file to a full resolution file, using a dedicated expansion tool? That could be the case if the user would like to use if for several applications or if one of the user application is not (yet) capable of decoding the compact coordinates.
If this expansion would be done inside the original compact NetCDF file, there would be a name conflict if the compact data is in the root group. This internal expansion would be comparable to the HDF5 internal compression scheme, where a file can be compresses/uncompressed internally, without generating a new HDF5 file.
However, if the expansion is done into a new separate NetCDF file, then there would be no name conflict.
Hope my point is clear: Is the use case relevant?

@TomLav

We can at least add "time" when time represents the sensing time for each FoV. It is a full 2D field, but is very often stored as e.g. 1 time per scanline.

Good point, thank you for bring that in.

@TomLav

Also, I wanted to raise again the example of EPS-SG MWI L1B data products where the subsampling is only performed in the along-scan dimension, while the the along-track direction is not subsampled. So we could imagine fields with a mix of subsampled/full coordinates variables to compute the full lat/lon.

We discussed one way to address that case in one of the past teleconferences. It is illustrated on page 18 in the GDoc, the upper left of the four examples: https://docs.google.com/document/d/1y7ucbfi2GviJv-kAzeBxdHh0NGH4fjoWV0g9Y1dpch8/edit#
Effectively, in this scheme, the tie-points would be included for each scan in the along-track direction.

@TomLav

We can at least add "time" when time represents the sensing time for each FoV. It is a full 2D field, but is very often stored as e.g. 1 time per scanline.

I have added a new VIIRS example with two time stamps per scan, one at the beginning of the scan and one at the end, but there are other options including the one you mention.
Example is here: https://github.com/erget/subsampled-coordinates/tree/master/VIIRS_M_Band_Example_with_time

As discussed in today's meeting,

There is precedence for considering viewing angles as coordinates; they describe the location of an observation in relation to the satellite and possibly other bodies, such as the Sun or Moon. This is much like providing multiple coordinates for observations, i.e. lat/lon and projected coordinates.
Another aspect of these variables helps qualify observations made at those locations, which functions more like ancillary data.
Treating viewing angles as coordinates has obvious practical advantages. Attaching ancillary variables that expand across subsampled dimensions is not currently in the Conventions and thus we would need mechanisms in order to make that work. @davidhassell notes that a possible approach would be to attach the ancillary variable to the subsampling container and then reuse the mechanism of upsampling coordinates on the ancillary variables. This would be more complex and should be avoided if possible.

Conclusion: In our paper, we will note that we have considered this and decided to treat viewing angles as coordinates. This will be further scrutinised at the upcoming Community Meeting, where problems we may have overlooked should come to light.


fix: Use Redis ConnectionManager to re-connect on failures

Previously trino-lb would not recover from a closed connection
2024-06-21T08:00:17.924954Z  INFO Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Updated query counters from 1 remote clusters
2024-06-21T08:00:22.720512Z ERROR Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Failed to get last QueryCountFetcher update timestamp err=RedisError { source: GetLastQueryCountFetcherUpdate { source: broken pipe } }
2024-06-21T08:00:27.719737Z ERROR Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Failed to get last QueryCountFetcher update timestamp err=RedisError { source: GetLastQueryCountFetcherUpdate { source: broken pipe } }
2024-06-21T08:00:32.720312Z ERROR Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Failed to get last QueryCountFetcher update timestamp err=RedisError { source: GetLastQueryCountFetcherUpdate { source: broken pipe } }

Now the first call to redis will fail, but the following calls will work again
2024-06-21T07:58:57.264989Z  INFO Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Updated query counters from 1 remote clusters
2024-06-21T07:59:02.085295Z ERROR Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Failed to get last QueryCountFetcher update timestamp err=RedisError { source: GetLastQueryCountFetcherUpdate { source: broken pipe } }
2024-06-21T07:59:07.086128Z  INFO Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Updated query counters from 0 remote clusters
2024-06-21T07:59:12.085915Z  INFO Fetching current query counters: trino_lb::maintenance::query_count_fetcher: QueryCountFetcher: Updated query counters from 0 remote clusters

How many times does the connection manager try to reconnect? Is there an exponential timeout? Are these parameters configurable?
Because these reconnect attempts can cause performance issues on the Redis server side which could lead to DoS.

Seems like they are using https://docs.rs/tokio-retry/latest/tokio_retry/ for that. They have some default values in https://docs.rs/redis/latest/src/redis/aio/connection_manager.rs.html#101-109, which I guess should be a good starting point

Seems like they are using https://docs.rs/tokio-retry/latest/tokio_retry/ for that. They have some default values in https://docs.rs/redis/latest/src/redis/aio/connection_manager.rs.html#101-109, which I guess should be a good starting point

Thanks! That looks reasonable.


feat: update artiface-management from 1.3.0 to 1.17.2

The issue of webpack bundling has been solved in @sap/artifact-management 1.17.2. At the same time, the WorkspaceApi and WorkspaceImpl have been refactored since @sap/artifact-management 1.17.0.
In this pull request, I updated @sap/artifact-management from 1.3.0 to 1.17.2 by removing the unused patch and refactoring serval codes related to workspace to align with the above changes in artifact-management.

@ThreeWind, please sign the CLA: https://github.com/SAP/app-studio-toolkit/pull/200#issuecomment-1338988144

@bd82 I have signed the CLA several times, but I do not know why the status is always pending?

I am not sure, but as a SAP employee the CLA is redundant so we can skip it.

Hi @bd82 We still need those the CopyPlugin in webpack.config.js because Project API need those templates to generate the launchpad page and mat.yaml.

Yeah, but we only expose three APIs from workspaceImpl and I doubt the project-api is used as a code generator in this flow. So the question is: would the project API run successfully if these resources are "missing"?
Basically does it lazy load them when needed? or always loads them  on its initialization?

Hi @bd82 We still need those the CopyPlugin in webpack.config.js because Project API need those templates to generate the launchpad page and mat.yaml.

Yeah, but we only expose three APIs from workspaceImpl and I doubt the project-api is used as a code generator in this flow. So the question is: would the project API run successfully if these resources are "missing"? Basically does it lazy load them when needed? or always loads them on its initialization?

Actually, we expose all interfaces of project-api by using the line 'export * as sam from "@sap/artifact-management-types";' in app-studio-toolkit-types, not just the three APIs from WorkspaceImpl. Typically, users use WorkspaceApi to get ProjectApi objects and call their methods to perform all kinds of tasks, such as getProjectInfo(), readItems() or build() etc. If there resources are missing, some of the methods can not run successfully.

hi @bd82, would you please review this pull request once more? It cannot be merged without your approval.

Actually, we expose all interfaces of project-api by using the line 'export * as sam from "@sap/artifact-management-types";' in app-studio-toolkit-types, not just the three APIs from WorkspaceImpl. Typically, users use WorkspaceApi to get ProjectApi objects and call their methods to perform all kinds of tasks, such as getProjectInfo(), readItems() or build() etc. If there resources are missing, some of the methods can not run successfully.

Good point which shows where we need to improve the types.
This sam type is meant as a design time only object, we do not actually expose it at runtime.
It was added so consumers would be able to access artifact-management interfaces/types, e.g: "Item / Module".
I wonder if we can do a "cleaner/smaller" selection of sub-types to expose there.
But that is out of scope of this PR.


chore: only update usages for the saved file

Current dependencies on/for this PR:

main

PR #203   👈

This comment was auto-generated by Graphite.


Remove safari-specific code

:tada: This issue has been resolved in version 7.1.1 :tada:
The release is available on:

GitHub release
v7.1.1

Your semantic-release bot :package::rocket: