Workspace - The page scrolls to the top when Account Number field is tapped

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

Version Number: <IP_ADDRESS>
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Issue reported by: Applause - Internal Team
Issue found when executing PR https://github.com/Expensify/App/pull/38318
Action Performed:

Log in with an expensifail account
Create a new workspace
Enable Workflows
Add bank account manually
Input "011401533" as Routing Number
Tap inside the Account Number field

Expected Result:
The page shouldn't scroll by itself
Actual Result:
The page scrolls to the top when the keyboard is visible and the "Account Number" field is tapped. Sometimes it happens when the user swipes to the bottom of the page
Workaround:
Unknown
Platforms:

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

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/a0cddef4-cd3e-4d2d-bb8d-f75ac86287a8
View all open jobs on GitHub

reviewing today!

could not repro on latest


OpenConext mixing-up ACS index numbers

The metadata representation in EngineBlock of an SP with multiple ACS locations is represented differently than it is configured in the service registry Janus.
E.g. the ACS definition in JANUS is:
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.isiknowledge.com/?auth=Shibboleth" index="3"/>
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.webofknowledge.com/?auth=Shibboleth" index="4"/>
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://admin-router.webofknowledge.com/?auth=Shibboleth" index="7"/>
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://admin-router.webofknowledge.com/?auth=Shibboleth" index="8"/>
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://cortellis.thomsonreuterslifesciences.com/ngg/sso/saml2/responseGateway.do" index="10"/>

Note: the index is: 3,4,7,8 & 10
while the metadata representation in EngineBlock is:
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.isiknowledge.com/?auth=Shibboleth" index="0"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.webofknowledge.com/?auth=Shibboleth" index="1"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://admin-router.webofknowledge.com/?auth=Shibboleth" index="2"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://admin-router.webofknowledge.com/?auth=Shibboleth" index="3"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://cortellis.thomsonreuterslifesciences.com/ngg/sso/saml2/responseGateway.do" index="4"/>

Note: the index is: 1,2,3,4 & 5

Fixed in Manage


Implement bundle_transactions_t object renew function

Renewing bundle transaction object is used in MAM and MAM
related implementation. This bundle renew function would
enhance the readability of the codes and make them more clear.

CI failed due to the out-dated toolchain, waiting for #1454 to be merged.


Add JsonSchema fields

Move ResourcePlatform to test-helper sbt-project
Add tests to jsonschema-circe

Fixes #60 and #56

mima fails as expected

cc @kciesielski I think that's related to your recent work on schemas

Thank you for the contribution, @hamnis! OpenAPI uses JSON Schema with some differences, for example $id and const fields are unsupported. Breaking mima by adding these fields would cause runtime errors for .copy calls on Schema if they are not added to the very end of the constructor. However, if you could move them after the extensions field, there should be no issues, at least from what I've quickly checked in my tests. Mima still fails, but copy works in the runtime, so I don't see any more risks, unless you could point some other possible issues I can't think of now?

@kciesielski i have updated with the requested changes, Please have a look again.

@ahjohannessen a tapir release compatible with the above follows shortly - assuming you also have tapir in the classpath.

@adamw Yep 👍


Regression: "ValueError: cannot unstack dimensions that do not have a MultiIndex" when unstacking a MultiIndex

I'm not sure if this is a bug or I'm not using xarray correctly, but I used to be able to do this without crashing. The new behavior seems to have been introduced some time between 0.16.2 and 0.18.2.
What happened:
Traceback (most recent call last):
  File "scripts/repro.py", line 12, in <module>
    ds = ds.unstack(['c'])
  File "/home/darsh/src/notebooks/build/venv/lib/python3.8/site-packages/xarray/core/dataset.py", line 4024, in unstack
    raise ValueError(
ValueError: cannot unstack dimensions that do not have a MultiIndex: ['c']

What you expected to happen:
The code runs without the ValueError exception.
Minimal Complete Verifiable Example:
from xarray import DataArray, Dataset

a = DataArray([0], dims=['a'])
b = a.stack(b=('a',)).reset_index('b')
c = b.stack({'c': ['b']})

ds = Dataset({'d': DataArray(c.data, dims=['c'])}, coords=c.coords)
print('\nBefore:')
print(ds)

ds = ds.unstack(['c'])
print('\nAfter:')
print(ds)

Anything else we need to know?:
Here's the full output from the example on 0.18.2:

Before:
<xarray.Dataset>
Dimensions:  (c: 1)
Coordinates:
  * c        (c) MultiIndex
  - b        (c) int64 0
    a        (c) int64 0
Data variables:
    d        (c) int64 0
Traceback (most recent call last):
  File "scripts/repro.py", line 12, in <module>
    ds = ds.unstack(['c'])
  File "/home/darsh/src/notebooks/build/venv/lib/python3.8/site-packages/xarray/core/dataset.py", line 4024, in unstack
    raise ValueError(
ValueError: cannot unstack dimensions that do not have a MultiIndex: ['c']

What confuses me is that the c dimension is shown as a MultiIndex, but it still complains that it doesn't have a MultiIndex. Directly unstacking ds.d rather than the dataset itself also fails with the same exception.
Oddly, it seems to work if I assign the coordinates after constructing the dataset:
diff --git a/scripts/repro.py b/scripts/repro.py
index ed2ae7c..d5bd6a3 100644
--- a/scripts/repro.py
+++ b/scripts/repro.py
@@ -5,7 +5,7 @@ a = DataArray([0], dims=['a'])
 b = a.stack(b=('a',)).reset_index('b')
 c = b.stack({'c': ['b']})

-ds = Dataset({'d': DataArray(c.data, dims=['c'])}, coords=c.coords)
+ds = Dataset({'d': DataArray(c.data, dims=['c'])}).assign_coords(c.coords)
 print('\nBefore:')
 print(ds)

With that workaround, or by downgrading to 0.16.2, the example doesn't crash:

Before:
<xarray.Dataset>
Dimensions:  (c: 1)
Coordinates:
  * c        (c) MultiIndex
  - b        (c) int64 0
    a        (c) int64 0
Data variables:
    d        (c) int64 0

After:
<xarray.Dataset>
Dimensions:  (b: 1)
Coordinates:
    a        (b) int64 0
  * b        (b) int64 0
Data variables:
    d        (b) int64 0

Environment:
Output of xr.show_versions()

INSTALLED VERSIONS
commit: None
python: 3.8.0 (default, Feb 25 2021, 22:10:10)
[GCC 8.4.0]
python-bits: 64
OS: Linux
OS-release: 5.4.0-73-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: ('en_US', 'UTF-8')
libhdf5: None
libnetcdf: None
xarray: 0.18.2
pandas: 1.2.4
numpy: 1.20.3
scipy: 1.6.3
netCDF4: None
pydap: None
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: None
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: None
dask: 2021.05.0
distributed: None
matplotlib: 3.4.2
cartopy: None
seaborn: None
numbagg: None
pint: 0.17
setuptools: 39.0.1
pip: 21.1.1
conda: None
pytest: 6.2.4
IPython: 7.23.1
sphinx: None
None

This does look like a bug, specifically affecting MultiIndexes containing only one Index.
The issue seems to be that self.get_index('c') returns a normal index:
   4020             non_multi_dims = [
   4021                 d for d in dims if not isinstance(self.get_index(d), pd.MultiIndex)
   4022             ]
   4023             if non_multi_dims:
-> 4024                 raise ValueError(
   4025                     "cannot unstack dimensions that do not "
   4026                     f"have a MultiIndex: {non_multi_dims}"
   4027                 )
   4028
   4029         result = self.copy(deep=False)
   4030         for dim in dims:

ipdb> self.get_index('c')
Index([(0,)], dtype='object')

ipdb> self
<xarray.Dataset>
Dimensions:  (c: 1)
Coordinates:
  * c        (c) MultiIndex
  - b        (c) int64 0
    a        (c) int64 0
Data variables:
    d        (c) int64 0

I'm not sure how common it is for MultiIndexes to have a single index, but we should be general over any number.
We'd definitely take a fix for this.

I'm not sure how common it is for MultiIndexes to have a single index, but we should be general over any number.

That makes sense, and it actually pretty much sums up how I encountered this. My code here is a reduction of a function I wrote that was supposed to work with a fairly general array and subset of its dimensions, and I happened to call it with a one-element dimension list.

We'd definitely take a fix for this.

In principle, I'd be happy to help, but I haven't gone into the xarray internals at all yet, nor do I have the dev environment set up (in particular, I don't have conda), so it would probably take me a while.

This has been introduced in #5102. I'm looking into it.

This should be fixed in #5385.
Side note: the example you gave here, i.e.,
ds = Dataset({'d': DataArray(c.data, dims=['c'])}, coords=c.coords)
ds = ds.unstack(['c'])

should probably be depreciated after the index refactoring in Xarray (currently WIP), which aims to decouple the concepts of coordinates vs. indexes. More specifically, indexes shouldn't be passed implicitly via the coords argument of the Dataset/DataArray constructors anymore, but instead explicitly via the indexes argument (see https://github.com/pydata/xarray/blob/master/design_notes/flexible_indexes_notes.md#22-explicit-vs-implicit-index-creation).

Interesting! Thanks for the heads-up, @benbovy. I'll keep my eye on that.


Why is a given row atypical?

I'd love to have a language feature that, after I find atypical rows, tells me what portion of their atypicality is accounted for by which columns. In other words, what's atypical about this row?
I'm not sure how this should be requested in bql -- suggestions welcome.  Perhaps EXPLAIN TYPICALITY where ...?
I'm not sure how best to implement it. My first thought would be to ask, for each cell, the probability of the cell having that value given all the other cells, and to report "portion of weirdness" as [1 - P(cell | row - cell)] / \sum_{i \in row}[1-P( cell_i | row - cell_i ).
Initial plan is to write something to do this in Python first, then work it into the rest of the language.

Typicality has been deleted.
@fsaad, How should this now be re-cast? I still want to know why a row has low probability according to a model.


Force update

Hi, well i'm here agin to ask a feature.
Its becasue for example if we download manually youtube-dl to a custom dir or in windows we do a bin path for linux apps it don't permit update via -U, this is the super message:
It looks like you installed youtube-dl with a package manager, pip, setup.py or
a tarball. Please use that to update.

Thx.

What's your proposal?
If you've installed youtube-dl manually you'll be able to update with -U. If you installed it with any kind of package manager you should use it for updating since -U option may be removed by package managers at all.

mm, a example wil be more easy, in windows. have a rute /hi/bin here i put my bineries of linux for windows like youtube-dl.exe.
so i download it and then i put the file in that directory.
The directory are in PATH env.
in a cmd i run
youtube-dl -U
and i get the message D:

This is known bug.

don't is that bug
is different, here youtube-dl detects the custom dir as a package manager installation, and i have write permiss.

@dstftw, I think this is a different issue. This seems to be about youtube-dl thinking it was installed via package manager when it wasn't.
This seems to be the relevant code, though it has been so long since I've worked with the codebase that I'm not really sure how it behaves under each of the various distribution methods (compiled executable, source files, etc.).
@latot, what path is your youtube-dl installed in? I tried updating from C:\hi\bin without issue; was that just an example, or the actual path you're using? Are you sure you're using the prepackaged youtube-dl.exe and that there is no separate install from pip or setup.py?

Hi, i test it with linux and windows, in windows i use this path this location /User/Cos/Documents/linux/bin in linux i try this but without path only running from terminal, /home/pipe/Documentos/youtube.dl (file)
i install both downloading from the instructions of main page, i don't install from pip, in windows i use the .exe version in the same page.
Cys.

It works for me:
PS C:\Users\Phoenix\Documents\linux\bin> .\youtube-dl.exe -U -v
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-U', u'-v']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2015.12.21
[debug] Python version 2.7.10 - Windows-8-6.2.9200
[debug] exe versions: ffmpeg N-76776-g3c110b0, ffprobe N-76776-g3c110b0
[debug] Proxy map: {}
Updating to version 2015.12.23 ...
Waiting for file handle to be closed ...
PS C:\Users\Phoenix\Documents\linux\bin> Updated youtube-dl to version 2015.12.23.

Could you run the same command (youtube-dl.exe -U -v) and paste the output here?

Hi, testing if i run the command from the directory it works, but calling with the PATH don't works (the rute of windows is in path).
don't working:
C:\Users\Cos>youtube-dl.exe -U -v
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-U', '-v']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2015.01.11
[debug] Python version 3.4.2 - Windows-7-6.1.7601-SP1
[debug] exe versions: ffmpeg N-77008-g085ab74, ffprobe N-77008-g085ab74
[debug] Proxy map: {}
It looks like you installed youtube-dl with a package manager, pip, setup.py or
a tarball. Please use that to update.

working from directory:
C:\Users\Cos\Documents\Linux\bin>youtube-dl.exe -U -v
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-U', u'-v']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.10 - Windows-7-6.1.7601-SP1
[debug] exe versions: ffmpeg N-77008-g085ab74, ffprobe N-77008-g085ab74
[debug] Proxy map: {}
Updating to version 2015.12.23 ...
Waiting for file handle to be closed ...

C:\Users\Cos\Documents\Linux\bin>Updated youtube-dl to version 2015.12.23.

Hmm. The behaviour of not being about to update without navigating to the directory the binary in is the same as with the other bug, but I have to wonder at what could be happening to cause that error.
@dstftw, I think this should be looked into. Could you consider reopening it?

mm, only to be sure.
the other bug is the perms error? its feels very different, in that bug in fact affect the PATH, but the focus of the error are perms to write, here affects PATH too, but here its the recognition of the installation type (manual vs package manager)

That is the known bug that was mentioned earlier, #2718

@Hrxn, #2718 presents itself as a no write permissions error, like so:
C:\Users\Phoenix>where youtube-dl
C:\Users\Phoenix\bin\youtube-dl.exe

C:\Users\Phoenix>youtube-dl -U
Updating to version 2015.12.23 ...
ERROR: no write permissions on youtube-dl

This check happens in update.py at either line 108 or line 116 right below.
However, the message @latot is encountering is a result of the code at line 55, which seems to be failing to determine the installation type correctly. They don't seem related to me.


Eliminate RenderView orientation, timeForRotation

Orientation, and by extension time for rotation between orientations, was
aspirational and never used.
While this is technically a breaking change, this code never actually
did anything. If you were setting either orientation or timeForRotation,
simply delete those parameters and the code will continue to behave
identically to how it had been.

LGTM, would have been cool. Oh well.


Access-Control-Allow-Origin values sent from proxy destination is concatenated with comma

1. What version of Caddy are you running (caddy -version)?
Caddy 0.9.1
2. What are you trying to do?
I am trying to put Caddy as https frontend to proxy requests to CORS enabled destination server and also to restrict CORS origin to Access-Control-Allow-Origin: "https://client.domain.com".
Since the destination server have CORS support, Caddy retrieves downstream headers as Access-Control-Allow-Origin: "*".
I tried for few hours to omit the destination server's Access-Control-Allow-Origin but Caddy always merges the header value as Access-Control-Allow-Origin: "https://client.domain.com, *" which causes my AJAX uploader to fail with following error:
XMLHttpRequest cannot load.
Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin'
header contains multiple values 'https://client.domain.com, *', but only one is allowed.
Origin 'https://client.domain.com' is therefore not allowed access.

So my question: How could I omit specific header key / value comes from destination server?
3. What is your entire Caddyfile?
<IP_ADDRESS>:443

tls ./certs/domain.crt ./certs/domain.key

header / {
  Access-Control-Allow-Origin "https://client.domain.com"
  Access-Control-Allow-Methods "OPTIONS, HEAD, GET, POST, PUT, DELETE"
  Access-Control-Allow-Headers "X-File-Name, X-File-Type, X-File-Size, X-Requested-With"
  X-Content-Type-Options "nosniff"
  -Server
}

proxy / localhost:8080 {
  max_fails 0

  proxy_header Host {host}
  proxy_header X-Real-IP {remote}
  proxy_header X-Forwarded-Proto {scheme}
}

4.  What did you expect to see?
Access-Control-Allow-Origin: "https://client.domain.com"
6. What did you see instead (give full error messages and/or log)?
Access-Control-Allow-Origin: "https://client.domain.com, *"

How could I omit specific header key / value comes from destination server?

Use header_downstream -Access-Control-Allow-Origin in your proxy directive. :) See docs.
Also, don't use proxy_header (it is deprecated) - use header_upstream instead.


Add Comments

ToDo:
Add an input form (Text area), add a submit post button,  add a delete post button
Note:

Size: Large

Priority: High: add script so that a user can post a comment and be able to delete it.

Related Links:

User Story: Screen Reader
User Story: Screen Reader

Task Branch: Add comment form

Added comment form with button to share comments
Add accessibility


[release-1.4] Allow failures in kind cleanup and log

This is an automated cherry-pick of #18356

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

pilot-multicluster-e2e_istio_release-1.4
edbe9f7e14ebe622253091ff41f75104fc94da0f
link
/test pilot-multicluster-e2e_istio_release-1.4

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


Mixed up method names for get/setResponseContinuationTokenLimitInKb?

I'm not 100% sure if this is a bug, but based on a quick glance it seems that these two methods are mixed up:

I might be missing something, but why does setResponseContinuationTokenLimitInKb get the response continuation token?

@armaansood - this is definitely a mix up issue.
Great find. I will work on this to get it fixed.

This is done and will be out in next release.


add limit and offset to filters

Enhancing https://github.com/lnbits/lnbits/pull/1557 with limit and offset functionality and small improvements to filter class

Codecov Report

Merging #1563 (d703741) into feat-queryfilter (681e0d3) will decrease coverage by 0.19%.
The diff coverage is 23.80%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@                 Coverage Diff                  @@
##           feat-queryfilter    #1563      +/-   ##
====================================================
- Coverage             46.74%   46.55%   -0.19%
====================================================
  Files                    48       48
  Lines                  6934     6947      +13
====================================================
- Hits                   3241     3234       -7
- Misses                 3693     3713      +20

Impacted Files
Coverage Δ

lnbits/core/crud.py
56.25% <ø> (ø)

lnbits/db.py
58.92% <23.52%> (-5.71%)
:arrow_down:

lnbits/decorators.py
70.49% <25.00%> (-0.59%)
:arrow_down:

lnbits/commands.py
57.89% <0.00%> (-1.76%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


fix: some changes to the Dockerfiles and CSV to pass EC

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 16.20%. Comparing base (31037e9) to head (9c0d4a4).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1110      +/-   ##
==========================================
- Coverage   16.25%   16.20%   -0.05%
==========================================
  Files         112      112
  Lines       19882    19882
==========================================
- Hits         3231     3222       -9
- Misses      16364    16375      +11
+ Partials      287      285       -2

Flag
Coverage Δ

unittests
16.20% <ø> (-0.05%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

/retest


Removing typo

changing manager to manage

Hi. I am an automated pull request bot named Curry. There are commits in this pull request whose authors are not yet authorized to contribute to Chef Software, Inc. projects or are using a non-GitHub verified email address. To become authorized to contribute, you will need to sign the Contributor License Agreement (CLA) as an individual or on behalf of your company. You can read more on Chef's blog.
GitHub Users Who Are Not Authorized To Contribute
The following GitHub users do not appear to have signed a CLA:

@rhiann0n

Please sign the CLA here.

Obvious fix. Thanks!


update ppp

Codecov Report

Merging #158 (dea7c9d) into master (63ad875) will increase coverage by 0.05%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #158      +/-   ##
============================================
+ Coverage     72.56%   72.61%   +0.05%
- Complexity      492      494       +2
============================================
  Files            79       79
  Lines          1509     1512       +3
  Branches        176      177       +1
============================================
+ Hits           1095     1098       +3
  Misses          361      361
  Partials         53       53

Impacted Files
Coverage Δ

...c/main/java/seedu/address/model/student/Email.java
84.61% <0.00%> (+4.61%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 63ad875...dea7c9d. Read the comment docs.

LGTM


Project licence

Hi!
I find your implementation of Dirichlet_NN very useful for a project I am working on! The only problem is that this repository doesn't have any license file attached, and I wouldn't want to violate your copyright.
Would you mind adding an appropriate license that would allow the community to use your code?
PS I'm aware of dirichlet_python package that is distributed under MIT license but it doesn't contain NN implementation

Hey!
Thanks for pointing that out! Now, the license is added to this repository. :)
All the best,
Markus

Thanks!


Added example app project (instead of just sample Cakefile)

Closed https://github.com/jcampbell05/xcake/issues/118.

minor update in ReadMe file.

Coverage remained the same at 98.783% when pulling 7d1fae140cb396f865245560664ba47b404d6dcd on feature/sample-app-project into d9ab226fe1057f671a42bc37f0b2366661f348c1 on master.


Error: unknow submodel type

After upgrade LightGBM to latest version and calling model built with some of previous version I get error below. After downgrade of lib it is working again.
Environment info
Operating System: LinuxMint
C++/Python/R version: Python3.5
Error Message:
Traceback (most recent call last):
File "predict.py", line 22, in
model = lg.Booster(model_file = workingDir + '/modely/model.txt')
File "/usr/local/lib/python3.5/dist-packages/lightgbm-0.1-py3.5.egg/lightgbm/basic.py", line 1213, in init
ctypes.byref(self.handle)))
File "/usr/local/lib/python3.5/dist-packages/lightgbm-0.1-py3.5.egg/lightgbm/basic.py", line 46, in _safe_call
raise LightGBMError(_LIB.LGBM_GetLastError())
lightgbm.basic.LightGBMError: b'unknow submodel type in model file myPath/modely/model.txt'

@gugatr0n1c you can manually change the first line of your model to "tree" to adapt the latest code.

ok, thx

[LightGBM] [Fatal] Model file doesn't contain feature infos
Traceback (most recent call last):
File "predikuj.py", line 22, in
model = lg.Booster(model_file = workingDir + '/modely/model_0_' + str(cv) + '.txt')
File "/usr/local/lib/python3.5/dist-packages/lightgbm-0.1-py3.5.egg/lightgbm/basic.py", line 1218, in init
ctypes.byref(self.handle)))
File "/usr/local/lib/python3.5/dist-packages/lightgbm-0.1-py3.5.egg/lightgbm/basic.py", line 47, in _safe_call
raise LightGBMError(_LIB.LGBM_GetLastError())
lightgbm.basic.LightGBMError: b"Model file doesn't contain feature infos"

I manually changed "gbtd" to "tree", but I got another error

Can I handle this as well somehow? I have many model built. I cannot regenerate all models with new lib. Thx

@guolinke thx for help

you can just copy the "feature_names=....." and change its name to "feature_infos" .

@guolinke there is another error below, I can share model file, not sure If I got it right (55M file)
https://dl.dropboxusercontent.com/u/36271853/model_0_0.txt
error:
[LightGBM] [Fatal] Tree model string format error
Traceback (most recent call last):
File "predikuj.py", line 22, in
model = lg.Booster(model_file = workingDir + '/modely/model_0_' + str(cv) + '.txt')
File "/usr/local/lib/python3.5/dist-packages/lightgbm-0.1-py3.5.egg/lightgbm/basic.py", line 1218, in init
ctypes.byref(self.handle)))
File "/usr/local/lib/python3.5/dist-packages/lightgbm-0.1-py3.5.egg/lightgbm/basic.py", line 47, in _safe_call
raise LightGBMError(_LIB.LGBM_GetLastError())
lightgbm.basic.LightGBMError: b'Tree model string format error'

@gugatr0n1c can you try the latest commit?

@guolinke yep!, working now (still need to rename gbtd->tree and add f_infos, but that is OK), thx!

Hi,
I have exact same issue with Python 3.6 (although my model is saved in json). The name of the first line is already "tree" but "feature_names" is still "names" instead of "infos". Tried changed it to infos, also tried switching the name back to "gbdt" but doesn't work. Please help.

LightGBMError                             Traceback (most recent call last)
 in ()
1 # Load saved model
2
----> 3 bst = lgb.Booster(model_file='clvpr1.txt')
~/anaconda3/lib/python3.6/site-packages/lightgbm/basic.py in init(self, params, train_set, model_file, silent)
1296                 c_str(model_file),
1297                 ctypes.byref(out_num_iterations),
-> 1298                 ctypes.byref(self.handle)))
1299             out_num_class = ctypes.c_int(0)
1300             _safe_call(_LIB.LGBM_BoosterGetNumClasses(
~/anaconda3/lib/python3.6/site-packages/lightgbm/basic.py in _safe_call(ret)
46     """
47     if ret != 0:
---> 48         raise LightGBMError(_LIB.LGBM_GetLastError())
49
50
LightGBMError: b'unknown submodel type in model file clvpr1.txt'


Sorting by "Closing Soon" shows questions that shouldn't be there

Current behavior
https://beta.metaculus.com/questions?order_by=scheduled_close_time&status=open
While these top three say "Closes Jan 4" and other dates in the past, they actually don't close for quite some time, e.g. the children on the top conditional shouldn't close until 2026, I think... although it says "Pending resolution." So I'm confused, but I'm pretty confident that these three questions shouldn't show up when you order by scheduled close time.

Expected/desired behavior
Wouldn't expect these conditionals to appear at the top when sorting by scheduled close time. There's something wrong with their close dates. On prod, we have:

Reported by TemetNosce

Conditional close dates should be min of close dates for either questions that generated them, and max resolution dates for either -- In this case the conditional does this correctly
Closing dates and the way they are set, e.g. this question:  https://www.metaculus.com/questions/6508/btc-outperforms-the-us-total-stock-market/ , seems to have a past closing date
The issue here is that during our migration (and during normal operations) closing a parent or child did not close the conditional it belonged to, nor did setting it's scheduled resolution/close time affect those properties for the conditional.
I've now patched this, to see the fix you need to wait until we run the next migration (hopefully tonight) and redeploy to beta
The only issue at hand


Safe API for RO memmap construction

I'd like to be able to call a safe version of MmapRaw::from(unsafe { Mmap::map(&file) }), as a sibling API for map_raw.
Maybe it should be possible to pass flags for read/write/exec to MmapOptions::map_raw?

I'm not sure I understood your question. MmapRaw already implements from Mmap.

Yep, the code I wrote works, however it requires that unsafe block, and I was hoping we could get a safe API. The API would be safe for the same reason the current map_rawis safe.

Can you provide a code example?

Sure thing :)
// this is some (abridged) code in my project
pub struct FileContent(MmapRaw);
impl FileContent {
    pub fn from_file(file: &std::fs::File) -> std::io::Result<Self> {
        // I would like this code to be forbid_unsafe, but currently need an unsafe block to call `Mmap::map`
        Ok(Self(unsafe { memmap2::Mmap::map(file) }?.into()))
        // Instead, I'd rather write:
        Ok(Self(memmap2::MmapRaw::map_raw_read_only(file)?))
    }
}

memmap is inherently unsafe. Even in a read-only mode, because other process can modify the file content, which violates Rust safety rules. It cannot be made safe.

If you believe that, you're going to need to fix the https://docs.rs/memmap2/latest/memmap2/struct.MmapRaw.html#method.map_raw API :wink:
However I think that API is perfectly valid, because it doesn't allow any UB and is perfectly sound to call within Rust. At least, I'd be incapable of triggering UB with it.

You would need unsafe to access MmapRaw anyway, so there is no point in making the constructor "safe", even assuming that this is theoretically possible.

If you believe that, you're going to need to fix

Fix what? Everything works as expected.

You have an API MmapRaw::map_raw, which is safe for justified reasons. I would like to use an equivalent API that doesn't include the WRITE flag -  I'm comparing them because "You would need unsafe to access MmapRaw anyway, so there is no point in making the constructor "safe"" equally applies to the MmapRaw::map_raw API. I would prefer to avoid writing unsafe blocks where there is no safety justification necessary, because I believe that unnecessarily makes it harder to review the soundness of my crate.
That's all I came to ask :) If you feel the additional API in memmap2 would be superfluous, you can close the issue

To maybe clarify the original issue, I would like an extra parameter in the MmapRaw::map_raw API, which allows me to control the configuration flags for the memory map set here...:
https://github.com/RazrFalcon/memmap2-rs/blob/9970820dc53def35719b5101b1b51c979625c33d/src/unix.rs#L130
...without changing the safety properties of the API

I would prefer to avoid writing unsafe blocks where there is no safety justification necessary, because I believe that unnecessarily makes it harder to review the soundness of my crate.

I think the aim is understandable, but sadly and especially with mmap, the effects of unsafe code are usually not localized to single unsafe blocks. Sometimes, there are not even localized to single modules.
For example, let's you safely create a read-only MmapRaw which means you now have access to raw pointers which can read the underlying memory using e.g. std::ptr::read. However, for these operations to be defined, you need to ensure that no other process is concurrently modifying the mapped file so that e.g. std::ptr::read tries to load something that is not a properly initialized value of its type.
So in this case, the safety requirements are not just not localized in the same process the unsafe call to std::ptr::read, they even span multiple processes accessing the same files. Hence, the justification for your unsafe block with have to rely on global reasoning in any case and one could argue that the constructor is a better place to centralize that reasoning about the operating system environment that the individual accesses.
So in summary, while technically the API you envision can be added and would be sound as far I can see, I don't think it will really benefit your initial aim for introducing it.

I'm specifically working with shared memory and pointer reads are reasoned about in the presence of it, so I definitely don't agree there :smile: I still think you might as well be talking about the API that's already present in the crate (do you think it should be deprecated?) but I can't add any more to this discussion.

I still think you might as well be talking about the API that's already present in the crate (do you think it should be deprecated?) but I can't add any more to this discussion.

Yes, the existing MmapRaw::map_raw and MmapOptions::map_raw could have be left out for the From implementations. But it is a much harder proposition to remove something that might not carry its weight, than to add something new entirely. And not being overly useful does not seem to warrant the ecosystem-wide churn of deprecating (and eventually removing) them.

@RazrFalcon We do have MmapOptions::map_copy_read_only which I think is similarly questionable w.r.t global invariants. I think the implementation of MmapOptions::map_raw_read_only would be as simple as adding
pub fn map_raw_read_only<T: MmapAsRawDesc>(&self, file: T) -> Result<MmapRaw> {
    let desc = file.as_raw_desc();

    MmapInner::map(self.get_len(&file)?, desc.0, self.offset, self.populate)
        .map(|inner| MmapRaw { inner })
}

and some documentation. Meaning the implementation is basically free. So maybe we just add it?

@adamreichold But map_copy_read_only is unsafe, so it's fine. No?
I honestly do not have any input here. I personally use this crate just to read files faster. This is the only thing I care about. I have zero knowledge and experience with any other use cases.
@Plecra I'm sorry, but I'm genuinely have no idea what problem are you having. If this all just about a slightly simpler API, then I think it can be ignored, since memmap is inherently unsafe. There is no point in pretending it is. It would just confuse the user.
If not, then please explain your request better.

Nope, that's it :) It's about extending the safe map_raw API to avoid creating the unsound Mmap instance in my code. In principle it's unsound in my case, because another process might be writing to the backing data. My immediate downcast into MmapRaw makes it sound in practice though, because the invalid Mmap doesn't ever actually break Rust's invariants themselves.
I want to use map_raw for my situation because my usage is inherently safe, and using the current API forces me to write unsound code w.r.t. the memmap2 crate's API invariants. I want the more appropriate api

because the invalid Mmap doesn't ever actually break Rust's invariants themselves.

Note that this is not unsound: It is common for unsafe code to temporarily lift invariants so that even calling safe methods of the involved types would be UB (the Deref impl of Mmap in this case) which is fine as long as these "broken" objects are not exposed to safe code in that state. So your FileContents::from_file is sound.

@Plecra Published. Hopefully this is what you wanted.


Add a Picture-in-picture preview mode

Project Type
2D, 3D
Feature Description
Please add a Picture-in-picture preview mode, which is available in other game engines like, Unity and Unreal Engine.

Use Cases
With this feature, getting a camera preview will not take up too much display area.
Importance
Medium - the feature would unlock new possibilities, but it's not a showstopper
Usage
All the time - the feature can be very useful for a varity of different projects
(Optional) Proposed Solution
Similar feature for godot is provided by a standalone addon called, Little Camera Preview. You may look into it.

Not entirely sure what the ask is?
The Little Camera Preview already works nicely out of the box, as it just shows the currently selected Camera3D / Camera2D from the scene tree, and am not keen on replicating their addon for ethical reasons.
The only two things I can see that would make it integrate better would be to A) show the dead zone guides and B) allow for the preview to update when selecting a PCam3D or PCam2D node, but that's something even this plugin's Viewfinder doesn't do, so that's a new (and separate) suggestion in itself. But think the latter option isn't ideal since PCams are not cameras, so you would either need to teleport a Camera to it when you select it or instantiate a new Camera. Neither of which are ideal. This is also the intent behind the Priority Override, so that would solve that issue.

Yep the little camera plugin works. Youll have the option to pin it, and itll still work correctly off the Phantom Camera

In addition to what was mentioned above, seeing how there was a recent tweet from the author of Little Camera Preview being remade in C++ with a suggestion of it being added to the main editor.
Am inclined to close this, as I don't see there being much value recreating the functionality when the other plugin exists and might become native to Godot itself in the future.


not possible to use 0.00000234

Numbers with 0 after coma are deleted.

Got the same issue.

fixed it
waiting for @vlad-ignatov to approve my pull request

Is this still open? I'm able to type 0 after a decimal if I set precision={}, but that causes other issues, for example, typing in a digit followed by a decimal looks ridiculous:

Yep.
Unfortunately no one approved my pull request yet

@vlad-ignatov Can you go ahead and approve this? I'd qualify this as a breaking issue for a numeric input component.


PARQUET-1990: [C++] Refuse to write ConvertedType::NA

ConvertedType::NA corresponds to an invalid converted type that was once added to the Parquet spec:
https://github.com/apache/parquet-format/pull/45
but then quickly removed in favour of the Null logical type:
https://github.com/apache/parquet-format/pull/51
Unfortunately, Parquet C++ could still in some cases emit the unofficial converted type.
Also remove the confusingly-named LogicalType::Unknown, while "UNKNOWN" in the Thrift specification points to LogicalType::Null.

LGTM modulo one nit.

+1 thanks.


Unit test example

Please, provide an example of what would be the right way of unit testing Mobius.
I've seen a few Hamcrest matchers in your presentation but, for example, I stopped using Hamcrest in favor of Atrium (fluent assertions). Probably, it would be beneficial to provide a generic way of testing Mobius, not bound to any particular framework. Here is an example of a simple test, that tries to assert the initial model in a stream.
import com.spotify.mobius.First
import com.spotify.mobius.Mobius
import com.spotify.mobius.MobiusLoop
import com.spotify.mobius.Next
import com.spotify.mobius.runners.WorkRunners
import com.spotify.mobius.rx2.RxConnectables
import com.spotify.mobius.rx2.RxMobius
import io.reactivex.Observable
import org.junit.Test

class MobiusUnitTest {

	private val loop: MobiusLoop.Factory<Model, Event, Effect> = RxMobius.loop(::update, ::effectHandler)
		.init { First.first(InitModel, setOf(InitEffect)) }
		.eventRunner { WorkRunners.immediate() }
		.effectRunner { WorkRunners.immediate() }

	private var controller: MobiusLoop.Controller<Model, Event> = Mobius.controller(loop, InitModel)

	private fun update(model: Model, event: Event): Next<Model, Effect> = when (event) {
		is InitEvent -> Next.next(InitModel)
	}

	private fun effectHandler(effects: Observable<Effect>): Observable<Event> = effects.flatMap { effect ->
		when (effect) {
			is InitEffect -> Observable.just(InitEvent)
		}
	}

	private fun bind(modelToEvent: (Observable<Model>) -> Observable<Event>) {
		controller.connect(RxConnectables.fromTransformer(modelToEvent))
		controller.start()
	}

	@Test
	fun should_receive_init_model() {
		bind { models: Observable<Model> ->
			val observer = models.test()

			// assert received model?? No model is received...

			Observable.empty<Event>()
		}
	}
}

sealed class Model
object InitModel : Model()

sealed class Event
object InitEvent : Event()

sealed class Effect
object InitEffect : Effect()

Would you be so kind to point out what's missing? Seems like effectHandler and update methods are being executed, but I'm still not getting the model in my receiver.

You can find some examples of unit testing with Mobius's specs in my sample
https://github.com/sgrekov/AndroidMobiusSample/blob/master/app/src/test/java/com/sample/android/mobius/login/presenter/LoginPresenterTest.kt
Still, not sure how much they are ideomatic..

@Ghedeon you can still use InitSpec and UpdateSpec without Hamcrest matchers. The signature for then is then(Assert<M, F>) where
/** Interface for defining your assertions over {@link Next} instances. */
public interface Assert<M, F> {
  void apply(Result<M, F> result);
}

So you could still write a test as follows:
spec.given(Model())
   .whenEvent(InitEvent)
   .then { result: Result<Model, Effect> ->
           val stateTransition = result.lastNext()
           // use whatever you would like to assert the model and set of effects in the next object
    }

One of the benefits of writing your logic in a pure function is that it makes testing a lot easier. The sample test you have is crossing the purity boundary and testing effect handlers as well. Of course, this is a valid test setup, but it isn't a unit test. We believe testing your update function in isolation as you would any pure function allows you to exhaustively test all desired behaviors without having to worry about mocking/faking system impurities in your test setup.
Hope this helps!

@sgrekov that's a good example :) I've actually just release 1.2.0 that adds a whenEvent/whenEvents to UpdateSpec to make it more Kotlin friendly

@anawara  Thanks! Will check them.

Hmm... Thank you for the quick response! Please don't take my example as a representation of my project structure) I was trying to put up a bare minimum that will be copy&paste friendly, so it can be easily verified. The question still remains, tho, why this test is not working and how to test the whole loop?)
Talking about class responsibilities, all my mobius setup lives in a ViewModel, because I consider it unimportant implementation detail of a ViewModel, that shouldn't stick out. Basically, my expectation is:

There is a ViewModel/Presenter with Mobius inside
ViewModel exposes one single bind method: fun bind(modelToEvent: (Observable<Model>) -> Observable<Event>), that is used by Activity/Fragment
ViewModel is a black box. In order to test it, I plug it in and observe how my external dependencies (mocks) react to different Events that I send.
Now, what you propose is to expose a public Update logic, that is hidden in my case, and test it separately. That looks a bit like an artificial workaround, similar to @VisibleForTesting but ok, no big deal. As a next step, how would I test the whole loop, with Effects actually triggering something? This Update function from the example above is not really plugged in and doesn't cover EffectHandler.

Ok, found the problem with the initial example. Here is the working version, that tests initialization:
	@Test
	fun should_receive_init_model() {
		// mock external dependencies
		val observer = TestObserver.create<Model>()
		bind { models: Observable<Model> -> // imagine viewModel.bind() in a real world
			models.subscribe(observer)
			Observable.empty()
		}
		observer.assertValue(InitModel)
		// assert mocks
	}

Of course, could be wrapped in assertions/extensions but roughly that was the idea: to pull the stream and check the outcome.

Testing the update function in isolation wasn't really referring to the fragment test reaching in and testing it or anything like that, just that the update function lives in its own class, and that there is a unit test for that class. In our own Java projects using Mobius we usually name this class FooLogic (where Foo is the feature name) and make the update function a static method.
The point @anawara tried to make is that the update function is very predictable and easy to test on its own. Likewise you can easily test the effect handler on it's own, and be very certain that it does what you expect it to do. You should only need a couple of system-level integration tests after that, since you otherwise mostly just would be testing that the Mobius frameworks is working correctly.
The separation of concerns encouraged by Mobius means you can be confident that your code does what it is expected to do as long as the update function and effect handler both are correct in isolation.
You can read a bit about how we think of Mobius and MV* frameworks here, but I think in general we are sort of on the same page as you although it sounds like we put things in slightly different places. The way we usually hook up things is that we have some kind of FooViews class that holds onto the actual view hierarchy and is able to update the UI - this would be your "View" in MVP. We make it so that this class implements Connectable<Model, Event>, and have the fragment do controller.connect(fooViews), which would be equivalent to the bind method you're describing. We sometimes map on a function that transforms the Model to some kind of ViewData object, so the view doesn't actually have to depend on the Model class. And if you really want to you can do the same thing on the output side to have it not depend on Event.
This approach doesn't really give you the kind of the black box ViewModel class that you're describing, but even so we still have a very distinct separation of concerns, minimal dependencies, and high testability. The update function only depends on the Model/Event/Effect data objects, each effect has an isolated effect handler that doesn't know about the other effects, the UI doesn't know anything about Mobius at all, and the fragment that wires it all together doesn't know anything about the implementation of either the view nor the effect handler.
Note that ViewModel from AAC can be used together with Mobius, but that's propably better to keep as a separate discussion. To get to the bottom of that you have to unpack what the ViewModel architecture component actually is doing, and that's a bit off-topic for this thread. The short version is basically that the AAC ViewModel isn't really a MVVM-"View Model", but rather a kind of retain-objects-during-configuration-changes-mechanism, and if there's anything you want to put in there it is probably parts of your effect handlers, not the entire Mobius loop or controller.

@Ghedeon glad to see you've found the issue.
Another thing you could do to make this kind of test easier is add a listener directly to the MobiusLoop without using the controller and without using RxJava. We have a RecordingModelObserver<S> class that you can use and do things like observer.assertStates("init", "init->first", "init->first->second") so it does essentially the same thing you're doing but without the need to turn the loop into an RxJava observable.

Adding to the previous comments, one reason for testing the update function in isolation is concurrency and event ordering - you never really know which order things are going to happen in, in a GUI application. Is the user going to type some more into the query field before the search response comes back? What if two backend responses are returned out of order? These kinds of sequencing problems are easy to test using UpdateSpec as its when/whenEvents methods take a number of events. So you can say something like:
   spec
       .given(someInitialModel)
       .when(userTypesFirstQuery, userTypesSecondQuery, backendRespondsToSecondQuery, backendRespondsToFirstQuery)
       .then(secondResultsAreDisplayed);

Writing that kind of test when thinking of the viewmodel as a black box is likely to be harder.

Thank you for all the comments, really appreciate the support from maintainers!
Everything about testing the Update is true, as long as that's your priority, and I'll definitely adopt the beforementioned techniques.
Not to sound edgy, but I don't care that much about the update itself). It's pure, it doesn't provide side-effects. Nice to be tested separately, but it's simple and not very interesting. On the other hand, testing parts that produce side-effects is crucial in my opinion because that's where the real value of your code is. My system under test is ViewModel and it has a public interface that is subject to test. The goal of my test is to answer: "are the side-effects of ViewModel expected ones"? It could have inside a super long ping-pong exchange between update and effectHandler, but all I'll be listening for is "was the repo/interactor mock called at the end"? Similar to RxJava testing, yes, if the function is too big, it could be extracted and tested outside of the stream, but after that, if your interface provides an Observable, you better still plug-in the TestObserver and check the result. Just my two cents of reflection...)
I'd like to add, that the whole discussion is possible because Mobius is flexible enough to not impose a fixed structure: interfaces of my views and controllers are clean while being still highly testable. Therefore, don't you guys want to promote such an awesome framework a bit more?) I feel like it's not getting the attention it deserves. Before you jumped in with comments, I wasn't even sure "Is it alive? Was it just a spike? Are they keep using it at Spotify or maybe they changed they mind? What if I convince my team and it will deprecated soon?" Something to consider that would potentially improve the visibility:

Good sample app that will cover best practicies of Mobius usage & testing.
Speak up to community. kotlinlang.slack.com and android-united.slack.com come to my mind. Both have android architecture channels and #mobius would a welcomed addition. While Mobius is not limited to kotlin, my impression is that kotlinlang is where the most exciting stuff is discussed.

Thank you!

I think in the particular case of my example, such a test as you're describing has the potential to be flaky: you would probably get secondResultsDisplayed in a model received by the observer, but then shortly afterwards you'd be getting the first results, if your business logic is incorrect. So if you're tests cover too large a functional area, then the risk of flakiness increases, and the precision of the tests' ability to pinpoint errors decreases. You've probably seen https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html - if not, at least I like those ideas. :) I think there is a sliding scale and you want tests at different levels, but most of them as small as you can make them. YMMV, of course, and it's true that the update functions are simple.
Thanks for the feedback about the framework and for the marketing suggestions! It would probably be good if we were better at marketing it. I'll be doing a talk at droidconBerlin about it, and @anawara has been submitting a couple of proposals to do talks at US conferences. And there will be a sample sometime real soon now (tm). So hopefully we'll be able to spread the word a bit.

I'd just like to push a point a bit here - the core idea of mobius is that you should care about the update function. It's where you make all decisions of what should happen when, so testing the update function is in fact where you make all assertions "are the side-effects the desired ones". Since the side-effects requested by the update function are represented as value types (effect objects), it's really easy to check that the update function made the right decision of what should happen. No need for mocks of any kind - just data in, data out.
Of course you have to make sure that the side-effect is implemented correctly too, but to do this you only have to check that the effect handler has the desired side-effect.
Since the update function already has done the heavy lifting of figuring out which side-effect should happen, these tests just have to do simple assertions of the form "if I send an effect object F to the effect handler, does it interact with the side-effecty mocks correctly (eg. does it try to interact with my repo or does it try to send a network request)".

Closing this ticket, I think the original question has been answered.


Add 'trial_period_days' when creating checkout sessions.

Currently trial period can't be customized when creating a checkout session via a Firestore "checkout_sessions" document.

ideally we would be able to configure the trial period for subscriptions (which ensures a free trial can't be reused – even better to deduplicate by credit card at the Stripe Checkout level).

Yes, that would be great, but that's something that would need to happen within Stripe Checkout, as that's where the payment details are collected. I will forward this as a feature request to the team.


Feature/select

Keyboard support

[ ] Single-select should have tabindex so it can be focused (multi-select is okay since it has input)
[ ] When TYPE.select is focused, down arrow and spacebar should open dropdown
[ ] Backspace should delete an item in multi-select
[ ] Pressing enter on highlighted item should select/deselect it.
[ ] Escape should close the dropdown for both single and multi-select

Can we add some unit or e2e tests too?

@schnerd unit tests are added


fix: broken DECSET and DECRQM requests in foot

Fixes https://github.com/sxyazi/yazi/issues/1357

Superseded by https://github.com/sxyazi/yazi/commit/f024ce03e7b97f55f3bfad9da4b33458cea765d5


Electron Application crash calling dialog.showErrorBox(..)

Just add const ioHook = require('iohook'); make the Electron JS application crash during a ShowDialog.
My situation is :

ioHook = 0.6.5
Node = v12.16.1
Electron = 8.0.3
OS = lubuntu 18.04 over Virtual Box

This is my package.json
{
"name": "test_iohook",
"version": "1.0.0",
"description": "Test funzionalità ioHook",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"author": "",
"license": "ISC",
"devDependencies": {
"electron": "^8.0.3"
},
"dependencies": {
"electron-version": "^2.0.1",
"iohook": "^0.6.5"
},
"iohook": {
"targets": [
"node-72",
"electron-76"
],
"platforms": [
"linux"
],
"arches": [
"x64",
"ia32"
]
}
}
main.js
const { app, BrowserWindow, dialog } = require('electron');
const ioHook = require('iohook');
function createWindow () {
// Crea la finestra del browser
let win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
// e carica l'index.html dell'app.
win.loadFile('index.html')
win.openDevTools({ mode: 'detach' });
}
app.whenReady().then(createWindow)
function that make the CRASH
function test()
{
dialog.showErrorBox('TEST','"ERRORE DI TEST ');
console.log("TEST");
}
The dialog appear for a while and than without any error the application crash down... no exception are fired and nothing else I'm able to do to understand the problem...
Is there anyone face the same problem ???
test_ioHook.zip

Hello every one,
Just to update ... I tested the same code above in WINDOWS and it's work without problems ( also in this case I had to manually download the ioHook library for my node and electron release and copy in the right path.... ) ... but after that it's work very well...


How can I apply for a wheel-leggedrobot?

If on the end of leg, we add an extra wheel, how can I use ocs2 toolbox for this model?

We meet a similar situation. How to set contact kinematics for the wheeled-legs in a similar way of legged robot?


pre-defined range/knots for basis

Is your feature request related to a problem? Please describe.
Sometimes we want to be able to define a spline basis over a fixed range, instead of over the range of the given data.
For example, in Hardcastle et al. (2017), fixed ranges of position, speed, head direction, and theta phase are imposed.
Ultimately, this allows for learning 'model-derived' tuning curves that are defined across the same range, as in some sessions, animals do not sample all bins.
Describe the solution you'd like
A simple solution would be to allow passing an absolute min and max when initialising the basis such that those are used to define the knots.
Another option is to simply allow passing the knots themselves.
Describe alternatives you've considered
Alternatives for me would be to integrate scikit-learn basis transformers into the nemos code, as they allow the passing knots.
They have no API for making multiplicative bases though, which I find very handy.

Thanks for the suggestion, we'll work on it!
Do you have suggestions on how to handle out-of-bounds observations if users passes the min-max?
My inclination would be to return NaNs for out of bound values (instead of zero, which would create artifactual jumps in the firing rate).

NaNs would indeed be good!
Typically, I would have bounded the data already (or it just is impossible for actual acquisition to go beyond the range).
So in practice, it should not happen often that these out of bounds occur but NaNs seem like the correct way to handle when they do.

Closed with PR #191


Fix ManagedCluster CRD confusing points

I noticed several issues with the ManagedCluster CR:

Name ManagedCluster clashes with the resource ManagedCluster of  containerservice.azure.com/v1api20210501 which is a part of Azure provider. This means that user can't execute kubectl get managedcluster and has to user the full name kubectl get managedcluster.v1alpha1.hmc.mirantis.com
Short names of the ManagedCluster are hmc-deploy and deploy which make confusion even more.

The task
Replace short names to be similar to the full name. In the docs if ManagedCluster resource is mentioned in scope of kubectl commands it should referenced by a full name with group and version (managedcluster.v1alpha1.hmc.mirantis.com).

Reopen, since docs aren't ready


New testbed -- 13 sq deg simulated catalog

This PR adds a new dataset taken from the Buzzard simulations. It takes one of the rotated truth pixels (nside=8) and selects an nside=16 (13 sq deg) region from it. It also generates randoms over this pixel, and adds a 'ZPHOT' column which currently just takes the true redshift and offsets it depending on the value of the true redshift.
In order to run it, you'll need to have the appropriate simulation file. Don't worry, if you don't have it on disk, it'll give you the path for downloading the file (with appropriate authentications)! Be forewarned, though, that it is a 1.3 gig file.

Hearing no comments a month later and this being relatively minor, I'm going to merge this in...


should resetting watcher status action not delete itself

:tada: This issue has been resolved in version 1.0.0-dev.7 :tada:
The release is available on:

v1.0.0-dev.7
GitHub release
v1.0.0-dev.7

Your semantic-release bot :package::rocket:

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

v1.1.0
GitHub release
v1.1.0

Your semantic-release bot :package::rocket:


Change link color?

Is there any way to change just the link color?

same query

Same

@jeziellago Would you please create a new release, since the main branch contains this property?

For anyone else watching this: if you need this right now, you can use the current buld from the main branch:
implementation 'com.github.jeziellago:compose-markdown:c26865cd40'

New release available 0.3.5


Chore third party libs (use stdlib whenever possible)

Moved re modules to stdlib except _sre.py
Moved md5.py to stdlib
Moved functools.py to stdlib

Also chore a bit to make minimal changes from CPython.

Rebased.


raw_to_voxel function

I was trying to understand the code but I could wrap my mind around the values of x, y z and resolution (resolution=0.50, x=(0, 90), y=(-50, 50), z=(-4.5, 5.5)).
Can anyone explain this please and what's the point from them? thank you

x, y, z is the range of scene in which you are interested to detect vehicles. And resolution is the size of voxel.

Thank you for your reply.
So you are telling me that x, y, z dont have to do with the data in the .bin files?

@fouratoueslati x, y, z in the bin file represents each point in 3D space.
XYZ in the poitntcloud is used to filter out the range of Lidar scan you are interested. Like X is for forward, (0, 90) means you are interested in from 0 meters to 90 meters in front of vehicle. Rest of pointcloud points will be filtered out.
So, Using  x=(0, 90), y=(-50, 50), z=(-4.5, 5.5) resolution=0.50, you will end up with a voxelgrid of size 900x1000x50 voxel. You can reduce this range to fit the voxelgrid into your gpu memory

@ansabsheikh9 thank you for your explanation, I can see a bit more clearly now
But can you elaborate a little bit on the rest of the function(like the use of:
logic_x,
voxel[velo[:, 0], velo[:, 1], velo[:, 2]] = 1
velo =((velo - np.array([x[0], y[0], z[0]])) / resolution).astype(np.int32) )?
Much appreciated

@fouratoueslati As this deeplearning architecture is designed to takein voxelgrid. So first step is to convert raw pointcloud data to a voxel grid representation. So, this fucntion is converting conversion of pointcloud representation to voxelgrid representaiton.
where,
velo =((velo - np.array([x[0], y[0], z[0]])) / resolution).astype(np.int32) )?  function making all pointclouds positive (Or you can say shifting the reference of pointcloud for voxel grid representaiton) as there are points in the pointcloud which are negative and this neuralnetwork can take in poitive values.

@ansabsheikh9  you said that by choosing those values of x,y,z we get 900100050; does this means each point cloud data (that has xyz coordinates) is tranformed to a single voxel?

@fouratoueslati if there is a pointcloud data within 0.5meters (which is resolution) it will be a single voxel, otherwise it will be empty. There can be many pointcloud within 0.5meters grid

@ansabsheikh9  so basically if a voxel is present a binary indicator will be attributed to highlight its presence (1 for presence 0 for absence)? and does this line of code { voxel[velo[:, 0], velo[:, 1], velo[:, 2]] = 1 } refers to that?
Thank you

@fouratoueslati yes

@ansabsheikh9 thank you for your help

@ansabsheikh9  hi, can I ask about the relation between the coordinates of a point cloud data (x,y,z) and its representation in the 3D voxel grid? I just want to make sure that an accurate voxelization has happened to a particular point. thank you

@fouratoueslati You can calculate using this formula
velo =((velo - np.array([x[0], y[0], z[0]])) / resolution).astype(np.int32) ) this will give you the index of the voxelgrid. In this equation x,y,z is the position of Lidar sensor.

@ansabsheikh9  thank you. that's was very helpful

@ansabsheikh9 thank you. that's was very helpful. But i m also curious about the size of the edge of the Voxel it is always equal to 1 no matter is the resolution. Can you explain why and how it could be changed based on the resolution?

@ansabsheikh9 hello again. any info you can provide me can really unstuck me.
Much appreciated :)

@OneManArmy93 We can say that voxel is equivalent to a 3D pixel. Each voxel size is determined by resolution you are using.
If you are interested in pointcloud range of (x, y, z) = (10, 10, 10)meters so that means using resolution of 0.5 our 3D voxel grid will have the size (100, 100, 100) voxels. Each Voxel is a 3D pixel rather than having range from 0-255, in this experiment it can be only 0 or 1 (Binary).
Here is a sample voxelized representation of a point cloud I hope it will help you to clear things.

@ansabsheikh9  so the voxel edge which is equal to a 1( in this [picture]) can not be modified because it is binay indicator for wether the space is occupied or not?

@OneManArmy93  yes

@ansabsheikh9  thank you! much appreciated

@OneManArmy93 We can say that voxel is equivalent to a 3D pixel. Each voxel size is determined by resolution you are using.
If you are interested in pointcloud range of (x, y, z) = (10, 10, 10)meters so that means using resolution of 0.5 our 3D voxel grid will have the size (100, 100, 100) voxels. Each Voxel is a 3D pixel rather than having range from 0-255, in this experiment it can be only 0 or 1 (Binary).
Here is a sample voxelized representation of a point cloud I hope it will help you to clear things.

@ansabsheikh9  Can you tell me please how did you manage to visualize such a representation? Thank you


AppVeyor build with vcpkg: SDL.h include not found

I'm trying to migrate our appveyor builds from using a pre-built dependency package over to vcpkg.
I made the following changes to our source code:
https://github.com/SuperTux/supertux/compare/appveyor-vcpkg
However, when I try to compile it, it can't find SDL.h for many of the subprojects:
https://ci.appveyor.com/project/supertux/supertux-9ml4d/build/messages
Any ideas?

We fixed it; seems like the include path is <include/SDL.h>


⚠ Bofrost.be has degraded performance

In d59b734, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1317 ms

Resolved: Bofrost.be performance has improved in 56fb4ef after 42 minutes.


0.28.2 released

https://github.com/describo/crate-builder-component/releases/tag/v0.28.1
https://github.com/describo/crate-builder-component/releases/tag/v0.28.2

crate-builder-component-react 0.28.2 released.


fix: Use HTML5Backend for drag-drop if the device does not support touch

fix: Use HTML5Backend for drag-drop if the device does not support touch, since it's less buggy
Note: still need to test the deploy preview on a real device, which is why this is marked as a draft.

CircleCi issue is caused by the Cypress "Orb". Here's the related issue:
https://github.com/cypress-io/circleci-orb/issues/178


add gemini client

adds a gemini/GCP generativeai client, hardcoding gemini-pro for now. Also did a teeny bit of refactoring in ollama_client.py to get rid of the weird static bits

oh nvm i see #99 took care of this.


Updates to events queue

What are your changes?
What is the urgency level of this change?

[ ] Blocker
[ ] High
[x] Medium

I have completed these items:

[x] I have built locally and tested for broken links and formatting.
[x] If appropriate, I have added redirects.

If you included a comment with your commit, it appears here:

Don't merge... I haven't built this locally yet because I'm having trouble with the build process.

retest this please

retest this please

Hey Ravi, please either merge this or give me a thumbs up when you have a sec? Thanks! 🙂


support ubuntu 24.04 kernels

Closing this PR as this is handled in https://github.com/IntelRealSense/librealsense/pull/13236.


[FEATURE] - make try methods generic over mailbox.

The following is not possible because try_send_sync is only defined for specific mailboxes. (same for all other send variants as near I can tell).
struct TriggerTask<T, A: kameo::Actor> {
    trigger: AtomicBool,
    task: T,
    actor_ref: ActorRef<A>,
}

impl<T, A> TriggerTask<T, A>
where
    T: Clone + Send + Sync,
    A: kameo::Actor + kameo::message::Message<T>,
{
    pub fn trigger_task(&mut self) {
        if !self
            .trigger
            .swap(true, std::sync::atomic::Ordering::Relaxed)
        {
            use kameo::request::TryMessageSendSync;
            self.actor_ref
                .tell(self.task.clone())
                .try_send_sync()
                .unwrap();
        }
    }
}

This code would actually compile on the main branch of kameo. I've done some updates to make some of the requests more flexbile. See https://github.com/tqwewe/kameo/pull/71 I need to publish a new version soon with some of the improvements present in main branch.
However, not all can be made generic. For example, you cannot call .send_sync() on a bounded mailbox with a tell request, since sending the message needs to await mailbox capacity.
If you haven't already, there's a nice table showing an overview of what request methods are available for each mailbox: https://docs.page/tqwewe/kameo/core-concepts/requests#supported-requests

Side note, adding something like the above to the library might make sense.
I am trying to remove the shared queue from my actor by having a MainTask type message, which drives forward the state machine for connections. Both the completion of a task and adding requests to the queue need to trigger this handler, but if I add 100 messages to the queue, we want to:
1: run MainTask after all the AddRequest messages are processed
2: we prefer to only add one MainTask item to the actors mailbox, not 100


Fixes type hints for clients module

Why? :open_book:
Fixes type hints for clients module
What? :wrench:
I've introduced mypy, pyspark-stubs and typing_extesions as a dependecies.
All Type Hint was fixed in clients module (lib and tests).

AbstractClient was transformed in a GenericType
Fixed types in SparkClient and CassandraClient
CassandraColumn type was created
clients tests were typed too

Type of change

[x] Bug fix (non-breaking change which fixes an issue)

How everything was tested? :straight_ruler:
Mypy check:
mypy butterfree/clients

Checklist

[x] My code follows the style guidelines of this project (docstrings, type hinting and linter compliance);
[x] I have performed a self-review of my own code;
[x] I have made corresponding changes to the documentation;
[x] I have added tests that prove my fix is effective or that my feature works;
[x] New and existing unit tests pass locally with my changes;
[ ] Add labels to distinguish the type of pull request. Available labels are bug, enhancement, feature, and review.

Attention Points :warning:
I didn't include the mypy to donre check because we have to fixes the other modules, to prevent the falling build for a long time!
refs #195

I'll rebase my branch ASAP

@rafaelleinio can you review please??


[BUG] [YOUTUBE] Unable to extract uploader name

$ youtube-dl --version
2018.05.09

$ youtube-dl "https://www.youtube.com/watch?v=be89BcNR6vA&list=PL8TWxe78E9Wvic0-RjHRzwEcaQXuaGJQn" --extract-audio --audio-format mp3 --playlist-start 63 --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'https://www.youtube.com/watch?v=be89BcNR6vA&list=PL8TWxe78E9Wvic0-RjHRzwEcaQXuaGJQn', u'--extract-audio', u'--audio-format', u'mp3', u'--playlist-start', u'63', u'--verbose']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.05.09
[debug] Python version 2.7.15rc1 (CPython) - Linux-4.15.0-20-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.2-2, ffprobe 3.4.2-2, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[youtube:playlist] Downloading playlist PL8TWxe78E9Wvic0-RjHRzwEcaQXuaGJQn - add --no-playlist to just download video be89BcNR6vA
[youtube:playlist] PL8TWxe78E9Wvic0-RjHRzwEcaQXuaGJQn: Downloading webpage
[download] Downloading playlist: 17tumba playlist [Uploads 600-800] LATEST!
[youtube:playlist] PL8TWxe78E9Wvic0-RjHRzwEcaQXuaGJQn: Downloading page #1
[youtube:playlist] playlist 17tumba playlist [Uploads 600-800] LATEST!: Downloading 104 videos
[download] Downloading video 1 of 104
[youtube] cwXR4LCbK3Q: Downloading webpage
[youtube] cwXR4LCbK3Q: Downloading video info webpage
WARNING: Unable to extract video title
[youtube] cwXR4LCbK3Q: Extracting video information
ERROR: Unable to extract uploader name; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 792, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 503, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/youtube.py", line 1701, in _real_extract
    raise ExtractorError('Unable to extract uploader name')
ExtractorError: Unable to extract uploader name; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Seems like it fails here https://www.youtube.com/watch?v=cwXR4LCbK3Q

Both videos are not available.

Just checked the playlist. The videos are either Private or Deleted. Is there any argument to skip these?

-i.


[v1.x] Bumped oneDNN version to 1.6.5

OneDNN version is bumped to v.1.6.5.
This patch release includes the following changes, such as: reduced required size of workspace for RNNs: #19265

@mxnet-label-bot add [MKLDNN]


Homebrew

Any plans to create a Homebrew tap for this project? It looks awesome and I'd love an easy way to keep up-to-date!

That'd be pretty cool. I personally don't have any experience with this but I'll look into it!

Nice! I've never rolled a homebrew tap myself either, but can vouch for how awesome Homebrew is for installing and managing packages on macOS.

+1 this would love this for automatic updates and easy installation on multiple devices. Congrats on the visibility today!

Some links that might help:
https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap
https://stackoverflow.com/questions/28241061/set-up-a-homebrew-tap-with-a-git-repository-on-a-private-network
https://jonathanchang.org/blog/maintain-your-own-homebrew-repository-with-binary-bottles/
https://medium.com/prodopsio/creating-homebrew-taps-for-private-internal-tools-c41363d58ab0
Downloaded and using this right now, looks great!

It might not be too difficult. There are a few yarn apps in homebrew already.
See this query for depends_on yarn in the homebrew-core project.
Homebrew does have a policy against self-submitting

We frown on authors submitting their own work unless it is very popular.

but judging by the stars alone, this app does seem popular.

Thanks for the suggestion. Currently I'm looking into using brew cask which looks like it would be more appropriate for installing and maintaining macos apps with guis. Please check out this linked PR #36 for the latest progress on this ticket.

Thanks everyone for your suggestions. G Desktop Suite has been accepted into the homebrew-cask family and can now be installed with brew cask install g-desktop-suite. Please see the README for more details on how to install.

Nice work! Thanks!


made it work actually

decided didn't like it, made changes on different branch, then decided I DO want it, so a little trouble


java.lang.IllegalArgumentException: Receiver not registered: com.twilio.audioswitch.bluetooth.BluetoothHeadsetManager

Describe the bug
Recently in 1.1.3 you added support for Android 12, which is great although I'm getting a crash when trying to stop() the AudioManager if the BLUETOOTH_CONNECT permission was granted while on a call.
Also, it's worth mentioning that in 1.1.3 version AudioDeviceChangeListener is inconsistently firing off unexpected events with an incorrectly selected audio device.
To Reproduce
Steps to reproduce the behavior:

Start AudioManager.
Grant BLUETOOTH_CONNECT permission.
Stop Audio Manager.
Crash

Expected behavior
The app shouldn't crash.
Actual behavior
The app crashes.
Application Logs
Caused by: java.lang.IllegalArgumentException: Receiver not registered: com.twilio.audioswitch.bluetooth.BluetoothHeadsetManager@bb582b7
        at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:1555)
        at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1789)
        at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:769)
        at com.twilio.audioswitch.bluetooth.BluetoothHeadsetManager.stop(BluetoothHeadsetManager.kt:173)
        at com.twilio.audioswitch.AudioSwitch.closeListeners(AudioSwitch.kt:356)
        at com.twilio.audioswitch.AudioSwitch.stop(AudioSwitch.kt:179)

AudioSwitch Version

Version: 1.1.3

Thanks for the report, we have a fix for IllegalArgumentException issue but as for the inconsistent events with incorrect device information, can you give me more info on that?

Does this happen only when the Bluetooth permissions are granted after AudioSwitch is started?
Is this android 12 or older devices (pre-Android 12)?

Thanks!

Thanks for getting back to me so quickly. When do you think you can have a release with the IllegalArgumentException fix?
As for inconsistent events, it's pretty hard to give you the steps to reproduce the issue as it's not consistent. Here's what I think is the most likely scenario to reproduce it: it happens on Android 12 device (Pixel 6 Pro), and it was happening when Bluetooth permissions were granted before AudioSwitch started, then whenever I turn BL on (with auto connected BL headphones) -> turn off -> turn back on the audioDeviceChangeListener is firing off with incorrect currently selected device, I believe it defaults to Earpiece (which by your docs it means that it will happen when there's an error connecting to BL device, although other apps have no problem connecting to it). The worst part about this is selectedAudioDevice will have a different value than audioDeviceChangeListener which is pretty strange. Hope it helps!

Thank you for the steps. I was able to receive redundant events (multiple audioDeviceChangeListener events), I was not able to reproduce the issue where the incorrect device is listed as the selected audio device. I tested this on both a Pixel 4a and a Pixel 6. The steps i followed were as presented above..
(run app with BL permissions on android 12)->(turn off BL from settings)->(Turn on BL from settings)->Review audioDeviceChangeListener events.
What I received was as follows..
D/AS/AudioSwitch: Preferred device list = [BluetoothHeadset, WiredHeadset, Speakerphone, Earpiece] D/AS/AudioSwitch: Available AudioDevice list updated: [Speakerphone(name=Speakerphone), Earpiece(name=Earpiece)] D/AS/AudioSwitch: Current user selected AudioDevice = null D/AS/AudioSwitch: *** Device List Update ***     	list:     		Speakerphone     		Earpiece     	selected device: Speakerphone
Then, I enabled bluetooth from the setting menu
D/AS/BluetoothHeadsetManager: Bluetooth headset BluetoothDeviceWrapperImpl(device=EA:0A:EF:26:5A:91, name=LC-B41, deviceClass=1028) connected D/AS/BluetoothHeadsetManager: Headset state changed to Connected D/AS/AudioSwitch: Available AudioDevice list updated: [BluetoothHeadset(name=LC-B41), Speakerphone(name=Speakerphone), Earpiece(name=Earpiece)] D/AS/AudioSwitch: Current user selected AudioDevice = null D/AS/AudioSwitch: *** Device List Update ***     	list:     		LC-B41     		Speakerphone     		Earpiece     	selected device: LC-B41
Then I turned off bluetooth from the settings menu and received two (one spurious) audio change events.
D/AS/BluetoothHeadsetManager: Bluetooth disconnected D/AS/AudioSwitch: Available AudioDevice list updated: [Speakerphone(name=Speakerphone), Earpiece(name=Earpiece)] D/AS/AudioSwitch: Current user selected AudioDevice = null D/AS/AudioSwitch: *** Device List Update ***     	list:     		Speakerphone     		Earpiece     	selected device: Speakerphone
In all cases, while the event was fired more than once, the data presented in the event was correct and reflected the selected audio device.
Also, in terms of what audio device it defaults the connection to, and the order, that can be specified by the user and is not only due to the BL failing. Its specified via preferredDeviceList which is passed in. The order specifies the priority of which audiodevices should be fell back upon.

I hate adding me too comments but I'm going to to help highlight this isn't just a one-off issue.
I'm running into a very similar, if not identical issue. I too got the same crash and I'm also experiencing the same incorrect selected audio device. I've been trying to find a solid set of steps to reproduce it but it's inconsistent. In my case I'm not turning off bluetooth on the phone but rather turning off the bluetooth connection on my headset.
If I start with BLUETOOTH_CONNECT permissions granted and the headset connected sometimes the headset isn't picked up in the list of available audio devices when calling audioSwith.start. Turning off the headset and then back on triggers the callbacks and it shows up in the list.
I'll do some digging to see if I can find a better set of steps to reproduce it.

I was able to reproduce it, but again not consistently. I added some logs to AudioSwitch#addAvailableAudioDevices to record when the list of available devices was being updated.
D/AS/BluetoothHeadsetManager: Bluetooth service connected
D/AS/BluetoothHeadsetManager: Bluetooth PLT_BBFIT connected
D/AS/BluetoothHeadsetManager: Device size 1 with device name: PLT_BBFIT
D/AS/AudioSwitch: ********START Adding available audio devices called with bluetoothHeadSetName PLT_BBFIT
D/AS/AudioSwitch: Mutable audio devices before clear:
D/AS/AudioSwitch: ***: Speakerphone
D/AS/AudioSwitch: ***: Earpiece
D/AS/AudioSwitch: Adding bluetooth failed getHeadset(PLT_BBFIT) returned null
D/AS/AudioSwitch: Adding speakerphone to mutableAudioDevices
D/AS/AudioSwitch: Adding ear piece to mutableAudioDevices
D/AS/AudioSwitch: Mutable audio devices after walking preferred device list:
D/AS/AudioSwitch: 		***: Speakerphone
D/AS/AudioSwitch: 		***: Earpiece
D/AS/AudioSwitch: ********END Available AudioDevice list updated: [Speakerphone(name=Speakerphone), Earpiece(name=Earpiece)]

Note the bluetooth headset being connected but getHeadset call returning null so it isn't being added to the list of available devices.

@fergusonm Thanks, no don't worry about dog piling on an issue, the more information, the better. We'll continue investigating this issue, and get back to all of you.

It looks like there was a commit for this issue f1de0fe, does that seem to do the trick and any idea when this might be released? Thanks!

There are two issues raised in this issue thread. The first issue has been fixed and the second one will be fixed in the near future. If a release is urgently needed, one can be made, otherwise we will hold off until both issues are fixed to do a release, whatever is better for all of you, please let us know.

The issue that we are seeing on Android 12 is that the bluetooth device is not showing up under available audio devices. I'm not sure which issue is resolved, but we are not currently seeing a crash. As soon as possible would be great!

@afriedmanGlacier Several questions..

Are you not seeing any available bluetooth devices with the current release (1.1.3) on android 12 or with the most recent commit?
Are you prompting the user for bluetooth permissions before activating audioswitch? As of Android 12, Bluetooth permissions require user approval (https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#declare-android12-or-higher).

Oh my goodness, I bet that's it!  I'll have to verify the user permissions, but that's probably the issue. Thanks!
FYI, I am using the current release (1.1.3) on android 12.

@afriedmanGlacier for what it's worth you can get the list of bluetooth headsets using just audio manager. (No bluetooth permission required on android 12 so no messing with the bluetooth manager and thus no possible crash.) I was running into the same issue as you and that's how I worked-around it.
audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)

And filter by the AudioDeviceInfo type.

@afalls-twilio do you have any idea of how long the second bug fix with take to land on master? One week, two weeks, one month? Because having an idea of how long it will take, helps to decide if we should have an intermediate release. If it will take 1 or 2 weeks, I think we don't need an intermediate release, but if it takes 1 or 2 months, maybe an intermediate release would be nice. By the way, thanks for your help and for being open to create an intermediate release in case it's necessary 🙂

@4brunu We are targeting to have the release before the end of the month, but considering we are headed into the holidays, there is the potential that may happen right after the new year.

@afalls-twilio thanks for the feedback 👍 At least for me, I can wait for that and have only one release

Hi @afalls-twilio, just wanted to give you a heads up that this also caused a crash in a recent app release for one of our teams here at Zillow.  We have a temporary fix to stop the crash, but looking forward to the fix!  😄

@fergusonm I am still struggling to repo the issue you reported regarding BluetoothHeadsetManager.getHeadset(..) returning null upon successful completion. If you could please try to reproduce it with these specific changes to help me better debug... In particular, if you could change the getHeadset method to include the following log messages and then please post the log (and video of you repoing it if possible). Thank you so much.
    fun getHeadset(bluetoothHeadsetName: String?): AudioDevice.BluetoothHeadset? {         return if (hasPermissions()) {             if (headsetState != Disconnected) {                 val headsetName = bluetoothHeadsetName ?: getHeadsetName()                 logger.w(TAG, "getHeadset(...) 1 : $headsetName")                 headsetName?.let { AudioDevice.BluetoothHeadset(it) }                     ?: AudioDevice.BluetoothHeadset()             } else {                 logger.w(TAG, "getHeadset(...) 2 : got here")                 null             }         } else {             logger.w(TAG, PERMISSION_ERROR_MESSAGE)             null         }     }

With some quick light testing I'm not able to reproduce it again.
However, with respect to how my app references and selects audio output devices, things have changed dramatically. Regrettably, I stopped using AudioSwitch and started referencing and activating the audio output devices, including bluetooth headsets, from Android's AudioManager directly instead.
So it's possible that I'm simply no longer able to set up the conditions that caused that bug. It feels like a threading issue with enumerateDevices and multiple threads modifying the mutableAudioDevices map but I can't see anywhere in the source that map is access off the main thread.
Sorry I can't be of more help. It's a gnarly bug.

@fergusonm no problem, thank you for trying to help. Yeah, AudioSwitch is single threaded, everything runs off the main thread... I'll make a release next week with the existing changes.

Release made with crash fixes @4brunu @zalyssas @mykola-tarchanyn


Verify default logging is INFO

PR description
Add an acceptance test to verify that default logging is at least INFO.
Fixed Issue(s)

Documentation

[ ] I thought about documentation and added the doc-change-required label to this PR if
updates are required.

Acceptance Tests (Non Mainnet)

[ ] I have considered running ./gradlew acceptanceTestNonMainnet locally if my PR affects non-mainnet modules.

Changelog

[ ] I thought about the changelog and included a changelog update if required.

@shemnon I played #5206 because users apparently run off main.
I am struggling to come up with a useful test for this fix though.
Part of the problem may be that the ATs run as a thread rather than a process, however startConsoleCapture is not supported by runBesuAsProcess mode


Support for NO_COLOR environment variable

Hey :)
What do you think about adding support for the NO_COLOR environment variable?
I think it would be pretty cool!
Also, if implemented, would programs using tcell support NO_COLOR automatically?

I think this is a reasonable idea.  We would need an easy way for programs to override this though.  Probably via an explicit EnableColor() API.


keym: init at unstable-2022-07-10

Description of changes
This pull request add a simple derivation for the tool "keym": https://github.com/cwkx/keym
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

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

[x] Fits CONTRIBUTING.md.

Is this software maintained, or is there a better fork we can use? It seems to not have any activity for ~1.5 years

I'm not aware of any alternatives. However, I also have not looked for any alternatives since I discovered this software. The closest thing that comes to my mind is warpd but that tool functions differently.
I think the lack of activity simply comes from the fact that the tool is complete from a functionality standpoint and it works well.

@eclairevoyant Is the lack of activity a strong reason not to merge this?

I don't have merge access, just wanted to confirm, as bitrot might eventually be a higher maintinance burden. I wouldn't call it a strong reason to not merge.

@eclairevoyant I incorporated your feedback and amended them to the init commit.

Result of nixpkgs-review pr 264430 run on x86_64-linux 1

1 package built:

keym


Question about experience result

Thank you for your PyTorch implementation of SA-EEND. When I Infer the callhome2-2spk dataset, I find that I cannot correspond my results to your experience result table in README.md. I use the 'model_callhome.th' as initialization. The results are as below.

th=0.3, med=1, 5, 9, 11: DER= 14.19, 13.19, 12.47, 12.32
th=0.4, med=1, 5, 9, 11: DER= 13.04, 11.96, 11.09, 10.97
th=0.5, med=1, 5, 9, 11: DER= 13.18, 12.24, 11.22, 11.21
th=0.6, med=1, 5, 9, 11: DER= 14.14, 13.28, 12.37, 12.26
th=0.7, med=1, 5, 9, 11: DER= 15.85, 14.93, 13.92, 13.87

In that way, which line of table in README is 'model_callhome.th' correspond to? "PyTorch" or "PyTorch*"? If it corresponds to "PyTorch", the best DER result is 10.97, rather than 11.21
I am looking forward to your reply. Thanks!

It should match the result "PyTorch". And my result follows the setup from their TASLP paper, where th=0.5 and med=11:

Thanks for your reply. Based on the your default config setting, I have reproduced the experience results of 2-layer and 4-layer SA-EEND, which are consistent with Paper. However, when I try to incorporate the Encoder-Decoder-Attractor module into the SA-EEND, I failed to reproduce the results as in EDA-EEND paper. On the fix-2spk setting, I only get 8.95% and 4.4% on simu-dev-beta2-2spk-500 and callhome2_spk2, which are far below the results listed in paper(8.07% and 2.69% respectively), even though I have used the identical model structure and training config. Do you have any suggestion based on your rich experience? Thanks!


chore(ec2): add missing required tag in SecurityGroup Region

Description of your changes

Fixes #2002
I have:

[x] Read and followed Crossplane's contribution process.
[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested

/test-examples

@haooliveira84 can you squash your changes into a single commit and sign it?

@haooliveira84 can you squash your changes into a single commit and sign it?

Done @MisterMX

It looks like something has gone wrong and a bunch of other changes has been included as well. @haooliveira84 can you check again?

It looks like something has gone wrong and a bunch of other changes has been included as well. @haooliveira84 can you check again?

Done @MisterMX


Work with nate to improve the makefile

This pull request includes updates to the Docker setup and documentation for building and running container images. The most important changes include updating the Dockerfile-dependencies, modifying the Makefile to add new targets and environment variables, and adding a new section in the README.md to document the container images and their usage.
Changes to Docker setup:

Dockerfile-dependencies: Updated the base image reference to include the full path docker.io/rocker/geospatial:4.4.1.

Makefile: Added new targets (deps, tag, interactive) and environment variables (TAG, REGISTRY) for building and managing container images.

Documentation updates:

README.md: Added a new section to document the container images, including instructions for building and running the images locally and using the Makefile targets.

I'll wait for Zack to give the ok, but I think is otherwise ready to go

I pushed a few changes. One was to replace the -v format for bind mounting with the --mount format; slightly longer, but also more explicit

Can you add a pull recipe to get the image from ACR? We have secrets in key vault accessible in the NNH cli if they're needed.

Yea, are you thinking just the deps image? The main image? both?

Can you think about the pros/cons of defaulting to podman locally and docker in CI? I'm a little uncomfortable with it, but want to talk about any benefits you may be seeing.

Hmmm, we might have to ask @gvegayon for his experience with this so far. George, you have used this pattern of using podman locally and docker in CI before, correct? In my personal experience so far, it has been fine.
Laying out a few scenarios I can imagine:

Best case scenario. No issues at all, everything runs fine forever.
Meh case scenario. We notice some differences fairly quickly, and change the default in the Makefile to docker.
Worst case scenario. There are near invisible differences in the images and/or behavior of the two. This goes on for some time before we notice the differences. This seems unlikely, but perhaps not impossible.

In the best case for this scenario, our production runs were always done using image built in CI with docker, so all of our production runs are consistent. We discovered the issue because our local/prod runs weren't matching perfectly. We change the Makefile to use docker.
In the worst case for this scenario, we had some production days where we had to make some quick bug fixes locally, and then pushed our podman-built image to be run, and the differences make it into our production runs.

Scenario 3ii seems highly unlikely, but would be a huge PITA. I'd probably put that scenario at a "Medium" on the risk matrix. Since the fix for this would be to simply use docker in the Makefile, I think we should go with that.


Fix setup.py commands

python setup.py test uses a different system than the nosetests stuff we've setup. We should probably also document all the options...maybe. :smile:

Blarg...click fale. Meant to add this on couchapp/couchapp. Closing. Fixing.