Module not found: Error: Can't resolve 'reduce'

Short description of the problem:
Build failed in production build only.
What behavior are you expecting?
Steps to reproduce:

ionic-app-scripts build --prod

> ionic-app-scripts build --prod

[15:20:05]  ionic-app-scripts 1.3.8
[15:20:05]  build prod started ...
[15:20:05]  clean started ...
[15:20:05]  clean finished in less than 1 ms
[15:20:05]  copy started ...
[15:20:05]  ngc started ...
[15:20:17]  ngc finished in 11.92 s
[15:20:17]  preprocess started ...
[15:20:17]  deeplinks started ...
[15:20:18]  deeplinks finished in 875 ms
[15:20:18]  optimization started ...
[15:20:18]  copy finished in 13.14 s
[15:20:35]  ionic-app-script task: "build"
[15:20:35]  Error<EMAIL_ADDRESS>Module not found: Error: Can't resolve 'reduce' in
            'D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\lib' resolve 'reduce' in
            'D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\lib' Parsed request is a module
            using description file:
<EMAIL_ADDRESS>(relative path:
            ./lib) aliased from description file
<EMAIL_ADDRESS>with mapping 'reduce'
            to 'reduce-component' Parsed request is a module using description file:
<EMAIL_ADDRESS>(relative path: .)
            after using description file:
<EMAIL_ADDRESS>(relative path: .)
            resolve as module D:\projects\project-name\node_modules\@ionic\node_modules doesn't exist or is not a
            directory D:\projects\project-name\node_modules\node_modules doesn't exist or is not a directory
            D:\projects\node_modules doesn't exist or is not a directory D:\node_modules doesn't exist or is not a
            directory D:\projects\project-name\node_modules\@ionic\cloud\node_modules\node_modules doesn't exist or is
            not a directory D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\node_modules
            doesn't exist or is not a directory looking for modules in
            D:\projects\project-name\node_modules\@ionic\cloud\node_modules using description file:
<EMAIL_ADDRESS>(relative path: ./node_modules) Field
            'browser' doesn't contain a valid alias configuration after using description file:
<EMAIL_ADDRESS>(relative path: ./node_modules) using
            description file<EMAIL_ADDRESS>(relative path:
            ./node_modules/reduce-component) as directory
            D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component doesn't exist no extension
            Field 'browser' doesn't contain a valid alias configuration
            D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component doesn't exist .js Field
            'browser' doesn't contain a valid alias configuration
<EMAIL_ADDRESS>doesn't exist .ts Field
            'browser' doesn't contain a valid alias configuration
<EMAIL_ADDRESS>doesn't exist looking for
            modules in D:\projects\project-name\node_modules using description file: D:\projects\project-name\package.json
            (relative path: ./node_modules) Field 'browser' doesn't contain a valid alias configuration after using
            description file: D:\projects\project-name\package.json (relative path: ./node_modules) using description
            file: D:\projects\project-name\package.json (relative path: ./node_modules/reduce-component) as directory
            D:\projects\project-name\node_modules\reduce-component doesn't exist no extension Field 'browser' doesn't
            contain a valid alias configuration D:\projects\project-name\node_modules\reduce-component doesn't exist .js
            Field 'browser' doesn't contain a valid alias configuration
            D:\projects\project-name\node_modules\reduce-component.js doesn't exist .ts Field 'browser' doesn't contain a
            valid alias configuration D:\projects\project-name\node_modules\reduce-component.ts doesn't exist
            [D:\projects\project-name\node_modules\@ionic\node_modules]
            [D:\projects\project-name\node_modules\node_modules] [D:\projects\node_modules] [D:\node_modules]
            [D:\projects\project-name\node_modules\@ionic\cloud\node_modules\node_modules]
            [D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\node_modules]
            [D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component]
            [D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component]
<EMAIL_ADDRESS><EMAIL_ADDRESS>            [D:\projects\project-name\node_modules\reduce-component]
            [D:\projects\project-name\node_modules\reduce-component]
            [D:\projects\project-name\node_modules\reduce-component.js]
            [D:\projects\project-name\node_modules\reduce-component.ts]<EMAIL_ADDRESS>            6:13-30<EMAIL_ADDRESS>@ ./src/app/app.module.ngfactory.js @ ./src/app/main.ts
Error<EMAIL_ADDRESS>Module not found: Error: Can't resolve 'reduce' in 'D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\lib'
resolve 'reduce' in 'D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\lib'
  Parsed request is a module
  using description file<EMAIL_ADDRESS>(relative path: ./lib)
    aliased from description file<EMAIL_ADDRESS>with mapping 'reduce' to 'reduce-component'
      Parsed request is a module
      using description file<EMAIL_ADDRESS>(relative path: .)
      after using description file<EMAIL_ADDRESS>(relative path: .)
        resolve as module
          D:\projects\project-name\node_modules\@ionic\node_modules doesn't exist or is not a directory
          D:\projects\project-name\node_modules\node_modules doesn't exist or is not a directory
          D:\projects\node_modules doesn't exist or is not a directory
          D:\node_modules doesn't exist or is not a directory
          D:\projects\project-name\node_modules\@ionic\cloud\node_modules\node_modules doesn't exist or is not a directory
          D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\node_modules doesn't exist or is not a directory
          looking for modules in D:\projects\project-name\node_modules\@ionic\cloud\node_modules
            using description file<EMAIL_ADDRESS>(relative path: ./node_modules)
              Field 'browser' doesn't contain a valid alias configuration
            after using description file<EMAIL_ADDRESS>(relative path: ./node_modules)
              using description file<EMAIL_ADDRESS>(relative path: ./node_modules/reduce-component)
                as directory
                  D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component doesn't exist
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
<EMAIL_ADDRESS>doesn't exist
                .ts
                  Field 'browser' doesn't contain a valid alias configuration
<EMAIL_ADDRESS>doesn't exist
          looking for modules in D:\projects\project-name\node_modules
            using description file: D:\projects\project-name\package.json (relative path: ./node_modules)
              Field 'browser' doesn't contain a valid alias configuration
            after using description file: D:\projects\project-name\package.json (relative path: ./node_modules)
              using description file: D:\projects\project-name\package.json (relative path: ./node_modules/reduce-component)
                as directory
                  D:\projects\project-name\node_modules\reduce-component doesn't exist
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  D:\projects\project-name\node_modules\reduce-component doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  D:\projects\project-name\node_modules\reduce-component.js doesn't exist
                .ts
                  Field 'browser' doesn't contain a valid alias configuration
                  D:\projects\project-name\node_modules\reduce-component.ts doesn't exist
[D:\projects\project-name\node_modules\@ionic\node_modules]
[D:\projects\project-name\node_modules\node_modules]
[D:\projects\node_modules]
[D:\node_modules]
[D:\projects\project-name\node_modules\@ionic\cloud\node_modules\node_modules]
[D:\projects\project-name\node_modules\@ionic\cloud\node_modules\superagent\node_modules]
[D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component]
[D:\projects\project-name\node_modules\@ionic\cloud\node_modules\reduce-component]
<EMAIL_ADDRESS><EMAIL_ADDRESS>[D:\projects\project-name\node_modules\reduce-component]
[D:\projects\project-name\node_modules\reduce-component]
[D:\projects\project-name\node_modules\reduce-component.js]
[D:\projects\project-name\node_modules\reduce-component.ts]
<EMAIL_ADDRESS>6:13-30
<EMAIL_ADDRESS> @ ./src/app/app.module.ngfactory.js
 @ ./src/app/main.ts
    at new BuildError (D:\projects\project-name\node_modules\@ionic\app-scripts\dist\util\errors.js:16:28)
    at D:\projects\project-name\node_modules\@ionic\app-scripts\dist\preprocess.js:18:21
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:169:7)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>build-prd: `ionic-app-scripts build --prod`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build-prd script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\Alan\AppData\Roaming\npm-cache\_logs\2017-06-26T20_20_35_912Z-debug.log

Which @ionic/app-scripts version are you using?
1.3.8
Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)
npm -v: 5.0.4 (fail in 5.0.3 too)
node -v: v8.1.2 (fail in 6.11.0 too)

Looks like a problem with the @ionic/cloud package. Did this error appear after updating to app-scripts 1.3.8?

I tested in npm v4 and works fine. I think that is something related with npm version 5.

Hello @lweb20 , this is in fact an npm 5 issue. npm 5.x has been very buggy with installing dependencies of dependencies. I just updated to 5.3.0 and this seems to have fixed some of these issues. Because this is an npm issue and not an Ionic issue I am going to close this for now. Thanks!


Long titles not shown in session page

On the session details screen, long titles (most titles) are truncated. This screen should show the full title (multi-line).

Fixed in 3.0.1(1)


Fix timeish legend label

The label element created in the timeish inputs' legend is always <label for="..._1i"> (i.e. pointing to the year input), which is no good for time-only inputs or when other date orders are used (e.g when using d-m-y order, clicking on the label sets the focus to the third input in the list, which is disconcerting).

So it now defaults to the first fragment? Outstanding!


How can I contibute to the repository and add new language?

Hello LM Studio team! I hope you are doing well.
I wonder how I can contribute to your localization project. I am a native Persian and I wanted to add Farsi language.

Hi, @PyAlaie Instructions can be found here (instructions borrowed from the LM Studio discord):
We created a new git repo for localization: https://github.com/lmstudio-ai/localization
How to participate in localizing LM Studio:

Fork the localization repo
Take a look at the folder structure. Each language code (en, es, fr, etc) has a subdirectory.
If your language is not there yet, please create a new subdirectory
See this PR from the community as an example: https://github.com/lmstudio-ai/localization/pull/6

The goal is to have the same files/entries as the English version (see https://github.com/lmstudio-ai/localization/tree/main/en)

Thanks for your answer, I have one more question:
Is there going to be a problem with the Persian language since, unlike other languages, it is right-to-left?

Hello @PyAlaie thanks. We are still working on RTL support in the UI so there may be sometime before we could include it in the app. You're welcome to get started on it if you wanted, or hold off.


Error: fatal: could not read Username for 'https://github.com

I'm sure this is user error, but I don't know what step I missed or screwed up.
My qhub is up and running, but when I tried to updated the environment via a Pull Request, the GitHub action "qhub" failed on the "Fetching the repository" step, with "Error: fatal: could not read Username for 'https://github.com":

Hoping this will help not just me but others.

@prasunanand Have you seen this before?

Could it be because I have a hyphen in my username ("rsignell-usgs")?

@rsignell-usgs I actually have seen this before. My username used to be t-potts and I specifically removed the hyphen for this reason (a short term hack, admittedly)
I've created issue #152 to track this

@tylerpotts had a lot of issues with the hyphen and finally just changed his GitHub username. Tyler sis you ever find a workaround?

you ever find a workaround?

@dharhas Looks like we commented simultaneously. My workaround was to change my github username

Guys, I decided to update all four github secrets to make sure they were set correctly, and the problem went away.
Where is the tail-between-legs emoticon?   😞


Transclude 'element' is causing issues with duplicate attributes

I have the following directive:
mod.directive('uiSearchInput', function () {
    return {
        restrict: 'A',
        template:
            '
' +
                '

' +
            '
',
        transclude: 'element',
        replace: true
    };
});

Which I want to use like so:
<input type="text" placeholder="Search internal tags"
       ui-search-input
       ng:model="tagQuery"
       ng:change="showCandidateTags()">

The transclude successfully works, but Angular ends up putting the attributes from my original input element on the root element of the template as well as the transcluded input element. See this screenshot:

Notice how the root div and the nested input elements both have an ngModel set, as well as the other attributes?
This duplication appears to be causing issues in my application. Is it possible to avoid this at all?

+1 for this behaviour configuration in directive. Auto - duplicating attributes is very confusing.

+1 even removing the duplicated attributes will not work in all cases.  Wrapping an input with ng-required and ng-model attributes, for example, will move the effective copy of those attributes to the wrapping 's copy.  This makes the ones on the input element themselves non-functional (even if you remove the additional copies as described above.


input-fonts: fix license

Motivation for this change
License proprietary is not valid. Change to unfree. See https://github.com/NixOS/nixpkgs/pull/19080#pullrequestreview-3417039.
Things done

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

[x] NixOS
[ ] OS X
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

thanks

Thanks! Overlooked that one.


"pip3 install opencv-python" is failed

It's strange.
The "pip3 install opencv-python" command generates a error message as following:
pi@raspberrypi:~ $
pi@raspberrypi:~ $ pip3 install opencv-python
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
pi@raspberrypi:~ $

System environment

pi@raspberrypi:~ $ cat /etc/debian_version
9.8
pi@raspberrypi:~ $ cat /etc/*release*
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi:~ $

I have solved the below recipes.
Method 1:
If you use latest version of pip3, you need to install opencv-python "python3 -m pip ..." style as following:
$ python3 -m pip install opencv-python

Method 2:
Try to use "sudo" command.
pi@raspberrypi:~ $ sudo pip3 install opencv-python
Collecting opencv-python
  Downloading https://www.piwheels.org/simple/opencv-python/opencv_python-<IP_ADDRESS>-cp35-cp35m-linux_armv7l.whl (7.4MB)
    100% |################################| 7.4MB 26kB/s
Requirement already satisfied: numpy>=1.12.1 in /usr/local/lib/python3.5/dist-packages (from opencv-python)
Installing collected packages: opencv-python
Successfully installed opencv-python-<IP_ADDRESS>
pi@raspberrypi:~ $

Thanks for updating with your solution! Glad you were able to get it working.


ArCore 1.31.0

Updated acore binding to include changes from 1.31
https://github.com/google-ar/arcore-android-sdk/releases/tag/v1.31.0
The Depth API function calls have changed:
Frame.acquireDepthImage() has been deprecated in favor of Frame.acquireDepthImage16Bits().
Frame.acquireRawDepthImage() has been deprecated in favor of Frame.acquireRawDepthImage16Bits().
The output image formats for both calls have changed from
android.graphics.ImageFormat.DEPTH16 to
android.hardware.HardwareBuffer.D_16.
Depth is still represented as a 16-bit integer in units of
millimeters, but now all 16-bits are used to represent depth, allowing
for a maximum expressible range of 65535mm (previously 8191mm).

@softlion I was about to open a PR for 1.33.0 before noticing this PR. Would you be willing to update this PR to target 1.33.0?

ok !

@softlion I was about to open a PR for 1.33.0 before noticing this PR. Would you be willing to update this PR to target 1.33.0?

ok !

@softlion I was about to open a PR for 1.33.0 before noticing this PR. Would you be willing to update this PR to target 1.33.0?

Anyway, there seems to be noone there anymore. My PR is dated may 2022.
So if PR don't go through, what is the goal of making new PRs ?

@softlion This happened with the last ARCore PR. I don't think @moljac will look at it unless they are specifically at-mentioned or requested.

1.38 is now available; closing this one.


[WFLY-10384] Remove the duplicated maven G and V

https://issues.jboss.org/browse/WFLY-10384

[2:52 PM] Brian Stansberry: https://github.com/wildfly/wildfly/blob/master/component-matrix-builder/pom.xml#L42
[2:53 PM] Brian Stansberry: the maven G and V are repeated, i.e. same as the parent
[2:53 PM] Brian Stansberry: is that deliberate?  need to add this pom into the wf-to-cd13-base commits
[3:33 PM] Kabir Khan: No it is not
[3:34 PM] Brian Stansberry: cool; i sent up a pr to fix it
[3:34 PM] Brian Stansberry: https://github.com/wildfly/wildfly/pull/11236
[3:34 PM] Kabir Khan: Thanks, feel free to merge or I can do later
[3:34 PM] Brian Stansberry: will do


Issue with Remnux Upgrade

I am having issue with Remnux upgrade. Below is the output of the upgrade commands. Before this I had ran the update command which was successful. This is a new VM created yesterday by importing the OVA file to VirtualBox.

<EMAIL_ADDRESS>remnux-version: v2022.28.1

downloading v2023.31.1

downloading remnux-salt-states-v2023.31.1.tar.gz.asc
downloading remnux-salt-states-v2023.31.1.tar.gz.sha256
downloading remnux-salt-states-v2023.31.1.tar.gz.sha256.asc
downloading remnux-salt-states-v2023.31.1.tar.gz
validating file remnux-salt-states-v2023.31.1.tar.gz
validating signature for remnux-salt-states-v2023.31.1.tar.gz.sha256
extracting update remnux-salt-states-v2023.31.1.tar.gz
using previous mode: dedicated
upgrading/updating to v2023.31.1
Log file: /var/cache/remnux/cli/v2023.31.1/saltstack.log

Update returned exit code not zero
Error: Update returned exit code not zero
at ChildProcess. (/snapshot/remnux-cli/remnux-cli.js:569:23)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
Attaching the saltstack.log file as well. Please review.
saltstack.log

Just read and ran the below command as suggested by BoBeR182 under issue 136 and...
sudo pip install 'importlib_metadata==4.13.0'
....fixed my above issue, and I am fully updated now.


Bump top-level matchers api to upper Detox layer (where they should be)

[ ] This is a small change
[ ] This change has been discussed in issue #<?> and the solution has been agreed upon with maintainers.

Description
Relates to #2012: lays some preliminary ground work so that we could introduce it with proper API.
Dive-in
Looking at the current software architecture of Detox at a high-level perspective, we see two main distinct units, top-to-bottom:

A framework for providing expect and element-interactions, top-level, user-facing APIs (e.g. element(by.id(testId)).tap()), which in turn uses a distinct, platform-specific node-side (JS) implementation that eventually directly triggers device-side logic using invoke.
A framework for providing element-less, device-scope, top-level, user-facing APIs (e.g. device.takeScreenshot()), which are provided mainly by the (currently) singleton Device object, that in turns delegates platform-specific logic to Drivers.

While the two global units are, in principle, agnostic, we've nevertheless created an artificial coupling between them, as the top-level implementation of unit 1 is created via the drivers of unit 2, due to convenience (example). Unfortunately, this type of an unnecessary coupling - as a rule of thumb, damages flexibility, and we can see it in the case of elements' screenshot.
The pseudo-code implementation of taking an element screenshot is as follows:
a. Invoke an on-test-device, native method that creates an on-device .png file.
b. Pull the image back to the host through the driver (e.g. using adb) and provide the path back to the caller.
Ideally, this top-level API for doing this would be amazing:
const screenshotFilePath = await element(by.id('fancy-element-id')).takeScreenshot()`

But due to the coupling mentioned earlier, this cannot be done, as the underlying Element.takeScreenshot() function that would implement this -- originally generated by driver, cannot access the device in part b of the pseudo-code (!) It more so artificially forces us onto this kind of an API, which is largely undesired as it is both not friendly and would encourage code duplication and single-responsibility breakage in Detox itself:
const screenshotFilePath = await device.takeScreenshot( element(by.id('fancy-element-id')) );

If we want to nevertheless stick to the API that we really want - and with that, empower high flexibility in Detox (yes, gimme all those things!), we need to break the coupling.
This is the scope of this PR: 100% Separating drivers and matchers, and their creation. Instead of having the matchers created by the drivers, we delegate the proper matcher resolution to a new util called matchersRegistry (equilvant to driverRegistry), which is utilized in the Detox class (aka our Detox main layer).
Unfortunately, the main drawback is a minor breakage of external-drivers implementation: Whichever plugin-driver implementations that exist out there in the wild -- they still provide the matchers through the driver. Fortunately, I've made the migration pretty easy. Given a plugin driver.js, users will have to apply these minor changes:
class Expect {
//...
}

class PluginDriver {
-   constructor(invocationManager) {
-     this.matchers = new Expect(invocationManager);
-   }
+   constructor({ invocationManager}) {
+      // no this.matchers init here...
+   }
}

-module.exports = PluginDriver;
+module.exports = {
+  DriverClass: PluginDriver,
+  ExpectClass: Expect,
+}

How does it relate to #2012?

@rotemmiz, Amit wants to create a convenient DSL for taking element screenshots. He'll explain in depth if you want, but anyway I think that's the right direction.

@rotemmiz I'll write down an elaborate explanation asap!

Pull Request Test Coverage Report for Build 2456

17 of 17 (100.0%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.03%) to 85.62%

Totals

Change from base Build 1298:
0.03%

Covered Lines:
3621

Relevant Lines:
4065

💛  - Coveralls

I am still not convinced that this is an important change, though I am OK with whatever makes you happy :)
The API you mentioned  await element(by.id('fancy-element-id')).takeScreenshot() is achievable without this change, as a new action (similar to the newly added element(matcher).getAttributes(). Or am I missing something?

@rotemmiz

The API you mentioned await element(by.id('fancy-element-id')).takeScreenshot() is achievable without this change
It can be defined and worked out to take the screenshot on the device, as you normally would, such that a a file will be created on the device (part A of my pseudo-code. But it would not be able to pull the file back to the host, as it cannot access the device (part B of the peuso-code).

though I am OK with whatever makes you happy

❤
I put some more thought into it - it's not fair to say the two distinct units should be hard-separated; They don't have to be. Rather, the problem here is specifically with how in "unit 2"'s lowest layers (i.e. device driver), we currently create the top-level API of "unit 1" (i.e. the element/expect API's). That is a sheer violation of basic software architecture practices, and should be fixed even regardless of screenshots or any specific feature. The element screenshot simply surfaces that specific code-smell.
What would really make me happy is to separate all of our top-level API's onto an API layer, and have everything handled by a lower-layer implementation, which hard the freedom to be platform-specific where needed. In other words, make the top-level API layer very thin, and extending the device/driver layers to serve all API's - not just device.xyz() methods.


Fix : ImGui dialogs can't be displaced by drag&drop

Between June 29 (my project version) and the release, a bug has been introduced:
Half the time, the dialogs can't be displaced by drag&drop. Nothing happens.

Which exe ?
Release or debug ?
Which scene ? With which assets ?
What's an imgui's dialiog ? That's an imgui's window ?
I need more detail
Ecris les en francais que ca soit plus clair


HNC: test function TearDownHNC can fail silently

 Issue by adrianludwin
Friday Aug 21, 2020 at 14:55 GMT
Originally opened as https://github.com/kubernetes-sigs/multi-tenancy/issues/1041

/cc @GinnyJI
/cc @yiqigao217
Ginny and I were looking at a test where it seems like the command to delete the subns CRD failed (as evidenced by the fact that there were still subnses afterwards) but because we use TryRunQuietly there was no evidence of this.
We should have some better function that can delete objects if they exist, but if they can't delete an object, return an error.

 Comment by adrianludwin
Friday Aug 21, 2020 at 14:55 GMT

/good-first-issue

 Comment by k8s-ci-robot
Friday Aug 21, 2020 at 14:55 GMT

@adrianludwin:
This request has been marked as suitable for new contributors.
Please ensure the request meets the requirements listed here.
If this request no longer meets these requirements, the label can be removed
by commenting with the /remove-good-first-issue command.

In response to this:

/good-first-issue

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

 Comment by adrianludwin
Sunday Sep 06, 2020 at 16:23 GMT

Hey Mayank, sorry I've been on vacation this last week. I'll reply when I'm
back after Labour Day (i.e. early next week). Thanks!
On Sun, Sep 6, 2020 at 8:46 AM Mayank Shah<EMAIL_ADDRESS>wrote:

Hi @adrianludwin https://github.com/adrianludwin , I'd like to give
this issue a try. :)
I just looked into the code, and I see that we have an alternate function
TryRun that logs the errors when the command returns an error. Is there
any reason why we may not be able to use this?
Thanks
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/multi-tenancy/issues/1041#issuecomment-687780785,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43PZGU6X3XTHRPIYY6KFTSEOAEBANCNFSM4QHLYPHA
.

 Comment by mayankshah1607
Sunday Sep 06, 2020 at 12:46 GMT

Hi @adrianludwin , I'd like to give this issue a try. :)
I just looked into the code, and I see that we have an alternate function TryRun that logs the errors when the command returns an error. Is there any reason why we may not be able to use this?
Thanks

 Comment by mayankshah1607
Sunday Sep 06, 2020 at 17:19 GMT

No problem. Have a great vacation! 🙂

 Comment by adrianludwin
Tuesday Sep 08, 2020 at 12:12 GMT

Hey let me know if you need any advice on this but any PRs would be welcome!

 Comment by mayankshah1607
Tuesday Sep 08, 2020 at 12:15 GMT

Hi, @adrianludwin . Thanks!
I was just trying to wrap my head around this issue, and tried to look into the code. The issue mainly talks about how the tests did not leave any evidence when the CRD deletion failed (due to TryRunQuietly).
I see that we have an alternate function called TryRun that will log these failures. Would it help if we used TryRun instead?

 Comment by adrianludwin
Tuesday Sep 08, 2020 at 12:32 GMT

I believe the problem is that we expect some of the commands in the cleanup to fail - e.g., if we try to delete a namespace that we never created. In those cases, I think we do want TryRunQuietly to avoid printing too much logspam. However, if the namespace does exist, it should be deleted successfully.
I think you're also looking at another bug that has a better way to clean up the namespaces without relying on exact names. If so, running that command with TryRun, and not TryRunQuietly, seems like the right thing to do.

 Comment by fejta-bot
Tuesday Mar 02, 2021 at 06:39 GMT

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

 Comment by yiqigao217
Tuesday Mar 16, 2021 at 15:10 GMT

/remove-lifecycle stale

I think this issue can be closed because there is no call to the function TearDownHNC  anymore.

If that's the case we should delete the function :) Would you like to do the honours?

If that's the case we should delete the function :) Would you like to do the honours?

Sure, 😊


Enable upload of .sql files

User should be able to create named .sql in ./src/queries (or some other subfolder), which should upload as child queries to a query with the same name as the page.

Just to make sure I'm understanding the logic behind this, a user could write queries in the local dev environment (as opposed to writing them in App Builder) and then those queries would be uploaded/referenced properly on build?

That's exactly right! I'm sorry that it got included in the same pull request as the earlier one. I thought I created a new branch for it, but apparently not. By the way, I tested it and it works. It uploads a query with a set of child queries defined by any .sql file in the ./src/queries folder. Users can define queryParams, but name and dataSpaceUrn are required for all .sql files.


Rename PorterLB to a new name

Hi everyone,
We applied to contribute PorterLB to the CNCF sandbox, and it was not accepted in the first round of review since the project name conflicts with a current sandbox project, so we need to reapply with a new project name.
We are now looking for a new project name in our community, please share your idea about the new project name and leave your comments on this issue.
Thanks!

MagicLB

KubeLB

OneLB

LBMesh

MeshLB

OpenLB

LightLB

KubePorterPlus

MetalB

NativeLB

KSLB

AtomLB

PlatinumLB

HeliumLB

CaliforniumLB. Californium seems to be the most precious metal in the world.

ChromiumLB. Chromium seems to be the hardest metal.

CaliforniumLB. Californium seems to be the most precious metal in the world.

It is not easy to memory from my opinion...

OpenELB. ELB is from https://aws.amazon.com/elasticloadbalancing/
PorterLB currently implements more than one LB type, which can be compared to OpenEBS and AWS EBS.
OpenEBS is a family of products that you can use with the many different engines it offers: Jiva, cStor, Local Volumes, Mayastor.
PorterLB will add more types of LB implementations in the future. Just like AWS ELB is a product family which contains: ALB, NLB, GLB, CLB.

IronLB

NbLB, which means "New balance Load Balance"...

FastLB

Mithril

Orichalcos

LessLB
MoreLB

Khorium

KubeScaler or ScalerLB or SphereScaler, "scaler" means "秤" => "天平" => "Balance"...

Vibranium

Adamantium 亚曼德合金

InfinityLB

stitches. In ancient times, it was used to stitch armor and armor. Now, it is used to stitch bare-metal and bare-metal.

courier 快递员

HostLB

LibraLB

OpenELB. ELB is from https://aws.amazon.com/elasticloadbalancing/
PorterLB currently implements more than one LB type, which can be compared to OpenEBS and AWS EBS.
OpenEBS is a family of products that you can use with the many different engines it offers: Jiva, cStor, Local Volumes, Mayastor.
PorterLB will add more types of LB implementations in the future. Just like AWS ELB is a product family which contains: ALB, NLB, GLB, CLB.

So far, most people voted for the new name OpenELB, so we choose to rename PorterLB to OpenELB.

greate


Storing bind password as an attribute is insecure

Should reference a data bag item, vault entry or some other method to get the password.
['sssd_conf']['ldap_default_authtok']
Storing a plain text password in that attribute is very dangerous for multiple reasons.

It could probably be pointed out better, but anything secure should be handled with some sort of wrapper. I don't want to dictate the structure of a data bag since that might not work depending on how the end users has setup their environment.  Letting the end user determine how they pull from data bags and what those data bags are named / structured like gives the most flexibility


Login with Enter

Hitting Enter on keyboard should allow to login

Done. 'Login' on login page, 'Back' on error page, 'Pay' on payment page and 'Done' on status page will act as default button.


[bug] Can't connect to Aeotec ZWave Stick over Ser2Net after upgrade

Version
Checklist:

[x] I am not using Home Assistant. Or: a developer has told me to come here.
[x] I have checked the troubleshooting section and my problem is not described there.
[x] I have read the changelog and my problem is not mentioned there.

Build/Run method

[x] Docker
[ ] PKG
[ ] Snap package
[ ] Manually built (git clone - yarn install - yarn run build )

Zwavejs2Mqtt version: 6.1.1
Z-Wave JS version: 8.9.0-beta.1
Describe the bug
After upgrading from 5.9.0, ZWaveJs2Mqtt does not connect to my Zwave stick over Set2Net.  Downgrading back to 5.9.0 fixes the issue instantly.
To Reproduce
Steps to reproduce the behavior:

Set up Raspberry PI and plug in Aeotec Zwave stick
install Set2Net on the raspberry pi
Use the serial port tcp://192.168.1.x:3333 in ZwaveJS2Mqtt

Expected behavior
ZWaveJS2Mqtt should connect to my Zwave stick over Ser2Net.
zwavejs_2021-12-22.log
zwavejs2mqtt_2021-12-22.log

@Chrisgozd Could you try to disable soft-reset from zwave options?

@robertsLando That worked, thanks so much.

This is still happening with the latest docker container as well for me.
There is no option to disable soft-reset under settings? I see no mention of it anywhere but
The only way for me to successfully set up was to deploy 5.9.0. I'm also using an Aeotec ZWave Stick @ /dev/serial/by-id/usb-0658_0200-if00
Do we know what version that option gets added in?

5.10.1+ versions comes with soft reset

This should work with latest version


add a tmp logging for pbvalcons1m9zt3xqppsacram7ch6muyf0gz26mmpjwczy3r

Description

closes: #XXXX

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Wrote unit and integration
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Review Codecov Report in the comment section below once CI passes

This was used to diagnose a problem in mainnet.


Ajout de ma super fonctionnalité

Pull Request
Description

Changes Made

Related Issues

Checklist

[x] I have tested these changes locally.
[x] I have added appropriate comments in the code, particularly in complex sections.
[ ] I have updated the documentation if needed.
[ ] My code follows the project's coding style guidelines.
[ ] I have added/modified tests to cover the changes.

Screenshots (if applicable)

Additional Context

lk


Support for Alluxio Reads

Hi,
I am not sure if I can read files on alluxio via the optimus object.
File paths are of the form alluxio://<file_URL_on Alluxio>
Generally this could be done by spark.read(<Alluxio_URL>) as mentioned earlier with "spark" as the sparkContext object.
Issue is if thats the case then I would have to read it with a seperate spark context and then run a new optimus sparkContext for developing any kind of a pipeline.
I may be completely off but request you to guide me.

Hi @avinish1,
You have multiple options:
First option: If you already create and spark session you can pass a session to Optimus like this.
from optimus import Optimus

spark = SparkSession.builder.appName('optimus').getOrCreate()
op= Optimus(spark)

Second option: is to load the Alluxio jar in Optimus like this:
op= Optimus(repositories = "myrepo", packages="org.apache.spark:spark-avro_2.12:2.4.3", jars="my.jar", driver_class_path="this_is_a_jar_class_path.jar", verbose= True)

Third Option: we can add Optimus Alluxio support? I could help you to work on this.

Aplologize for the delayed response.
Thanks for the tip, I have been trying to install it, will open a new issue that I am facing.
Regarding the third option you mentioned, I will try to work on it, could you guide me.

@avinish1 I create a small guide here. https://github.com/ironmussa/Optimus/blob/master/README_for_devs.md#create-a-new-database-driver
Maybe you could open a pull request so I can help if you need it?

Hi @avinish1,
I think this could be a good addition to Optimus. Maybe you could work in testing and make the 5 queries needed to implement the driver, and I could write the codebase to make it work?

out of scope


{containerapp} Add new containerapp codeowners and remove old codeowners

See title.
This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
The precondition is to put your code inside this repository and upgrade the version in the pull request but do not modify src/index.json.

containerapp


fix: account for protocols that aren't tcp

In This PR

I account for URL schemes that are not http (tcp, etc) when stripping schemes from GRPC target addresses

E2E tests are now failing due to this change


[d3d9] Fix for missing mapping of VertexElements declarations to FVF bits.

When Vertex declaration is created by CreateVertexDeclaration
and SetFVF is not called then GetFVF returns 0.
This code change implements mapping of D3D declarations to FVF mask
and sets it if FVF was not set previously.

This code change fixes Fvf WHQL test for dx9.

You had a loop in your original code... But now there just isn't one, what gives?

@Joshua-Ashton it's still there?
  DWORD D3D9VertexDecl::MapD3D9VertexElementsToFvf() {
    DWORD fvf = 0;
    DWORD texCountPostUpdate = 0;

    for (const auto& element : m_elements)
      fvf |= MapD3DDeclToFvf(element, fvf, texCountPostUpdate);

    fvf |= texCountPostUpdate;

    return fvf;
  }

You had a loop in your original code... But now there just isn't one, what gives?

That loop was not a loop actually:
  do {

...
if (D3DFVF_TEXCOORDSIZE1(element.UsageIndex) & fvf != 0)
break;
...
if (element.Type == D3DDECLTYPE_FLOAT1)
localFvf = D3DFVF_TEXCOORDSIZE1(element.UsageIndex);
...
else
break;
    **return localFvf;**
  } while (1);

The do { } while(); was used to make break working.
It would be more clear when while(0) was used.
Anyway, the while checking was never executed because breaks jumped out of the loop at earlier stages and return went out of the function. (There was no continue;).

@Joshua-Ashton it's still there?
  DWORD D3D9VertexDecl::MapD3D9VertexElementsToFvf() {
    DWORD fvf = 0;
    DWORD texCountPostUpdate = 0;

    for (const auto& element : m_elements)
      fvf |= MapD3DDeclToFvf(element, fvf, texCountPostUpdate);

    fvf |= texCountPostUpdate;

    return fvf;
  }

Do you mean call of MapD3DDeclToFvf?
If so, yes, it should be there.

The do { } while(); was used to make break working.

Oh, that was not clear... yes lets not do things like that.

Is there anything more I should do here?

Is there any chance for finish the review and merge of this PR?
Thanks.

@kdobrowo Is there a reason for why you don't turn POSITION + VEC4 into D3DFVF_XYZW?


Active tab indicator gets hidden when a filter is applied in Compliance Report

Describe the bug
On the Compliance Report, after filtering on something, the blue line indicator for the tab gets hidden. see #1993 for more context.
To Reproduce

Steps to reproduce the behavior:
Go to https://a2-perf-test-single-local-inplace-upgrade-acceptance.cd.chef.co/compliance/reports/overview
Click on the Nodes Tabs
Take notice of the blue line that indicates the tab is active
Apply a filter environment  and then choose a value.
Notice the tab. the underline is missing.

Expected behavior
The active tab should retain the indicator
Screenshots

Versions (please complete the following information):

OS: Mac OS
Browser Chrome
Automate Build Number<PHONE_NUMBER>3421

Closing - Already been fixed


MavlinkReceiver::handle_message_request_data_stream memory corruption

MavlinkReceiver::handle_message_request_data_stream walks into deleted memory when you send the "stop" bit on a stream. It also fails to restart the stream because it deletes the stream when you send the stop command, so restart needs to use stream_list to find the stream again.
I ran Tools/check_code_style_all.sh  and "Format checks passed".  I also implemented MESSAGE_INTERVAL and added deprecation warning on REQUEST_DATA_STREAM as per Beat Küng

Rebased and applied, thanks!


ROX-27053: Fix role binding filtering for test

Description
We have failing tests on GKE. The difference comes from filtering based on the subject name.
With GKE - Kubernetes versionv1.31.2-gke.1384000, we have two role bindings. One is normal role binding, and the other is cluster role binding.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: konnectivity-server-leases
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: leases-writer
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: system:konnectivity-server
  namespace: kube-system

and
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system:konnectivity-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: system:konnectivity-server

Since we are comparing subjects, we get 2 subjects from ACS, but subjects fetched from the cluster and filtered return one element fewer because subjects are considered duplicates (nonunique).
User-facing documentation

[x] CHANGELOG is updated OR update is not needed
[x] documentation PR is created and is linked above OR is not needed

Testing and quality

[x] the change is production ready: the change is GA or otherwise the functionality is gated by a feature flag
[ ] CI results are inspected

Automated testing

[x] modified existing tests

How I validated my change
Tested in isolation:
class Temp {
    String name
    String namespace

    Temp(name, namespace) {
      this.name = name
      this.namespace = namespace
    }

    String toString() {
      this.name + ":" + this.namespace
    }
}

t1 = new Temp("n1", "ns1")
t2 = new Temp("n1", "ns1")
t3 = new Temp("n1", "ns2")
t4 = new Temp("n1", "")
t5 = new Temp("n1", "")
t6 = new Temp("n2", "ns1")
t7 = new Temp("n2", "")

def tmp_arr = [ t1, t2, t3, t4, t5, t6, t7 ]
println tmp_arr

tmp_arr.unique { a, b -> a.name <=> b.name | a.namespace <=> b.namespace }
println "=> New closure"
println tmp_arr

tmp_arr.unique { a, b -> a.name <=> b.name }
println "=> Old closure ignores namespaces"
println tmp_arr

Output
[n1:ns1, n1:ns1, n1:ns2, n1:, n1:, n2:ns1, n2:]
=> New closure
[n1:ns1, n1:ns2, n1:, n2:ns1, n2:]
=> Old closure ignores namespaces
[n1:ns1, n2:ns1]

It's unclear to me why we filter only unique subjects from the orchestrator response (we don't seem to do that in the RBAC service). Hard to say what use cases the test was intended to cover, but for symmetry, what'd you say about filtering RBAC service's response for unique names as well?

@rukletsov I would rather do the opposite - remove filtering from orchestratorSubjects. But I don't know exactly how we store role binding -> subject relations. Is there some deduping, etc.

@rukletsov I would rather do the opposite - remove filtering from orchestratorSubjects. But I don't know exactly how we store role binding -> subject relations. Is there some deduping, etc.

Yeah, that would be even better if want to invest a bit more here rather than keeping this test shallow.
Looking at the response proto, I think we can try to dedupe on <kind, name, namespace> for both orchestratorSubjects and RBAC service response.

/test gke-latest-qa-e2e-tests

/test gke-qa-e2e-tests

@mtodor please ping me when this is ready for review again.

/test gke-qa-e2e-tests

/test gke-qa-e2e-tests

/test gke-qa-e2e-tests

/test gke-qa-e2e-tests


add an extra command line argument to specify what file to download

modify download.py file to specify a filename to be downloaded instead of downloading all the files..
kg download -f 'train.zip' to download train.zip
and
kg download to download all the files

Merged. Thanks!


Change the way mongo connector infers schema for nested bson docs

Fixes #2934
Instead of omitting the whole column in presence of unknown type, only a given json field is ignored.

Looks like all comments have been resolved, not sure who can merge this PR (or decline it so it doesn't hang here forever)?

Merged, thanks!


os: implement fork

This seems to work and tests pass (test_posix:test_register_at_fork).
I took a look at CPython's implementation and it seems they're doing more things before/after fork, namely acquiring the import lock, and re-initiating the interpreter in the child process (see here - https://github.com/python/cpython/blob/main/Modules/posixmodule.c#L593). Do we want to do the same thing here?

what's happend to the ubuntu tests?

I’ll take another look. The problem is that fork enables functions like os.spawn which in turn enable a whole bunch of new tests.

thanks! This is superseded by https://github.com/RustPython/RustPython/pull/4877 if I'm not mistaken. Feel free to re-open if I'm mistaken.


Texture Packer page indexes

Don't be deceived by the number of changed lines. Only lines 204 and 238 in TexturePacker.java actually change any functionality. But those lines make this a breaking change! At least, I think they do - the linked issue was labelled as breaking.
[That opening paragraph is now outdated. It is no longer a breaking change (meaning we're stuck with the old behaviour by default FOREVER) and now a couple more lines do stuff.]
It aims to fix #6239 by adding an index to the first texture page. Just like previously, an index isn't added if the atlas is only one page long.
No-one asked for this, but I also made the index start at 0 instead of 1. My reasoning behind this is it's easier to iterate over your textures and all that this way - no need to have + 1 all over the place. It wouldn't be worth changing this on its own, but seeing as this would still be a breaking change without it....
There's also a little bit of tidy-up to reduce warnings about redundancy and whatnot, but it's a very minimal effort.
P.S. I actually have Git configured properly now - there'll be no more "Frosty-J and Frosty-J committed" business.
P.P.S. Now it's configured even better. Verified commits!

@tommyettinger Did you know there's a legacyOutput option? This defaults to true and isn't documented on the wiki. Results in a smaller atlas file. I guess you already do, since you commented at #6316.
I'm going to add that legacyPages flag and might revert some of the other changes - depends if anyone else chimes in on the matter, and if they don't it's a figurative coin flip.
I should go to bed - marking this as draft so someone doesn't go merging it in its current state, even if I end up opening it again tomorrow.

@tommyettinger Did you know there's a legacyOutput option? This defaults to true and isn't documented on the wiki. Results in a smaller atlas file. I guess you already do, since you commented at #6316.

Indeed I do know, I set legacyOutput to false for the large atlases of Dawnlike tiles! I should probably edit that wiki.

Tested as working. Marking as draft was overkill, in hindsight.

Sorry, but I don't really see the usefulness of this setting. It's not difficult to read files with the naming before this PR. Most people use TextureAtlas to do the reading anyway, so the file names are unimportant. IMO for any feature, ideally default behavior should be found so a setting is not needed. Setting should only be added where necessary.

Just like previously, an index isn't added if the atlas is only one page long.

The packer doesn't know how many page images there will be. It may pack one page the first time, then later be run again, append to the atlas file and pack additional pages.

No-one asked for this, but I also made the index start at 0 instead of 1.

When naming files I prefer image1.png, image2.png, etc. image0.png just looks ugly to me personally.
It's common that an atlas has only one page image, in which case image1.png looks worse than image.png. However, I would vote to not merge this PR and to close #6618 as a non-issue.

Settings should only be added where necessary.

I would prefer to not use a setting, but that would make this a breaking change and not everyone is a fan of that. Not a fan of discovering that we're already using a legacy output mode by default just for the sake of ensuring everything keeps ticking along unchanged.

The packer doesn't know how many page images there will be.

This is a pretty good point. In the event indexes are used, perhaps an unindexed filename should be deleted (if present) to tidy up from previous runs. I don't think there's anything in place for if the number of pages shrinks either.

image0.png just looks ugly to me personally.

Could fix this with another setting. Haha, just kidding. Yeah, it's divisive.   :/

It's common that an atlas has only one page image, in which case image1.png looks worse than image.png.

Agreed. In the event it only has one page, it would be image.png either with or without this pull request.

The packer doesn't know how many page images there will be.
TexturePackerFileProcessor processes a directory hierarchy of image files. It first deletes all output files, then creates and runs a TexturePacker for each directory:
https://github.com/libgdx/libgdx/blob/master/extensions/gdx-tools/src/com/badlogic/gdx/tools/texturepacker/TexturePackerFileProcessor.java#L282-L285
Each run appends to the output of the previous runs. Checking the number of pages in the current run is insufficient to know if the final atlas will have only one page. We'd need to make that determination before running the packer the first time.

I greatly appreciate your enthusiasm, but I'm not convinced this needs changing. Does it really matter if the images are named image.png, image2.png, etc? If we can have image.png for one image and image1.png, image2.png, etc when there are multiple images, then I could agree that is an improvement. Doing that will take more effort though, given the above. Is it worth it? Can it be done easily? If it can, I'd prefer not to have a setting. We could have the new logic only when legacy is false, which probably affects fewer people.

Thanks for the code link and explanation. You're right - this does require more thought. And due to how it goes along one subdirectory at a time like that, I can't currently see how to solve this.
It doesn't need changing, though 5 people agree with the original issue with no disagreements, so it would certainly be nice to have.


Metrics rfc update

Which problem is this PR solving?

Short description of the changes

This change is

Codecov Report

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

@@            Coverage Diff             @@
##           master       #6      +/-   ##
==========================================
+ Coverage   98.93%   98.94%   +0.01%
==========================================
  Files          66       66
  Lines        2525     2652     +127
  Branches      156      170      +14
==========================================
+ Hits         2498     2624     +126
- Misses         27       28       +1

Impacted Files
Coverage Δ

...ckages/opentelemetry-core/src/common/NoopLogger.ts
14.28% <0%> (-5.72%)
:arrow_down:

...ges/opentelemetry-core/src/common/ConsoleLogger.ts
91.66% <0%> (-3.08%)
:arrow_down:

...s/opentelemetry-core/test/context/B3Format.test.ts
100% <0%> (ø)
:arrow_up:

...s/opentelemetry-core/test/trace/tracestate.test.ts
100% <0%> (ø)
:arrow_up:

...entelemetry-core/test/common/ConsoleLogger.test.ts
100% <0%> (ø)
:arrow_up:

...lemetry-core/test/trace/ProbabilitySampler.test.ts
100% <0%> (ø)
:arrow_up:

.../opentelemetry-core/src/trace/spancontext-utils.ts
100% <0%> (ø)
:arrow_up:

...s/opentelemetry-core/test/trace/NoopTracer.test.ts
100% <0%> (ø)
:arrow_up:

...ckages/opentelemetry-core/test/platform/id.test.ts
100% <0%> (ø)
:arrow_up:

...pentelemetry-core/test/internal/validators.test.ts
100% <0%> (ø)
:arrow_up:

... and 10 more


Handling block level data

First off, thanks a bunch for releasing this. I really like your approach here.
From looking through the code, it doesn't look like block level data is discarded without being passed through to the renderers.
I use atomic blocks to encode images, but find myself unable to access the src attribute I store in their data.
I'd be happy to make a PR adding for this, but wanted to reach out first, just in case there's a way that I missed or if that change wouldn't be welcome.

I didn't try using atomic blocks myself so the rest of this is just a bit of guessing.
From what I understand about atomic blocks, it would require accessing data of the associated entity at block render level. While this is not possible at the moment i think it might be possible to do something like rendering it using just the entity callback for the entity type.
Assuming you have raw that looks something like that:
const raw = {
  blocks: [
    {
      text: ' ',
      type: 'atomic',
      entityRanges: [{offset: 0, length: 1, key: 'first'}],
    },
  ],
  entityMap: {
    first: {
      type: 'IMAGE',
      mutability: 'IMMUTABLE',
      data: {
        src: 'img.png',
      },
    },
  },
};

It should be possible to render just the entity like this:
const blocks = {
  atomic: children => children[0],
};

const entities = {
  IMAGE: (children, entity) => <Image src={entity.src} />,
};

const renderers = {
  blocks,
  entities,
};

const rendered = redraft(raw, renderers);

Let me know if this helps. Also it might be a good idea to add support for atomic blocks in a more specific way. If you want to add a PR for it it would be most welcome. :smile:

Hey, thanks for the response, it definitely helps.
You're definitely right, the associated data is stored within an Entity. I don't know why I thought it was stored directly on the block. Perhaps from a careless interpretation of the (RawDraftContentBlock flow type)[https://github.com/facebook/draft-js/blob/master/src/model/encoding/RawDraftContentBlock.js#L30], despite having implemented it by creating/reading from an entity.
I tested the renderers configuration you sent along and it mostly works, with a few reservations:

The method above discards subsequent adjacent atomic blocks. From a quick check in my implementation (using draft-js-plugins), my raw content seems to have an unstyled block inserted between the atomic blocks, but I'm not sure if it's impossible to encounter multiple adjacent atomic blocks in the raw data.
It may be possible that an entity should render slightly differently if it is in an atomic block or an inline entity. For instance, from what I understand when rendering to DOM, Draft.js wraps block level images in a <figure> tag.

Since 1. is a non-issue (at least for me), and 2. can be worked around by spliting images into inline IMAGE entities and block level FIGURE entities, this solution works just fine for me.
However, I'm still interested in contributing. The docs say that the atomic blocks are likely to be revisited in the future to avoid the heavy-handedness of having to get the entity for an atomic block, but I think it'd still be useful to support in the meantime.
The API I was thinking was adding atomicBlocks to the renderers, which would be an object mapping entity names onto the block level representation of them. Something like below:
const atomicBlocks = {
  IMAGE:  children => `<figure>${children}</figure>`
}

const entities = {
  IMAGE: (children, data) => `<img src={data.src}>`
}

const renderers = {
  atomicBlocks, entities
}

const rendered = redraft(raw, renderers);

A couple questions on the above:

Can atomic blocks have more than a single entity? If that's the case then the above API is definitely broken.
Would the atomic block renderer still be fired?
Am I missing an obviously better way to handle these, or misunderstanding how redraft currently works?

Your right my method didn't account for 2 atomic blocks getting grouped. While it still might be possible to render all of the entities passed to it by mapping over them, adding a proper support would be preferable.
In terms of API I wonder if it wouldn't be better to handle atomic blocks bit differently. The atomic block accepts a entity key and a string as per APIReference-AtomicBlockUtils.md the render API in redraft might look like that:
const atomicBlocks = {
  IMAGE: (content, entity)=> `<figure><img src="${entity.src}" alt="${content}" /></figure>`
}

This would require to check for the atomic type while rendering blocks and handle them differently from the other types.

Interesting, could you clarify for me what content and entity are in your proposed API above? I'm guessing that entity is the data of the entity keyed by the entityKey, and content is the character parameter to insertAtomicBlock?
If that's the case, I don't know if putting the content in alt makes sense as in your example, as the character parameter seems to define how the block behaves as text. For instance, I use a single space for my image block to allow backspacing over the image block.
There definitely are still cases where having that text is useful, though. The docs list an example of implementing a TeX block using the atomic blocks, in which case I could imagine using that field for the input and using a custom backspace handler to allow backing over individual parts of the equation.
I spent a bit of time looking through the docs, and it seems like the insertAtomicBlock modifier does indeed place a blank unstyled block directly after the atomic block, so I'm not sure you'd ever encounter two of them in a row. Might be good to support just in case, but it seems they're not intended to rely on being adjacent to the way that the *-list-item blocks are.
I'm going to do a bit of a deeper dive into the redraft code, and hopefully I'll feel comfortable enough to submit a PR soon. Thanks for talking through this and being open to the collaboration.

Yeah that example might not been the best one. I meant it exactly as you guessed content  is the character passed to insertAtomicBlock, also maybe it would be better to just call it character. The whole point being that the data passed while creating the block should be available on render should you need it.
I'm bit worried about those empty unstyled blocks. In this case it looks like it's a hack to properly display the atomic blocks in the editor. If that's the case it might be worth filtering them out before render, what do you think?

I definitely agree with providing the user with all the information they used to create the block.
Frankly, the entire atomic blocks design is a bit of a hack. I think Draft.js puts them there so that when the user starts typing it goes into an unstyled block, rather than the text section of the atomic block, where it won't be rendered correctly. But inserting two images back to back in my editor produces 5 blocks:
unstyled
atomic
unstyled
atomic
unstyled

You bring up an interesting point about filtering them out.  Don't render empty unstyled blocks that occur directly after an atomic block?
If users would rather not render empty unstyled blocks, can they check each of the children in the block renderer, or are those nodes opaque to the end user? However, with that approach it both pushes the responsibility onto the user, and it doesn't handle the use case of wanting to keep empty blocks except for the ones directly after an atomic block.
I'd be happy with filtering them out if it would be what the user would want to do in the overwhelming majority of cases anyway, but discarding part of their content without letting them control that would make me a little uneasy.

We could do both. Let's say filter empty unstyled blocks after atomic by default, and provide a flag to disable it. Something like:
const options = {
  cleanupAtomic: false // coundn't figure out a better name
}

redraft(raw, renderers, options)

Also this could enable passing more options in the future if there's a need for them.

Awesome. I was wondering if adding rendering options was something you wanted to do. I really liked the declarative nature of providing lots of hooks for users, but this makes perfect sense to me.


cupy import issue

So I thought I would try to use cupyimg because of the really interesting work but when I go to import I get the following error, it seems to think it should be pulling something from cupy when it should be pulling from a cupyimg file i.e. cupyimg utils and not cupy.util (which is my guess)
import numpy as np
import cupy
import scipy.ndimage as ndi
from cupyimg.scipy.ndimage import uniform_filter

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-1-beb6e82ba862> in <module>
      2 import cupy
      3 import scipy.ndimage as ndi
----> 4 from cupyimg.scipy.ndimage import uniform_filter

~/miniconda3/envs/img_linux2/lib/python3.8/site-packages/cupyimg/__init__.py in <module>
     28     memoize = cupy.memoize
     29
---> 30 from ._misc import convolve_separable  # noqa
     31 from .version import __version__  # noqa
     32

~/miniconda3/envs/img_linux2/lib/python3.8/site-packages/cupyimg/_misc.py in <module>
      8 import numpy
      9
---> 10 from cupyimg.scipy.ndimage import convolve1d
     11
     12 __all__ = ["convolve_separable"]

~/miniconda3/envs/img_linux2/lib/python3.8/site-packages/cupyimg/scipy/ndimage/__init__.py in <module>
----> 1 from .filters import *  # noqa
      2 from .measurements import *  # noqa
      3 from .morphology import *  # noqa
      4
      5 from cupyimg.scipy.ndimage.fourier import fourier_ellipsoid  # NOQA

~/miniconda3/envs/img_linux2/lib/python3.8/site-packages/cupyimg/scipy/ndimage/filters.py in <module>
    496
    497
--> 498 @cupy._util.memoize(for_each_device=True)
    499 def _get_correlate_kernel(mode, w_shape, int_type, offsets, cval):
    500     return _filters_core._generate_nd_kernel(

AttributeError: module 'cupy' has no attribute '_util'

For now, if the functions you need are the ones from cupyimg.scipy.ndimage or cupyimg.numpy, I would recommend using the master branch of CuPy  where functions from cupyimg.scipy.ndimage.* are available in cupy via cupyx.scipy.ndimage.*. The versions there are regularly tested on various GPU hardware and CUDA versions and should be more reliable long-term.
That said, I will also work on fixing the repository here as well.

For now, if the functions you need are the ones from cupyimg.scipy.ndimage or cupyimg.numpy, I would recommend using the master branch of CuPy  where functions from cupyimg.scipy.ndimage.* are available in cupy via cupyx.scipy.ndimage.*. The versions there are regularly tested on various GPU hardware and CUDA versions and should be more reliable long-term.
That said, I will also work on fixing the repository here as well.

Thanks@grlee77 , I alway find it a pain to install the latest version of cupy. I've never got all the dependencies right when installing. I can try again though. Thanks for acknowledging.

Thanks@grlee77 , I alway find it a pain to install the latest version of cupy. I've never got all the dependencies right when installing. I can try again though. Thanks for acknowledging.

Okay, I pushed some small fixes to master so it should be working with CuPy 8.3 again. For 9.x, there are still likely to be some failures in kernel compilation due to some upstream changes.

Okay, I pushed some small fixes to master so it should be working with CuPy 8.3 again. For 9.x, there are still likely to be some failures in kernel compilation due to some upstream changes.

thanks @grlee77

thanks @grlee77


Add Battery reporting from a Smart Lock

TL;DR
Added SmartLock battery level reporting functionality via MQTT and HomeKit integration.
What changed?

Added battery level reporting configuration options in the web UI
Implemented battery level threshold settings (0-100%)
Created new MQTT topic for battery level commands
Added HomeKit battery service with low status and level characteristics
Introduced new CLI commands for debugging purposes ('N' and 'B')

How to test?

Enable SmartLock battery reporting in the Misc settings
Set desired battery low threshold percentage
Configure MQTT battery level command topic
Send battery level updates via MQTT or CLI commands:

Use 'N 0/1' to toggle battery low status
Use 'B [level]' to set battery percentage

Verify battery status appears in HomeKit
Confirm low battery warnings trigger when level drops below threshold

Why make this change?
Enables monitoring of physical lock battery levels through HomeKit and MQTT, allowing users to receive notifications when batteries need replacement and maintain better awareness of their lock's power status.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#153  👈 (View in Graphite)
#150
#149
#147
#146
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Merge activity

Nov 17, 12:30 PM EST: A user started a stack merge that includes this pull request via Graphite.


time: Parse too greedy when parsing some formats

What version of Go are you using (go version)?
$ go version go version devel +2d823fd Tue Oct 13 01:04:42 2015 +0000 linux/amd64

What operating system and processor architecture are you using?
linux/amd64

What did you do?
Attempted to parse this time: "618 AM MDT TUE OCT 13 2015" with this format string: "304 PM MST Mon Jan 02 2006"

What did you expect to see?
No parsing error, and a time.Time representing that moment.

What did you see instead?
The parsing fails, and the error reported: parsing time "618 AM MDT TUE OCT 13 2015": hour out of range.  The hour is interpreted as 61.
The format works properly with a two digit hour.  It seems getnum() in time/format.go takes up to two characters whenever the second character is valid which leads to the issue.

Playground example with examples that fail and pass for the given format:
http://play.golang.org/p/mZ-m7gJlvy

Apologies if my code is messy...
The format is used as a time/version stamp for the US National Weather Service in their forecast discussion products, for a real world example, http://www.wrh.noaa.gov/total_forecast/getprod.php?wfo=boi&pil=AFD&sid=BOI&version=1
Thank you.

Basically, this means that we should change getnum to only take a single digit if taking two digits would cause the value to be out of range.  Right now it always takes two digits if there are two digits, and then later checks whether they are out of range.  I can't decide whether this change would be a good idea or not.

That feels like it would invalidly parse (or attempt to) a lot of values.  I think that would cause more problems that solve.  Without field width, or field separators, I don't think you can solve all cases for this format (without making assumptions that may make some invalid strings valid).  Thank you.

This particular format is unambiguous, since "304 PM" indicates a 1-2 digit hour followed by exactly 2 digits for minutes, then whitespace, then an AM/PM indicator. The problem is, when you're looking at a starting digit of 1 for the hour, you don't know whether you're dealing with hour 1, 10, 11, or 12. Without the AM/PM indicator (24 hour clock), we would have the same issue with starting digits of 0 or 1.
One way to resolve this would be to look at 304 as a special case, in which we gather 3-4 digits and then take the last 2 as minutes and the first 1-2 as the hour. 30405 could be treated the same way (5-6 digits). But then there's also 102, 106, 12006, 10206, 1022006, and so on. There are 5 variable width numeric fields and 5 corresponding fixed width numeric fields, plus 2 numeric year representations, so 5 * (2^4-1) * 3 + 5 * 2 = 235 unambiguous representations that we don't handle currently. Even more if you allow the variable width field to be somewhere other than at the front.
Still, I can envision code that could handle all those situations gracefully. One option: when encountering a single digit format specifier, verify that the remaining adjacent numeric fields are fixed width, and look ahead to count the number of digits available. If there is an extra digit, parse 2, otherwise parse 1.
If you have adjacent variable width numeric fields in the format, such as "34", this should probably be an "ambiguous layout" error, at least when parsing.

Instead of treating all ambiguities I suggest that getnum function is doing its job perfectly only problem I see is that we need to throw a different error when input layout for HH:MM is given as H:MM / HH:M.
As our program is failing in only these cases only. And also changing getnum will have multiple side effects.


Build broken because of epsg.io problem

Currently the build fails on master. This is an attempt to fix it.
cc @bartvde

Wrong fix.

https://github.com/klokantech/epsg.io/issues/103 is the problem, and it happens with the http://openlayers.org/en/v3.11.2/examples/wms-image-custom-proj.html example.

I am sorry for this issue. It should be fixed on the EPSG.io side now...

I have restarted the travis on master and it seems everything is now fine. This ticket can be closed probably.

thanks @klokan


Storage Explorer - Unable to retrieve child resources

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
1.21.0
Regression From
No response
Architecture
i86
Storage Explorer Build Number
20210908.7
Platform
Windows
OS Version
No response
Bug Description
Unable to retrieve child resources.
Details:
{
"name": "FetchError",
"message": "request to https://marsanalyticsdevadls.blob.core.windows.net/?comp=list&include=metadata failed, reason: unable to get local issuer certificate",
"stack": "FetchError: request to https://marsanalyticsdevadls.blob.core.windows.net/?comp=list&include=metadata failed, reason: unable to get local issuer certificate\n    at ClientRequest. (C:\Users\rangaswa\AppData\Local\Programs\Microsoft Azure Storage Explorer\resources\app\node_modules\node-fetch\lib\index.js:1461:11)\n    at ClientRequest.emit (events.js:315:20)\n    at TLSSocket.socketErrorListener (_http_client.js:469:9)\n    at TLSSocket.emit (events.js:315:20)\n    at emitErrorNT (internal/streams/destroy.js:106:8)\n    at emitErrorCloseNT (internal/streams/destroy.js:74:3)\n    at processTicksAndRejections (internal/process/task_queues.js:80:21)",
"type": "system",
"errno": "UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
"code": "UNABLE_TO_GET_ISSUER_CERT_LOCALLY"
}
Steps to Reproduce

Launch Storage Explorer
Click on Blob Containers

Actual Experience
When I click on "Blob containers" I get the error. Have tried uninstall and reinstall. Delete the %app%Storageexplorer folder etc, but the issue still exists.
Expected Experience
No response
Additional Context

Have you tried to follow this troubleshooting guide to resolve the issue?  https://docs.microsoft.com/en-us/azure/storage/common/storage-explorer-troubleshooting?tabs=Windows%2C2004#ssl-certificate-issues
Thanks.

I have the same issue on installing this version , was working fine just before the install and now not.  Will revert to a previous version of your tool as I need to get my work done without errors.

Installing a older version did not solve my issue.


Include DESCRIPTION.rst in pypi packaging

Running setup.py (path:$SRC_DIR/setup.py) egg_info for package from file://$SRC_DIR
  Created temporary directory: /tmp/pip-pip-egg-info-vbijttbw
  Preparing metadata (setup.py): started
  Running command python setup.py egg_info
  Traceback (most recent call last):
    File "<string>", line 2, in <module>
    File "<pip-setuptools-caller>", line 34, in <module>
    File "/home/conda/staged-recipes/build_artifacts/de2120-barcode-scanner_1675119583057/work/setup.py", line 44, in <module>
      with io.open(path.join(here, "DESCRIPTION.rst"), encoding="utf-8") as f:
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  FileNotFoundError: [Errno 2] No such file or directory: '/home/conda/staged-recipes/build_artifacts/de2120-barcode-scanner_1675119583057/work/DESCRIPTION.rst'

To bring a little context, this issue came up when trying to use the source distribution (the tar.gz) file to create a conda-package for your software on conda-forge.
While the DISTRIBUTION.rst file is in the repository, it isn't being copied in to the "python source distribution" at "creation time".
This makes it impossible to rebuild the package from the source distribution file.
Adding it to the MANIFEST.in file at the top level will ensure that it gets included
See:

https://packaging.python.org/en/latest/tutorials/packaging-projects/#including-other-files
https://packaging.python.org/en/latest/guides/using-manifest-in/


Auth and SQL clients store base_url and username, base_url doesn't expect trailing /api anymore

The changes include:

Auth extracts username from base_url, removing special logic for different cloud/on-prem versions
Auth + SQL clients store base_url and username for other methods to use if needed
Removed the trailing /api in base_url (Issue #45)

I added Auth tests but I couldn't get
python setup.py test

running properly, I get
[~/git/carto-python]
> py setup.py test
running test

even when setting the assert to fail

Any feedback?

looks good! thanks so much. I still need some time to figure out what the problem with the tests might be

cool, thanks for checking it out

adding @alrocar to the loop

Here are the lines of code for the prototype version:
https://github.com/dmed256/cartoframes/blob/master/cartoframes/proto/context.py#L26-L34

Well, I think this type of functionality actually belongs to the SDK ;-)

Yay, less logic for us then :)
Thank you!

:)


Google Crome window minimizing issue in Jupyter Notebook

Hello,
I need a suggestion. In line number 3, I use r.keyboard('[win][up]') to maximize the google crome window. But when I try to run this below code in Jupyter notebook, r.keyboard('[win][up]') is not working because crome is opening as minimizing window. How can I resolve this issue?
r.init(visual_automation = True)
r.url('https://www.google.com')
r.keyboard('[win][up]')
r.wait(3)
r.type('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input','github')
r.close

Hi Ekram, are you still facing this issue? My Chrome browser launches ok in normal size. One way to handle this is, after you do init() from Jupyter Notebook, how will you manually open that Chrome window and maximise it?
Once you know how you do it manually, you can just repeat the same steps using click() or keyboard() functions. Let me know if you run into issues doing that!


Add "classic" compatibility mode to server for new graph version of GA4GH API

A new graph version of the GA4GH API was added via PR 238 in the GA4GH/schema repository:
https://github.com/ga4gh/schemas/pull/238
It supports both classic and graph-supported server modes, with some syntax changes to the classic mode as compared to the v0.51 API.
As a first step to building a reference server for the new graph API, the current server needs to be updated to support the "classic" mode syntax of the new GA4GH schema.

Isn't the server currently in classic mode at the moment?

If nothing else, it needs to implement the method to advertise its support
for classic mode.
It may also need some other changes to move it from v0.5.1 to v0.6 classic
mode, as there are some non-graph-related breaking changes that other
people have made (for example, the new Strand enumeration).
On Wed, Feb 25, 2015 at 4:07 AM, Jerome Kelleher<EMAIL_ADDRESS>wrote:

Isn't the server currently in classic mode at the moment?
—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/server/issues/183#issuecomment-75949425.

Moving to the 0.6.0 release (whenever it comes out) will be a big step, and we'll need to resolve a bunch of issues to go through this.

@adamnovak: "If nothing else, it needs to implement the method to advertise its support
for classic mode."
What method is this?

This is part of the forthcoming 0.6.0 release, which we're not aiming at right now. I don't think we should implement any API methods until they are released.
There's no reason we can't get infrastructure in place to support graph mode/v0.6.0, I just don't think we should implement the methods until they are released.

We should wait until the graph part get stabilized. We agreed that #238 is just an initial attempt. Multiple rounds of iterations are likely to be required to get it to the implementation level.

@dcolligan I'm referring to the sendsMode() method. The server has to announce that it serves classic mode, and a well-behaved classic mode client should check to make sure the server serves classic mode. This is so you don't accidentally point a classic-only client at a graph-only server and crash when it tries to send you GraphAlignments for reads, or (worse) run successfully but get an incomplete picture of a CallSet you are interested in and do an incorrect downstream analysis.
I would favor having a compliant v0.6 server to release alongside the v0.6 API. I agree with @lh3 that moving the server towards that is going to be chasing a moving target until we settle on what the graph side of the API will actually look like, so it doesn't necessarily make sense to shoot for full and exact compliance with the spec immediately. But I think we should start fleshing out the implementation, including the methods. It might be best to do it in a v0.6 branch of the server repo.
We need to try implementing v0.6 so we can iterate on the schema and produce something implementable and efficient.

I understand the need to iterate on the pull request - but, do we really want to move to branches for 0.6? If we can escape branching and make a rapid series of pull-requests maybe we can avoid having a lot of fork and merge pain while we still don't have an easy semi-complete reference server implementation. Given that it is backward compatible, we could just add it in progressively?

My proposal for handling the process of supporting graph mode and moving the schema forward is as follows:

We make a v0.6.0 release of the schema soon. I absolutely agree with @lh3 and we will need to iterate on the current spec for a while before we get to something that works well. I would suggest that we do this through a series of point releases --- we can regard 0.6.x series as a development series (with respect to graph mode; classic mode should have the usual stability requirements), since we're working on something so new and unfamiliar. While I very much agree with Heng about not wanting to implement a moving target, I also think we should get some practical experience with the graph mode to inform the design. This is why I think a series of minor point releases is a good compromise between giving us something stable to implement here, and also allow for meaningful feedback into the API design from our implementation experience.
To make the transition to 0.6.0 here in the reference server, we wait for the release, and then make the minimum possible PR to make things work on the new schema (I'm thinking of things like getting rid of the GA prefix, updating process_schemas.py and committing in the new _protocoldefinitions.py). We then make a set of issues required to fully support this schema, and move forward by resolving these incrementally as we go. This should ensure that we always have working server.

I agree with @adamnovak that we should aim to accompany a release of the protocol with a fully compliant release of the reference implementation. However, we have too much to do to bring ourselves up to the spec for this to be realistic for 0.6.0. It is certainly a goal I think we should aim for in future, however.

I strongly +1 Jerome's vision on this.

@jeromekelleher currently we don't have a graph. Are you going to generate this graph, or to wait for others (e.g. @benedictpaten, @iqbal-lab and @ekg) to generate it for you?

I think ideally several of us either implement or partially implement and realise there are issues. I'm playing catch up, but I will try

+1 @lh3 @iqbal-lab

@lh3 I think we have lots of graphs, we just need to output them in a format that is compatible with the current GA4GH model. I'm pretty sure there is a simple algorithm translating the graphs that we already have into the Durbin form, so the only missing link is to define a file format to write this information to. This is something we're hoping to nail down soon. I'm arguing for a SQLite based approach for this, with a schema that is a literal translation of the Avro structures into relational form. This would make life nice and simple for us on the reference server, as there would be no need for any input data conversion step.

@jeromekelleher What if I sent you graphs in Durbin form to start working with? I can serialize them in a bespoke extension to the GFA format that allows for path inclusion. That's trivial to parse. It's a temporary solution, but it's enough to get started.
(@lh3 @jts -- the bespoke idea for GFA is to use "P node_id path_name" to specify paths alongside nodes; you could also have a cigar for the mapping between the path and the node. Probably we should discuss this elsewhere.)
Alternatively, I can write a parser for the on-disk vg format for your target language for the server. This is trivial to do as long as you can open a gzipped file and there is a protobuf compiler for the language. Maybe 30 lines of python.

Sounds great @ekg! It would be great if you could send me on a few little samples so I can start thinking about it. I'm sure we can get the data into the form we want easily, and it'll be great to make this discussion concrete.

@ekg I am trying to work out what GA4GH graph cannot represent. Suppose we have the following graph in the GFA format which contains four sequences A, B, C and D:
L  A  -  B  +  // this means the 3'-end of A joins the 5'-end of B
L  A  -  D  +
L  C  -  B  +
L  C  -  D  +

and that the reference path goes through A and B. I think this graph cannot be described in the GA4GH representation because end C- has two joins but each segment end in a GA4GH graph only allows one join. Is that right? If so, this calls for questions: 1) what types of graphs the GA4GH model cannot describe? 2) are we sure that we will never generate variant graphs that cannot be described by the GA4GH model? Or should we simply allow multiple end joins in GA4GH such that it can represent any GFA graphs? BTW, do we need orientation in P node_id path_name?

You can represent that graph. You would get it, for example, if AB is the
original primary path, then you add child that allows the variant CB  (a
"SNP bubble" with C in place of A), then you add a child that allows the
variant AD (a "SNP bubble" that allows D in place of B), and finally you
add an empty child that allows an adjacency between the 3' side of C and
the 5' side of D. This last child allows a single path CD.
-D
On Fri, Feb 27, 2015 at 2:39 PM, Heng Li<EMAIL_ADDRESS>wrote:

@ekg https://github.com/ekg I am trying to work out what GA4GH graph
cannot represent. Suppose we have the following graph in the GFA format
which contains four sequences A, B, C and D:
L  A  -  B  +  // this means the 3'-end of A joins the 5'-end of B
L  A  -  D  +
L  C  -  B  +
L  C  -  D  +
and that the reference path goes through A and B. I think this graph
cannot be described in the GA4GH representation because end C- has two
joins but each segment end in a GA4GH graph only allows one join. Is that
right? If so, this calls for questions: 1) what types of graphs the GA4GH
model cannot describe? 2) are we sure that we will never generate variant
graphs that cannot be described by the GA4GH model? Or should we simply
allow multiple end joins in GA4GH such that it can represent any GFA
graphs? BTW, do we need orientation in P node_id path_name?
—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/server/issues/183#issuecomment-76486130.

Are you suggesting adding an extra empty Segment between C and D? But then we can add an empty Segment in a different way or add an arbitrary number of empty Segments. It would seem cleaner to me to just allow multiple end joins.

This gets into a longer discussion I won't pursue completely here.
Richard's original model, which we have adopted and we like very much,
started with a primary reference sequence (e.g. the primary path of
chromosome 1 of GRCH38), and then sequentially added variants. (I use the
term "variant" here in a generic sense). Each variant added is a child to
the preexisting existing reference graph structure. Each new child is
specified by a DNA sequence (possibly empty) and a join at each end
indicating where it links in to the parent reference structure.
It is true that this approach yields some asymmetries in the particular
graph that represents the otherwise symmetric case that you discuss. These
asymmetries come about from the fact that you start with AB as the
reference sequence and then add variants on top of that.  However, the
benefits of having each additional variant be simple, with just one join on
either end, and there being a natural hierarchy of variants starting from
the default primary path and then moving on the more and more obscure
variants, outweighs the drawbacks of losing some symmetry.
-D
On Fri, Feb 27, 2015 at 8:20 PM, Heng Li<EMAIL_ADDRESS>wrote:

Are you suggesting adding an extra empty Segment between C and D? But then
we can add an empty Segment in a different way or add an arbitrary number
of empty Segments. It would seem cleaner to me to just allow multiple end
joins.
—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/server/issues/183#issuecomment-76509695.

In summary, some generic sequence graphs cannot be converted to GA4GH graphs unless we introduce empty/zero-length segments, but if we allow empty-segments, we can convert the same generic graph to multiple equivalent GA4GH graphs. I guess this is a property of our graphs.

I saw Hengs post about A,B,C,D yesterday, and nearly replied but wanted to think some more.
On reflection I suggest to go as the latest exchange between David and Heng says, i.e. to allow empty segments and stick with single joins.
I think that multiple end joins make things quite a lot more complicated for code, and that for any of these multiple sequence representations there are in practice alternative representations.  Already with the GA4GH style there is a choice at the start which to make the primary sequence from which others branch.  I stilll think that the single joining, and having a long primary sequence and adding things off that (and potentially arbitrary further things off those etc., which are likely to be rarer and shorter) are good ways to go.
Good discussion though.
I am going to spend next week in Santa Cruz, during which I aim to catch up with all the interface discussion.  I support in general the movement to get on an implement something and get practical experience, but have not followed all the detailed proposals recently.

@lh3 Yes, that's pretty much correct. We already have to deal with equivalent graphs, though: if you want to represent two genomes, and one has a SNP relative to the other, which version of the SNP is the primary path and which is the new one-base segment depends on which genome you start with.
We also need the empty segments for adding in things like inversions of parts of existing sequences.
I think this is going to work fine. If it isn't going to work fine, we need to implement it so we can find that out.

Having done a bit of work with reference graphs I am increasingly convinced
that it is easier to focus on the reference system as a collection of
sequences without preference toward any particular one. The idea of a
primary path is really not something that should be baked into the design
of the system. The reason is that you may want to change the primary path
later. In fact this is one of the major benefits of the system.
I'm not offering any solutions in terms of the GA4GH graph. But I do have
an implementation that doesn't have an intrinsic concept of the primary
path. Just paths in general. That is enough to represent almost everything
of interest. An reference genome becomes a path, as does any other
particular genome. An alignment is a path wrapped in metadata. Genomic
annotations are also paths.
Perhaps it is OK to simply establish a base graph using a versioning
system. Then we don't need to worry about the particular order in which
sequences were added to it. All sequences can be equivalently described as
paths through the graph. Updating the graph version would imply a
graph-graph alignment, which could be used for lift over of material
aligned to the old version.
This approach is advantageous in that it is expedient (for instance, I was
already able to implement all but the lift over part) and also it matches
existing intuition in the field about how reference genomes work. They have
releases and the releases have versions. Its OK if some pieces of the
reference are totally revised from one revision to the next. We may not
achieve the append only mode aimed for by the current model.
On Mar 2, 2015 7:11 PM, "adamnovak"<EMAIL_ADDRESS>wrote:

@lh3 https://github.com/lh3 Yes, that's pretty much correct. We already
have to deal with equivalent graphs, though: if you want to represent two
genomes, and one has a SNP relative to the other, which version of the SNP
is the primary path and which is the new one-base segment depends on which
genome you start with.
We also need the empty segments for adding in things like inversions of
parts of existing sequences.
I think this is going to work fine. If it isn't going to work fine, we
need to implement it so we can find that out.
—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/server/issues/183#issuecomment-76766155.

+1
(akin to the ancient discussions about whether there really is such a thing
as wildtype)
On Mon, Mar 2, 2015 at 2:08 PM, Erik Garrison<EMAIL_ADDRESS>wrote:

Having done a bit of work with reference graphs I am increasingly convinced
that it is easier to focus on the reference system as a collection of
sequences without preference toward any particular one. The idea of a
primary path is really not something that should be baked into the design
of the system. The reason is that you may want to change the primary path
later. In fact this is one of the major benefits of the system.
I'm not offering any solutions in terms of the GA4GH graph. But I do have
an implementation that doesn't have an intrinsic concept of the primary
path. Just paths in general. That is enough to represent almost everything
of interest. An reference genome becomes a path, as does any other
particular genome. An alignment is a path wrapped in metadata. Genomic
annotations are also paths.
Perhaps it is OK to simply establish a base graph using a versioning
system. Then we don't need to worry about the particular order in which
sequences were added to it. All sequences can be equivalently described as
paths through the graph. Updating the graph version would imply a
graph-graph alignment, which could be used for lift over of material
aligned to the old version.
This approach is advantageous in that it is expedient (for instance, I was
already able to implement all but the lift over part) and also it matches
existing intuition in the field about how reference genomes work. They have
releases and the releases have versions. Its OK if some pieces of the
reference are totally revised from one revision to the next. We may not
achieve the append only mode aimed for by the current model.
On Mar 2, 2015 7:11 PM, "adamnovak"<EMAIL_ADDRESS>wrote:

@lh3 https://github.com/lh3 Yes, that's pretty much correct. We
already
have to deal with equivalent graphs, though: if you want to represent two
genomes, and one has a SNP relative to the other, which version of the
SNP
is the primary path and which is the new one-base segment depends on
which
genome you start with.
We also need the empty segments for adding in things like inversions of
parts of existing sequences.
I think this is going to work fine. If it isn't going to work fine, we
need to implement it so we can find that out.
—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/server/issues/183#issuecomment-76766155.

—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/server/issues/183#issuecomment-76837193.

Closing this issue, as it is too general.


[Bug]: 1.19 fabric Lags when teleporting between worlds and to distant distances

Is there an existing issue for this?

[X] I have searched the existing issues

Description
https://spark.lucko.me/ifdKjkRR9R
When players teleport by Waystones, a lag is obtained.
Players play and when they teleport, such a thing happens, for example, from dimension to dimension. world -> world_the_end or just for a long distance.
shared by all players

mods: message.txt
I test one mod (Waystones) in multiplayer and the problem remained
To Reproduce

Teleport between worlds or just over long distances by Waystones

Expected behavior
So as not to lag and load the server.
Mod Version
v2.5.0
Minecraft Version
1.19
Java Version
Java 17
Fabric Version

fabric-loader-0.14.8
fabric-api-0.57.0+1.19

Relevant log output
No response
Anything else?
No response

I met this problem, not only the single player but also multi ones. However some times the lags didn't appear, it's weird, and the waystone(fabric) has this problem too.

I'm not convinced this is an issue with Fabric Waystones. I tested the performance of teleporting via waystones and teleporting using the vanilla Minecraft commands, and the results were pretty much the same. The distance I used for the same-dimension waystones was 10k for both X and Z. With the vanilla commands, I only teleported to the same positions as the waystones, since going any further would cause worldgen lag, which shouldn't happen with normal waystone teleportation.

Closing as duplicate of #177.
I made some changes (still unreleased) that might've fixed this issue. If you want early access for testing, contact me on discord.


Limitation

We can choose a 4bit number for each color .
if we could choose 8 bit for each r,g,b we could show 16million = 255^3 colors. so hue wheel was softer.
Is it a limitation from MSI  for these boards?
Thanks
MB: B350 tomahawk

Yup, it is, unfortunately.