AMBARI-23861 Service status is difficult to understand in the left nav of the new UI

How was this patch tested?
Tested manually

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/2301/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/2346/
Test PASSed.


fix(network): demote log level of chain exchange send to channel fail…

Summary of changes

Changes introduced in this pull request:

See https://github.com/ChainSafe/forest/issues/2603 for details

Reference issue to close (if applicable)

Closes https://github.com/ChainSafe/forest/issues/2603
Other information and links

Change checklist

[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 (if possible),
[x] I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

Alternatively, we could implement some cancellation logic and move most of the logic into behaviour related request manager (just like bitswap), let me know your preference. @lemmih


Fix for #1085 - goToPage : event sent before updating the index

Moved the event to the end of the function as suggested in the issue (#1085).

@ncmikkelsen Wonderful, thank you! Could you also move the documentation comment down with the event? We like to keep them together.

@iangilman of course! I totally spaced out and didn't notice that the comment block was for the event. Is it all good now?

Beautiful! Thank you for taking care of this :)


Support both 'release' and 'app.kubernetes.io/instance' labels to link objects to Helm releases

Q
A

Bug fix?
no

New feature?
no

API breaks?
no

Deprecations?
no

License
Apache 2.0

What's in this PR?

Consider beside label 'release' also 'app.kubernetes.io/instance' when trying to determine which helm release a Kubernetes resource belongs to.
Why?

Most of the helm charts use 'release' label to stamp a Kubernetes resource with the Helm release name. According to  https://helm.sh/docs/chart_best_practices/#standard-labels, the new recommendation is to use 'app.kubernetes.io/instance' thus Pipeline should handle both.
Checklist

[x] Implementation tested (with at least one cloud provider)
[x] Error handling code meets the guideline

👍


How can I get the thumbnail of a video?

I extracted the youtube video and made itthumbnail = meta.get('thumbnails')[0]['url'] , but its only a frame in the video, not the actual thumbnail

Or, not the thumbnail that you wanted.
Maybe other thumbnails are in the thumbnails list, or in meta['thumbnail']? No other images are being extracted.
For further analysis, you'd need to post the details.


add author info as prefix for slack

this is due to slack-> linen.dev sync will not
preserve avator/authername info, we need this duplicated info as prefix as a mitigation.
see: https://github.com/Linen-dev/linen.dev/issues/761

This PR assumed the linen.dev support the emoji text from slack.

I'll merge it first :P
cc @frostming


list items delete and refresh of virtual dom

vue version: 2.0.7
I have a list( fetched by Ajax from server ) on my page which looks like :
(generated by using v-for)

then I want to delete an item, such as item b, first I use jQuery to hide the element, and then send a delete request to server, then fetch  new data and replace the old items.

(use jQuery to hide item b: $('#b').hide() )

2.send request and got new data, the list should be:

but it showed to be:

the last one item was hidden.
I have try using document.getElementById('b') to delete item, but it still the same.
If using $().remove(), the new last one also be removed.
and then I try hide all the items after delete one item.then fetch new data to build the list. but it cames that the all new items was hidden...I'm now so confused.

Please make sure to read the Issue Reporting Guidelines before opening new issues. The issue list only accepts bug reports and feature requests. Questions should be posted to the Gitter chat room,  forum or StackOverflow. Thanks.


Unable to swipe from inside the Iframe element

@frendyguo Do you have a reproduction example?

I couldn't reproduce the issue. I'm suspecting the issue is not linked to this library.

I am using  react-swipeable-views inside this I am using iFrame, when I want to swipe from iFrame view to another view which is not working.


Cas 13924

Forgot to merge the doc update for 6.5.3  accompanying the ticket.

@taktsutsumi , looks good to me, thanks. I assume this ready to be merged?


contenful-action erroring out

I am using the contentful action for my github action .

on:
  push:
    branches:
      - main
      - 'feature/**'
  pull_request:
    branches:
      - main
      - 'feature/**'
      - 'fix/**'
      - 'chore/**'

jobs:
  build:
    runs-on: [self-hosted, XXXXXXX]
    name: Contentful Migration Example
    steps:
      - name: Check out code into the directory
        uses: actions/checkout@v2

      - name: Contentful Migration
        id: migrate
        uses: contentful-userland/contentful-action@v1
        with:
          delete_feature: false
          space_id: ${{ secrets.SPACE_ID }}
          management_api_key: ${{ secrets.MANAGEMENT_API_KEY }}
        env:
          LOG_LEVEL: verbose

      - name: Create commit comment
        uses: peter-evans/commit-comment@v1
        with:
          body: |
            See changes to the [${{steps.migrate.outputs.environment_name }} ][1] Environment on Contentful.
            [1]: ${{steps.migrate.outputs.environment_url}}```

but t seems it is failing with following error

`Contentful Migration Example
Unexpected input(s) 'delete_feature', 'space_id', 'management_api_key', valid inputs are ['']`

it was an issue in my side and resolved


Add support for an optional prefix to path matching

We want to serve frontend resources and api backend calls from the same domain name. The idea is that we'll bind api calls for the frontend domain to the /api prefix and then use the same handlers as for the '/' prefix on the api domain. The support for one optional prefix is to be able to reuse the handler code with minimal change.

@tokle @bjorncs This is what we talked about right?


pointer events keep beeing removed

sometime the vaadin split layout keep the pointerevents removed from my controls.
I think this can happen, if the notifyResize throws an exception!
Can you surround this with a try catch?

I believe this is the same as https://github.com/vaadin/vaadin-split-layout/issues/80

@jogibear9988 could you verify it it's the same problem that @limonte points out?

It is :) Fix is coming soon.

Fixed in v3.0.1, thanks for reporting!


Trying to pass a Unicode string to os.stat

Similar to #486, this happens when I try to save a schematic named stable.nbt to /home/kevin/.mcedit/MCEdit/Schematics. It appears that the path passed to os.stat is unencoded unicode, whereas it should be an already encoded string. I've attached the terminal output for reference.
mcedit.log
Python version: 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2]
Platform: linux-x86_64
Commit: a0d1109
Pip freeze:
Cython==0.21.2
Pillow==2.9.0
PyOpenGL==3.1.0
PyYAML==3.11
-e git+https://github.com/Khroki/MCEdit-Unified.git@a0d1109c81d0b0bf450c46367ff054ef8a556600#egg=UNKNOWN-origin/HEAD
argparse==1.2.1
ftputil==3.3.1
numpy==1.9.3
pygame==1.9.2b6
python-xlib==0.16
six==1.10.0
wsgiref==0.1.2

os.stat accepts unencoded unicode:
Rio@RIO-PC ~
$ touch foo

Rio@RIO-PC ~
$ python
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os; os.stat(u'foo')
nt.stat_result(st_mode=16895, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=0L, st_atime=1470158905L, st_mtime=1470158905L, st_ctime=1403916800L)
>>>

It implicitly encodes the unicode object using the filesystem encoding. It then raises a complaint about NULL characters in the resulting encoded string.
NULL characters were apparently introduced in commit 1e186fe5c9f943e1fd68c234b949df3a1d1eb099.

Looks like you're using the internal file chooser which is the fallback when your system hasn't GTK installed (or MCEdit can't see it).
Can you send the mcedit.log file which is alongside MCEdit itself, please?


Unnecessary key-mappings.json file is attached to the IS pack

In IS-5.9.0-m4 under repository->resources->conf folder below unnecessary file is attached.
org.wso2.carbon.identity.event.server.feature.key-mapping.json
Proposed Labels
-Config

Fixed By: https://github.com/wso2/carbon-identity-framework/pull/2325, https://github.com/wso2/product-is/pull/5987


lost password dialogue

It would be good to have an option for users to reset lost passwords.
This could be implemented by a code sent to SMS/alternate email.

hi. do u find a solution for your problem?

no solution yet...


fuzzy_match_str_with_pos() may leak memory on failure

Problem:  fuzzy_match_str_with_pos() may leak memory on failure.
Solution: Also free match_positions itself.

Closing in favor of #14987


Documentation links now directed to read the docs

I've added the disclaimer to the read the docs as well.


./trust/trust_anchors.py:18:            # TODO: log warning`

Superseeded by 0.7.0 and current PRs milestone


Add select-other-device

@keybase/react-hackers
Still doing some tweaks on this.
There's a lot of duplication with select-other-device/index.render.desktop.js here, e.g. all of the Row component.  Shall we pull that up a level?  Or maybe we'll need to diverge and it's not worth it.
Is using TouchableHighlight directly the right idea, or is there a common-adapter that fits?
Zeplin:

Android:

i don't think we get much by moving row up a level, as its just a pure render component anyways. What i would hoist up is any business logic, which this thing lacks (other than the mapping of the type to an icon, which while it is the same on desktop, i think its fine to keep as its really render dependent and could diverge between the two platforms)
:+1:


deploy staticAtokens & initialize bridge

To be expected from this PR: Write the spell contract to be called by AAVE short executor on l1 to deploy staticAtoken proxies, and initialize the l2 bridge.
To do:

[ ] Write tests for spell contract
[ ] Set correct address and class hashes
[ ] Whitelist the contract on Starknet alpha mainnet

migrated to #120


Incorrect application of timeout option in socket http client adapter

A new http client option named "request_timeout" has been introduced, to differentiate between the simple connect "timeout", and correctly applied in Zend_Http_Client_Adapter_Curl.
However, Zend_Http_Client_Adapter_Socket still uses "timeout" for both the connect and request timeout:
$this->socket = @stream_socket_client($host . ':' . $port,
	$errno,
	$errstr,
	(int) $this->config['timeout'],
	$flags,
	$context
);

and later
// Set the stream timeout
if (! stream_set_timeout($this->socket, (int) $this->config['timeout'])) {
	// require_once 'Zend/Http/Client/Adapter/Exception.php';
	throw new Zend_Http_Client_Adapter_Exception('Unable to set the connection timeout');
}

but shouldn't the second piece of code use "request_timeout" instead?

ping @weierophinney


[Bug]: Actual server very slow on loading budget file (docker: edge as well as edge-alpine )

Verified issue does not already exist?

[X] I have searched and found no existing issue

What happened?
I am using actual server on docker (ARM device [raspberry pi 5]).
Docker tag: edge as well as edge-alpine
Few updates ago, the server got very slow, it almost took 4 seconds to load the initial page and several to load the DB. Almost all the fetch request took 4 or more seconds to complete. But after the initial load everything worked fine. Now sometimes it gives the error :
Fatal Error
There was a problem loading the app in this browser version.
Please get [in touch](https://actualbudget.org/contact) for support

I am running it behind a nginx proxy manager with custom SSL. Along with few other sites so it shouldn't be the problem.
What error did you receive?
Attaching .HAR file of the page load
actual.home.har.tar.gz
Other Info that might be useful->
The usage stats of the container:

Logs of the container:
Checking if there are any migrations to run for direction "up"...
Migrations: DONE
Listening on :::5006...
Checking if there are any migrations to run for direction "up"...
Migrations: DONE
Listening on :::5006...

Where are you hosting Actual?
Docker
What browsers are you seeing the problem on?
Microsoft Edge
Operating System
Linux

Anyone looking at the issue?


style: changed type for uniqueId's from string to uuid

Changes the data type for uniqueId from string to UUID.


add test for counting pre option and fix it's duplicate

Thank you for contributing to Pipenv!
The issue
Issue:
pipenv install --help shows duplicate --pre options #3475
The fix
I think problem in cli/options.py. install option already inherits --pre option from install_base+options through sync_options

once the changes are made per @frostming we can merge this, thanks for the pr!

Thanks for the pr
I'm calling this good enough, merging


Passmanager visualizer tests fail locally

Information

Qiskit Terra version: Master
Python version:
Operating system:

What is the current behavior?
When running the unit tests locally off of master the pass manager visualization tests always fail. The traceback:
==============================
Failed 2 tests - output below:
==============================

test.python.visualization.test_pass_manager_drawer.TestPassManagerDrawer.test_pass_manager_drawer_basic
-------------------------------------------------------------------------------------------------------

Captured traceback:
~~~~~~~~~~~~~~~~~~~
    b'Traceback (most recent call last):'
    b'  File "/home/mtreinish/git/qiskit/qiskit-terra/test/python/visualization/test_pass_manager_drawer.py", line 80, in test_pass_manager_drawer_basic'
    b"    self.assertFilesAreEqual(filename, path_to_diagram_reference('pass_manager_standard.dot'))"
    b'  File "/home/mtreinish/git/qiskit/qiskit-terra/test/python/visualization/visualization.py", line 46, in assertFilesAreEqual'
    b'    self.assertEqual(cur.read(), exp.read())'
    b'  File "/usr/lib64/python3.7/unittest/case.py", line 852, in assertEqual'
    b'    assertion_func(first, second, msg=msg)'
    b'  File "/usr/lib64/python3.7/unittest/case.py", line 1233, in assertMultiLineEqual'
    b'    self.fail(self._formatMessage(msg, standardMsg))'
    b'  File "/usr/lib64/python3.7/unittest/case.py", line 693, in fail'
    b'    raise self.failureException(msg)'
    b'AssertionError: \'digr[53 chars]abel="[0] FlowLinear";\\n1 [color=red, fontname[2206 chars]n}\\n\' != \'digr[53 chars]abel=FlowLinear;\\n1 [color=red, fontname=helve[2152 chars]n}\\n\''
    b'Diff is 2795 characters long. Set self.maxDiff to None to see it.'
    b''

test.python.visualization.test_pass_manager_drawer.TestPassManagerDrawer.test_pass_manager_drawer_style
-------------------------------------------------------------------------------------------------------

Captured traceback:
~~~~~~~~~~~~~~~~~~~
    b'Traceback (most recent call last):'
    b'  File "/home/mtreinish/git/qiskit/qiskit-terra/test/python/visualization/test_pass_manager_drawer.py", line 95, in test_pass_manager_drawer_style'
    b"    self.assertFilesAreEqual(filename, path_to_diagram_reference('pass_manager_style.dot'))"
    b'  File "/home/mtreinish/git/qiskit/qiskit-terra/test/python/visualization/visualization.py", line 46, in assertFilesAreEqual'
    b'    self.assertEqual(cur.read(), exp.read())'
    b'  File "/usr/lib64/python3.7/unittest/case.py", line 852, in assertEqual'
    b'    assertion_func(first, second, msg=msg)'
    b'  File "/usr/lib64/python3.7/unittest/case.py", line 1233, in assertMultiLineEqual'
    b'    self.fail(self._formatMessage(msg, standardMsg))'
    b'  File "/usr/lib64/python3.7/unittest/case.py", line 693, in fail'
    b'    raise self.failureException(msg)'
    b'AssertionError: \'digr[53 chars]abel="[0] FlowLinear";\\n1 [color=cyan, fontnam[2209 chars]n}\\n\' != \'digr[53 chars]abel=FlowLinear;\\n1 [color=cyan, fontname=helv[2155 chars]n}\\n\''
    b'Diff is 2798 characters long. Set self.maxDiff to None to see it.'
    b''

Steps to reproduce the problem
Run tests locally
What is the expected behavior?
The tests pass
Suggested solutions
Either fix or remove these tests, all the image comparison tests are super flaky and provide limited value.

Looking at the reference and output images I expect that this is a graphviz version difference locally between what was used to generate the image (and what's used in CI) and the latest version 2.42.2 which I have locally. Comparing the rendered output of the dot files, the reference image is:

and the tests generate:


mandelbrot generated by wbf2c encounters SegFault

While executing the compiled C program generated by wbf2c on mandelbrot.bf, it soon encounters segmentation fault.
The way to reproduce:

./wbf2c mandelbrot.b  > m.c
gcc -o m m.c && ./m

Tested on Linux/x86_64.

Yeah, that's definitely a bug. I wrote this 8 years ago, back when I was still a college undergrad, so there are probably lots and lots of bugs like this (which will never be fixed). It doesn't have a README.md because the latest commit pre-dates GitHub itself. How did you come across this?
If you're interested in a project like this, I highly recommend my much more recent (May 2015) bf-x86 instead: https://github.com/skeeto/bf-x86. No intermediate C, it compiles directly to optimized x86_64 machine code, so there are no dependencies on an external compiler and it can run programs JIT-style. It's far more interest.

@skeeto , Great! bf-x86 is superior, and I like its functionality to generate ELF directly.

By the way, is it possible to apply the multithreaded code generation techniques into bf-x86?

It's not currently a feature and would take some work to add it, but it
could be done without the hassle of introducing linkage:
http://nullprogram.com/blog/2015/05/15/
I'm not convinced there's much value in it, though. It was just a
experiment I tried on this old project.


Notebook: glaciers - some issues (WP5)

Notebook description
There are some issues to be resolved in the notebook:

Under the bar plot, I have printed "Date of digitization data are missing for 604 glaciers or 0.2790753549662938% of the dataset.". I would like to have this printed as a text box on the figure itself (left upper corner) with 2 digit precision (0.28%). Also, the years on the x axis do not seem to be uniform (some years are skipped in the labels)?
Same for "The global arithmetic mean year of digitization is 2003.079402293525 AD, while the global area-weighted mean is 2001.2994250034699 AD." (lower left corner of the plot).
I have made a 0.5 degree grid (rgi_raster) with values for the RGI region of each pixel (the value on the grid varies from 1 to 19 and it is 1x360x720 in dimensions, so the spatial domain and resolution are similar to the mass change data that are loaded in from the CDS). The RGI region is just a region where the glacier is situated in, and there are 19 of them (e.g. New-Zealand, Caucasus, Alaska, etc. and they all have a number up until 19). Anyway, what you do now in the code is calculate the cumulative glacier mass change for all grid points in the world domain (360x720) for each time step (46 years), i.e. the variable "Cumulative" in "ds2" (see print) is a 46-data point array ("ds2 = ds2.sum(("latitude","longitude"),keep_attrs=True)
"). What I would like is such a cumulative glacier mass change array for each of the RGI regions. So, it could be a loop through values 1 to 19 (if rgi_raster == 1, if rgi_raster == 2, ...) and then calculate the cumulative mass change of all glaciers (mass change pixels) that have a rgi_raster value of 1, 2, ... 19. In the end, I would like to have 19 times a 46-year long cumulative glacier mass change arrays (for rgi region 1, 2, ... 19, and preferably also 1 additional cumulative glacier mass change array with all spatial grid points included as there is now, e.g. put if rgi_raster > 0 or so). These can be named cumulative_rgi_1, cumulative_rgi_2, ... as per example. I hope it is clear.

Notebook link or upload
glacier_distribution31324.zip
Anything else we need to know?
No response
Environment

Is this a new template, or do you want to change an existing template?
If the latter, please let me know the name of the template in this repository.

Hi Mattia,
This is an update of https://github.com/bopen/c3s-eqc-toolbox-template/blob/main/notebooks/wp5/glacier_distribution.ipynb

Are you sure you started from the latest version of the template?
It doesn't look like you are using the code we revised.
Let's start with the bars. This is the code to make bars in the template:
year = pd.DataFrame(
    [gdf["BGNDATE"].str[:4].astype(int), gdf["ENDDATE"].str[:4].astype(int)]
)
gdf["year"] = year.where(year > 0).mean().round().astype("Int64")
size = gdf.set_index("year").groupby("year").size()
ax = size.plot.bar(figsize=(15, 5), grid=True, ylabel="Number of glaciers")

There's much more code in your notebook and the results are different. The template show no data in 2012, your code show no data in 2013. Which one is wrong?

Are you sure you started from the latest version of the template? It doesn't look like you are using the code we revised.
Let's start with the bars. This is the code to make bars in the template:
year = pd.DataFrame(
    [gdf["BGNDATE"].str[:4].astype(int), gdf["ENDDATE"].str[:4].astype(int)]
)
gdf["year"] = year.where(year > 0).mean().round().astype("Int64")
size = gdf.set_index("year").groupby("year").size()
ax = size.plot.bar(figsize=(15, 5), grid=True, ylabel="Number of glaciers")

There's much more code in your notebook and the results are different. The template show no data in 2012, your code show no data in 2013. Which one is wrong?

Hi Mattia,
Indeed, I changed a bit the code. Instead of just using the years of the dates (e.g. in our earlier example 20090703 would become 2009), I changed the code so that it transforms the date into decimal years, also taking into account the month and day of the year (e.g. 20090703 would become 2009.6 or so). If you round those decimal year results (as done for the bar plot), the resulting date to be used in the bar plot would be 2010 instead of 2009, hence the slightly different results I suppose. If you do .apply(np.floor) instead of .round(), the results would shift a bit and the bar plot would again show no data in 2012 as in the original example (maybe np.floor is indeed better to do). I did this transformation to decimal years rather than the "cut-off year" from the attribute table in order to more accurately calculate the average and area-weighted average year of digitization of the entire dataset later in the notebook (with gdf["year_dec"]). Results in the Python code are then also the same is with my Matlab program:

mmm I still can't reproduce your results.
I added the code to do what you described, but I get different results (see the latest template).
Anyways, not a big deal, you can change the computation of the digitalization year the way you prefer for your notebook.

Under the bar plot, I have printed "Date of digitization data are missing for 604 glaciers or 0.2790753549662938% of the dataset.". I would like to have this printed as a text box on the figure itself (left upper corner) with 2 digit precision (0.28%). Also, the years on the x axis do not seem to be uniform (some years are skipped in the labels)?

This is now implemented. Not sure what was the problem with text boxes, but it worked fine for me. I also added missing years to the dataframe (they are not shows as they are not in the data).
Here is the template: https://github.com/bopen/c3s-eqc-toolbox-template/blob/main/notebooks/wp5/glacier_distribution.ipynb
Here is the notebook executed: https://gist.github.com/malmans2/d8dda9942a0eaa227526be0c99887895
I'll take a look at the other requests later.

Actually, nevermind. I was looking at the old figure. I get the same results now.

Unless I misunderstood what you are trying to do, I'm pretty sure you have a bug.
Neither BGNDATE nor ENDDATE show records in 2014.

Same for "The global arithmetic mean year of digitization is 2003.079402293525 AD, while the global area-weighted mean is 2001.2994250034699 AD." (lower left corner of the plot).

I added this, but my results are quite different. I get 2000.22 vs 2000.72. See the latest template.

I have made a 0.5 degree grid (rgi_raster) with values for the RGI region of each pixel (the value on the grid varies from 1 to 19 and it is 1x360x720 in dimensions, so the spatial domain and resolution are similar to the mass change data that are loaded in from the CDS). The RGI region is just a region where the glacier is situated in, and there are 19 of them (e.g. New-Zealand, Caucasus, Alaska, etc. and they all have a number up until 19). Anyway, what you do now in the code is calculate the cumulative glacier mass change for all grid points in the world domain (360x720) for each time step (46 years), i.e. the variable "Cumulative" in "ds2" (see print) is a 46-data point array ("ds2 = ds2.sum(("latitude","longitude"),keep_attrs=True)
"). What I would like is such a cumulative glacier mass change array for each of the RGI regions. So, it could be a loop through values 1 to 19 (if rgi_raster == 1, if rgi_raster == 2, ...) and then calculate the cumulative mass change of all glaciers (mass change pixels) that have a rgi_raster value of 1, 2, ... 19. In the end, I would like to have 19 times a 46-year long cumulative glacier mass change arrays (for rgi region 1, 2, ... 19, and preferably also 1 additional cumulative glacier mass change array with all spatial grid points included as there is now, e.g. put if rgi_raster > 0 or so). These can be named cumulative_rgi_1, cumulative_rgi_2, ... as per example. I hope it is clear.

Sorry but this is not clear. You said "what you do now in the code is calculate the cumulative glacier mass change", but I don't see such computation in the template. All plots show the year of digitalization. Also, I don't see why the interpolation is needed if you already know the region for all data in the geodataframe. I guess I need to know how to compute the mass change first, then we can test on the whole dataset, and finally I can show you how to do it for single regions.

Hi Mattia,
I have to go now, I will look into it later tonight.
Thanks anyway!

No rush from my side. Have a good evening!

So for my third bullet point:
The code below I have written myself, it produces a raster with RGI regions based on the attribute table of the loaded shapefile from the CDS:
## Create a 0.5 degree map of pixels with corresponding RGI regions
# Extract relevant data
rgi = gdf['region'].values
lon = gdf['CENLON'].values
lat = gdf['CENLAT'].values
# Set resolution and create grid
resolution = 0.5
x_range = np.arange(lon.min(), lon.max()+resolution, resolution)
x_range = np.arange(-179.75,179.75+resolution,resolution)
y_range = np.arange(lat.min(), lat.max()+resolution, resolution)
y_range = np.arange(-89.75,89.75+resolution,resolution)
grid_x, grid_y = np.meshgrid(x_range, y_range)
# Interpolate data onto grid
points = list(zip(lon, lat))
grid_z = griddata(points, rgi, (grid_x, grid_y), method='nearest')
# Define transformation and CRS
transform = Affine.translation(grid_x[0][0]-resolution/2, grid_y[0][0]-resolution/2) * Affine.scale(resolution, resolution)
crs = CRS.from_epsg(4326)
# Write interpolated raster to file
interp_raster = rasterio.open('RGI.tif',
                              'w',
                              driver='GTiff',
                              height=grid_z.shape[0],
                              width=grid_z.shape[1],
                              count=1,
                              dtype=grid_z.dtype,
                              crs=crs,
                              transform=transform)
interp_raster.write(grid_z, 1)
interp_raster.close()
rgi_raster=(rioxarray.open_rasterio("RGI.tif").round())

The rgi_raster looks like this (it has values going from 1 to 19 and is 360x720 in spatial dimensions):

The following code is something you wrote to calculate cumulative glacier mass changes (in https://github.com/bopen/c3s-eqc-toolbox-template/blob/main/notebooks/wp5/glacier_mass_balance_timeseries.ipynb):
# Calculate glacier mass changes
ds2 = ds2.sum(("latitude","longitude"),keep_attrs=True)
ds2["time"] = ds2["time"].dt.year
ds2["time"].attrs |= {"long_name": "Time", "units": "yr"}
for da in ds2.data_vars.values():
    da.attrs["long_name"] = da.attrs["long_name"].replace("_", " ").title()
cumulative = ds2["Glacier"].cumsum("time")
cumulative.attrs = {
    "units": ds2["Glacier"].attrs["units"],
    "long_name": f"Cumulative {ds2['Glacier'].attrs['long_name']}",
}
ds2["Cumulative"] = cumulative

It produces an xarray.Dataset that looks as follows:
print(ds2)
<xarray.Dataset>
Dimensions:      (time: 46)
Coordinates:
  * time         (time) int64 1976 1977 1978 1979 1980 ... 2018 2019 2020 2021
Data variables:
    Glacier      (time) float64 dask.array<chunksize=(1,), meta=np.ndarray>
    Uncertainty  (time) float64 dask.array<chunksize=(1,), meta=np.ndarray>
    Cumulative   (time) float64 dask.array<chunksize=(1,), meta=np.ndarray>
Attributes:
    title:         Global gridded annual glacier mass change product
    project:       Copernicus Climate Change Service (C3S) Essential Climate ...
    data_version:  version-wgms-fog-2022-09
    institution:   World Glacier Monitoring Service - Geography Department - ...
    created_by:    Dr. Ines Dussaillant<EMAIL_ADDRESS>    references:    Fluctuation of Glagiers (FoG) database version wgms-fog-20...
    citation:
    Conventions:   CF Version CF-1.8
    comment:       Brief data description:Horizontal resolution:\t0.5° (latit...

And a cumulative glacier mass change array for every year (46 time dimensions):
print(ds2["Cumulative"].values)
[   90.71168102    80.79513611    72.87584419    52.82544759
<PHONE_NUMBER>7<PHONE_NUMBER>7<PHONE_NUMBER>4   333.400565
<PHONE_NUMBER>2<PHONE_NUMBER>8<PHONE_NUMBER>6<PHONE_NUMBER>3
<PHONE_NUMBER>1<PHONE_NUMBER><PHONE_NUMBER>3<PHONE_NUMBER>7
<PHONE_NUMBER>5<PHONE_NUMBER>3<PHONE_NUMBER>2   -99.13062512
  -183.00136248  -510.8472703   -669.49067903  -898.94472138
 -1043.37351895 -1205.67214689 -1366.43773165 -1556.73190548
 -1935.8221387  -2338.93546432 -2624.26239728 -2964.72087477
 -3139.39551596 -3397.19516061 -3694.51792765 -4084.66093178
 -4315.92381983 -4570.26046711 -4736.14224852 -4955.86465451
 -5334.61430501 -5608.31446033 -5825.96604111 -6326.7830968
 -6725.46587002 -7061.74942072]

However, the cumulative mass change array above is here calculated for every grid point of the world (all glaciers, within rgi regions 1 to 19 or thus for the entire 360x720 spatial grid). What I wanted to do is to calculate 19 different cumulative mass change arrays, for each RGI region separately, based on rgi_raster. So, a cumulative glacier mass change array for all pixels that have glaciers in rgi_raster == 1, rgi_raster == 2, etc. until rgi_raster == 19. I hope it is clear now!

Ohh I see, you have commented code in your notebook that refers to a ds2 created at the very beginning of the code.
So I guess you want to use "derived-gridded-glacier-mass-change".

Hi @yoniv1,
I don't fully follow what's happening in the code. Why are you computing the mask raster instead of using the same shapefile used to classify the glaciers? It's publicly available from the glims website, and it looks like it's pretty much the same you've been using in the other notebook from the gtn-g website.
import geopandas as gpd
import regionmask
import cartopy.crs as ccrs

shapefile_url = "https://www.glims.org/RGI/rgi60_files/00_rgi60_regions.zip"
gdf = gpd.read_file(shapefile_url)
gdf = gdf.dissolve(by="RGI_CODE", as_index=False)
regions = regionmask.from_geopandas(
    gdf, numbers="RGI_CODE", names="FULL_NAME", abbrevs="WGMS_CODE"
)
ax = regions.plot(
    projection=ccrs.Robinson(),
    add_ocean=True,
)
ax.set_global()

Also, my masks look quite different:
import geopandas as gpd
import regionmask
import cartopy.crs as ccrs
from c3s_eqc_automatic_quality_control import download, plot

# Glacier mass change data (CDS)
period_start = "1975_1976"
period_stop = "2020_2021"
assert all("_" in period and len(period) == 9 for period in (period_start, period_stop))
y0_start, y1_start = map(int, period_start.split("_"))
y0_stop, y1_stop = map(int, period_stop.split("_"))
collection_id2 = "derived-gridded-glacier-mass-change"
request2 = {
    "variable": "glacier_mass_change",
    "product_version": "wgms_fog_2022_09",
    "format": "zip",
    "hydrological_year": [
        f"{y0}_{str(y1)[-2:]}"
        for y0, y1 in zip(range(y0_start, y0_stop + 1), range(y1_start, y1_stop + 1))
    ],
}
ds2 = download.download_and_transform(
    collection_id2,
    request2,
    chunks={"hydrological_year": 1},
)

# shapefile
shapefile_url = "https://www.glims.org/RGI/rgi60_files/00_rgi60_regions.zip"
gdf = gpd.read_file(shapefile_url)
gdf = gdf.dissolve(by="RGI_CODE", as_index=False)
regions = regionmask.from_geopandas(
    gdf, numbers="RGI_CODE", names="FULL_NAME", abbrevs="WGMS_CODE"
)

# mask
mask = regions.mask(ds2)
plot.projected_map(mask)

I'll wait from your feedback to continue working on this.
In summary:

I can not reproduce your results shown in the bar plot (you have a bar in 2014, while as far as I can tell there's no data after 2013)
I can not reproduce your weighted and arithmetic means (you get a ~2year delta, my arithmetic and weighted means are much more similar)
I don't think you need to write your own code to infer masks as their shapefile is publicly available. Also, it looks to me that your third bullet point about cumulative glacier mass needs to be implemented in the other template (i.e., you don't even need to use insitu-glaciers-extent). If that's the case, please open a separate issue to discuss the changes that you want to make to glacier_mass_balance_timeseries.ipynb

Hi @malmans2

Thanks for the comments! Indeed, two CDS datasets are combined here (ds from insitu-glaciers-extent and ds2 from derived-gridded-glacier-mass-change). This is related to the use case question of the notebook. It analyses how the insitu-glaciers-extent dataset can be used to estimate global glacier volumes in the year 2000 AD. It can be answered by combining two datasets from the CDS, and according to Chunxue it was even good to combine datasets (I don't know if I have to make an additional thread for this then).
Yes, there is this mask from GTN-G website, but I discussed with Chunxue and preferably no external data are to be downloaded/used (only CDS data). The derived-gridded-glacier-mass-change dataset has no info on RGI regions, only the insitu-glaciers-extent dataset shapefile does. That is why I remade the RGI mask with the attribute table from insitu-glaciers-extent data to be used for the glacier mass change data with the same spatial dimensions. The rgi_raster I made indeed looks different than the GTN-G shapefile due to my 'nearest' interpolation, but it doesn't really matter because only the grid points where glaciers are present are important for the calculation (and they are correct).
My eventual plan is to make a 46-year long cumulative glacier mass change dataset for each RGI region (1 to 19) (from derived-gridded-glacier-mass-change) and combine it with the deviation of the area-weighted mean year of digitization for each region to the year 2000 AD (from insitu-glaciers-extent) in order to quantify over- or underestimation of glacier volumes at the year 2000 AD. So imagine you want to estimate global glacier volumes with RGI glacier outlines. Because glacier outlines are not all digitized at exactly 2000 AD, some glaciers are smaller or bigger than they would have been in 2000 AD. If these glaciers outline were to be used to estimate glacier volumes, the volume would be over- or underestimated (depending on whether they are digitized before or after 2000 AD). Imagine the area-weighted mean year of digitization of RGI region 18 is 1978 AD (from glacier extent data) and I know that glacier volume change between 1978 and 2000 AD is 100 km^3 (from glacier mass changes data), then I can say that glacier volumes in RGI region 18 in 2000 AD would be overestimated by 100 km^3. To answer this use question, I thus combine two datasets in 1 notebook.
I will look into the barplot and means later today.

Importing a publicly available shapefile should not be a problem (you already do it in your other template, and many other evaluators already do the same). Furthermore, if you use the url from glims I showed you, you can explicitly use the same version of the data downloaded from the CDS (6.0). The source of data is clearly defined in the CDS documentation of your data (this is how I found out that you don't need to infer the region shapes).
Anyways, it's your call. We only store templates in this repo, you can change it as you like it in the final version you are going to submit.
I'll add the cumultative mass change timeseries to this template, although it's pretty much just copy/paste from the other template.

Done. Again, if you prefer to use a different masking, just change the mask variable.
I added a quick and dirty plot:

Let me know if it's OK now.

Hi Mattia,
This is indeed what I'm after, but how would I need to adjust the code to use my own rgi_raster instead of the GTN-G shapefile for the masking of the regions (just in case)?
Thanks

You can compute the boolean variable mask the way you like. The only constraint is that it must have dimension (region, latitude, longitute).
I don't fully understand your implementation. For example, why do you need to specify an intermediate grid if you are going to use nearest neighbour?
This is how I would change the few lines after # Mask data, but maybe I'm overlooking something:
import xesmf as xe
import xarray as xr

# Mask data
regions = df["RGIID"].str[6:8].astype(int)
da = regions.to_xarray().assign_coords(
    lon=df["CENLON"].to_xarray(),
    lat=df["CENLAT"].to_xarray(),
)
regridder = xe.Regridder(da, ds, locstream_in=True, method="nearest_s2d")
mask_2d = regridder(da)
mask = xr.concat(
    [(mask_2d == region).expand_dims(region=[region]) for region in regions.unique()],
    "region",
)
ds = ds.where(mask)

Thanks, Mattia! It indeed works. I have now an almost complete notebook. The only thing that is weird is a warning that I get:
# Determine volume under- or overestimation
vol_est = np.zeros(np.max(ds2["region"].values))
for i in range(0,np.max(ds2["region"].values)):
    y_interp = scipy.interpolate.interp1d(ds2["time"].values,ds2["Cumulative"].values[:,i])
    vol_est[i] = 1.091*(y_interp(weighted_year.values[i]) - ds2["Cumulative"].values[:,i][np.where(ds2["time"].values==2000)])

[/data/wp5/.tmp/ipykernel_11583/2458034537.py:32](http://localhost:5678/data/wp5/.tmp/ipykernel_11583/2458034537.py#line=31): DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
  vol_est[i] = 1.091*(y_interp(weighted_year.values[i]) - ds2["Cumulative"].values[:,i][np.where(ds2["time"].values==2000)])

Here is the new notebook where everything should work except this error:
glacier_distribution (4).zip

I'll implement this in the template.
There's no need to use a for loop to compute interpolated variables as you are using arrays.
In the meantime, the first 2 bullet points here are important. Please let us know if the template is correct.
Finally, I suggest to start from the template and add comment/tune plots. It looks like you didn't implement most of the code we revise. The code in the template is meant to be optimised, readable, and in line with the code wrote by other evaluators.

The template is ready:

Here is the template: https://github.com/bopen/c3s-eqc-toolbox-template/blob/main/notebooks/wp5/glacier_distribution.ipynb
Here is the notebook executed: https://gist.github.com/malmans2/d8dda9942a0eaa227526be0c99887895

Please let me know if we can close this issue.

Hi Mattia,
I looked into detail to the differences of our both lists for the bar plot (gdf["year"].values). There are a few differences (if 9999 are given for the month and day, I just assume it to be 0101, i.e. 1st of January):

Index 27105 to 39567: BGNDATE is here 20049999 and ENDDATE 20069999. For some reason, your dataset returns 2004 and mine 2005. The correct is 2005 ((2004+2006)/2 = 2005).
Index to 45963 to 50500: BGNDATE is here 19999999 and ENDDATE 20039999. Your list returns 2000 and mine 2001. The correct is 2001 ((1999+2003)/2 = 2001).
Index 95327 to to 95330, BGNDATE is here 19629999 and ENDDATE is 19769999. Your list returns 1968 and mine 1969. The correct is 1969 ((1962+1976)/2) = 1969.

Now for the average and area-weighted average:
The differences arise because (1) the slight differences above, because (2) I make use of decimal years to calculate the averages, while you still make use of the same as list as used for the bar plot (rounded years without taking into account the month and day to calculate decimal years) (for example, for the first index (BGNDATE = 20090703 and ENDDATE = -9999999), your year would be 2009 to be inserted into the calculations, while mine would be 2009.50376454), and (3) also your arithmetic mean is lower than mine because you average the grouped regional means, rather than taking the average of the dataset as a whole. Because the number of glaciers varies in each grouped region, the arithmetic mean over the groups differs from the mean over the complete dataset:
print(mean.mean())
print(gdf["year"].mean())
2000.7232804219457
2002.1790339395343

I think the combination of those things explains the differences.

Hi @yoniv1,
There are some inconsistencies in what you are describing.
Let's start we the first:

if 9999 are given for the month and day, I just assume it to be 0101, i.e. 1st of January

I do the same after you requested it. See .replace("99", "01")

Index 27105 to 39567: BGNDATE is here 20049999 and ENDDATE 20069999. For some reason, your dataset returns 2004 and mine 2005. The correct is 2005 ((2004+2006)/2 = 2005).

Why? If it's true what you described above, the average of  20040101 and 20060101 is 20041231. Instead, you are doing an average of the year only. See pd.to_datetime(["20040101", "20060101"]).mean()

(Note that 2004 is a leap year)

Hi Mattia,
Sorry for the trouble. Ah, I see! Okay in that case your method seems correct. It just looked intuitively strange to have a result of 2004 as the mean date of 20040101 and 20060101 (if you average the decimal years (2004.00 and 2006.00, it would be 2005.00 though, I think it is a special case due to leap year involved in the calculation). But with 2004 being a leap year, averaging the dates themselves would indeed result in 20041231, then rounded to 2004. The same for leap years 2000 and 1968.

OK, no worries. The important thing is that it's clear what's causing the difference.
What about issue (2)? I don't follow exactly your reasoning. I think the difference is also explained by the fact the leap year are taken into account. Does it make sense?

Yes, the same happens for 1999-01-01 and 2003-01-01. The average date is 2000-31-12, rounded to 2000. Also 1962-01-01 and 1976-01-01 yields 1968-12-31 rounded to 1968. So I think indeed the leap years caused the trouble.

OK cool. Can I close this issue or do you need anything else?

I think it is resolved. Apart from the fact that maybe you have a more efficient way of transforming the average dates into decimal years to insert in the area-weighted average calculation?

Ohh I didn't see that, then it's not true that your point (2) here is due to leap years. Sorry but I deal with very different use cases every day.
I'll implement that in the template.

It's implemented now. Not that I take into account leap years to compute the decimal years.

Here is the template: https://github.com/bopen/c3s-eqc-toolbox-template/blob/main/notebooks/wp5/glacier_distribution.ipynb
Here is the notebook executed: https://gist.github.com/malmans2/d8dda9942a0eaa227526be0c99887895

Please take a look and let me know.

It's implemented now. Note that I take into account leap years to compute the decimal years.

Here is the template: https://github.com/bopen/c3s-eqc-toolbox-template/blob/main/notebooks/wp5/glacier_distribution.ipynb
Here is the notebook executed: https://gist.github.com/malmans2/d8dda9942a0eaa227526be0c99887895

Please take a look and let me know.

Hi Mattia,
Great, thanks for the work. I'm really happy with the result! Can be closed.

FYI, I realised there was a typo in the template, although it doesn't make much difference.
It's fixed now.
- gdf["decimal_year"] = year + (dates.dt.dayofyear - 1) / (364 + dates.dt.is_leap_year)
+ gdf["decimal_year"] = year + (dates.dt.dayofyear - 1) / (365 + dates.dt.is_leap_year)

No need to use a workaround, it's a supported feature.
You need to accept the terms and conditions and use your own credentials (e.g., use your own cdsapirc).
Other users asked similar questions. For example, see this: https://github.com/bopen/c3s-eqc-toolbox-template/issues/94#issuecomment-1693602743
Let me know if you're able to use your credentials.

Sorry, I don't know what to do. I accepted the terms with my account and now I am on the CDS page with my CDS API url and key. What is the file $HOME/.cdsapirc in my personal directory on the VM?

Create this file on the VM: /data/wp5/verhaegen_yoni/.cdsapirc
The content of the file is described here: https://cds.climate.copernicus.eu/api-how-to
Basically, .cdsapirc contains the key and url info to access the CDS
When you are done, add these lines on top of your notebook and re-run your notebook:
import os
os.environ["CDSAPI_RC"] = os.path.expanduser("~/verhaegen_yoni/.cdsapirc")

Does it work?

Ah, ok! I didn't realize it had to be created by myself, sorry. Yes, now it works, thanks!!


fixed date parsing for last updated string

I changed the date difference calc to be based off of the seconds since the date the podcast was updated to make the date last updated more accurate

LGTM!


Bug: fix UI processor request after renaming name to type

Bug description
after merging this PR https://github.com/ConduitIO/conduit/pull/663
the UI would crash, because the processor name field is renamed to type, so a request for creating a processor would look like:
{type: "maskfieldkey", config: {settings: {field: "one", replacement: "two"}}, type: "TYPE_TRANSFORM",…}
instead of:
{name: "maskfieldkey", config: {settings: {field: "one", replacement: "two"}}, type: "TYPE_TRANSFORM",…}
we also want to upgrade the go.buf.build/conduitio/conduit/conduitio/conduit to the new schema.
Steps to reproduce
try creating a processor after the PR is merged, notice the error!
Version
v0.4.0-nightly.20221012-10-ga52b393-dirty darwin/amd64

Done in https://github.com/ConduitIO/conduit/pull/671.


2.1/rc1 VPE custom component node tool tip is empty

Describe the issue
A clear and concise description of what the issue is.
I've added a custom KFP component to the palette and added it to a pipeline. Hovering over the node an empty box is displayed:

As a user I would expect to see:

the label (if defined)
the component name
all input properties
all output properties

For comparison, this is what is displayed for notebook nodes:

properly configured:

misconfigured

To Reproduce
Steps to reproduce the behavior:

Open VPE
Add custom [KFP] component node to canvas (didn't check behavior for AA)

On my end, I'm seeing that nodes that don't have any required fields will have empty tooltips until a properties edit occurs and the properties values are copied into the app_data. Nodes with required fields will show error messages in the tooltip. My understanding is that this will need to be added to the pipeline-editor package in the NodeTooltip component, by checking the current_parameters field in addition to app_data when creating the tooltip content. @bourdakos1 Do you agree?

I believe we only populate the tooltip with the properties explicitly defined in the pipeline. This means that any defaults or globally set properties won't show up in the tooltips. The current_parameters is used in the properties field to show the resolution of the defaults and node properties. However, the initial value of current_parameters is only the default value so we need to make sure we pull from both the pipeline data and current_parameters.
Implementation wise, I would add a getResolvedProperties function to the pipeline controller that pulls can pull from pipeline properties, node properties, and field default.
I think we should also add some sort of default label to the tooltip if there are no properties


Error: UNAUTHORIZED - Invalid token, audience

Describe the bug
For unknown reasons, your provider is querying the API as anonymous. In my case this happens for a resource of type artifactory_user. The terraform plan command ends with this error for a single resource of type artifactory_user:
╷
│ Error: Unable to Refresh Resource
│
│   with artifactory_user.admin,
│   on security_users.tf line 17, in resource "artifactory_user" "admin":
│   17: resource "artifactory_user" "admin" {
│
│ An unexpected error occurred while attempting to refresh resource state.
│ Please retry the operation or report this issue to the provider developers.
│
│ Error: UNAUTHORIZED - Invalid token, audience

In the artifactory access log, I see that the provider queried these resources as anonymous, which does not happen with other requests to the API.
2024-11-21T15:41:12.808Z|30f5f52ed57c5919:752c17aed0abe7e5:4f255bd16c78e94a:0|<IP_ADDRESS>|anonymous|GET|/access/api/v2/users/admin|401|97|-1|5|jfrog/terraform-provider-artifactory/12.5.0
[...]
2024-11-21T15:41:12.774Z|7103c53779f25e7e|<IP_ADDRESS>|admin|GET|/api/system/version|200|-1|1043|3|jfrog/terraform-provider-artifactory/12.5.0
2024-11-21T15:41:12.777Z|6296967fdb63d851|<IP_ADDRESS>|admin|POST|/api/system/usage|200|133|0|1|jfrog/terraform-provider-artifactory/12.5.0
[...]
2024-11-21T15:41:12.799Z|6fc73505ec37ebb4|<IP_ADDRESS>|admin|GET|/api/repositories/npm-snapshot-local|200|-1|1786|2|jfrog/terraform-provider-artifactory/12.5.0
2024-11-21T15:41:12.803Z|e8c8ad898f1377e3|<IP_ADDRESS>|admin|GET|/api/security/keypair/artifactory-rsa|200|-1|590|5|jfrog/terraform-provider-artifactory/12.5.0
[...]
2024-11-21T15:41:12.807Z|4439e0b99e3b275e|<IP_ADDRESS>|admin|GET|/api/repositories/helm-snapshot-local|200|-1|1792|4|jfrog/terraform-provider-artifactory/12.5.0
[...]

This is an example configuration:
terraform {
  backend "http" {}
  required_version = "~> 1.9.8"
  required_providers {
    artifactory = {
      source  = "jfrog/artifactory"
      version = "~> 12.5.0"
    }
    platform = {
      source  = "jfrog/platform"
      version = "~> 1.18.0"
    }
  }
}

provider "artifactory" {
  url          = var.artifactory_url
  access_token = var.artifactory_access_token
}

provider "platform" {
  url          = var.artifactory_url
  access_token = var.artifactory_access_token
}

resource "artifactory_user" "admin" {
  name              = "admin"
  email             = "example.com"
  admin             = true
  disable_ui_access = false
}

Above resources are a part of Terraform State previously managed in Artifactory 7.47.10 by Terraform 1.2.9 and Provider 6.20.2.
Expected behavior
Manage artfactory_user resources  properly :)
Additional context

Artifactory 7.98.8
Terraform 1.9.8 Linux AMD64 (same problem with 1.2.6)
Provider 12.5.0 (There is no this particular bug in the versions of: 6.20.2, 6.37.0, 7.11.2, 8.9.1, 9.9.2, 10.2.0, 10.3.0, 10.3.1, but occurs in version 10.3.2, 10.3.3 and probably later versions)

@piotrminkina Very odd. The provider uses the same HTTP client for all resources so the authentication should be the same. We have not seen this issue in our acceptance tests.
Can you verify this error still occurs when creating a new artifactory_user resource (vs a migrated state from previously version of the provider)?

@alexhung No problems with a new resource. The problem is with the currently existing resource.
  # artifactory_user.new_admin will be created
  + resource "artifactory_user" "new_admin" {
      + admin                      = true
      + disable_ui_access          = false
      + email                      =<EMAIL_ADDRESS>      + id                         = (known after apply)
      + internal_password_disabled = false
      + name                       = "new_admin"
      + profile_updatable          = true
    }
[...]
╷
│ Error: Unable to Refresh Resource
│
│   with artifactory_user.admin,
│   on security_users.tf line 17, in resource "artifactory_user" "admin":
│   17: resource "artifactory_user" "admin" {
│
│ An unexpected error occurred while attempting to refresh resource state.
│ Please retry the operation or report this issue to the provider developers.
│
│ Error:
│ 401 GET http://10-0-4-1.artifactory-l.sslip.io/access/api/v2/users/admin
│ {
│   "errors" : [ {
│     "code" : "UNAUTHORIZED",
│     "message" : "Invalid token, audience"
│   } ]
│ }
╵

Above results for the following code and version 10.3.2 of Artifactory provider:
resource "artifactory_user" "admin" {
  name              = "admin"
  email             =<EMAIL_ADDRESS>  admin             = true
  disable_ui_access = false
}

resource "artifactory_user" "new_admin" {
  name              = "new_admin"
  email             =<EMAIL_ADDRESS>  admin             = true
  disable_ui_access = false
}

Strange problem. It also occurs when trying to create a resource of type artifactory_ldap_setting_v2, but the error occurs only during terraform apply, while artifactory_user already occurs when calling the terraform plan command.
│ Error: Unable to Create Resource
│
│   with artifactory_ldap_setting_v2.ldapkat_users,
│   on security_ldap.tf line 1, in resource "artifactory_ldap_setting_v2" "ldapkat_users":
│    1: resource "artifactory_ldap_setting_v2" "ldapkat_users" {
│
│ An unexpected error occurred while creating the resource update request.
│ Please report this issue to the provider developers.
│
│ Error:
│ 401 POST
│ http://10-0-4-1.artifactory-l.sslip.io/access/api/v1/ldap/settings/
│ {
│   "errors" : [ {
│     "code" : "UNAUTHORIZED",
│     "message" : "Invalid token, audience"
│   } ]
│ }
╵

With the following access log entry:
2024-11-22T16:06:21.411Z|4ab6f17c94de278c:587a5838f4e4d6d5:1629b8df1a2270b8:0|<IP_ADDRESS>|anonymous|POST|/access/api/v1/ldap/settings/|401|97|508|28|jfrog/terraform-provider-artifactory/10.3.1

In the previous configuration, I was using resource type artifactory_ldap_setting, but after upgrading Artifactory to version 7.98.8 from version 7.47.10 and the provider to version 12.5.0 from version 6.20.2, the terraform plan command started showing me the following message:
Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the
last "terraform apply" which may have affected this plan:

  # artifactory_ldap_setting.ldapkat_users has been deleted
  - resource "artifactory_ldap_setting" "ldapkat_users" {
        id                           = "ldapkat-users"
      - key                          = "ldapkat-users" -> null
        # (13 unchanged attributes hidden)
    }

Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.

At this point, I decided to manually remove the LDAP configuration from the Artifactory admin panel. I removed the configuration for users and groups. I then ran terraform plan and terraform apply, but the same error still occurs when trying to apply LDAP settings.

@piotrminkina I think this may be related to the bug in the HTTP client we use. There's a patch out yesterday so I'll see if updating to the latest, patched version will resolve this issue.

@piotrminkina I've just released v12.5.1. Let me know if you still experiencing this issue.

For Terraform, I generate myself an access token by making a request to /ui/api/v1/system/security/token?services[]=artifactory

@piotrminkina This is not a recommended practice to use UI API. They are not public and thus there is no guarantees to be stable. If you wish to generate an access token using REST API, you should use the Access API: https://jfrog.com/help/r/jfrog-rest-apis/create-token This API allows you to generate access token with varying scopes and audiences.
As for artifactory_permission_target resource no longer available, it was deprecated earlier back in May this year with v10.3.1. Then when we increment the provider version to v12 in September, we removed the code per Terraform guideline. (Looks like I missed including this in the v12.0.0 changelog).
From your original message, it looks like you are upgrading from v6.20.2? If so, you may have missed/bypassed the deprecation period between May and September this year.
Regardless, you will need to migrate your permission target resources to the new platform_permission resource.

@alexhung I apologize for the confusion as it appeared that the problem is in my environment. Thank you for your time and good advice. Regards.


[ENH] Integrate JupyterLite into documentation site

Builds on top of #97
What does this implement/fix? Explain your changes.
This PR integrates JupyterLite into the documentation site, allowing visitors of the docs to try out examples in their browsers without Binder, thanks to a WebAssembly-powered Python kernel running in the browser (Pyodide Kernel).
Also modernizes the docs.yml workflow by using actions maintained by GitHub.

[!NOTE]
Approaching this PR with a marketing lens instead of an engineering lens:
By integrating JupyterLite and Skfolio, one can run portfolio optimization models directly in their browser, with zero local Python setup :)

You can take a look at the product of this PR here: https://peter-gy.github.io/skfolio.
Example with "launch lite" button: https://peter-gy.github.io/skfolio/auto_examples/1_mean_risk/plot_1_maximum_sharpe_ratio.html#conclusion
https://github.com/user-attachments/assets/5a95e5e9-8e65-4309-98c1-73f5bfb93b6b
Does your contribution introduce a new dependency? If yes, which one?
This work only introduces dependencies exclusively to the docs optional group:

jupyterlite-sphinx: wraps the JupyterLite CLI into a Sphinx Extension
jupyterlite-pyodide-kernel: provides us with WebAssembly-based Python kernel, exposing dependencies such as scikit-learn, pandas, cvxpy, etc. compiled into WASM via CPython & Emscripten
nbformat: to programmatically mutate Jupyter notebook files

What should a reviewer concentrate their feedback on?
The monkey patching of Jupyter Notebooks in docs/conf.py#patch_jupyterlite_notebooks.
For the record, the nicest solution would be to maintain a custom Pyodide distribution with skfolio and plotly being members of it by default. However, setting up and maintaining the associated CI/CD pipeline would be a real headache. (I roughly outlined what steps would be necessary for that here: https://github.com/pyodide/pyodide/pull/5183#issuecomment-2471628369)
As Pyodide maintainers are actively working on allowing externalized package recipes (https://github.com/pyodide/pyodide/pull/4987) my assumption is that in the foreseeable future it will be easier to extend the core Pyodide distribution with custom packages, hence the patch-based solution.
Did you add any tests for the change?
N/A
PR checklist

For all contributions

[x] The PR title starts with either [ENH], [MNT], [DOC], or [BUG]. [BUG] - bugfix, [MNT] - CI, test framework, [ENH] - adding or improving code, [DOC] - writing or improving documentation or docstrings.
[ ] Optionally, I've added myself and possibly others to the CODEOWNERS file - do this if you want to become the owner or maintainer of an estimator you added.

Really really cool stuff, well done!
Integrating JupyterLite is something I wanted to do for a long time so thanks for that PR.
I'll take the time to review it properly tomorrow.

The PR looks good.
I'm gonna release a new feature including two examples that use a mix-integer programing solver (SCIP).
SCIP is an optional dependency of cvxpy, that can be installed using  pip install cvxpy[SCIP] or pip install PySCIPOpt.
I'll add this SCIP package only in the docs for the example to build.
However, looks like PySCIPOpt doesn't have a pure Python wheel to work in JupyterLite.
My question is, what would be the best strategy to handle that?
I guess one solution would be to remove the JupyterLite button for specific example?

Whenever we need a dependency that has no pure Python wheel, we need to check whether Pyodide maintains a build recipe for it under https://github.com/pyodide/pyodide/tree/main/packages.
In this case, PySCIPOpt is not present, so indeed, features requiring that as a dependency will not work in JupyterLite.
However, instead of disabling the JupyterLite button, a better strategy would be to open a PR at Pyodide to add support to PySCIPOpt, the maintainers are really receptive to admitting new packages.

The doc deployment failed
I'll investigate further

The doc deployment failed I'll investigate further

I believe #99 should fix the issue.

Just noticed that some example that require an external data download fail like for this one.
The function load_ftse100_dataset download data from the skfolio-dataset repo. We did that on some datasets to reduce the main repo and package size.
Any clue on how to fix this?

Just noticed that some example that require an external data download fail like for this one.
The function load_ftse100_dataset download data from the skfolio-dataset repo. We did that on some datasets to reduce the main repo and package size.
Any clue on how to fix this?

Sure.
This is caused by the fact that when using JupyterLite, everything happens on the client side, within our browser, including the HTTP request we make in download_dataset. Our browser requests https://github.com/skfolio/skfolio-datasets/raw/main/*, but GitHub servers will block it because of CORS issues. (cc. https://github.com/pyodide/pyodide/issues/4060)
I see two solutions to get around that.
(1) The quick and pragmatic solution is to use a CORS proxy such as https://corsproxy.io/. We can modify download_dataset to check if sys.platform == 'emscripten' indicating at runtime that skfolio is being called from a browser. If that's the case, we prepend https://corsproxy.io/? to the dataset URL. Super simple solution at the app level, no need to mess with setting up infrastructure.
(2) We start hosting skfolio-dataset contents under a blob storage (AWS S3, Google Cloud Storage, Azure Bucket, etc.) where we have control over CORS policy and modify download_dataset to point to those URLs. This is a more heavy-weight solution, but has the benefit that the core source code would not need to include sys.platform check.
Due to its simplicity, I would suggest to go with option (1) for now.

Was still failing but found the solution by calling (https://github.com/jupyterlite/pyodide-kernel/issues/109):
import pyodide_http
pyodide_http.patch_all()

I'll add that in the JupyterLite Initialization section.


Model files suffixed with '*.pth.tar' should be supported

Some pytorch model files suffixed with  '*.pth.tar'. The suffix should be list in open dialog.

The scenario is supported via drag & drop. Since these files are not proper .tar files the extension is used incorrectly.


How to use it using ajax ?

Please Help
How to use it using ajax ,is there any documentation ?

It work's the same, you just have to use AJAX calls to get your cart content from the session.

$.ajax({               type: 'post',               url: action-url,               data: data,                             success: function(response) {                 console.log("{{Cart::subtotal()}}");                 console.log("{{Cart::content()->count()}}");               }             });
Using Crinsane in ajax but the Cart::subtotal and cart count remains zero even after I add items in the cart.
After I reload the page it shows the correct value.
What can be the problem??

Because what you're trying to do doesn't work. Blade will render before the JavaScript, so you're actually just console.log -ing the subtotal and count on page load. Your ajax call should return the subtotal and content

@Crinsane So how can I get the value of subtotal and count?
In ajax success response I am getting object of Cart::content().

Either calculate them yourself from the response you get, or you return all of those from you controller.
return response()->json(
   'content' => Cart::content(),
   'subtotal' => Cart::subtotal(),
   'count' => Cart::content()->count()
);

Loads of ways to solve this, just google around a bit.

Thanks @Crinsane

@Crinsane  why i'm always get emty when passing into json but there's a data on my cart?


Added ConverterCulture to bindings.

What does the pull request do?
Previously, all binding converters were passed CultureInfo.CurrentCulture - this PR adds a ConverterCulture parameter to compiled and reflection bindings which allows one to specify the culture which will be passed.
This feature is similar to WPF's Binding.ConverterCulture except that the value doesn't fall back to the control's Language property as we don't currently have a Control.Language property. Instead it falls back to the previously supported value of CultureInfo.CurrentCulture.

The BindingExpressionTests.Should_ConvertXxx tests are failing after this PR if you have a locale that's not using a dot as the decimal separator (e.g. fr-FR). I think these tests should use the InvariantCulture explicitly?

[FAIL]
Failed Avalonia.Base.UnitTests.Data.Core.BindingExpressionTests.Should_Convert_Get_Double_To_String [< 1 ms]
Error Message:
Assert.Equal() Failure
Expected: 5,6
Actual:   5.6

@MrJul I think so tbh.


BUCK and/or Bazel rules_rust proof-of-concept experiment

What
Try to build with bazel and/or BUCK
Why
Bazel can be a pretty incredible tool for {fast, correct} builds in my experience. BUCK is a competitor that seeks to serve the same purpose.
Reference
https://github.com/google/cargo-raze
http://bazelbuild.github.io/rules_rust/
Interesting that there are some BUCK files in zingo-mobile though .. BUCK could work. Seems like it's a little more tailored towards react-native and mobile targets ...
https://buck.build/
https://buck.build/setup/getting_started.html
https://github.com/zingolabs/zingo-mobile/blob/dev/android/app/_BUCK#L1

Interesting tidbit https://cxx.rs/build/bazel.html

See also a great effort to make zcash build on bazel: https://github.com/zcash/zcash/pull/2891/files
Probably should have been prioritized and merged IMHO.


Model without mesh error

I want to do a small experiment for a simple Urdf file without mesh etc.
see this Urdf file with only one bar:
>
> <?xml version="1.0"?>
> <robot name="model">
>    <link name="base_link"/>
>    <joint name="base_joint" type="fixed">
>     <parent link="base_link"/>
>     <child link="link1"/>
>     <origin rpy="0 0 0" xyz="0 0 0"/>
>   </joint>
>    <link name="link1">
>     <collision>
>       <origin rpy="0 0 0" xyz="0 0 1.0"/>
>       <geometry>
>         <box size="0.1 0.1 2"/>
>       </geometry>
>     </collision>
>     <visual>
>       <origin rpy="0 0 0" xyz="0 0 1.0"/>
>       <geometry>
>         <box size="0.1 0.1 2"/>
>       </geometry>
>       <material name="orange"/>
>     </visual>
>     <inertial>
>       <origin rpy="0 0 0" xyz="0 0 1.0"/>
>       <mass value="1"/>
>       <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
>     </inertial>
>   </link>
> </robot>
>

However, Gepetto gui doesn't show the box .
BOX does not exist.: unspecified iostream_category error
Node "world/pinocchio/collisions/link1_0" does not exist.
BOX does not exist.: unspecified iostream_category error
Node "world/pinocchio/visuals/link1_0" does not exist.
In python I tried it like this way:
`# Import model
robot = pin.RobotWrapper.BuildFromURDF(
    urdf_model_path, [mesh_dir], pin.JointModelFreeFlyer())  # floating base
model = robot.model
data = model.createData()

robot.initDisplay(loadModel=True)
robot.display(robot.q0)`

Can you help me out?

May be related to #726. In short, right now Pinocchio's routines are only able to show meshes. This should be fixed by enhancing GepettoVisualizer https://github.com/stack-of-tasks/pinocchio/blob/master/bindings/python/pinocchio/visualize/gepetto_visualizer.py

So, this requires python bindings for hpp-fcl.
I was about to make them myself inside Pinocchio, but @jmirabel told me that they are being made inside hpp-fcl itself: they are basically ready on the refactoring branch, which should be merged in a matter of weeks, after the necessary compatibility checks.
This being the case, it would be wasteful and counter-productive to develop the bindings in Pinocchio. Therefore, we will wait for a new release of hpp-fcl.

OK, I see. Thanks.

@ddliugit, I think we can keep this issue open until it is solved

OK, that's great.

Solved by #1004


EVEREST-400 EVEREST-514 encrypt secrets in secrets storage

CHANGE DESCRIPTION
Problem:
EVEREST-400
EVEREST-514
We were previously storing secrets in plain-text which obviously a really bad idea.
Solution:
Leverage hashicorp vault's AESGCM barrier module to encrypt the secrets in the postgres internal database.
We also automatically migrate the secrets that might have been stored previously in the database. To do so, we first migrate the DB schema to a transitional version (v8). Then, we go through each plain text secret stored and migrate it to the secrets storage. Lastly, after all plain text secrets have been migrated, we conclude the schema migration to the final version (v9).
CHECKLIST
Jira

[x] Is the Jira ticket created and referenced properly?

Tests

~[] Is an Integration test/test case added for the new feature/change?~
~[] Are unit tests added where appropriate?~

@recharte One other thing I just realized?
I was expecting we would connect to an external Vault instance - e.g. in case customers already run their own instance.
Do I understand it correctly that instead of running a separate instance we're running Vault as part of Everest backend?

@recharte One other thing I just realized. I was expecting we would connect to an external Vault instance - e.g. in case customers already run their own instance.
Do I understand it correctly that instead of running a separate instance we're running Vault as part of Everest backend?

Neither of those is what we want right now.
What you're describing is phase 2 of the Percona secrets management plan. In phase 2, the plan is to connect to a vault instance which can be external and managed by the user or bundled with a percona product.
What we are implementing right now is phase 1. This leverages the already existing backend DB (postgresql) and encrypts the secrets before persisting them in the DB.
We had many options for handling this encryption before storing but we decided on using the module used by vault to abstract this operation in simple Put, Get, Delete methods. So we are not using vault per se, we are using the same mechanism that vault uses to encrypt secret when using the postgresql physical backend.

Hey folks, I'm keeping this PR open until Thursday, as I'm waiting for a confirmation from legal regarding the BSL license of<EMAIL_ADDRESS>


Navbar smol hover fixes

Seems Create and Stats are not on hover and should be on hover?
Plus seems after clicking, it stays open. Is that intentional? I guess we should not have it there?
Refactoring of this component would be welcome I guess :)
https://user-images.githubusercontent.com/5887929/205489345-5bc3b05e-9214-4111-81df-cdf5cfea1d26.mov
https://user-images.githubusercontent.com/5887929/205489443-57b1d6fc-774e-41b5-8f25-ae861f08179d.mov

👋🏻

wierd.
i thought  i fixed it already
@petersopko  are you working on this?
asking because of your comment

navbar refactor is taking longer than expected, I'm passing for now (feel free to grab this one)

wierd. i thought i fixed it already @petersopko are you working on this? asking because of your comment

navbar refactor is taking longer than expected, I'm passing for now (feel free to grab this one)

yup, I'll get to continue on this one in the evening :) navbar component is mess in general so I started working on refactor, also, not sure where did you fix this but I found yesterday that there's a known issue in buefy which wasn't fixed and was closed as stale

https://github.com/buefy/buefy/issues/3086

That's why the hoverable prop doesn't work, if you remove collapsible it does, just doesn't work together.

ignore

ignore

still working on this 🫢


Bank - Fetch Test case Fixes

Update test cases for the following methods
Bank test cases

fetch_accounts (pagination structure missing)
fetch_bank_transactions (pagination structure missing)
fetch_validators (pagination structure missing, default_transaction_fee data type is incorrect)
fetch_validator_confirmation_services  (pagination structure missing)
create_validator_confirmation_service (update comment it says fetch instead of create)
fetch_banks (test case missing)

Validator test cases

fetch_accounts (pagination structure missing)
fetch_confirmation_block (response need to be updated)

We have found that the documentation we were following is a bit outdated main change required to fix all these test cases is to add pagination. kindly run the respective API call and see the structure there to follow for mock data.
All of these are Fetch requests so can easily be tested.

@velibor7 For now what we want to achieve here is just validate that all the keys are there and their structure is alright.

Okay, I think 1 correctly structured page is okay then. I'll work on this

@velibor7
This is a bank IP
<IP_ADDRESS>
This is a validator IP
<IP_ADDRESS>
You can send the calls here and see the response and we would want the test cases to have the same structure

I did it for fetch accounts with #48 Tell me if I should do the same with the rest :)

yeah all of these are fetch requests you can fetch the data

acc: 514983fc77ebf39bedb82de179d2312497757e1a0e4276835844479dbfa80e5f

Paid


Documentation Fix

Hi everybody,
I just found a mistake on documentation, but I don't know how fix it.
Into Ouptut section of documentation, there is a reference to output.libraryTarget as 'module', but seems like 'module' is not a valid option to output.libraryTarget.
I try to fix it, but then I realize that I don't know what value I should use there.
https://github.com/webpack/webpack.js.org/blob/master/src/content/configuration/output.md#outputmodule
If for some reason 'module' is a valid type if we are using experiments.outputModule, please let'me know.
Thanks.

Thansk @anikethsaha


Rename 'XEO.Group' as 'XEO.Collection'

Seems to better imply a container of components.
It's not strictly a collection, but it seems OK to use the term since there's not much chance of anyone implementing a complete collections API within the XEO namespace in future, ie. OK to use the term loosely.

Done


Native module RNVectorIcons tries to override RNVectorIcons

After following all the installation process of React Native Vector Icons on GitHub, i ended up getting this error telling me that:
Native module RNVectorIcons tries to override RNVectorIcons.  Check the getPackages() method in MainApplication.java, it might be that module is being created twice. If this was your intention, set canOverrideExsistingModule=true. This error may also be present if the package is present only once in getPackages() but is also automatically added later during build time by autolinking. Try removing the existing entry and rebuild.
My Application.kt looks like this:
package com.project

import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.soloader.SoLoader
import com.oblador.vectoricons.VectorIconsPackage;

class MainApplication : Application(), ReactApplication {

  override val reactNativeHost: ReactNativeHost =
      object : DefaultReactNativeHost(this) {
        override fun getPackages(): List<ReactPackage> =
            PackageList(this).packages.apply {
              add(VectorIconsPackage())
              // Packages that cannot be autolinked yet can be added manually here, for example:
              // add(MyReactNativePackage())
            }

        override fun getJSMainModuleName(): String = "index"

        override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

        override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
        override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
      }

  override val reactHost: ReactHost
    get() = getDefaultReactHost(applicationContext, reactNativeHost)

  override fun onCreate() {
    super.onCreate()
    SoLoader.init(this, false)
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
      // If you opted-in for the New Architecture, we load the native entry point for this app.
      load()
    }
  }
}

If i try to remove   add(VectorIconsPackage()) , i get two errors. The first error looks like this:
 ERROR  Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'VectorIcons' could not be found. Verify that a module by this name is registered in the native binary.Bridgeless mode: false. TurboModule interop: false. Modules loaded: {"NativeModules":["PlatformConstants","LogBox","Timing","AppState","SourceCode","BlobModule","WebSocketModule","DevSettings","DevToolsSettingsManager","Networking","Appearance","DevLoadingView","HeadlessJsTaskSupport","UIManager","DeviceInfo","ImageLoader","SoundManager","IntentAndroid","DeviceEventManager"],"TurboModules":[],"NotFound":["NativePerformanceCxx","NativePerformanceObserverCxx","RedBox","BugReporting","LinkingManager","VectorIcons"]}, js engine: hermes
 LOG  Running "Project" with {"rootTag":11}

The second error looks like this:
Invariant Violation: "Project" has not been registered. This can happen if:
* Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.
* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called., js engine: Project

Dependencies:
"dependencies": {
    "@react-native-vector-icons/ionicons": "^7.4.0-alpha.16",
    "@types/react-native-vector-icons": "^6.4.18",
    "react": "18.2.0",
    "react-native": "0.74.3",
    "react-native-vector-icons": "^10.1.0"
  }

@danielaloycedaniel You are mixing and matching the yet to be released multiple package version of RNVI.
I would recommend using the new version if this is a new project, which would mean replacing react-native-vector-icons with `@react-native-vector-icons/common'.
See the instructions at https://github.com/oblador/react-native-vector-icons/tree/monorepo

@danielaloycedaniel You are mixing and matching the yet to be released multiple package version of RNVI.
I would recommend using the new version if this is a new project, which would mean replacing react-native-vector-icons with `@react-native-vector-icons/common'.
See the instructions at https://github.com/oblador/react-native-vector-icons/tree/monorepo

Thanks, i added two similar dependecies, i uninstalled "@react-native-vector-icons/ionicons": "^7.4.0-alpha.16" and leave react-native-vector-icons and that fixed an error. Thanks a lot.


Handel or ignore non-standard dimensions

I'm trying vcztools on a zarr store that was not created with bio2zarr. This zarr includes an additional dimension 'nucleotides' which I would like to exclude from the output VCF but would rather nod delete. Currently vcztools view out.zarr results in the error:
Cannot determine VCF Number for dimension name 'nucleotides' in <zarr.core.Array '/call_ND' (2376, 2, 4) int32 read-only>

Ideally there would be an option to exclude some variables/dimensions from the output VCF.

I guess a sensible default here would be to warn if non-VCF compliant fields are present (rather than erroring) and provide an option to include these in the output in a best-effort manner?


Pressing "Login" loses email/password already typed

I typed in my email/username/password, and then pressed "Login", which I thought was a button at the bottom.
It then flipped like changing a tab, and gave me a new empty form with everything I had entered lost.
Either keeping what I entered, or making it clearer from the design that I need to choose login first.

@frabcus This is the repository of the Android app. Please report your issues about the web client at https://github.com/vector-im/riot-web/issues. Thank you.

@sabrinaj This one is actually an Android app issue! Apologies for the other two that weren't.

I'm not sure I understand how you lost what you entered. Was it when switching from registration screen to login screen?

@sabrinaj yes, that's correct.
I entered my email and password into the registration form, then pressed login thinking that was the button login. It flipped me to a different form and I had to retype my (long, but that's another story!) password.

frabcus  : to summarize you the login/register
-> you tap first on register / login to select the expected action : the selected action has a green background i.e register or login
-> you write the expected fields and tap a second time to start the registration / login.
The login and the registration are two separated forms : you can switch back from one to the other and retrieve the dedicated form fields.
Does it make sense ?

@ylecollen yes, that is what it does. I found it confusing, and it gave me the burden of having to rekey my password during onboarding.


Support for axum 0.7.1

After upgrading to axum 0.7.1 I get the following error:
the trait bound `Router: IntoTransportLayer` is not satisfied
the following other types implement trait `IntoTransportLayer`:
  axum::extract::connect_info::IntoMakeServiceWithConnectInfo<axum::routing::Router, C>
  axum::routing::Router
  axum::routing::into_make_service::IntoMakeService<axum::routing::Router>

Hey, I saw the release today. I have started work on an update with Axum 0.7 support. The upgrade is not trivial as there are quite a lot of breaking changes. It will probably be at the weekend I'll have a new version ready.

@andrewweston it turns out it's MUCH simpler than I initially thought when looking at it. The Tokio / Axum chaps have added a lot of utility crates to help with migrations.
You can find an upgraded release candidate available here https://crates.io/crates/axum-test/14.0.0-rc.0
Please be aware:

The TestServer::new and TestServer::new_with_config functions are now async.
The docs have not been updated yet, and still reflect the previous version.
I have not tested this on any real-world projects.

(All of the above will be happening before any final release.)

@andrewweston it turns out it's MUCH simpler than I initially thought when looking at it. The Tokio / Axum chaps have added a lot of utility crates to help with migrations.
You can find an upgraded release candidate available here https://crates.io/crates/axum-test/14.0.0-rc.0
Please be aware:

The TestServer::new and TestServer::new_with_config functions are now async.
The docs have not been updated yet, and still reflect the previous version.
I have not tested this on any real-world projects.

(All of the above will be happening before any final release.)

Works like a charm. Thank you for such a quick response.

A new release candidate is available here https://crates.io/crates/axum-test/14.0.0-rc.1
For this release the async for TestServer::new and TestServer::new_with_config is reverted (sorry for any hassle).

Version 14.0.0 is now release, enjoy! https://crates.io/crates/axum-test


MatMul case fails with MatMulPackedProgramCS

Add code below into mobilenet/index.js to test.
let x = tf.tensor2d([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],[4,6]);
let k = tf.tensor2d([1,0,0,1,1,0,1,0,0,1,0,1],[6,2]);
x.matMul(k).print(1);

An incorrect result will occur.
Tensor
  dtype: float32
  rank: 2
  shape: [4,2]
  values:
    [[32, 13],
     [50, 31],
     [20, 49],
     [38, 67]]

let x = tf.tensor2d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], [4, 4] /* shape */);
let k = tf.tensor2d([1, 0, 0, 1, 1, 0, 0, 1], [4, 2]);
x.matMul(k).print(1);

Tensor
  dtype: float32
  rank: 2
  shape: [4,2]
  values:
    [[12, 14],
     [20, 22],
     [12, 14],
     [20, 22]]

If we use compute shader without shared memory, is there still error?

@qjia7 , no, it works well without shared memory :(


Initial ages

Description
This PR uses rv_histogram to sample ages based on binned age data inputs. This resolves the current issue that initial ages are only integer values (or more specifically, the initial ages are only sampled from the lower bin edges).
Main:

This PR:

Larger bin widths now also work more correctly - with 10 year age bins e.g.
age,value
0,220.548
10,145.86
20,102.081
30,57.429
40,40.608
50,30.367
60,18.467
70,10.929
80,3.812
90,0.398
100,0.008
110,0

Main:

This PR:

Checklist

[x] Code commented & docstrings added
[ ] New tests were needed and have been added
[x] A new version number was needed & changelog has been updated
[ ] A new PyPI version needs to be released

Ah actually @RomeshA , I thought the docs build was failing idiopathically, but it's an actual error:
--> 107             dist = ss.Dist(rv_histogram((age_props,np.append(age_bins, age_bins[-1]+1)), density=age_props.sum() == 1), name='Age distribution')
    108         return dist

/software/anaconda3/lib/python3.11/site-packages/scipy/stats/_continuous_distns.py in ?(self, histogram, density, *args, **kwargs)
  10952                        "Specify `density` explicitly to silence this warning.")
  10953             warnings.warn(message, RuntimeWarning, stacklevel=2)
  10954             density = True
  10955         elif not density:
> 10956             self._hpdf = self._hpdf / self._hbin_widths
  10957
  10958         self._hpdf = self._hpdf / float(np.sum(self._hpdf * self._hbin_widths))
  10959         self._hcdf = np.cumsum(self._hpdf * self._hbin_widths)

ValueError: operands could not be broadcast together with shapes (101,2) (101,)

We should fix this before merging


Wingman

Is it possible to make a wingman mode?

Hi!
I'm not exactly sure what you mean. This panel is more for competitive 5v5 tournaments. It is possible to work around this though, and adjust your get5 config (live.cfg) on your server as well. The only changes you would need to make code-wise would be the list of maps that you wish to select, which are located here: https://github.com/PhlexPlexico/G5V/blob/3df33476bda4b1054956404d5a6217bbd73f96bb/src/components/NewMatchForm.vue#L117
You can adjust those values to be anything you wish, instead of de_dust2 for example, you could change the values to de_shortdust. Then, set Players Per Team to 2.
The map list could be something I change in the future as well, and make it more modular (have it be in a settings file maybe?).

And in the game, the veto will be transmitted from the api?
sry my eng is very bad, I'm from Russia :)

Yup! The API sends over the maplist to veto in-game, and so long as the maps exist on the server, it should have no problem changing maps once the veto is complete.
And no worries, I know zero Russian so you're already many steps ahead of me :)

thanks a lot, I'll try this option


[ERROR DRT-0218] Guide is not connected to design

We are getting this warning on some of the sram pins:
[WARNING DRT-1001] No guide in the pin neighborhood
[WARNING DRT-0215] Pin genblk1\[1\].RAM/dout0[22] not covered by guide.
[WARNING DRT-0215] Pin genblk1\[1\].RAM/dout0[22] not covered by guide.
[WARNING DRT-0225] sram_rdata\[1\]\[22\] 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0224] sram_rdata\[1\]\[22\] 2 pin not visited, number of guides = 6.

Then, the detailed router fails with this error
[ERROR DRT-0218] Guide is not connected to design.
Tested with openroad commit: 934e0cc13d8d24ca477f5dfd26b64b232065951a
sram_droute_packaged.zip

@eder-matheus I assume the issue is in grt not drt; if you find otherwise please assign it back.

@Manarabdelaty could you attach the groute_package for this run?

@eder-matheus Here it is
sram_groute_packaged.zip

@maliberty The pin with the error is not being covered by the guide because the pin geometry intersects with a single track, only at its right boundary. Check the figure below:

grt is computing the position on the routing grid for this pin based on this single track, and this position generates a guide that is not covering the pin. Check this other figure:

This is a perfect example of the mismatch between drt pin access and grt "pin to grid". I can workaround this issue by ignoring the track position for IO and macro pins, but a better correlation between grt and drt will still be needed.

@maliberty When I ignore the position of the tracks for IO and macro pins, the generated guides are valid for TR, which ends with 1 DRCs.

@eder-matheus I agree about grt/drt PA (topic for tomorrow's mtg).
@Manarabdelaty is this urgent or can it wait a while for a better solution?

@maliberty We have a workaround for now to get around this issue (flipping some of the macros helped avoid hitting this error).

@Manarabdelaty what is the workaround? I've run into this problem also.

@eder-matheus it looks like the workaround is not working, @donn mentioned this today.
Please take a look at this.
A possible workaround might be to run the pin_access command before GR.

I've fixed a small bug in the grt code that uses the access points from drt. I've tested the falling design running the pin_access command and it is working properly now.


Rider Link don't compile on UE 5.3 Preview1

RiderGameControl.cpp(296): error C4855: implicit capture of 'this' via '[=]' is deprecated in '/std:c++20'

This one is already fixed and will be available in the next build

Hello! I am still seeing this error. How can I get the latest version of RiderLink/UnrealLink? It's bundled with Rider now, so I'm not sure how to ask it to update to the fixed version. I tried updating Rider & Toolbox to the latest versions. Any help is appreciated. Thank you!


⚠ deces.matchid.io search API has degraded performance

In dc221ad, deces.matchid.io search API (https://deces.matchid.io/deces/api/v1/search?q=pompidou) experienced degraded performance:

HTTP code: 200
Response time: 4020 ms

Resolved: deces.matchid.io search API performance has improved in cc20d51 after 14 minutes.


[Menu] Group and Separator components

Created the Group and Separator components for the Menu.
Closes #70

@michaldudak Label needs to be added to the Anatomy section code.

Done.


Update view commands in UG

Update the UG for the following view commands:

view --today
view DATE
view -p --all
view -p

The order was kept as it was before the change in #380.

Codecov Report
Base: 55.01% // Head: 55.01% // No change to project coverage :thumbsup:

Coverage data is based on head (c0039cc) compared to base (a464578).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff            @@
##             master     #402   +/-   ##
=========================================
  Coverage     55.01%   55.01%
  Complexity      896      896
=========================================
  Files           182      182
  Lines          4035     4035
  Branches        533      533
=========================================
  Hits           2220     2220
  Misses         1701     1701
  Partials        114      114

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Support Enhanced Networking

Enhanced Networking supports higher transfer rates between EC2 and S3.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html

Hi @denyska, I just tried ssh-ing into an Elastic CI Stack t3.large instance and checked the ethtool output:
[ec2-user@ip-10-0-1-7 ~]$ ethtool -i eth0
driver: ena
version: 2.4.0g
firmware-version:
expansion-rom-version:
bus-info: 0000:00:05.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

Looks like this is using the ENA driver already. Let us know if there is there a situation where the ENA driver isn’t used and I can look into getting that fixed for you. Thanks!