Add broadcasting support for tf.where

This is a rework on #15982
Signed-off-by: Yong Tang<EMAIL_ADDRESS>

Thanks @alextp. The existing gradient tests also include where_v2 in tensorflow/python/kernel_tests/cwise_ops_test.py, the exiting non-gradient tests include where_v2 in   tensorflow/python/kernel_tests/where_op_test.py.
I will add additional test cases for broadcast that are special to where_v2 only. Will update again shortly.

@rthadur @alextp The failed tests are due to the api update. Should I update the api golden to make the tests pass?

@alexp @rthadur I updated the PR for api goldens. Believe all tests should pass now. Please let me know if there are any issues.

It appears there is still something wrong:
import tensorflow.compat.v2 as tf
tf.enable_v2_behavior()

import numpy as np

print(np.where(tf.constant([[True]]), tf.ones([1, 10]), tf.zeros([1, 10])))
print(tf.where(tf.constant([[True]]), tf.ones([1, 10]), tf.zeros([1, 10])))

InvalidArgumentError: Inputs to operation Select of type Select must have the same size and shape.  Input 0: [1,1] != input 1: [1,10] [Op:Select]

@martinwicke Sorry about that. I will take a look and will fix it as soon as possible.

@martinwicke I tried with tf-nightly it looks fine:
# python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>>
>>> import tensorflow.compat.v2 as tf
>>> tf.enable_v2_behavior()
>>>
>>> import numpy as np
>>>
>>> print(np.where(tf.constant([[True]]), tf.ones([1, 10]), tf.zeros([1, 10])))
2019-05-17 16:20:24.989573: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 AVX512F FMA
2019-05-17 16:20:25.050076: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency:<PHONE_NUMBER> Hz
2019-05-17 16:20:25.050408: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x563b3ef74c80 executing computations on platform Host. Devices:
2019-05-17 16:20:25.050437: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): <undefined>, <undefined>
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
>>> print(tf.where(tf.constant([[True]]), tf.ones([1, 10]), tf.zeros([1, 10])))
tf.Tensor([[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]], shape=(1, 10), dtype=float32)
>>>
>>> print(tf.version.VERSION)
1.14.1-dev20190517
>>> print(tf.version.GIT_VERSION)
v1.12.1-2154-g3df6d99f3f
>>>

Wondering if there is a version difference?

Yeah, you are right. For some reason my nightly didn't pick this up yet, and I'm confused about that.

Thanks @martinwicke. Appreciate the help 👍

Changes are merged in to Master, closing this PR.


🛠 [TASK] : Lookup Chain root for any presented auth token.

Auth tokens may be optional.  They are defined here: docs/src/catalyst-standards/permissionless-auth/auth-header.md and docs/src/catalyst-standards/permissionless-auth/auth-token.cddl
IF a token is present, look up the chain root in the index DB for the current latest Role 0 Key present in the auth token.
An example of it being used by the API is here: catalyst-gateway/bin/src/service/api/cardano/cip36/endpoint.rs: 18:
_auth: NoneOrRBAC,

Each RBAC KeyChain is identified by a Chain Root.  However, it is not a natural source of information for the front end.
The front end only knows the keys it is using.
The permissionless auth token includes a 16 byte hash of the Role 0 certificate, used to sign the token.
This is known as the KID.
The Service indexes the Role0 KeyID (16 byte hash) against the Chain root, in the chain_root_for_role0_key.  See: catalyst-gateway/bin/src/db/index/schema/cql/chain_root_for_role0_key.cql for schema. AND catalyst-gateway/bin/src/db/index/queries/cql/get_role0_key_chain_root.cql for the query to get the data for it.
Using this table, and the KID, this task is to:

Look up the chain root for the KID.  If it is not present, then return 403. (We don't know who they are).
Check if it is the LATEST KID for the chain root. If it is not, return 401. (We know who they are, but they used the wrong credential).
Get the cert for the KID, and then validate the token is correct.

See: catalyst-gateway/bin/src/service/common/auth/rbac/scheme.rs:136 for where this code needs to be inserted.
There should be a function here which does the above logic.

The function implemented as part of https://github.com/input-output-hk/catalyst-voices/issues/1312 should be used here.


No definitions found ever

Issue Type: Bug
To reproduce:

Create a file with the following contents:
 foo = 'foo'
 print(foo)

Focus foo in the second line

Press F12

Actual behaviour: VS Code prints "No definition found for 'foo'" and does nothing else.
Expected behaviour: The focus should change to the start of line 1.
I've tested this both by opening a file and by creating a file in an existing workspace. I've tried on references to variables, functions, classes and methods. All of them fail, even when the definition is on the previous line and the extension even highlights the definition and focussed reference correctly.
Extension version: 2018.7.1
VS Code version: Code 1.26.0 (4e9361845dc28659923a300945f84731393e210d, 2018-08-13T16:25:59.521Z)
OS version: Linux x64 4.17.14-arch1-1-ARCH
Python version:  CPython 3.6.5
Type of virtual environment used: Pipenv
Relevant/affected Python packages and their versions: N/A
There was no VS Code output whatsoever while testing this. However, in the development console I get this message:

Python Extension: sendCommand jediProxy, Error (sendCommand) This socket is closed

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (4 x 3485)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: disabled_softwarevideo_decode: unavailable_softwarevideo_encode: unavailable_softwarewebgl: enabledwebgl2: enabled

Load (avg)
3, 4, 3

Memory (System)
15.31GB (5.17GB free)

Process Argv
/opt/visual-studio-code/code

Screen Reader
no

VM
0%

Apparently this isn't part of the Python extension by default. My bad.

I thought I was wrong, but turns out I was mistaken.

Hmmm, I can't repro your issue, seems like there may be an issue with your setup someplace?

Perhaps you can help a bit by giving us your Python environment and other details? Filling out the default template for our issues in full will always help us to more fully understand the trouble and potential causes.

Default Template:

Environment data

VS Code version: XXX
Extension version (available under the Extensions sidebar): XXX
OS and version: XXX
- Python version (& distribution if applicable, e.g. Anaconda): XXX
**- Type of virtual environment used (N/A | venv | virtualenv | conda | ...): XXX **
- Relevant/affected Python packages and their versions: XXX

Actual behavior
XXX
Expected  behavior
XXX
Steps to reproduce:

XXX

Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
XXX

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help)
XXX

With LS it may be a timing issue. If code analysis hasn't completed yet then definitions are not yet known.

@MikhailArkhipov VSC has been open at least 12 hours, and there's been no indication that indexing is still in progress.

Tested in 1.26.1 with the same result.

@l0b0 - it may be worth trying insiders build of the extension :-)

I have now tried extension version 2018.8.0 with VS Code 1.27.2 from the official Arch Linux repos, and no change.

Let's talk about each point separately and try to sort this out:
1. Temporarily disabling Intellicode:

After opening my workspace, if I leave python.jediEnabled true (by dismissing the "IntelliCode Python support requires you to use the Microsoft Python Language Server (preview)." dialogue) then no definitions are found, including local variables. A colleague of mine is doing the same in the same repo with the same configuration (it's shared as part of the repo) on a different distro, and code lookup is working for them.

I've attempted to reproduce this in Ubuntu 18.04 by having only installed the Python and the Visual Studio Intellicode extensions installed. I set my environment to Python 3.6.6 as well using the Python selector in the status bar. Things still work as in my GIF above and I cannot get a repro.
2. Explicitly set the pythonPath and venvPath:

If I enable the MPLS (thereby setting python.jediEnabled false) and reload I get the message "Unable to determine path to the Python interpreter. IntelliSense will be limited." My folder settings (also shared with my colleagues) are as follows:

        {
          "python.pythonPath": "${workspaceFolder}/.venv/bin/python",
          "python.venvPath": "${workspaceFolder}/.venv"
        }

I then setup a virtual environment (using python -m venv .venv in the workspace folder. I selected the Python status bar item and changed my local environment to the virtual environment, and verified that my settings.json contained the same thing your does above. I also added the "python.venvPath" value as you have.
Still cannot reproduce your issue, sorry! 😞
3. Attempt to force-set a specific interpreter via the selector:

I am unable to enter any interpreter other than the system ones. If I try to paste the absolute path of the project-specific interpreter into the text box for the interpreter I cannot submit it in any way, including pressing Enter (which does nothing). I get no error message about the path being invalid or the interpreter being too deep in the filesystem, or anything like that.

This is not supported, and by setting "python.pythonPath": "/path/to/python" as you already have is the way to accomplish this, along with setting "python.venvPath". This is expected.
4. Message regarding Jedi 'This socket is closed.':
I think this is were the actual problem lies and we need to sort it out from this point. This message means that the Jedi process for discovering things didn't work at all on your system (either the interpreter process didn't start altogether, or something went wrong while it was running).
...which brings us back to your environment.
I believe, since there are no other reports of this nature from our other users, there seems to be something pretty unique about your setup that needs some help. Let's see if we can try and sort it out.
(Also, I see you also have opened #2624 and #2625, and both of those seem to be interpreter-related much like this issue.)
What happens in your 'foo' example if you create a 'foo.py' file with that content? What happens if you run it with debugging (F5), without debugging (Ctrl+F5), running in the terminal (F1 + 'Run Python File in Terminal'). Please capture all the places log files are sent (Terminal, Output:Python, Developer Console). Thanks!

You're right, this seems to be related to the interpreter. I'll just close this issue in favour of the others.


Slow waveform generation with audio files larger than 5 seconds

macOS Version(s) Used to Build
macOS 13 Ventura
Xcode Version(s)
Xcode 14
Description
So in the use case I am doing, I have an observed object called a Sample and this sample object gets updated with different sample data, AVAudioFile, SampleBuffer, etc depending on the file that is loaded. Then I pass the SampleBuffer data to the waveform .

Waveform(samples: sample.sampleBuffer)

When the audio file, that the sampleBuffer is created from, is over 3 seconds I start to notice performance issues. It takes a while for the waveform view to populate waveform view.
I work with larger sized audio files and was hoping the render would be faster with GPU acceleration.
Crash Logs, Screenshots or Other Attachments (if applicable)
https://github.com/AudioKit/Waveform/assets/106555805/5198c9dc-cc14-483f-a6ef-c056de335390
1m 15s audio file of piano used in video
Piano.mp3.zip

Are you running in release mode? I observed ~.1s time to process your mp3. We did it on the main thread though, and we should move that over to a background thread so the UI is never blocked.
Debug mode was indeed quite slow (9s). Swift is quite bad in debug mode sometimes if you aren't careful. We can work on that.

Thank you! Turning off debug definitely helped and is now extremely fast. Thank you for taking care of the blocking thread so quickly.


[xy] Add GCS destination to data integration pipeline

Summary
Adds support for Google Cloud Storage as a destination for exporting data. It includes a new class, GoogleCloudStorage, which inherits from the Destination base class and implements the necessary methods for exporting data to GCS.
The class includes methods to export data to GCS and supports the following configuration options:

bucket: Name of the GCS bucket to save data in. Example: user-generated content.
file_type: The type of GCS files. Supported file type values: parquet, csv. Supported Types: parquet or csv.
object_key_path: The path of the location where you have files. Don’t include the gs://, the bucket name, or the table name in this path value. Example: users/ds/20221225.
region: Region where the bucket is located. Default value is us-west1.
service_account_json: Path to service account JSON file. Example: /path/to/service_account.json.

Changes Made

Added GoogleCloudStorage class to destinations/gcs.py
Implemented export_batch_data and test_connection methods for GCS
Added configuration options for GCS to config.json file
Added unit tests for GoogleCloudStorage class to test_gcs.py
Updated README.md file to include documentation for GCS configuration options

cc:

🙌🙌🙌

👀👀👀


Figure out uWSGI Configuration Options

We're currently serving Warehouse on Heroku using gunicorn with the eventlet workers. I started using gunicorn because it's simple, and eventually switched from sync to eventlet workers so that we weren't trivially DoSable by having someone hold open connections (since Heroku's routers don't buffer the request body, only the request headers). In looking at the options, it appears that the following options are sane-ish:

Continue using gunicorn + eventlet.
Switch to Waitress which is another Python WSGI server that has an async master process to buffer requests.

Use uWSGI instead of gunicorn.

Looking at the options, I think uWSGI might be our best option, however we need to figure out a good set of configuration knobs to tune (since uWSGI supports so many of them). We currently have one situation:

There is no buffering proxy to prevent slowloris or similar attacks.
We want uploads to go back to the app unbuffered so the app can dynamically choose when to kill an upload (e.g. UserA gets 10MB and UserB gets 50MB).

However, in the future we might be splitting out the upload service to it's own app, in which case it'd be useful to also figure out the configuration options for the additional situation:

There is no buffering proxy to prevent slowloris or similar attacks.
We don't care if the app gets requests unbuffered because requests are small.

/cc @mattrobenolt

Have you looked into using twisted's wsgi container? I believe it supports
py3k these days.
On Sun, Sep 6, 2015 at 4:55 PM, Donald Stufft<EMAIL_ADDRESS>wrote:

We're currently serving Warehouse on Heroku using gunicorn with the
eventlet workers. I started using gunicorn because it's simple, and
eventually switched from sync to eventlet workers so that we weren't
trivially DoSable by having someone hold open connections (since Heroku's
routers don't buffer the request body, only the request headers). In
looking at the options, it appears that the following options are sane-ish:

Continue using gunicorn + eventlet.
Switch to Waitress which is another Python WSGI server that has an
async master process to buffer requests.

Use uWSGI instead of gunicorn.

Looking at the options, I think uWSGI might be our best option, however we
need to figure out a good set of configuration knobs to tune (since uWSGI
supports so many of them). We currently have one situation:

There is no buffering proxy to prevent slowloris or similar attacks.
We want uploads to go back to the app unbuffered so the app can
dynamically choose when to kill an upload (e.g. UserA gets 10MB and UserB
gets 50MB).

However, in the future we might be splitting out the upload service to
it's own app, in which case it'd be useful to also figure out the
configuration options for the additional situation:

There is no buffering proxy to prevent slowloris or similar attacks.
We don't care if the app gets requests unbuffered because requests
are small.

—
Reply to this email directly or view it on GitHub
https://github.com/pypa/warehouse/issues/659.

--
"I disapprove of what you say, but I will defend to the death your right to
say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
"The people's good is the highest law." -- Cicero
GPG Key fingerprint: 125F 5C67 DFE9 4084

I have not, but a quick test it looks like twistd doesn't get installed on Python 3:
$ pip list | grep Twisted
Twisted (15.4.0)
$ twistd -n web --wsgi warehouse.wsgi
zsh: command not found: twistd

Would you mind trying with twisted from master, I might have gotten ahead
of myself.
On Sun, Sep 6, 2015 at 5:00 PM, Donald Stufft<EMAIL_ADDRESS>wrote:

I have not, but a quick test it looks like twistd doesn't get installed
on Python 3:
$ pip list | grep TwistedTwisted (15.4.0)
$ twistd -n web --wsgi warehouse.wsgizsh: command not found: twistd
—
Reply to this email directly or view it on GitHub
https://github.com/pypa/warehouse/issues/659#issuecomment-138125046.

--
"I disapprove of what you say, but I will defend to the death your right to
say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
"The people's good is the highest law." -- Cicero
GPG Key fingerprint: 125F 5C67 DFE9 4084

That gets it closer to working, but it still doesn't seem to work on Python 3 yet:
$ twistd -n web --wsgi warehouse.wsgi
Usage: twistd [options]
Options:
      --savestats      save the Stats object rather than the text output of the
                       profiler.
  -o, --no_save        do not save state on shutdown
  -e, --encrypted      The specified tap/aos file is encrypted.
  -n, --nodaemon       don't daemonize, don't use default umask of 0077
      --originalname   Don't try to change the process name
      --syslog         Log to syslog, not to file
      --euid           Set only effective user-id rather than real user-id.
                       (This option has no effect unless the server is running
                       as root, in which case it means not to shed all
                       privileges after binding ports, retaining the option to
                       regain privileges in cases such as spawning processes.
                       Use with caution.)
  -l, --logfile=       log to a specified file, - for stdout
      --logger=        A fully-qualified name to a log observer factory to use
                       for the initial log observer.  Takes precedence over
                       --logfile and --syslog (when available).
  -p, --profile=       Run in profile mode, dumping results to specified file.
      --profiler=      Name of the profiler to use (profile, cprofile).
                       [default: cprofile]
  -f, --file=          read the given .tap file [default: twistd.tap]
  -y, --python=        read an application from within a Python file (implies
                       -o)
  -s, --source=        Read an application from a .tas file (AOT format).
  -d, --rundir=        Change to a supplied directory before running [default:
                       .]
      --prefix=        use the given prefix when syslogging [default: twisted]
      --pidfile=       Name of the pidfile [default: twistd.pid]
      --chroot=        Chroot to a supplied directory before running
  -u, --uid=           The uid to run as.
  -g, --gid=           The gid to run as.
      --umask=         The (octal) file creation mask to apply.
      --version        Print version information and exit.
      --help           Display this help and exit.
      --spew           Print an insanely verbose log of everything that happens.
                       Useful when debugging freezes or locks in complex code.
      --help-reactors  Display a list of possibly available reactor names.
  -r, --reactor=       Which reactor to use (see --help-reactors for a list of
                       possibilities)
  -b, --debug          Run the application in the Python Debugger (implies
                       nodaemon),         sending SIGUSR2 will drop into
                       debugger

twistd reads a twisted.application.service.Application out of a file and runs
it.
Commands:

/Users/dstufft/.virtualenvs/tmp-e3a3921e99052af/bin/twistd: Unknown command: web

Ok. THanks for trying!
On Sun, Sep 6, 2015 at 5:11 PM, Donald Stufft<EMAIL_ADDRESS>wrote:

That gets it closer to working, but it still doesn't seem to work on
Python 3 yet:
$ twistd -n web --wsgi warehouse.wsgiUsage: twistd [options]Options:      --savestats      save the Stats object rather than the text output of the                       profiler.  -o, --no_save        do not save state on shutdown  -e, --encrypted      The specified tap/aos file is encrypted.  -n, --nodaemon       don't daemonize, don't use default umask of 0077      --originalname   Don't try to change the process name      --syslog         Log to syslog, not to file      --euid           Set only effective user-id rather than real user-id.                       (This option has no effect unless the server is running                       as root, in which case it means not to shed all                       privileges after binding ports, retaining the option to                       regain privileges in cases such as spawning processes.                       Use with caution.)  -l, --logfile=       log to a specified file, - for stdout      --logger=        A fully-qualified name to a log observer factory to use                       for the initial log observer.  Takes precedence over                       --logfile and --syslog (when available).  -p, --profile=       Run in profile mode, dumping results to specified file.      --profiler=      Name of the profiler to use (profile, cprofile).                       [default: cprofile]  -f, --file=          read the given .tap file [default: twistd.tap]  -y, --python=        read an application from within a Python file (implies                       -o)  -s, --source=        Read an application from a .tas file (AOT format).  -d, --rundir=        Change to a supplied directory before running [default:                       .]      --prefix=        use the given prefix when syslogging [default: twisted]      --pidfile=       Name of the pidfile [default: twistd.pid]      --chroot=        Chroot to a supplied directory before running  -u, --uid=           The uid to run as.  -g, --gid=           The gid to run as.      --umask=         The (octal) file creation mask to apply.      --version        Print version information and exit.      --help           Display this help and exit.      --spew           Print an insanely verbose log of everything that happens.                       Useful when debugging freezes or locks in complex code.      --help-reactors  Display a list of possibly available reactor names.  -r, --reactor=       Which reactor to use (see --help-reactors for a list of                       possibilities)  -b, --debug          Run the application in the Python Debugger (implies                       nodaemon),         sending SIGUSR2 will drop into                       debugger
twistd reads a twisted.application.service.Application out of a file and runsit.Commands:
/Users/dstufft/.virtualenvs/tmp-e3a3921e99052af/bin/twistd: Unknown command: web
—
Reply to this email directly or view it on GitHub
https://github.com/pypa/warehouse/issues/659#issuecomment-138125462.

--
"I disapprove of what you say, but I will defend to the death your right to
say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
"The people's good is the highest law." -- Cicero
GPG Key fingerprint: 125F 5C67 DFE9 4084


Support different topologies for containment queries

@zivnevo, ready for your review.

@zivnevo, further items to discuss once you finish reviewing:

In case of config with no policy, i.e. networkPolicyList: [], there's a problem in _allowed_xgress_conns() that doesn't take into account no k8s policy. Problem is that policy-type is not defined by default as k8s. This is the reason why some of the new tests fail (left it intentionally so it must be fixed)
Do we want to enhance Containment (and maybe other queries like permit/forbid) to find and return all evidences?

@zivnevo, further items to discuss once you finish reviewing:
1. In case of config with no policy, i.e. `networkPolicyList: []`, there's a problem in `_allowed_xgress_conns()` that doesn't take into account no k8s policy. Problem is that `policy-type` is not defined by default as `k8s`. This is the reason why some of the new tests fail (left it intentionally so it must be fixed)

2. Do we want to enhance Containment (and maybe other queries like permit/forbid) to find and return all evidences?

This is a very good point. We set a NetworkConfig's type according to the policies it contains. If it contains no policies we don't really know what type of config this is. How about adding a new optional field type to the definition of a NetworkConfig? This field should be useful only if there are no policies. Otherwise,  we'll only check they type specified matches the policies (maybe this is also useful as a sanity check).
Also, please let me know if you can merge (without using your administrator power) while some tests are failing.
Yes, but I think we want this to be optional. Adi is preparing an output-configuration class. Let's wait for it to be ready, and take the option from there.


[HOLD for payment 2023-05-16] [$1000] Jittery transition of tooltip when the inner content changes

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Navigate to any chat > Click on chat header
Click on the clipboard icon at the details page
Keep the cursor at clipboard and wait for the tooltip to change again to "Copy to clipboard"

Expected Result:
The tooltip transition is Jittery when the tooltip text changes.
Actual Result:
You shouldn't see any shaking/jitter in the transition.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.3.1
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/232654771-8182efd6-d634-40e9-b1b8-fc5f8a4d8efd.mp4
https://user-images.githubusercontent.com/43996225/232654786-3a83e4f3-19b9-4403-8df5-a8f864b32925.mov
Expensify/Expensify Issue URL:
Issue reported by: @thesahindia
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1681726366513289
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b7a7c818708f281d
Upwork Job ID:<PHONE_NUMBER>043404800
Last Price Increase: 2023-04-26

Triggered auto assignment to @michaelhaxhiu (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

@michaelhaxhiu Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

@michaelhaxhiu 6 days overdue. This is scarier than being forced to listen to Vogon poetry!

Job added to Upwork: https://www.upwork.com/jobs/~01b7a7c818708f281d

Current assignee @michaelhaxhiu is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to Contributor-plus team member for initial proposal review - @mananjadhav (External)

Triggered auto assignment to @amyevans (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Going external, this one is reproducible & valid!

Might be helpful
I think issue is caused here:
https://github.com/Expensify/App/blob/57388640eb97255c0089c4c316d13747b6a1dd34/src/components/Tooltip/TooltipRenderedOnPageBody.js#L101
When tooltip content changes we let the width be determined itself by setting width to undefined and immediately after that recalculate the width and provide it manually.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Tooltip flickers when the content of the tooltip changes.
What is the root cause of that problem?
If we slow down the video, we can see that when the tooltip content changes, the position of the tooltip is late to update.

Currently, we position the tooltip based on the component width and the tooltip width itself. When the tooltip content changes, the onLayout callback will be called to update the new tooltip width.
https://github.com/Expensify/App/blob/6fb096948d862ee008445f809cff3ecd51b36f55/src/components/Tooltip/TooltipRenderedOnPageBody.js#L177-L178
https://github.com/Expensify/App/blob/6fb096948d862ee008445f809cff3ecd51b36f55/src/components/Tooltip/TooltipRenderedOnPageBody.js#L119-L124
As we can see, we will update the state inside onLayout callback, which could be late because the state is updated after the text content is updated.
content updated -> rendered -> onLayout -> width/height updated -> rendered
What changes do you think we should make in order to solve the problem?

Instead of relying on a fixed unit (tooltip width), we can use a percentage value to position the tooltip.

Remove tooltipWidth calculation from here
https://github.com/Expensify/App/blob/6fb096948d862ee008445f809cff3ecd51b36f55/src/styles/getTooltipStyles.js#L187

Add translateX -50% here (translateX should be put before the scale)
https://github.com/Expensify/App/blob/6fb096948d862ee008445f809cff3ecd51b36f55/src/styles/getTooltipStyles.js#L139-L146

Change the left to 50% and add transform: [{translateX: '-50%'}, {translateX: -horizontalShift}] here
https://github.com/Expensify/App/blob/6fb096948d862ee008445f809cff3ecd51b36f55/src/styles/getTooltipStyles.js#L222

https://user-images.githubusercontent.com/50919443/234776646-2ef430b4-0b37-4998-a6c1-7b0e461c2401.mov

I think @bernhardoj proposal looks good. We'll just have to check any regression absolute tooltips.
@amyevans all youts.

Just tested that my proposal won't cover the case when the tooltip is at the edge of the screen. That is because we still use tooltipWidth to calculate horizontalShift

Updated my proposal to cover all cases with useLayoutEffect

Niiiice one @bernhardoj thanks for being proactive on that. Let's get final 👍 from @amyevans and I'll proceed with assigning you.

Proposal looks great, assigning you @bernhardoj 🎉
We should be able to close out https://github.com/Expensify/App/issues/16211 as a byproduct of the bug fix as well 💪, 2 🐦 1 🥌

Will open the PR soon

PR is ready.

Thanks for the fast work @bernhardoj, next step is to get this reviewed by @mananjadhav

I've started with the review and going through the updated changes by @bernhardoj. Relatively larger than expected as we're changing the class component to functional component.

@amyevans I couldn't pinpoint to the exact PR causing this. We've been using measureTooltip since a long time. I am suspecting this PR must've caused it https://github.com/Expensify/App/pull/8494 but I couldn't confirm by running the specific branch.
Also, considering this isn't going to change that often, and we've moved to a functional component, I don't think we need a regression test here. @amyevans @michaelhaxhiu if you still feel we should add one, here's a proposal.
Regression Test Proposal

Open any chat
Click on their profile image of any participant
Hover over the Copy icon next to the user email/phone number
Verify a tooltip shows with a text "Copy to clipboard"
Click the Copy icon
Verify the tooltip text changes to "Copied"
Wait for a while and verify the text changes back to "Copy to clipboard"
Verify that the tooltip doesn't reposition when the text reverts.
Repeat the steps 5-8 few times to verify step 9 for each iteration.

I think this is not a regression as the initial implementation of the Tooltip has been using onLayout.
Btw, we have a regression (my bad) here https://github.com/Expensify/App/issues/18878#issuecomment-1550365511. I have found the issue and let me know if I should open the PR now.
cc: @mananjadhav @amyevans

Yeah @bernhardoj please open the PR.

PR is ready. https://github.com/Expensify/App/pull/19097

Please nudge me if I don't respond when it's time to process payment here (e.g. after the regression PR is merged and cleared)

Putting a date in the title that's more realistic, just so this doesn't appear behind.

Also, considering this isn't going to change that often, and we've moved to a functional component, I don't think we need a regression test here.

Agreed, I don't think we need to add a regression test for this.

@michaelhaxhiu Here's the last comment wrt to the Tooltip. This is ready for payout now, but also note it caused two regressions.

Actually, we still have 2 regression to be solved.

https://github.com/Expensify/App/issues/19842 - wrong height issue
https://expensify.slack.com/archives/C049HHMV9SM/p1685608239576139 - we should add preferred locale to tooltip key

Thanks for the insight! Agreed w/ @bernhardoj, let's hold payment until after those regressions are fully resolved.

I checked the PR. The changes look fine, but @michaelhaxhiu @kavimuru do we have a set of regression test suite that you can share wrt Tooltips? I just want to make sure we cover everything before we go ahead and merge this one?

Quick bump @michaelhaxhiu @kavimuru @amyevans if you can help with the previous comment?

hmm maybe we can ask @applausebot for their input as they interact the most with the test suites, I'm not sure off the top!

@kavimuru @applausebot Quick bump.

@isagoico recommended the following from our internal slack channel 🧠
We currently don't have tests to cover that tooltip. Imho we can add these tests to the TC that I shared above:
User detail page

Click on the header of the conversation
Verify there's a copy option next to the users email
Hover over the copy button
Verify a tooltip is displayed with the action ("Copy to Clipboard")
Click on the copy button
Verify the tooltip displays "Copied"

Thanks I think it won't cover all the regressions, may be with this issue we could update the Tooltip regressions along the way? I'll start with the given list and some that I am aware of.
On top of my head I can think of:

Tooltip doesn't flicker
Absolute Position of the tooltip works as expected
Copied resets to Copy to Clipboard after few seconds on Safari
Long Tooltip the arrows are aligned with the Bubble.
Multiline Tooltips show up without text being truncated
Switching between Pin/Unpin tooltip doesn't flicker and Unpin doesn't go multi-line.

@michaelhaxhiu I'll need a day to cover the testing for all the scenarios and still keeping 🤞. I don't want to add any more regressions 🙈

Since there was 2 regressions, the payout would be as follows:

Bug bonus $250 - @thesahindia
Contributor - $1000
C+ - $250

@michaelhaxhiu There's still another PR (https://github.com/Expensify/App/pull/20340) awaiting review/deployment/holding period so I'm not sure we're clear to proceed

ts to Copy to Clipboard after few seconds on Safari
Long Tooltip the arrows are aligned with the Bu

Hi there, these are all visual checks that are indirectly tested with the proposed steps here. We ask the testers to check for any visual issues when executing the steps without being explicitly told so in the step instructions. For context, we're avoiding having a extremely granular regression that checks every visual behavior of a feature and focusing mostly on functional behavior.
Going to add Copied resets to Copy to Clipboard after few seconds as this fits with the tests we want to cover.

@michaelhaxhiu we can add these 2 steps (7 & 8) to cover the button reset:
User detail page

Click on the header of the conversation
Verify there's a copy option next to the users email
Hover over the copy button
Verify a tooltip is displayed with the action ("Copy to Clipboard")
Click on the copy button
Verify the tooltip displays "Copied"
Web/Desktop - Wait a few seconds while hovering over the tooltip
Web/Desktop - Verify the tooltip changes back to "Copy" after a few seconds

wdyt?

I'll be testing this PR today.

@dukenv0307 yes i updated my prior comment to be more accurate.
We'll get this paid when the fix(es) are deployed to production.

Paid @mananjadhav on New Dot

@dukenv0307 can you share your upwork profile, or apply to the upword job directly?
https://www.upwork.com/jobs/~0139362b8c0838a40f

I invite @bernhardoj to the job just now.

Closest I could find the PR was https://github.com/Expensify/App/pull/8494 but I am not confident, hence I am not posting it on the PR. This is because I am not sure if we had Copy to Clipboard and we also made multiple changes in the component while fixing https://github.com/Expensify/App/issues/13146
I don't think this specific issue required a regression, but I think it makes sense to have a regression suite for Tooltip atleast? I have mentioned some cases here and we've got two additional cases here and here. @michaelhaxhiu Could you help with this? I am not sure if adding regression suite would be considered and what would be the steps here?

Re: the regression, I already made the regression test and linked it (yesterday). All set there.

Thanks @michaelhaxhiu.

@dukenv0307 lmk when you accept the job offer. Just need to pay you & this can be closed.

@michaelhaxhiu are we done with the payout? Can we close this one out?

paid now


Add rule: Remove useless lint:ignore / lint:endignore comments

Remove useless lint:ignore:<check name> and lint:endignore as you are now using SonarQube to check your code.
Deprecate corresponding puppet-lint rule

Fixed in https://github.com/iwarapter/sonar-puppet/pull/201


Missing Logistic Regression in 2019 Beta

In the 'DAAL Developer Guide 2019 Beta', logistic regression is documented and the example code ./examples/cpp/source/logistic_regression/log_reg_dense_batch.cpp is referenced. But I cannot find this anywhere in either daal_2019_beta or daal_2019_beta_experimental branches.

I am sorry for the confusion here. Logistic regression is not in Intel DAAL 2019 Beta, it will be in Intel DAAL 2019 Gold. If you need further information about logistic regression, we may communicate through emails. Thank you!

Thank you for the clarification!


Define all Cookie arguments explicitly

This adds support for Symfony 4.2, which deprecates not defining all the arguments as some of their default values are scheduled to change in Symfony 5.0.

Any news on this?

@dunglas Could you please take a look at this?

@dunglas Is this ready to be merged?

Can you check why Travis is red?

Travis is not red. AppVeyor is. It cannot find the path to c:\tools\php72.

Can you try to replace php72 by php73 please? It should fix the build.

@iambrosi you can probably revert that last commit and just change the cinst -y php line to cinst -y php --version 7.2.17
Looks like even in your earlier builds it was pulling 7.3 and then failing, and when upgrading a dependency is looking for PHP < 7.3

@dunglas Tests in AppVeyor have been fixed. Thanks @sparksterz for the tip! Also, fixed a new spec failure by a new method call added in https://github.com/symfony/symfony/pull/29944

Bump @dunglas. Is there any blocker to merging this PR?

Thanks @iambrosi


Problem with using sqlite-jdbc from self-contained application on Linux

Hi,
I have a question about using library from bundled environment created by  Java Packager on Linux (Fedora 31 - 64bit). After creating rpm package using jpackager (using 1.8 java sdk) and installing it on the system, I'm getting following error:
symbol lookup error: /tmp/sqlite-3.32.3-afe34c11-93ab-4c31-9d2d-9aa26ae2b08f-libsqlitejdbc.so: undefined symbol: pthread_mutexattr_init
I tried to play with compile and linked flags in Makefile.common to see if it will resolved the issue, but with no luck. After using -pthread or -lpthread I'm getting another similar error:
symbol lookup error: /tmp/jna-1659220596/jna5673263922947169578.tmp: undefined symbol: pthread_once
Application runs without issues if started from Intellij Idea using same sdk. Any help or direction will be appreciated as this blocks a possibility to distribute my app.

Does your pthread implementation provide this function at all?

I'm not really familiar with compiling and linking c++ code, could you please tell me how to check that? I have gcc version 9.2.1 installed.

Please open pthread.h from /usr/include and search for the symbol. It is a POSIX definition, it should be there. Even my stoneage RHEL 7 has it:
$ grep -r pthread_mutexattr_init /usr/include/
/usr/include/pthread.h:extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
/usr/include/bits/libc-lock.h:  __pthread_mutexattr_init (&__attr);                  \
/usr/include/bits/libc-lock.h:extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr);
/usr/include/bits/libc-lock.h:# pragma weak __pthread_mutexattr_init
/usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/gthr-default.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/gthr-default.h:      __r = __gthrw_(pthread_mutexattr_init) (&__attr);
/usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/gthr-posix.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/gthr-posix.h:      __r = __gthrw_(pthread_mutexattr_init) (&__attr);
/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/gthr-default.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/gthr-default.h:      __r = __gthrw_(pthread_mutexattr_init) (&__attr);
/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/gthr-posix.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/gthr-posix.h:      __r = __gthrw_(pthread_mutexattr_init) (&__attr);

This is the output

grep -r pthread_mutexattr_init /usr/include/
/usr/include/c++/9/x86_64-redhat-linux/32/bits/gthr-default.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/9/x86_64-redhat-linux/32/bits/gthr-default.h:      __r = _gthrw(pthread_mutexattr_init) (&__attr);
/usr/include/c++/9/x86_64-redhat-linux/32/bits/gthr-posix.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/9/x86_64-redhat-linux/32/bits/gthr-posix.h:      __r = _gthrw(pthread_mutexattr_init) (&__attr);
/usr/include/c++/9/x86_64-redhat-linux/bits/gthr-default.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/9/x86_64-redhat-linux/bits/gthr-default.h:      __r = _gthrw(pthread_mutexattr_init) (&__attr);
/usr/include/c++/9/x86_64-redhat-linux/bits/gthr-posix.h:__gthrw(pthread_mutexattr_init)
/usr/include/c++/9/x86_64-redhat-linux/bits/gthr-posix.h:      __r = _gthrw(pthread_mutexattr_init) (&__attr);
/usr/include/pthread.h:extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)

and

ldd /tmp/sqlite-<IP_ADDRESS>-43671722-090e-4788-aded-a4a0da4fdd9b-libsqlitejdbc.so
linux-vdso.so.1 (0x00007ffcc596d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f67f1df4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f67f22c2000)

Please try https://stackoverflow.com/q/2127797/696632.

As I stated in the openning I tried to use -pthread, but get another error:
symbol lookup error: /tmp/jna-1659220596/jna5673263922947169578.tmp: undefined symbol: pthread_once
I would also add that the problem occures only when launching jar from bundled java runtime. When using direct java -jar with same jdk applicaiton works as expected...

What do you mean by "bundled Java runtime"=

Using https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javapackager.html you can create executable (for windows, linux and macos) that includes java runtime - this way user can install application and does not have to worry if he has java installed.

OK, there must be some issue with the native loading. This is out of scope here. You contact some OpenJDK mailing list about that. It is likely that the runtime linking is different then.

This resulted in jdk bug https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8257474.

I assumed so!


Add MODIS LAI data for year 2008

Add monthly LAI data for the year 2008 for use by ClimaLand.
Checklist:

[x] I created a new folder $artifact_name

[x] I added a README.md in that that folder that

[x] describes the data and processing done to it
[x] lists the sources of the raw data
[x] lists the required citation, licenses

[x] If applicable (e.g., for Creative Commons), I added a LICENSE file
[x] I added the scripts that retrieve, process, and produce the artifact
[x] I added the environment used for such scripts (typically, Project.toml
and Manifest.toml)
[x] I added the OutputArtifacts.toml file containing the information
needed for package developers to add $artifact_name to their package

[x] I uploaded the artifact folder to the Caltech cluster (in
/groups/esm/ClimaArtifacts/artifacts/$artifact_name)
[x] I added the relevant code to the Overides.toml on the Caltech Cluster
(in /groups/esm/ClimaArtifacts/artifacts/Overrides.toml)
[x] I added a link to the main README.md to point to the new artifact

I am adding @kmdeck here too since she mentioned that the date structure should be compatible to ERA5 data. Did you test the model runs with the new data?

How hard would be to get the data directly from MODIS?

How hard would it be to get the data directly from MODIS?

It is doable but a little bit of work (see details here: https://lpdaac.usgs.gov/news/lp-daac-releases-modis-version-61-leaf-area-indexfpar-data-products/), and that is why so many papers and groups download it and do their own. Christian's group has all the data download in the Caltech servers already, so it would make sense to not duplicate the work if possible.
Other venues are Google Engine (https://developers.google.com/earth-engine/datasets/catalog/MODIS_061_MCD15A3H and https://developers.google.com/earth-engine/datasets/catalog/MODIS_061_MOD15A2H). MODIS is on board of two satellites (Terra and Aqua), that is why they are divided. There is also the Chinese group that @kmdeck got the soil data from.

I am adding @kmdeck here too since she mentioned that the date structure should be compatible to ERA5 data. Did you test the model runs with the new data?

I haven't tested anything with it, just got the data setup. I can start a branch on ClimaLand to do so.

I am adding @kmdeck here too since she mentioned that the date structure should be compatible to ERA5 data. Did you test the model runs with the new data?

I haven't tested anything with it, just got the data setup. I can start a branch on ClimaLand to do so.

it would be great, if you dont mind! I have sometimes had to go back and forth a few times to get things to work.


fix(bins): improve errors when server fails

Example output:
Error: GrpcServer error
Caused by:
0: transport error
1: error creating server listener: Address already in use (os error 98)
2: Address already in use (os error 98

bors merge

bors merge


Add msdf-gdx and libgdx-kotlin-template

I added two of my projects:

msdf-gdx - Provides lightweight utilities to draw high-quality MSDF (multi-channel signed distance field) text on LibGDX.
libgdx-kotlin-template - Template project for libGDX using Kotlin and Kotlin gradle DSL.

I hope this is awesome enough and that you don't my the self promotion.

This really is awesome, thank you for the contribution!
Would you mind splitting the issue in two though, one for each project? This will make the merge process easier and faster.
msdf-gdx looks incredible and I think it should be included in the list. The only confusing part is how to create a font, but keep an eye on @guichazan's work as he's working on an app that simplifies this process. It will be great for both libraries to work together (or at least mention each other in their READMEs) once it's released.
About the PR, please change LibGDX in msdf-gdx's description to libGDX. 😄

Would you mind splitting the issue in two though, one for each project? This will make the merge process easier and faster.

I just opened two separate pull requests, is that what you needed?

The only confusing part is how to create a font

Yes I'm aware that the process isn't very straightforward, I might make some script to improve that soon.

please change LibGDX in msdf-gdx's description to libGDX.

Fixed!


Word file EDIT issue (when Read , Write takes a bit long)

In the attached project we have a class named NewFileStream in which Read and Write operations are changed to last a bit longer by adding Thread.Sleep(50) and in this case we are unable to save our changes in Word file by pressing CTRL+S. We try to imitate  the encryption/decryption processes that we have in our actual project. As we found out that the problem is just the time that encryption/decryption takes we did it like this.
The change is made on the sample downloaded from your git repo.
You can try to reproduce the issue with the attached word file.
Drive.zip
Encryption research.docx

Hi @MagaKhachatryan ,
Could you describe exactly what Word error is showing ?
Have you looked at the procmon output to see what is exactly happening between word and the file ?

HI @Liryna ,
Thanks for your response.
The problem is that Word is not showing any errors, it just doesn't save the file. So when we edit something on Word file , then try to save it by pressing CTRL+S , "Saved to this PC" doesn't appear on the top of the file, so  if we try to close the file after this it asks us if we want to save it.
And about Process Monitor , we tried to look at it's output , but when Process Monitor is working the save operation works correctly, but just after closing it, save stops working again. Here is the recording, so you can see what is going on.
https://user-images.githubusercontent.com/48995007/181494093-cfa23b42-9214-4f64-8a8d-7f69562002fc.mp4
P.S. We are able to reproduce the issue on the original sample itself, it just happens more rarely (once from 7-10 tries).
Making read/write longer makes it to happen once of 3-4 tries.

If there is nothing special in the Dokan logs and Procmon cannot record the failure, that's not going to be easy to resolve.
How much threads are used by the Dokan library ?

Yes, it's not an easy case, it took much time to me to understand what's going.
If we do these steps while Procmon is working the issue doesn't happen, so in fact in this case there is no failure to record. This is kind of interesting. How Procmon affects the saving operation? It is a third party tool which aim is to give us information about processes, isn't it?
Thread count of Dokan library is 25.
The attached zip file is a clear reproduction of the issue, if you will have a chance to run it, it would be more clear I think.

This is kind of interesting. How Procmon affects the saving operation? It is a third party tool which aim is to give us information about processes, isn't it?

Yes, it shows what are the Word IO and possibly on which one it is waiting for during the save.

Thread count of Dokan library is 25.

The max number of thread is 16 https://github.com/dokan-dev/dokany/blob/a04b410e692c08a1143c901e8265751c89a70819/dokan/dokan_pool.h#L28
You can look at the logs to see how much are used https://github.com/dokan-dev/dokany/blob/master/dokan/dokan.c#L798

The attached zip file is a clear reproduction of the issue, if you will have a chance to run it, it would be more clear I think.

I just tried to repro on my side by adding the Thread.Sleep(50) before each Read and Write. Beside word being slower to save, it was able to save without any problem.
This must be a timing issue which sometimes it can be hard to repro on another env. The best would be for you to try to repro with procmon and analyze the Dokan logs to see what the difference between success and failure.
Feel free to share here any piece you could find so we can help.

Hi @Liryna .You are absolutely true. I tried to reproduce the issue on other PCs and it didn't happen. We realized that most likely it is a cache problem, because when I renamed the original file on my PC and then moved it to Dokan Drive  it started to work correctly and it worked correctly also for files that hadn't been in Drive before. So, thank you for your response and your patience very much!!!

Glad this got it solved and thanks for updating the issue!


Handle additional status_bar scenarios

Fixes #668.

When there is no status_bar call in a screen (which by default sets status_bar_type to :default), the old approach was to just force UIStatusBarStyleDefault, ignoring whatever global setting might be set in the app bundle. The new approach is to use what's specified in the UIStatusBarStyle entry in the main bundle (e.g. UIStatusBarStyleLightContent), and if that's not set, then use UIStatusBarStyleDefault.
Since "dark" is not longer assumed by default, I added a :dark setting to use UIStatusBarStyleDefault on a screen (useful when the global setting is to use :light).

I think the only possible downside is that :default doesn't always mean UIStatusBarStyleDefault, but instead "whatever the default/global setting is for this app". If you want UIStatusBarStyleDefault (which I feel is maybe a poorly named constant by Apple), you'd use :dark. So this may add confusion.
If we want to stay consistent with Apple's naming, I'll gladly change this to make :default replace :dark, and then make the fallback something different like :unspecified or :global or something.

I love how this PR includes docs, code change, and tests.
@markrickert , @ryanlntn , @ajrobertson , @kevinvangelder , anyone else, any thoughts on the :default thing?

This is awesome. Really how how docs are handled!

No other thoughts? @dmarkow , what do you think?

I just didn't know if a precedent had already been set for aligning symbol name "shortcuts" with iOS constants. It seems that methods such as map_tab_symbols and map_bar_button_system_item align the symbol names perfectly, though you could argue this is because the iOS constants already make sense there. On the other hand, there are methods like on_unload that fire on applicationWillTerminate -- if PM naming was consistent with iOS naming, this method would have been called on_terminate instead.
That being said, my personal preference is to say iOS's naming is dumb (in this case) and they should be called :light and :dark because that's what they are.

That being said, my personal preference is to say iOS's naming is dumb (in this case) and they should be called :light and :dark because that's what they are.

Agree with you here. I'd say go with that. ProMotion usually tries to align with iOS when it makes sense and breaks from it when it doesn't.

This should be ready to merge then. Thanks!

:+1: Thanks Dylan!


Why thermo device doesn't refresh on google home?

I add thermo device, first I cannot see temperature unless I click into it which is not convenient. Second , when I click into it, I don't see temperature refreshed, I have to leave and click back in. Seems that should be the basic feature to have it auto refreshed.

Is your device implementing report state to proactively update the device's state?

Yes, I did implement report state. See below, seems it returns ok, but the display doesn't change. Unless I go in again
Acurite in (3:14:14:35): Channel: 5776452, Temp: 39, Humidity: 39
Update DB from Acurite signal: 5776452, thermostatHumidityAmbient -> 39
Report State request {"requestId":"ff366a3cc","agentUserId":"1234","payload":{"devices":{"states":{"7":{"on":false,"online":true,"
thermostatTemperatureAmbient":48,"thermostatHumidityAmbient":22,"thermostatMode":"cool"}}}}}
Report State request {"requestId":"ff366a3cc","agentUserId":"1234","payload":{"devices":{"states":{"8":{"on":false,"online":true,"
thermostatTemperatureAmbient":39,"thermostatHumidityAmbient":39,"thermostatMode":"cool"}}}}}
Report State response {
"requestId": "ff366a3cc"
}
Report State response {
"requestId": "ff366a3cc"
}

Updating live is not currently supporting

Hello @Fleker, so how about outlet? Does it support for live update in google home app when homegraph receive reportState event?

Updating live generally is not available, even if the home graph gets the new state.

Hello @Fleker,
So what is the purpose of reportState function?

Report state can be used to obtain a live view of device states, which can be useful on visual surfaces like smart displays and phones. It can also enables relative queries for things like Brightness to work without a circuitous route to the cloud server and back just to get the current brightness and then set it.


support pokemon names in different languages

account level setting which changes pokemon names to a different language (this is blocked on adding an account page and update endpoints).
to collect the data, all we would have to do is parse the names from these pages:
http://bulbapedia.bulbagarden.net/wiki/List_of_Japanese_Pokémon_names
http://bulbapedia.bulbagarden.net/wiki/List_of_German_Pokémon_names
http://bulbapedia.bulbagarden.net/wiki/List_of_French_Pokémon_names
http://bulbapedia.bulbagarden.net/wiki/List_of_Korean_Pokémon_names

This is great :) I can help with Spanish if possible. At least in Spanish they stay the same and they are just pronounced differently. I can help also translate the actual website too. Let me know how you guys want to do this.

Why don't you use a more reliable resource like the CSV data from veekun/pokedex?
They are all here already translated: https://github.com/veekun/pokedex/blob/master/pokedex/data/csv/pokemon_species_names.csv

There is a free API available: pokeapi.co
It is probably easier to get and process data from this one. (and these data are updated from veekun/pokedex, I specify it as @itsjavi share this repository)

Apart from the Pokemon names, is there any plan to translate (i18n) the whole app to other languages?


Document behavior of mixing RUSTC and RUSTC_WRAPPER

Through a lot of confused debugging, I found out that the following part of the documentation for RUSTC_WRAPPER is not, in general, correct:

Instead of simply running rustc, Cargo will execute this specified wrapper instead, passing as its command-line arguments the rustc invocation, with the first argument being rustc.

The first argument will in fact be the value of the RUSTC env var, if that is set. I don't know if this is intended, it is certainly not what I expected.

I noticed here it actually says

The first argument passed to the wrapper is the path to the actual rustc.

So it's only the env var part that is wrong/misleading. (But this also probably means we cannot change behavior to make this always pass rustc as 2nd argument, which is a bummer. I guess the current behavior is actually intended then.)


Deprecated?

Is the nuxt module deprecated?
It seems that it is no longer updated or referenced in the doc...

Hello, no it's not, we're putting lots of efforts in gathering packages and doc right now, hopefully we'll work on more maintenance on our nuxt library.
Many thanks for your patience


Wrong reference project jira reference on README.md

https://github.com/apiman/apiman-studio#contribute-fixes-and-features
Reference: http://issues.jboss.org/browse/APISTUDIO
The JIRA project referenced doesn't exists.

Thanks!


How and where to log from ELAM module?

I want to log some information from the ELAM at run-time. The easiest way I could think is logging into vendor's name subkey under \\Registry\\Machine\\ELAM\\VendorName.
The issue is when I do ZwSetValueKey, it returns NT_SUCCESS & ZwQueryValueKey too finds the Value successfully. Now when I load the ELAM hive from user mode, it don't contain my Value written to it. Kindly explain the behavior.
Also, where should we log data if required from the ELAM at run-time?

No comments?

Thanks for the feedback @CodeAbyss and apologies for the delay getting back to you.  We recommend using standard ETW logging.  Changes to the ELAM registry hive are not written to disk, so don't write log info there.  I've updated the page in question with a note containing this info.
The changes should appear on the live site within half an hour.

Thanks for the update.


Military airfields

Apparently the FAA freight information includes imports/exports at military airfields. We need to confirm whether these should be removed from the size term.
> filter(ie_nodes, F4Z == "379")
# Source: local data frame [4 x 4]

#     F4Z  mode  name       prob
#   (chr) (int) (chr)      (dbl)
# 1   379     3 C0766 0.74732753
# 2   379     3 C0764 0.25267247
# 3   379     4   NKT 0.08253038
# 4   379     4   POB 0.91746962

NKT is Cherry Point Marine Corps Air Station, and POB is Pope Army Airfield at Fort Bragg. Should this be in here?


Partitioned tables may not be copied

Partitioned tables may not be copied
Need to check for partitioned tables

Do you want partitions to be handled properly or block partitioned tables? Partition tablespaces can also be exported/imported or we can test support for copy whole partitioned tables too.

Same as FULLTEXT, detect and abort if partitioned tables exists.


decoupling database

Goal here is to allow sqlite compatibility, which will allow in-memory setup with less overhead. Current abstractinos may be able to accommodate this.

block

the array_agg and unnest functions are no longer needed, which would have caused problems

db

all queries use sqlalchemy orm and should be sqlite compatible

distance
cluster

@NYSAG-GS this might not be so tricky for blocking, haven't yet thought about other submodules
for "blocking", oagdedupe/block/blocking.py depends on abstractions BaseForward, BaseConjunctions, BasePairs and a mixin ConjunctionMixin. The abstractions can simply use different database classes, e.g. in place of BaseForward, we might choose between ForwardPostgres vs ForwardSqlite vs ForwardPython.
the mixin will also need to be decoupled and then same logic can apply for this class as well

I think I have a different idea on decoupling here: can we keep all implementation details in dedicated data storage/compute classes? That way, blocking or the other components don't need to know how data is stored or how to compute on it. Components just ask the compute class to do the computations.

So that way, folks can more easily extend to other data stores/compute engines e.g. spark or completely-in-memory pandas: define an abstract base class that lists the functions that need to be implemented (like size, join, sample etc). I can try coding up the framework today

yeah that's what i had in mind yesterday too with "decoupling"; i think for now, allowing sqlite compatibility will be fine and helpful for lighter implementation
But I agree with value of extending to other data stores -- I think current implementation can be extended to sparks, pandas sort of easily; As an example, with Blocking, oagdedupe.block.blocking depends on abstractions BaseForward, BaseConjunctions, BasePairs etc. We can update Forward with ForwardSQL, ForwardPandas, etc and same for the other classes.
Couple things to keep in mind:

the blocking functions are sql functions, like "SELECT first_2_nchars(name)", making it difficult to separate implementation and storage since it's a SQL query
keeping parallelization smooth

ah remembered problem with sqlite compatibility -- some block schemes output arrays, e.g. ngrams


Solana support for native wallet

Add solana support for native wallet
HD wallet implementation

tests

confirm functionality in web
feature flag in web

@0xean Here is the good news and the bad news: Getting basic functionality to work (i.e writing an isolation layer for Solana and supporting deriving addresses and signing) is relatively straightforward.
However, Solana uses ed25519 derivation vs. secp256k1 for all other supported chains. This means that addresses being derived with secp256k1 would be wrong because of wrong elliptic curve., and this is touching the cryptographic layer deeply which

a. is quite a lift to add, even while leveraging libs like @noble/ed25519
b. is not something I feel not even close to confident hacking around, and I believe we should sync with @kaladinlight on the follow-up work, as only those who understand crypto(graphy) should roll crypto

Plan of action

Author base functionality for Solana, including address-derivation (using wrong current ed25519), signing, and tests (soon)
Open PR for review when all these are implemented but make it clear it is blocked and not mergeable until ed25519 support
Continue adding ed25519 support after holidays and syncing (and most likely delegating) with @kaladinlight


Problems with $meteor.object working on chrome but not firefox

I am running into a problem that I cannot figure out, most likely due to inexperience. I created an element directive and have the following code (client/components/master-directive.js):
var module = angular.module('masterControl', ['angular-meteor']);

module.directive('masterControl', function() {
  return {
    scope: {
      name: '@'
    },
    templateUrl: 'client/components/control/master-control-template.ng.html',
    controller: 'masterControlController'
  };
});

module.controller('masterControlController', ['$scope', '$meteor',
  function($scope, $meteor) {
    $scope.control = $meteor.object(Controls, { name: $scope.name } );
    var thing = $scope.control.getRawObject();
    if (angular.isUndefined(thing.stateMap) ) {
      throw new Error('Control statemap is not defined');
    }
  ...
}]);

on the index.ng.html, I have:
<master-control name="test_switch"></master-control>

As per the tutorial, in the Server code I have
if (Controls.find().count() === 0) {
  var controls = [{
      'name': 'chandelier_switch',
      'enable': true,
      'label': 'Chandelier',
      'state': false,
      'stateMap': {
         ...
      }
  }];

for (var i = 0; i < controls.length; i++)
  Controls.insert(controls[i]);

When I search for the control in Mongo using the console
db.controls.findOne({ name: "chandelier_switch"})
I get the right object, so the server code inserted the control in the collection as expected, but in the controller code is not working, and the var thing = $scope.control.getRawObject() is not returning the database document.
What am I missing?
Thank you for the great work you're doing, and any help you can provide.

Result of calling $scope.control = $meteor.object(Controls, { name: $scope.name } ) in Chrome 43.0.2357.81 (64-bit):
 SubObject
   $$collection: CollectionExtensions._wrapCollection.ns.Collection
   $$id: Object
   $$internalProps: Array[13]
   $$options: undefined_id: "c7fFZgJjJokQutLND"
   autorunComputation: Tracker.Computation
   enable: true
   getRawObject: () {                                      // 6
   label: "Chandelier"
   name: "chandelier_switch"
   reset: reset() {                                           // 42
   save: save(docs) {                                    // 17
   show_label: true
   state: true
   stateMap: Object
   stop: stop() {                                              // 66
   subscribe: () {                                            // 12
   unregisterAutoBind: deregisterWatch() {     //13925
   unregisterAutoDestroy: () {                          // 14649
   __proto__: SubObject

In FireFox 38.0.1
 SubObject
  $$collection: Object
  $$id: Object
  $$internalProps: Array[13]
  $$options: undefined
  autorunComputation: Object
  getRawObject: AngularMeteorObject.getRawObject()
  reset: reset()
  save: save(docs)
  stop: stop()
  subscribe: () AngularMeteorObject.subscribe()
  unregisterAutoBind: deregisterWatch()
  unregisterAutoDestroy: $RootScopeProvider/this.$get</Scope.prototype.$on/<()
  __proto__: Object

As you can see, in Firefox no MongoDB document properties in the result from calling $meteor.object(Controls, { name: $scope.name } )

just a note (this does not explain the ff / chrome difference if it is the same code, and I would not know the browsers internals to that level) - your template uses name="test_switch" while your document has "chandelier_switch".

@Tallyb thank you for noticing that, I just pasted samples from different tests. Either using the test_switch and chandelier_switch, the end result was the same.

Figured this one out my self. Documenting solution for future users with similar issues. Basically it was not a difference in browser internals in supporting collections and $meteor.object, but the fact that in Chrome collections were made available to the client before the meteor.object() ran, and in Firefox they were not. So Chrome got good results and Firefox got undefineds.
Maybe Chrome is faster... sometimes, as the code also failed on Chrome on occasion.
The solution was removing the autopublish package by running meteor remove autopublish and adding a collection subscription in the client, and a publish in the server.
Server code:
Controls = new Meteor.Collection('controls');

// Publish the Controls collection to the clients, selector and options are passed from the client
Meteor.publish('controls', function (selector, options, publisher) {
  console.log('Controls subscription requested by client');
  return Controls.find(selector, options);
});

Controls.allow({
  insert: function(){
    return true;
  },
  update: function(){
    return true;
  },
  remove: function(){
    return true;
  }
});

Then on the client:
// Only need this if server and client code are not in the same file
Controls = new Meteor.Collection('controls');

$meteor.subscribe("controls", { name: $scope.name }).then(function (handle) {
    console.log('Client Controls subscription ready');
    self.subscription = handle;
    // Get the control from the database and bind it to Angular's scope
    $scope.control = $meteor.object(Controls, { name: $scope.name } );

    // Get the actual object without the angular wrapping
    self.thing = $scope.control.getRawObject();
});

Then I added a subscription ready check to all $scope functions to make sure that there is no access to collection data until the client subscription is finished.
$scope.getImage = function() {
  if (!self.subscription.ready ) {
    return '';
  }
  return self.thing.stateMap[$scope.control.state].image;
};

Code now runs well in both browsers.
If you have a better way of doing this please let me know.

@paixaop very nice and thanks for showing your solution.
I would just add that you should use:
$scope.$meteorSubscribe

Instead of
$meteor.subscribe

so that the subscription will be automatically closed on scope destroy and
$scope.$meteorObject

Instead of
$meteor.object

to automatically close the inner autorun on scope destroy as well


Small changes to fix e2e errors in dispatch-solo

This change adds a small wait between deleting base images/images and reseeding them before testing updates. It also fixes a small issue in the API manager that used the incorrect idea.


no results found for all searches

Everything I search for is getting "no results found".
Some examples:

I have a saved playlist, but I cann't add other videos as I don't find anything:

Using version:

Chrome version:

http://thenextweb.com/insider/2015/07/21/how-youtube-killed-an-extension-with-300000-users/

@MeoMix , I'm sorry. I didn't know this.
I will try to use my api key :+1:


Various fixes/enhancements to shell modules

Make available shells more accessible when shell is enabled. Change
dependencies to allow automatic selection of features needed by each module.

I'm sorry to see our dedicated board_shell test go. It is my go-to applications when I quickly need to debug something (driver, subsys, dts, board bringup) from the shell.

I'm sorry to see our dedicated board_shell test go. It is my go-to applications when I quickly need to debug something (driver, subsys, dts, board bringup) from the shell.

you should not get the same behavior with
west build -t run  -b <board> samples/hello_world/ -- -DCONFIG_SHELL=y

The way it was modified did not really work, only a few board build and everytime I was trying to use it i had to change the prj.conf...


Metrics compute per batch and not per sample

🐛 Bug
Some metrics (e.g. f1-score) compute per batch and not per sample (e.g. per image). What most people expect is that the metric is computed for each sample and then aggregated. The current behavior is not well documented,  which can lead to potential errors in evaluation.
To Reproduce
Code sample
>>> import torch
>>> from pytorch_lightning.metrics.functional import f1_score
>>> pred = torch.tensor([[0, 1], [0, 1]])
>>> target = torch.tensor([[0, 1], [0, 0]])
>>> f1_per_batch = f1_score(pred=pred, target=target, num_classes=2, class_reduction="none")

>>> f1_sample_0 = f1_score(pred=pred[0], target=target[0], num_classes=2, class_reduction="none")
>>> f1_sample_1 = f1_score(pred=pred[1], target=target[1], num_classes=2, class_reduction="none")
>>> f1_mean_across_samples = (f1_sample_0 + f1_sample_1) / 2

>>> f1_per_batch
tensor([0.8000, 0.6667])

>>> f1_mean_across_samples
tensor([0.8333, 0.5000])

However, f1_per_batch != f1_mean_across_samples.

thank you! We are looking into to this is other issues.


Working with Deephaven tables > Joins: Inexact, time series, and range

This ticket has been closed by https://github.com/deephaven/deephaven.io/pull/3693.


AsPyRef is stripped down, not in changelog

The AsPyRef trait was stripped down considerably; methods with, with_mut, into_py, into_mut_py are gone.
The changelog should mention how to rewrite code using them, or if removal was an oversight they should be reinstated.

Now AsPyRef::as_ref is changed to return &PyCell.
For PyCell, please see the guide.

Great, thanks!


Nested schema properties with required flag are required when updating entity

Describe the bug
When using onetable with typescript, in a nested schema if there is a required flag on the properties, those fields will be required when updating the entity. Typescript will produce an error. Nested properties should only be required when creating the entity, not when updating it.
To Reproduce
Run the below code.
Cut/Paste
import { Table, Entity } from 'dynamodb-onetable'
import * as DynamoDB from 'aws-sdk/clients/dynamodb'

const client = new DynamoDB.DocumentClient({ region: REGION })

const ProductSchema = {
  version: '0.0.1',
  client,
  name: 'ProductSchema',
  models: {
    Product: {
      key: { type: String, value: '${_type}#${id}' },
      rangekey: { type: String, value: '${_type}#' },
      id: {
        type: String,
      },
      measurements: {
        type: Object,
        required: true,
        schema: {
          size: { type: Number, required: true },
          frontage: { type: Number, required: true },
          depth: { type: Number, required: true },
        },
      },
      address: {
        type: Object,
        required: true,
        schema: {
          street: { type: String, required: true },
          city: { type: String, required: true },
          state: { type: String, required: true },
        },
      },
    },
  } as const,
  params: {
    isoDates: true,
    timestamps: true,
  },
}

const table = new Table({
  client,
  name: TABLENAME,
  schema: ProductSchema,
  logger: true,
  timestamps: true,
})

type ProductType = Entity<typeof ProductSchema.models.Product>

export const ProductModel = table.getModel<ProductType>('Product')

async function test() {
const update = {
  product: {
    name: `Lot ${Math.random()}`,
    stage: 'new updated stage',
    price: {
      price: 444.444,
    },
    measurements: {
      size: 1.2,
      frontage: 1.3,
      // depth: 1.4,
    },
    address: {
      street: '123 New Street',
      city: 'New City',
      postcode: '4212',
      state: 'NSW',
    },
  },

}

const { id, product: productUpdate } = update

const product = await ProductModel.update(
  {
    id,
    ...productUpdate,
  },
  {
    return: 'get',
    log: true,
  },
)
}

test()

You will see if you uncomment depth in the update variable the error goes away.
Expected behavior
The required flag for nested properties should only produce errors If a value is not provided on the creation of the entity, not when updating the entity.
Environment (please complete the following information):

Node 14.19.1
MacOS 12.3
OneTable 2.38
TypeScript Version "^4.6.3"

Additional context
Add any other context about the problem here.

Hi, I think this is the same issue as #358.
The typescript warning is correct for the current behavior. i.e. it is telling you that if you supply the object, you must supply all required nested fields.
If you agree, let's close this and continue the discussion in #358

Yes, I think it's somewhat related but not sure if the issue should be closed. When creating an item any field marked as required must be provided as it is necessary for the creation of the item, the item should'nt/cannot exist without the required fields. However, after the creation of the item, those "required" parameters have been met, and you should be free to update the item in your database as you see fit. That is how it currently works for fields that are not in an object, if the field is marked as required they are not required when updating the ite, only when creating. If you were to change the method to a 'create' instead of 'update' and then commented out the name field from the update variable you will rightly see an error, but when you change the method back to an update the error for the name field not being provided will go away. I believe the same functionality should exist for the nested fields inside an object.
I guess this is how #358 is related, if you don't provide all required nested fields in an object during an update, and any nested fields that were previously existing will be removed and replaced with the update.
The issue is that updates should be as flexible as possible. It's not possible to foresee all possible future data changes that may occur and accomodate that in the schema. That is why in my opinion that updates should be flexible. Currently, onetable is dictating the form of my update and what should be included in my update.

No disagreement, updates should be flexible, but the current implementation will overwrite the contents of nested objects unless all properties are provided (See #358). I know this is not ideal. Nested schemas were added after the original implementation and if I could have it again, I'd change the default to not overwrite. Because we have existing code that assumes this behavior, any change must be done in a non-breaking way.
The typescript warning currently supports the behavior described in #358 which is that you will overwrite nested fields if you don't provide them on an update. So the typescript warning is actually helping if you have designated them as required.
Lets continue this discussion on #358.


Error using with Quasar

Describe the bug
Using the BLE plugin with the Quasar framework crashes the app on launch with such an error
SyntaxError: The requested module '/src-capacitor/node_modules/throat/index.js?v=0f0edd62' does not provide an export named 'default' (at queue.ts:1:8)

To Reproduce
Steps to reproduce the behavior:

npm init quasar (Create new Quasar app)

What would you like to build? › App with Quasar CLI, let's go!
Pick Quasar version: › Quasar v2 (Vue 3 | latest and greatest)
Pick script type: › Typescript
Pick Quasar App CLI variant: › Quasar App CLI with Vite
Pick a Vue component style: › Composition API
Pick your CSS preprocessor: › Sass with SCSS syntax
Check the features needed for your project: ›  (None)

Go to newly created project folder
npx quasar mode add capacitor (Add capacitor platform)
cd src-capacitor
npm i @capacitor/core@latest @capacitor/cli@latest (Update capacitor from v2 to v3.6.0)
npm i @capacitor-community/bluetooth-le (Install plugin)
Open path/to/project/src/pages/IndexPage.vue
Add import { BleClient } from '../../src-capacitor/node_modules/@capacitor-community/bluetooth-le'; (Import plugin)
Inside setup () { ... } add before return
const init = async () => {
  await BleClient.initialize();
}

onMounted(init);

Then for web
10. npx quasar dev (Runs app and opens browser)
11. Error in browser's console
For android
10. npx quasar dev -m capacitor -T android (Adds android platform to the capacitor, builds the app, opens Android Studio)
11. Run the app in Android Studio
12. Inspect device (e.g. chrome://inspect/#devices)
13. Error in browser's console
Expected behavior
Plugin initializes successfully
Screenshots

Plugin version:

@capacitor-community/bluetooth-le: 1.8.3

Desktop:

OS: macOS
Browser chrome
Version 103.0.5060.114

Smartphone:

Device: OnePlus Nord
OS: Android 11 Oxygen OS <IP_ADDRESS>.AC01BA
Browser stock browser?

This plugin has a web layer, which is also running when using the plugin on Android. It's in this web layer where the package throat is used.
I think you will have to install the plugin also in the root project directory (not only in src-capacitor) and then import it as usual import { BleClient } from '@capacitor-community/bluetooth-le';
This way npx quasar dev and npx quasar build -m capacitor -T android work for me.

Yes, it looks like the quasar/vite dev server does some magic. I think the problem comes from how quasar structures projects with having two separate package.json and node_modules folders. This is usually not the case for capacitor projects. So I don't think this can be fixed in the plugin (or I don't know how), and it would have to be fixed in quasar.

Thanks for the help. I solved the problem by installing Quasar into the already set up vite project instead of using Quasar CLI

Would be nice if there is some proper solution for it. I am facing same issue currently, but creating vite project and adding quasar to it seems like a workaround and not a solution.
I do understand it's not an issue with plugin, but quasar. But maybe someone can help to tackle that down ?


[WIP] Multiply Decorated Cospans

Added multiply decorated morphisms and made RelOlogModels and PetriModels AbstractModels

I just tried to run the demo and got this error
MethodError: no method matching ⊔(::Array{Any,1}, ::Array{Any,1})

Stacktrace:
 [1] pushout(::Span{Decorated{FinSetMorph{UnitRange{Int64},Array{Int64,1}},Array{Any,1}},Decorated{FinSetMorph{UnitRange{Int64},Array{Int64,1}},Array{Any,1}}}) at /Users/jfairbanks6/.julia/dev/SemanticModels/src/modeltools/CategoryTheory.jl:294
 [2] top-level scope at In[43]:3

I think we might want to consider thinking of a MultiplyDecorated Cosan equivalent to a  Singly Decorated Cospan where the decoration happens to be a tuple.

I think how it is now represents that well. A singly decorated cospan is currently a multiplydecorated cospan with a single decoration

What error are you talking about? I cannot recreate. I restart the kernel and rebuild and it works.

Restarting the kernel fixed it


[Question] how can I set the api server IP of  k3s in docker to my IP instead of  <IP_ADDRESS>?? thx!

Is your feature request related to a problem or a Pull Request
Please link to the issue/PR here and explain how your request is related to it.
Scope of your request
Do you need...

a new noun (next to e.g. cluster, node, etc. used via k3d <noun>)?
a new verb (next to e.g. cluster create, node start, etc. used via k3d <noun> <verb>)
a new flag for a command (e.g. k3d cluster create --<your-flag>)?

which command?

different functionality for an existing command/flag

which command or flag?

Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Hi @myq, thanks for your question.
Please next time ask such questions in either GitHub Discussions or in the #k3d channel in the Rancher Users Slack.
You'll also find the answer in the k3d help text (k3d cluster create --help) other issues and in the documentation: k3d cluster create --api-port <IP_ADDRESS>:6443, where you replace <IP_ADDRESS> with your IP and 6443 with whatever port you'd like to use :+1:

Hi @myq, thanks for your question.
Please next time ask such questions in either GitHub Discussions or in the #k3d channel in the Rancher Users Slack.
You'll also find the answer in the k3d help text (k3d cluster create --help) other issues and in the documentation: k3d cluster create --api-port <IP_ADDRESS>:6443, where you replace <IP_ADDRESS> with your IP and 6443 with whatever port you'd like to use :+1:


Make NameID format a regex comparison

urn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress is another (likely) valid format. We should probably just use...
urn:oasis:names:tc:SAML:\d\.\d:nameid-format:(emailAddress|unspecified)

as a regex check.

Not going to make a regex check because these are distinct values. Just going to add it to the list.

Not going to make a regex check because these are distinct values. Just going to add it to the list.

This format is actually not a valid format according to the OASIS standard, so I'm going to not fix this, as that it is technically wrong.

This format is actually not a valid format according to the OASIS standard, so I'm going to not fix this, as that it is technically wrong.


Remove explicit libappindicator dependency

https://github.com/MrCarroll/joplin-desktop-snap/blob/4ce04c742a7830dbf440a56493148d6e51e74d9b/snap/snapcraft.yaml#L33
It's already part of the GNOME extension
❯ find /snap/gnome-3-38-2004|grep libappindica
/snap/gnome-3-38-2004/39/usr/lib/x86_64-linux-gnu/libappindicator3.so.1
/snap/gnome-3-38-2004/39/usr/lib/x86_64-linux-gnu/libappindicator3.so.1.0.0

You test this in an override scriptlet to ensure it will be always there...

Including it ensures it's dependencies will be shipped, which might not necessarily be included in the Gnome extension, but the parts that do overlap won't take space because of the cleanup scriptlet.
I've tried to test removing it now regardless to see if it's actually possible, but I'm having some unrelated issues with building so can't confirm it right now. In the worst case the line does nothing, but it does guarantee a lot by being there.

Having actually tested it, it works absolutely fine and saves 20MB of space in the snap. Thanks for the suggestion!
https://github.com/MrCarroll/joplin-desktop-snap/commit/3e0b39c89df9aeb97f47fdd23e7d4116ff1076d8


[AutoPR cdn/resource-manager] updating desc

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/5499

(message created by the CI based on PR content)


Support postgres uuid

I'm trying to get sqlalchemy-stubs to work with a larger set of types. This would include uuids and JSON, but also encompasses a question about how to effectively create custom subtypes for columns (e.g. an Email str subtype.)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.dialects.postgresql import UUID
from uuid import uuid4 as gen_uuid
from typing import NewType

Base = declarative_base()

# create NewTypes for uuids and emails so that my_email: Email = 'random string' fails.
Uuid = NewType('Uuid', str)
Email = NewType('Email', str)

def uuid4():
    return str(gen_uuid())

class UuidModel(Base):
    __abstract__ = True
    uuid = Column(UUID, primary_key=True, default=uuid4)

class User(UuidModel):
    __tablename__ = 'users'
    fico_score = Column(Integer, primary_key=True)
    first_name = Column(String)

user = User(fico_score=42, first_name='bob')
reveal_type(User.uuid)
reveal_type(user.uuid)
User.first_name.ilike('hi')

gives
script/test_model_typing.py:24: error: Revealed type is 'sqlalchemy.sql.schema.Column[Any]'
script/test_model_typing.py:25: error: Revealed type is 'Any'

I'd love to be able to support postgres uuids (and JSON too!) in our codebase. To accomplish this, I tried mimicking sqltypes.pyi by creating a file sqlalchemy-stubs/dialects/postgresql/base.pyi with contents
from typing import Type, NewType

from .type_api import TypeEngine as TypeEngine
from ..sql.sqltypes import _LookupExpressionAdapter

Uuid = NewType('Uuid', str)

class UUID(_LookupExpressionAdapter, TypeEngine[str]):
    __visit_name__: str = ...
    def get_dbapi_type(self, dbapi): ...
    @property
    def python_type(self) -> Type[Uuid]: ...

and importing it from  sqlalchemy-stubs/dialects/postgresql/__init__.pyi . That didn't seem to accomplish anything. I'd love some direction on the easiest way to contribute and add on to this great project.

For example
class PgUuid(TypeDecorator[Uuid]):
    impl = UUID

You can also try making it generic to work with multiple NewTypes, I hope you can figure it on your own.

Is there a way to include it in the .py file instead of separate .pyi file? I tried that method within the .py file, but I got
  File "./debtsy/lib/sqlalchemy.py", line 36, in <module>
    class PgUuid(sqltypes.TypeDecorator[Uuid]):
TypeError: 'VisitableType' object is not subscriptable

I also tried this:
class PgUuid(UUID):  # type: PgUuid(sqltypes.TypeDecorator[Uuid], UUID)
    pass

but got a error: misplaced type annotation error.
I really appreciate your help. I'd like to submit some quick docs as well as a few other fixes once I figure this out!

Is there a way to include it in the .py file instead of separate .pyi file?

https://mypy.readthedocs.io/en/latest/common_issues.html#using-classes-that-are-generic-in-stubs-but-not-at-runtime


magazine.docx password

Hi,
within our company we synchronize EPEL repositories on a daily basis. Since libxsmm is part of EPEL 8, several packages from libxsmm end up in EPEL 8.
Within the libxsmm-doc RPM package there is a magazine.docx with password protection. Since we (and many other big companies) have the requirement that all downloads have to go through a security proxy, we have a problem with the package: it contains a password protected file and thus this package is blocked because the password is unknown.
Would it be possible to document the password for this file? What sense does it make to distribute an encrypted file?

Dear Martin,
thank you for reaching out and filing an issue!
Would it help you to exclude such files from the Tarball?

What sense does it make to distribute an encrypted file?

We have several encrypted files in our documentation directory as well. The magazine.docx in particular is our original document which was submitted for https://software.intel.com/sites/default/files/parallel-universe-issue-34.pdf and received some (minor) updates since then. Regarding the encrypted PowerPoint files (*.pptm) in the https://github.com/hfp/libxsmm/tree/master/documentation folder, they do not contain secrets either but use some Intel slide-template (we avoid to spread) plus our collected and raw material for some talks (which may keep our talks more exciting plus it allows the hosting institution to be the exclusive source of a published talk/PDF).

Since our make install does not install any of the encrypted files, this issue might be something to be filed/complained with RHEL´s package maintenance. Please let me know if I should go ahead or if you want to do this.

Hello Hans,

Would it help you to exclude such files from the Tarball?

If this could be done, it would be the easiest and best way to prevent the distribution of encrypted files in RPMs (or other package formats).
The other encrypted files you mentioned I can't find in the RPM package for EPEL/RHEL. The reason for this we see in the RPM specfile:
%files doc
%doc README.md documentation/*.md documentation/*.pdf samples CONTRIBUTING.md
%license LICENSE.md

Only *.md and *.pdf are included - which is fine. But because the complete samples folder is included, the encrypted magazine.docx is also included.

Thanks again for your report!

No problem and also thanks for the quick change!


CLI should warn if the arguments are invalid

At the moment any flags/values are accepted by the CLI. It should be strict and report an error.

I don't see any test cases for this in the PR that closed it. I am opening it again.


Spectre variant 2

Second attempt using real injections.
Tested on Intel, AMD and Cavium. Works perfectly on all Intel CPUs and on ARM.
On AMD it's still reliable but much slower.

Just want to confirm: a lot of reviews are currently waiting on me, but is there anything you need from me on this one before the next round?

Just want to confirm: a lot of reviews are currently waiting on me, but is there anything you need from me on this one before the next round?

No.


Update tour and guide doc resource paths to match current behaviour.

This resolves some issues when following the guide:

example code should specify response as Result<Response>
generated controllers do not fall under /api/*
manual controller example updated to align with generated controllers to be clearer.

See #533, this continues @chmelevskij's work :)

Hi @jondot, @kaplanelad, this is another small PR for the guide docs. However I didn't review the playground section. I've marked this commit as Co-Authored by @chmelevskij because his PR came first.


Add manual pinmux testing software and configure PMOD pinmuxing

This PR does the following:

Separates out the PMOD pins in the top_config.toml Pinmux logic so that each individual pin can mux differently.
Adds standard mux options for PMOD0 and PMOD1 based on the Digilent PMOD Interface Specification.
Pulls up the PMOD pins that can be muxed for I2C, as they may not be externally driven does not do this any more, see comment by @GregAC below.
~Adds more SPI block definitions to defs.h~ removed as merged by different PR.
Adds a pinmux testplan checker which can be used to define and execute pinmux testplans that run tests of the Pinmux with manual intervention. See the commit message of de05d80484c7dde35a5bdd896a4ba47b111ec992 for a more complete explanation of what this does.
Adds an "all blocks" pinmux check which tests dynamically muxing between using GPIO, I2C, SPI and UART on the same PMOD0 pinmuxed pins.

See the commit messages for more detailed information.
It's probably best to start looking here to get an idea of exactly what this PR tries to achieve.
The interface for this is currently not quite as nice as I would like: you have to define nested structs separately and then assign them rather than using nested initialisers, and a lot of arguments are being passed to some functions. I also don't seem to be able to use a union to save space. This is primarily because of issues caused by the lack of memcpy - the interface for using the checker would be much nicer if we could copy structs but without that I've tried to make the interface as nice as possible.
To run this test (and any other user-defined testplans that test SPI/I2C), a PMOD SF3 flash and PMOD Colour sensor are required on hand, so that they can be plugged in to be used in tests. UART and GPIO tests simply require a wire to connect the two pins used in a loopback. There is still a test to check the now unused BH1745 luminance and colour sensor, but this isn't being used for the "all blocks" check. This can be run via the standard procedure (building and using mem_helper.sh on the pinmux_all_blocks target) to confirm that it works.
This has been tested to be working manually on an FPGA, and the RTL changes have been tested to pass on FPGA running the existing tests with the pinmux test defined in #227. Ideally merge that PR before this PR though, and re-run the CI tests with pinmux to be 100% sure.

Push was just a rebase on main, and dropped the commit from #227 that adds additional UART blocks as well as the commit from this PR that adds additional SPI blocks, as those were already merged in a different PR (see https://github.com/lowRISC/sonata-system/pull/219)

Resolved all remaining issues so now marking ready for review, please see original edited comment on this PR.

Latest push rebases on main and addresses comments.

Latest pushes were me trying to fix failures in CI (I just forgot to include the new library files in the commit apparently :sweat:)


[Feature Request] Push notification for assigned issues

Send a push notification when a new issue is assigned to the user

We should talk to GitHub about this, maybe ask if they could add GCM(Google Cloud Messaging) to the e-mail service.

Push notifications would be great, but at best the app would currently have to function as a poller unless someone wants to write a backend for us that takes an auth token and beams it back to the user. Closing for now, we can revisit after the first release

Yes. For now i can't be done... we should wait until githubeadds gcm support


add pekko-connectors-bom

We have BOMs for Pekko(Core) and Pekko-HTTP.

https://repo1.maven.org/maven2/org/apache/pekko/pekko-bom_2.13/1.0.2/pekko-bom_2.13-1.0.2.pom
https://repo1.maven.org/maven2/org/apache/pekko/pekko-http-bom_2.13/1.0.1/pekko-http-bom_2.13-1.0.1.pom

I think it useful to have one for Pekko-Connectors.

My project is easier to maintain if the main pekko repos have BOMs that I can more easily aggregate.

It sounds reasonable.  Let's move forward.


How to support infinite loop.

Hi @LeoTianJLL,
As you can see in this issue, we are working on it. Unfortunately, it is quite complicated. That's why we haven't been able to implement a stable version for now.