python312Packages.lightning-utilities: 0.11.6 -> 0.11.7

Description of changes
Changelog: https://github.com/Lightning-AI/utilities/releases/tag/v0.11.7

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

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

6 packages marked as broken and skipped:

piper-train
piper-train.dist
python311Packages.elegy
python311Packages.elegy.dist
python311Packages.treex
python311Packages.treex.dist

4 packages failed to build:

python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python312Packages.rising
python312Packages.rising.dist

22 packages built:

python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist
whisper-ctranslate2
whisper-ctranslate2.dist

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

6 packages marked as broken and skipped:

piper-train
piper-train.dist
python311Packages.elegy
python311Packages.elegy.dist
python311Packages.treex
python311Packages.treex.dist

2 packages failed to build:

python312Packages.rising
python312Packages.rising.dist

24 packages built:

python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist
whisper-ctranslate2
whisper-ctranslate2.dist

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

8 packages marked as broken and skipped:

piper-train
piper-train.dist
python311Packages.elegy
python311Packages.elegy.dist
python311Packages.treex
python311Packages.treex.dist
python312Packages.rising
python312Packages.rising.dist

24 packages built:

python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist
whisper-ctranslate2
whisper-ctranslate2.dist

Result of nixpkgs-review pr 339111 run on aarch64-linux 1

4 packages marked as broken and skipped:

piper-train
piper-train.dist
python312Packages.rising
python312Packages.rising.dist

24 packages built:

python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist
whisper-ctranslate2
whisper-ctranslate2.dist

Result of nixpkgs-review pr 339111 run on x86_64-darwin 1

14 packages marked as broken and skipped:

piper-train
piper-train.dist
python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
python312Packages.rising
python312Packages.rising.dist
whisper-ctranslate2
whisper-ctranslate2.dist

14 packages built:

python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist

Result of nixpkgs-review pr 339111 run on aarch64-darwin 1

12 packages marked as broken and skipped:

piper-train
piper-train.dist
python311Packages.elegy
python311Packages.elegy.dist
python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python311Packages.treex
python311Packages.treex.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.rising
python312Packages.rising.dist

6 packages failed to build:

python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
whisper-ctranslate2
whisper-ctranslate2.dist

14 packages built:

python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist

Result of nixpkgs-review pr 339111 run on aarch64-darwin 1

18 packages marked as broken and skipped:

piper-train
piper-train.dist
python311Packages.elegy
python311Packages.elegy.dist
python311Packages.finetuning-scheduler
python311Packages.finetuning-scheduler.dist
python311Packages.pyannote-audio
python311Packages.pyannote-audio.dist
python311Packages.treex
python311Packages.treex.dist
python312Packages.finetuning-scheduler
python312Packages.finetuning-scheduler.dist
python312Packages.pyannote-audio
python312Packages.pyannote-audio.dist
python312Packages.rising
python312Packages.rising.dist
whisper-ctranslate2
whisper-ctranslate2.dist

14 packages built:

python311Packages.lightning-utilities
python311Packages.lightning-utilities.dist
python311Packages.pytorch-lightning
python311Packages.pytorch-lightning.dist
python311Packages.rising
python311Packages.rising.dist
python311Packages.torchmetrics
python311Packages.torchmetrics.dist
python312Packages.lightning-utilities
python312Packages.lightning-utilities.dist
python312Packages.pytorch-lightning
python312Packages.pytorch-lightning.dist
python312Packages.torchmetrics
python312Packages.torchmetrics.dist


Add API endpoints for Prometheus metrics collection

This effort is part of grant project
Added various GET endpoints to return metrics formatted for Prometheus.
Prometheus metrics endpoint is disabled by default and runs on its own port.

There's an unfortunate degree of duplication here. Is it possible to do something like this instead?
func (s *server) consensusNetworkHandler(jc jape.Context) {
 	if jc.Request.Header.Get("Content-Type") == "prometheus" {
 	 	fmt.Fprintf(jc.ResponseWriter, `walletd_consensus_network{network="%s"} 1`, s.cm.TipState().Network.Name)
 	 	return
 	}
 	jc.Encode(*s.cm.TipState().Network)
 }

That way, we wouldn't need separate endpoints, a separate server, etc.
How exactly we branch within the handler isn't important -- it could be the Content-Type, or a query param, etc. I suppose it depends on what Prometheus supports.


Add Mission R serie

I cannot add 504.jpg to html/images directory so here is the files (normal and icon) for this serie

Closed because request #22 is better ;)


Do i need to know javascript to use this?

Do I need to know any JS to build a relatively simple app? I need to get text from a user (html input), see what checkboxes are checked and do some web scraping with go (on the press of a button) and display the output on the main window. I haven't found much on godoc on how to display html/text on the window after the initial load. I tried looking at examples but the to-do app seems to have a js file that handles these things, or am I wrong?
Thanks in advance.
go version go1.12.4 linux/amd64

I got most of what I wanted done.


Feature/description for vars

Modifications:
Multiline Value Detection: logic to detect and handle multiline values indicated by the | character in YAML.
    Detection: The function checks if a line ends with | or if subsequent lines are indented, indicating a multiline value.
    Fetching Multiline Values: If a multiline value is detected, the function concatenates all subsequent indented lines into a single string separated by newline characters.

Long List Handling: logic to detect long lists (lists with more than 10 items) and replace their values with a placeholder string <list too long>.
    Detection: The function checks if the value associated with a key is a list and if its length exceeds 10 items.
    Placeholder: If the list is too long, the value is set to <list too long>.

Hello, Is it possible to have an example for multiline description comment ?

Hello @Bigouden,
For the moment only \n works..
I didn't think to implement multiple lines for description.
I'll try to handle also this, can you please open an issue with the description example that you need to implement ?


broswerHistory not valid react-router property

In the README.md it states you need to pass the browserHistory to the middleware so that redux will be aware of the state.
import { Router, Route, browserHistory } from 'react-router'

I cannot find any reference to browserHistory in docs or source. Can I grab the appropriate property from the rackt/history?

@aray12 most likely you are on React-Router v1 and not v2. This library supports both and you should be able to use any history from rackt/history without any issues, but must make sure you pass the created history also to React-Router's <Router>

@mjrussell thanks for the quick response. The confusion was because the latest tag on react-router on github still points to 1.0.3

I also got confused too, but I think you can make 1.0.3 work like this:
https://github.com/rackt/redux-simple-router/blob/00551dbac88e87ec7c76610008d4d90a9bbf17cc/examples/basic/app.js#L16-L17


Local running lamma3. httpx.connecterror [wrong ssl]

Hello :)
I'm trying to run locally lamma3 on ubuntu 20.04.
I installed everything and it all seem to be working.
Running ollama run llama3:8b let me chat with him. And running ollama serve seems to work.
I tried coppying this code:
import ollama
response = ollama.chat(model='llama3', messages=[
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
])
print(response['message']['content'])

But I get an error:
httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1131)

If you need any more information let me know.
Thank you :)

Hey!
Here are some things which might help:

Try updating httpx and ollama libraries:
pip install --upgrade httpx ollama
Check python version (V3.6 or higher is recommended)
Verify Server Configuration; confirm that the server is running 'ollama serve' and its configured correctly and it's using compatible SSL/TLS version
Test connectivity; try connecting to the server using different tool, such as 'curl', to ensure that the server is working:
curl -v https://your-server-url

I hope it helps. Good luck with your project ;]


Linq: Adds support constant evaluation of Nullable.HasValue

Description
This commit adds support for evaluating Nullable<T>.HasValue when the original nullable constant's HasValue is false.
Nullable<T> is tricky to use with reflection because of it's special runtime behavior. This manually determines if HasValue was false, and in that case returns a constant expression of false.
More details are in #3272.
Type of change

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

Closing issues
closes #3272

/azp run

@khdang Please take a look

/azp run

/azp run

/azp run

/azp run

/azp run

@ccurrens It looks like the last commit is failing on the LinqTranslationBaselineTests.TestMemberAccess I'll try rerunning everything, but the error is:
Expected: ><![CDATA[SELECTVALUErootFROMrootWHERE(root["NumericField"]=4)]]></SqlQuery></Output></Result><Resul,
Actual:   ><![CDATA[]]></SqlQuery><ErrorMessage><![CDATA[Objectreferencenotsettoaninstanceofanobject.]]></Erro,
OutputPath: BaselineTest\TestOutput\LinqTranslationBaselineTests.TestMemberAccess.xml,
BaselinePath: BaselineTest\TestBaseline\LinqTranslationBaselineTests.TestMemberAccess.xml

/azp run

@ccurrens It looks like the last commit is failing on the LinqTranslationBaselineTests.TestMemberAccess I'll try rerunning everything, but the error is:
Expected: ><![CDATA[SELECTVALUErootFROMrootWHERE(root["NumericField"]=4)]]></SqlQuery></Output></Result><Resul,
Actual:   ><![CDATA[]]></SqlQuery><ErrorMessage><![CDATA[Objectreferencenotsettoaninstanceofanobject.]]></Erro,
OutputPath: BaselineTest\TestOutput\LinqTranslationBaselineTests.TestMemberAccess.xml,
BaselinePath: BaselineTest\TestBaseline\LinqTranslationBaselineTests.TestMemberAccess.xml

Thanks for the heads up. I messed up the conversion of the first pattern expression back to what it needed to be. I'll post up the fix in just a minute.

The property pattern for targetConstant is { Value: null } and the new check targetConstant != null && targetConstant.Value == null produce the same assembly (under x64 ryuJit at least), but I've leave it as discrete checks instead of the pattern match. Seemed safer since I don't know about other architectures.

/azp run

/azp run


⚠ Bofrost.at has degraded performance

In dc4423a, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1611 ms

Resolved: Bofrost.at performance has improved in 5b015d8 after 6 minutes.


Event Store Upgrade

Looks ok but probably worth getting ES package updated before deployment @iBeizsley

Actually, as the ES Package is only outdated in the tests, we're probably safe to merge this.


Use of Conjur to store the CyberArk password

Hi,
I recently found out about the IAM authentication capabilities of Conjur, which are compatible with lambdas object. I think it would be interesting to allow fetching the CyberArk password in Conjur based on this authentication method instead of using the AWS ParameterStore.
NB: This would also demonstrate how to solve a secret zero problem, moreover on a CyberArk project.

Hi @jcosteatcyberark
Thanks for your comment. I agree it will be interesting to integrate with Conjur.
Feel free to contact us for such ideas and feature requests


Update unit test doc and refactor test requirements

The documentation on unit test setup is outdated (on the list of dependent packages). This PR:

fix the doc
extract the dependencies into requirements-test.txt, so that any future changes does not require updating the doc.

@barentsen I've solved the windows CI test problem. See #823


ADDED: Top 25 Data Science YouTube Channels

Adding Medium article: Top 25 Data Science YouTube Channels. Great resources listed here.
For Hacktoberfest 2020. Thanks for starting and hosting this project. :)

@ishandeveloper Could you please help me with the greetings check failure? Thank you 👍🏽 :)


Stick that Footer Back

Brings back the footer (now with more stick!)
Phases out the dual scrolling in search results and crop pages
Fixes text centering of featured crop titles
Closes #536

Let me know if there are any objections to the style. It's pretty OpenFarm-barebones-style right now.

Coverage remained the same at 99.94% when pulling bf65e806851c3fcba8dea682f60b115cbc745911 on warpling:master into 3b00e7a3e30de47ecae95a974628be5378e3b7e1 on openfarmcc:master.

Coverage remained the same at 99.94% when pulling bf65e806851c3fcba8dea682f60b115cbc745911 on warpling:master into 3b00e7a3e30de47ecae95a974628be5378e3b7e1 on openfarmcc:master.

Coverage remained the same at 99.94% when pulling bf65e806851c3fcba8dea682f60b115cbc745911 on warpling:master into 3b00e7a3e30de47ecae95a974628be5378e3b7e1 on openfarmcc:master.

It'll be on staging in approximately 10 minutes!


PyPi release for v19.0

There seems to be no PyPi release for v19.0

Right.  There isn't really any exciting change for the python tools in v19.0.

The Unicode decode error in setup.py which occurs when installing dlib was fixed in 19.0
Not exciting, but bug fix.

Yeah, that's a good point.  I'll update on PyPi layer today or tomorrow.

Added v19.0 to PyPi.  Just a sdist though.

Looks good, sufficient for me at the moment :) (As I do not use windows)


python -m demo.qa gives code error

oitai@ours:~/tk/chat/MemN2N-babi-python$ python -m demo.qa
Loading model from file trained_model/memn2n_model.pklz ...
Traceback (most recent call last):
File "/home/ai/anaconda3/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/home/ai/anaconda3/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/ai/tk/chat/MemN2N-babi-python/demo/qa.py", line 268, in
run_web_demo(args.data_dir, args.model_file)
File "/home/ai/tk/chat/MemN2N-babi-python/demo/qa.py", line 241, in run_web_demo
webapp.init(data_dir, model_file)
File "/home/ai/tk/chat/MemN2N-babi-python/demo/web/webapp.py", line 22, in init
memn2n.load_model()
File "/home/ai/tk/chat/MemN2N-babi-python/demo/qa.py", line 43, in load_model
self.reversed_dict, self.memory, self.model, self.loss, self.general_config = pickle.load(f)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x9c in position 0: ordinal not in range(128)

Try changing this line :
self.reversed_dict, self.memory, self.model, self.loss, self.general_config = pickle.load(f)
to this:
self.reversed_dict, self.memory, self.model, self.loss, self.general_config = pickle.load(f, encoding='bytes')


Cop 30m WGS84 ellipsoidal height correction is failing at the Anti-meridian (Antarctica)

The bug
WGS84 Ellipsoidal height correction (dst_ellipsoidal_height = True) at the anti-meridian is failing on the antarctic coastline.
To Reproduce
requirements
pip install dem-stitcher
pip install asf-search

Query the coordinates of a scene known to cross the antimeridian in Antarctica using the asf-search package:
import asf_search as asf

scene_list = ['S1A_IW_SLC__1SDV_20191028T131928_20191028T131947_029659_0360CA_A1A0']
results = asf.granule_search(scene_list, asf.ASFSearchOptions(processingLevel='SLC))
geom = results[0].geometry
geom

{'coordinates': [[[176.881088, -78.176201],
   [-177.884048, -77.806282],
   [178.838364, -75.697151],
   [174.300995, -76.01265],
   [176.881088, -78.176201]]],
 'type': 'Polygon'}

Note this scene crosses the antimeridian. However, it is a valid polygon that extends the width of the earth so it is not handled by the dem-stitcher software. If we were to pass the bounds of this to the stitch_dem function it will attempt to download a large number of tiles.
Manually split the geometry to a set of bounds to the left and right of the antimeridian:
bounds_left = (-180, -78.176201, -177.884048, -75.697151)
bounds_right = (174.300995, -78.176201, 180, -75.697151)

Download the left dem using dem-stitcher with dst_ellipsoidal_height = True
from dem_stitcher import stitch_dem

dem_data, dem_meta = stitch_dem(bounds_left,
    dem_name='glo_30',
    dst_ellipsoidal_height=True,
    dst_area_or_point='Point',
    merge_nodata_value=0
    )

with rasterio.open('bounds_left.tif', 'w', **dem_meta) as ds:
    ds.write(dem_data,1)
    ds.update_tags(AREA_OR_POINT='Point')

RuntimeError                              Traceback (most recent call last)
Cell In[134], line 3
      1 from dem_stitcher import stitch_dem
----> 3 dem_data, dem_meta = stitch_dem(bounds_left,
      4     dem_name='glo_30',
      5     dst_ellipsoidal_height=True,
      6     dst_area_or_point='Point',
      7     merge_nodata_value=0
      8     )
     10 with rasterio.open('bounds_left.tif', 'w', **dem_meta) as ds:
     11     ds.write(dem_data,1)

File ~/dem-stitcher/dem_stitcher/stitcher.py:362, in stitch_dem(bounds, dem_name, dst_ellipsoidal_height, dst_area_or_point, dst_resolution, n_threads_reproj, n_threads_downloading, fill_in_glo_30, merge_nodata_value)
    359     zipped_data = list(map(lambda ds: _translate_one_tile_across_dateline(ds, crossing), datasets))
    360     memory_files, datasets = zip(*zipped_data)
--> 362 dem_arr, dem_profile = merge_and_transform_dem_tiles(
    363     datasets,
    364     bounds,
    365     dem_name,
    366     dst_ellipsoidal_height=dst_ellipsoidal_height,
    367     dst_area_or_point=dst_area_or_point,
    368     dst_resolution=dst_resolution,
    369     num_threads_reproj=n_threads_reproj,
    370     merge_nodata_value=merge_nodata_value,
    371     n_threads_for_reading_tile_data=n_threads_downloading,
    372 )
    374 # Close datasets
    375 list(map(lambda dataset: dataset.close(), datasets))

File ~/dem-stitcher/dem_stitcher/stitcher.py:198, in merge_and_transform_dem_tiles(datasets, bounds, dem_name, dst_ellipsoidal_height, dst_area_or_point, dst_resolution, num_threads_reproj, merge_nodata_value, n_threads_for_reading_tile_data)
    196 if dst_ellipsoidal_height:
    197     geoid_name = DEM2GEOID[dem_name]
--> 198     dem_arr = remove_geoid(
    199         dem_arr,
    200         dem_profile,
    201         geoid_name,
    202         dem_area_or_point=dst_area_or_point,
    203     )
    205 if dst_resolution is not None:
    206     dem_profile_res = update_profile_resolution(dem_profile, dst_resolution)

File ~/dem-stitcher/dem_stitcher/geoid.py:72, in remove_geoid(dem_arr, dem_profile, geoid_name, dem_area_or_point, res_buffer)
     68 assert dem_area_or_point in ['Point', 'Area']
     70 extent = array_bounds(dem_profile['height'], dem_profile['width'], dem_profile['transform'])
---> 72 geoid_arr, geoid_profile = read_geoid(geoid_name, extent=list(extent), res_buffer=res_buffer)
     74 t_dem = dem_profile['transform']
     75 t_geoid = geoid_profile['transform']

File ~/dem-stitcher/dem_stitcher/geoid.py:46, in read_geoid(geoid_name, extent, res_buffer)
     42 extent_l, extent_r = split_extent_across_dateline(extent)
     43 geoid_arr_l, geoid_profile_l = read_raster_from_window(
     44     geoid_path, extent_l, extent_crs, res_buffer=res_buffer
     45 )
---> 46 geoid_arr_r, geoid_profile_r = read_raster_from_window(
     47     geoid_path, extent_r, extent_crs, res_buffer=res_buffer
     48 )
     49 res_x = geoid_profile_l['transform'].a
     50 if crossing == 180:

File ~/dem-stitcher/dem_stitcher/rio_window.py:161, in read_raster_from_window(raster_path, window_extent, window_crs, res_buffer)
    158 with rasterio.open(raster_path) as ds:
    159     src_profile = ds.profile
--> 161 window = get_window_from_extent(src_profile, window_extent, window_crs, res_buffer=res_buffer)
    163 with rasterio.open(raster_path) as ds:
    164     arr_window = ds.read(window=window)

File ~/dem-stitcher/dem_stitcher/rio_window.py:105, in get_window_from_extent(src_profile, window_extent, window_crs, res_buffer)
     99         warn(
    100             f'Requesting extent beyond raster bounds of {list(src_bounds)}'
    101             f'. Shrinking bounds in raster crs to {window_extent_r}.',
    102             category=RuntimeWarning,
    103         )
    104 else:
--> 105     raise RuntimeError('The extent you specified does not overlap' ' the specified raster as a Polygon.')
    107 corner_ul, corner_br = get_indices_from_extent(
    108     src_profile['transform'], window_extent_r, shape=src_shape, res_buffer=res_buffer
    109 )
    110 row_start, col_start = corner_ul

RuntimeError: The extent you specified does not overlap the specified raster as a Polygon.

Note, if we set dst_ellipsoidal_height = False the dem will download as expected.
In the case of the right side of the antimeridian with dst_ellipsoidal_height = True , the function will work but the dem has some missing data near the antimeridian compared to the case where dst_ellipsoidal_height = False (see image below)
dem_data, dem_meta = stitch_dem(bounds_right,
    dem_name='glo_30',
    dst_ellipsoidal_height=True,
    dst_area_or_point='Point',
    merge_nodata_value=0
    )

with rasterio.open('bounds_right.tif', 'w', **dem_meta) as ds:
    ds.write(dem_data,1)
    ds.update_tags(AREA_OR_POINT='Point')

I'm guessing this has something to do with the coverage of the geoid?

Additional context
I am processing sentinel-1 scenes over Antarctica and acquiring the cop 30m using the dem-stitcher software. This issue has occurred at the antimeridian, elsewhere the dem acquisition is working as expected

I'm at the end of my workday so just noting my findings here. There appears to be two separate issues:

The nodata on the right side of the AM:

I think the missing data on the right side is due to the extent of the geoid that is being applied. The s3://aria-geoid/egm08_25.tif (referenced in the dem-stitcher code here) has the following extent:

The EGM2008 2.5' geoid model that can be accessed here appears to have identical values but a larger extent with an extra pixel at the border of the right side of the antimeridian (180)

Therefore, I think the values in the dem to the right of the antimeridian are being coverted to nodata, as there is missing data in the egm08_25.tif geoid file. Perhaps the geoid file should be updated?

Failing on the left side of the antimeridian:

I think this is due to the antimeridian crossing check here. Because the dem extent is slightly outside of the WGS84 range (+180,-180), it attempts to split the extent across the antimeridian, resulting in two extents, one of which is very small. Given the extent of the geoid is (-180.0208333333333428,<PHONE_NUMBER>333332860) these values could be used here instead when the function is called here.
i.e. for the geoid dateline crossing check, change:
if (xmin > -180) and (xmax < 180):

to
if (xmin > -180.0208333333333428) and (xmax <<PHONE_NUMBER>33333286):

This solved the issue for me with the bounds_left = (-180, -78.176201, -177.884048, -75.697151)
Let me know if this is not clear, I can raise a PR tomorrow with some code changes that might be easier to follow. Thanks!

Thank you so much for the detailed explanation as well as the reproducible calls. Will have to look at it over the course of this week.
Sounds like Issue #100 might solve this if the buffered geoid does resolve this in this anti-meridian area.
At some point today - I am going to upload both the 2.5 and 1 degree geoids from agi-soft to our s3 bucket and share the links here.
The quickest fix would be to swap out the geoid hardcoded here: https://github.com/ACCESS-Cloud-Based-InSAR/dem-stitcher/blob/dev/dem_stitcher/geoid.py#L14-L19
I still think there might be a bug in the code though with respect to this based on what you are saying.
This probably has all come to pass because of the issue here: https://github.com/ACCESS-Cloud-Based-InSAR/dem-stitcher/issues/96
So to be clear, we were using the 1 degree geoid from geosoft, but it went down and that's "no bueno".
Thank you again.

It's taking some time on my part - sorry for the delay.
I uploaded the geoids (both 1 and 2.5 degrees) to the ARIA bucket.
I will create a PR and inspect it tomorrow (hopefully) or maybe Thursday.
They file names are:
us_nga_egm2008_25_4326__agisoft.tif
us_nga_egm2008_1_4326__agisoft.tif

Where I used rio warp <input> <output> --dst-crs EPSG:4326 as the software expects the geoid in 4326 (the bounds did not change).
Feel free to check too.
Thanks again.

Hi @cmarshak no problem at all, I have a working implementation in the meantime.
There are a number of other DEM handling steps our team are doing in order to get the desired format for our sentinel-1 processing. I am thinking it could make sense to add these directly to the dem-stitcher software. Other users may have the same requirements. I might raise a feature suggestion over the next week or two to discuss if your team is open to this?

That's good to hear.
We use this software for our ARIA-S1-GUNWs which are actively processing. We don't have to worry about this because ISCE2 (which is what we use) does not work on the antimeridian anyways :) - see https://github.com/isce-framework/isce2/issues/634
Definitely want to address exposing the geoid parameter as mentioned in the issue above to allow other users to BYOG ('bring your own geoid').
The other bugs will take some time to address.

I had some time to fix some of the outstanding issues after months of neglect. I (think) I now understand the issue.
It's because the read from both "ends" of the dateline causes np.nan to corrupt the data if that data is unavailable.
For concreteness:
with rasterio.open('https://aria-geoid.s3.us-west-2.amazonaws.com/egm08_25.tif') as ds:
    b = ds.bounds
# b =  BoundingBox(left=-180.02083333333334, bottom=-90.02083333333334, right=179.97916666666666, top=90.02083333333331)

with rasterio.open('https://aria-geoid.s3.us-west-2.amazonaws.com/us_nga_egm2008_1_4326__agisoft.tif') as ds:
    b_agisoft = ds.bounds
#b_agisoft = BoundingBox(left=-180.00833333333333, bottom=-90.00833333333331, right=180.00833333333333, top=90.00833333333334)

When I took care of the dateline initially, I was using the agi-soft geoid (2nd url) which has >=1 pixel buffer around both sides of the dateline. However the AGI soft geoid went down for an extended period (see #96) and swapped it out with the first. The AGI soft has since gone back up and it is now mirrored on our ARIA bucket.
Indeed if there is missing data near the dateline, the process for dealing with dateline crossing (reading from both ends of the dateline) causes issues because all nodata is cast to np.nan, which when added to floats remains np.nan (this is how geoid is "removed"). This results in your np.nan.
So, the way I am planning on dealing with this is:

Using the agisoft EGM 2008 geoid for GLO-30
If a different geoid is supplied to raise a Userwarning if the data doesn't extend past the dateline (recommend 1 pixel buffer).

Will likely release these fixes in the coming weeks. Thanks again for your thorough documentation of this issue!


Failing to run Genesis on Windows 11 & WSL

Every time I try to run a scene from the 'Hello, Genesis' tutorial, it fails to load. I ensured that I have the prerequisites installed (such as PyTorch ans Conda) however I receive the same error . I've tried on my regular Windows 11 and WSL, having the same error. Does anyone know how to solve this? Is there something I'm missing, a dependency that needs to be installed? I've enured my GPU driver is correct and that everything is up to date and compatible! Any advice would help, thanks so much!
WSL
"(genesis_project) vickistavros@Timmy:~/genesis_code$ python
Python 3.11.11 (main, Dec 11 2024, 16:28:39) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
import genesis as gs
kend=gs.cpu)
scene = gs.Scene(show_viewer=True)
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)
scene.build()
for i in range(1000):
scene.step()
gs.init(backend=gs.cpu)
[Genesis] [17:31:47] [INFO] ╭───────────────────────────────────────╮
[Genesis] [17:31:47] [INFO] │┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈ Genesis ┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈│
[Genesis] [17:31:47] [INFO] ╰───────────────────────────────────────╯
[Genesis] [17:31:47] [INFO] Running on [12th Gen Intel(R) Core(TM) i9-12900HK] with backend gs.cpu. Device memory: 7.76 GB.
[Genesis] [17:31:47] [INFO] 🚀 Genesis initialized. 🔖 version: 0.2.0, 🌱 seed: None, 📏 precision: '32', 🐛 debug: False, 🎨 theme: 'dark'.
scene = gs.Scene(show_viewer=True)
[Genesis] [17:31:48] [INFO] Scene <7d95c05> created.
plane = scene.add_entity(gs.morphs.Plane())
[Genesis] [17:31:48] [INFO] Adding <gs.RigidEntity>. idx: 0, uid: <1e89bb6>, morph: <gs.morphs.Plane>, material: <gs.materials.Rigid>.
franka = scene.add_entity(
... gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
... )
[Genesis] [17:31:48] [INFO] Adding <gs.RigidEntity>. idx: 1, uid: <6768ea0>, morph: <gs.morphs.MJCF(file='/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/genesis/assets/xml/franka_emika_panda/panda.xml')>, material: <gs.materials.Rigid>.
scene.build()
[Genesis] [17:31:48] [INFO] Building scene <7d95c05>...
[Genesis] [17:31:57] [INFO] Compiling simulation kernels...
[Genesis] [17:32:28] [INFO] Building visualizer...
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
Exception in thread Thread-2 (_init_and_start_app):
Traceback (most recent call last):
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/threading.py", line 982, in run
self._target(*self._args, **self._kwargs)
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/genesis/ext/pyrender/viewer.py", line 1126, in _init_and_start_app
super(Viewer, self).init(
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/window/xlib/init.py", line 168, in init
super().init(*args, **kwargs)
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/window/init.py", line 527, in init
context = config.create_context(gl.current_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/gl/xlib.py", line 114, in create_context
return XlibContext(self, share)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/gl/xlib.py", line 149, in init
raise gl.ContextException(msg)
pyglet.gl.ContextException: Could not create GL context"
Windows 11
:"Type "help", "copyright", "credits" or "license" for more information.
import genesis as gs
gs.init(backend=gs.gpu) # or gs.cuda if CUDA is available
[Genesis] [15:03:55] [INFO] ╭───────────────────────────────────────╮
[Genesis] [15:03:55] [INFO] │┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈ Genesis ┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈│
[Genesis] [15:03:55] [INFO] ╰───────────────────────────────────────╯
[Genesis] [15:03:56] [INFO] Running on [NVIDIA GeForce RTX 3050 Ti Laptop GPU] with backend gs.cuda. Device memory: 4.00 GB.
[Genesis] [15:03:56] [INFO] 🚀 Genesis initialized. 🔖 version: 0.2.0, 🌱 seed: None, 📏 precision: '32', 🐛 debug: False, 🎨 theme: 'dark'.
scene = gs.Scene(show_viewer=True)
[Genesis] [15:04:06] [INFO] Scene <8dc41ec> created.
plane = scene.add_entity(gs.morphs.Plane())
[Genesis] [15:04:06] [INFO] Adding <gs.RigidEntity>. idx: 0, uid: <73e8b45>, morph: <gs.morphs.Plane>, material: <gs.materials.Rigid>.
scene.build()
[Genesis] [15:04:06] [INFO] Building scene <8dc41ec>...
[Genesis] [15:04:30] [INFO] Compiling simulation kernels...
[Genesis] [15:05:44] [INFO] Building visualizer...
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\utils\misc.py", line 38, in wrapper
return method(self, *args, **kwargs)
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\engine\scene.py", line 556, in build
self._visualizer.build()
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\vis\visualizer.py", line 101, in build
self._context.build(self._scene)
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\vis\rasterizer_context.py", line 70, in build
self.jit = JITRenderer(self._scene, [], [])
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\ext\pyrender\jit_render.py", line 201, in init
self.gen_func_ptr()
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\ext\pyrender\jit_render.py", line 354, in gen_func_ptr
self.gl = GLWrapper()
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\ext\pyrender\numba_gl_wrapper.py", line 24, in init
load_func("glGetUniformLocation", GLint, GLuint, GLvoidp)
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\genesis\ext\pyrender\numba_gl_wrapper.py", line 52, in load_func
func_ptr = GL.platform.ctypesloader.buildFunction(
File "C:\Users\vicki\anaconda3\envs\genesis_env\lib\site-packages\OpenGL\platform\ctypesloader.py", line 96, in buildFunction
return functionType( (name, dll), )
AttributeError: function 'glGetUniformLocation' not found
for i in range(100):
... scene.step()"

add this import right before the genesis import:
import os
os.environ['PYOPENGL_PLATFORM'] = 'glx'

Thank you for the suggestions! However, I tried that and the visualizer still did not work, here was what my terminal output is on WSL virtual environment:
"__(genesis_project) vickistavros@Timmy:~$ python3
Python 3.11.11 (main, Dec 11 2024, 16:28:39) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import os
os.environ['PYOPENGL_PLATFORM'] = 'glx'
import genesis as gs
ackend=gs.cpu)

gs.init(backend=gs.cpu)
[Genesis] [18:30:06] [INFO] ╭───────────────────────────────────────╮
[Genesis] [18:30:06] [INFO] │┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈ Genesis ┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈│
[Genesis] [18:30:06] [INFO] ╰───────────────────────────────────────╯
[Genesis] [18:30:06] [INFO] Running on [12th Gen Intel(R) Core(TM) i9-12900HK] with backend gs.cpu. Device memory: 7.76 GB.
     ),
... )
[Genesis] [18:30:26] [INFO] Scene  created.
plane = scene.add_entity(gs.morphs.Plane())
ka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika[Genesis] [18:30:31] [INFO] Adding <gs.RigidEntity>. idx: 0, uid: <66a9e45>, morph: <gs.morphs.Plane>, material: <gs.materials.Rigid>.
_panda/panda.xml'),
)>>> franka = scene.add_entity(
...     gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
... )
[Genesis] [18:30:32] [INFO] Adding <gs.RigidEntity>. idx: 1, uid: <1951be1>, morph: <gs.morphs.MJCF(file='/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/genesis/assets/xml/franka_emika_panda/panda.xml')>, material: <gs.materials.Rigid>.
scene.build()
[Genesis] [18:30:41] [INFO] Building scene ...
r i in range(1000):
scene.step()
[Genesis] [18:30:52] [INFO] Compiling simulation kernels...
[Genesis] [18:31:24] [INFO] Building visualizer...
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
Exception in thread Thread-2 (_init_and_start_app):
Traceback (most recent call last):
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/threading.py", line 982, in run
self._target(*self._args, **self._kwargs)
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/genesis/ext/pyrender/viewer.py", line 1126, in _init_and_start_app
super(Viewer, self).init(
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/window/xlib/init.py", line 168, in init
super().init(*args, **kwargs)
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/window/init.py", line 527, in init
context = config.create_context(gl.current_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/gl/xlib.py", line 114, in create_context
return XlibContext(self, share)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vickistavros/miniconda3/envs/genesis_project/lib/python3.11/site-packages/pyglet/gl/xlib.py", line 149, in init
raise gl.ContextException(msg)
pyglet.gl.ContextException: Could not create GL context"

Hi, @vstavros02!
Unfortunately, currently, it is not possible to render on Windows 11.
Please refer to the links below for more information.
AttributeError: function 'glGetUniformLocation' not found #64
Installation

Thank you for the response! I thought I was the problem here lol

So this wont work even by using WSL?

So this wont work even by using WSL?

At its core, WSL is a service virtual machine that emulates the Linux kernel. As far as I remember, some functions don't work as they should, and there are limitations. Unfortunately, I will not say more, because I do not have sufficient knowledge in this area. Do you have the option to use Docker? Or the ability to run on a full-fledged Linux OS?

I'm thinking of converting my Windows to Linux in order to have the visualizations :) What system have you been working on? And do you have any tips for me? Thanks for all of your help, you've saved me a lot of time!

I'm thinking of converting my Windows to Linux in order to have the visualizations :) What system have you been working on? And do you have any tips for me? Thanks for all of your help, you've saved me a lot of time!

I think any Ubuntu newer than 18.04 would work fine
As a reference the machine we used to develop genesis runs 20.04

That's great! I see that some people are saying certain python versions work with genesis, where as others don't. Which python version do you recommend? Also are you using Pip or Anaconda?

Midnight approaching I just skimmed your thread while I'm installing on WSL Ubuntu 24.04 on Win 11 and 2x RTX 4000 Ada w/ Anaconda env Python 3.12.
Got Linux Chrome, Filer and editor installed on Ubuntu that show as apps on Win. No idea if the renderer will get the corner, but we'll see in a moment.
Well, "critical job detector", sth went wrong with the Anaconda genesis env on WSL Ubuntu.

Until tomorrow
G.

Thank you for the response @ai-bits! I was really struggling with this issue until @SomeSlave mentioned that the visualizer is not yet compatible with Windows nor WSL. I assumed that it would have worked with WSL but unfortunately everything except for the visualizer works. Since then I have created a Dual Boot system with Linux and Windows by following this tutorial for my specific Windows type "https://youtu.be/uqZIp4ay-3s?si=y4bDLtrvZjRkQURH". After successfully creating the Linux dual system, and installing many prerequisites and those needed to run genesis as shown in the GitHub conversation  "https://github.com/Genesis-Embodied-AI/Genesis/issues/207" commented by  "bradmcgo", I am now successfully able to run the visualizer for Genesis! It did take the full day as I ran into some issues along the way when creating the dual system but most issues came from installing CUDA on my system (I followed tutorials as well but ended up doing what @bradmcgo did, what a life savor he was lol). I'm not sure if you are struggling with the same issue, but if you are and care for the  the visualizing aspect of Genesis, I recommend doing what I did but with caution, and take your time to avoid errors along the way!  And if you do proceed with that, please feel free to message me if you run into any sort of issue or need guidance, mind you I'm fairly new to all of this and with trouble and error, and help from Chatgpt and Claud.ai, as well as the github conversations, I was able to succeed! Anyways I hope I was as helpful as you were, good luck and thanks again!

Glad you found a solution!
A dual boot is way better than a VM, as the popular virtualizers can't virtualize GPUs, but it woulda been the quickest kludge.
WSL2 = WSLg (graphics), really handy in Win for some tasks, CAN run GUI apps (as said I have Chrome, the Filer and the editor as Win apps), but Genesis is very special and the viewer apparently has its problems with WSL's X11 or Wayland or whatever they are using nowadays.
I'm not sure if their Docker solution does really work. It may simplify installation, but it adds a level of complexity in execution.
If you really mean installing CUDA and not the Nvidia driver:
It's years ago that you needed a separate CUDA installation, except for compiling it into your code. You don't need it for Genesis as it is compiled into PyTorch, etc. and that saves you endless version headaches.
Cheers
G.


i18n(fr): update guides/astro-db.mdx

Description (required)

Translate instructions to migrate from Astro Studio to Turso in French (see #9425)

Related issues & labels (optional)

Suggested label: i18n

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

fr
guides/astro-db.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


Enable NW tests in Windows

See https://github.com/donejs/donejs/pull/622 for why they are turned off.

@matthewp should we try turning this back on?

sure, wouldn't hurt to try.

Closed by #807


Update plugin documentation - Using the Django Admin Interface

Closes: #2677
What's Changed
Adds an import statement for the Django admin to this example from nautobot\docs\plugins\development.md
# admin.py
from django.contrib import admin
from nautobot.core.admin import NautobotModelAdmin

from .models import Animal

@admin.register(Animal)
class AnimalAdmin(NautobotModelAdmin):
    list_display = ('name', 'sound')

TODO

[x ] Explanation of Change(s)
[ ] Added change log fragment(s) (for more information see the documentation)
[ ] Attached Screenshots, Payload Example
[x ] Unit, Integration Tests
[ ] Documentation Updates (when adding/changing features)
[ ] Example Plugin Updates (when adding/changing features)
[ ] Outline Remaining Work, Constraints from Design

Changelog fragment has been added


How to remove jodit-selection marker from an  tag in jodit editor?

On adding the horizontal line, it behaves like input text field. The 'span' tag is added to the 'hr' tag. So how to remove this selection.

Hey what browser?

Chrome Version 110.0.5481.178


How set User-ID parameter?

https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#user_id

$analytics.setUsername(username)

$analytics.setUserProperties(UserService.user._id, {
  name: UserService.user.name,
  username: UserService.user.username,
  email: UserService.user.email
})

Nope! If I set $analytics as above, and using google analytics debugger, nothing userId is sent and into report I see only a generated userId value

@scne you tried with both syntax $analytics.setUserProperties(id) and $analytics.setUsername(id)?
Which google analytics plugin are you using?

Yes I do! I'm using angulartics.google.analytics latest version

@scne Were you able to find a solution to this?

@VikramTiwari can you share some more information about your setup?

@timelf123 Nothing unusual. Just trying to set the value of userId, yet the value is autogenerated cookie id.


Expo env changes for development and production

Options for being able to build the app with dev and prod env variables were investigated and we ended up using a method where we have .env and prod.env -files and their content is pushed to EAS before each build. This has now been documented to the project's README, no coding required. Closing the issue. Here's a link to the method that we use to push the env variables: https://docs.expo.dev/build-reference/variables/#importing-secrets-from-a-dotenv-file


coke oven

the coke oven is too expensive for the purpose it has. recipe should be red/blue steel sheets/dsheets instead of the mixed sheet. The only purpose i could see for having the coke oven be so expensive is that you can make charcoal from it, however, its a very slow process and you could just as easily made a redstone furnace that would be cheaper. making the recipe cheaper would allow the player to try some of the early game immersive engineering options without changing the recipes immensely.

will lower it in the tech tree a little to around steel to black steel age

Here is the recipe in the 0.7 update


fix(nextjs): Export SignInWithMetamaskButton

Description
<SignInWithMetamaskButton/> wasn't exported from @clerk/nextjs package.
This PR re-exports it's from @clerk/clerk-react.
Fixes JS-709
Checklist

[X] npm test runs as expected.
[X] npm run build runs as expected.
[ ] (If applicable) JSDoc comments have been added or updated for any package exports
[ ] (If applicable) Documentation has been updated

Type of change

[X] 🐛 Bug fix
[ ] 🌟 New feature
[ ] 🔨 Breaking change
[ ] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

Packages affected

[ ] @clerk/clerk-js
[ ] @clerk/clerk-react
[X] @clerk/nextjs
[ ] @clerk/remix
[ ] @clerk/types
[ ] @clerk/themes
[ ] @clerk/localizations
[ ] @clerk/clerk-expo
[ ] @clerk/backend
[ ] @clerk/clerk-sdk-node
[ ] @clerk/shared
[ ] @clerk/fastify
[ ] @clerk/chrome-extension
[ ] gatsby-plugin-clerk
[ ] build/tooling/chore

This PR has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


[$250] Render Emoji when typed with emoji code

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

Action Performed:

Go to the chat
Enter :smile:

Expected Result:

It should've rendered a smiley. Reference screencast from Slack.
https://user-images.githubusercontent.com/3069065/127681715-a265df2f-2a63-4b64-a45a-f577edbbd600.mp4

Actual Result:

Video from the current version
https://user-images.githubusercontent.com/3069065/127681725-dbc4786e-44b4-4fcb-b859-858f929ff887.mp4

Workaround:

Either stick with the text codes
Or choose from the Emoji Picker

Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number:
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Expensify/Expensify Issue URL:
View all open jobs on Upwork
Proposed Solution
Update App/assets/emojis.js with the relevant keywords and implement a regex to filter and render the emoji

Triggered auto assignment to @NicMendonca (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

Triggered auto assignment to @sketchydroide (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

this in principle sounds like a good idea, but I'm not sure if we already have plans to do this plus the :smile: template as well, @roryabraham or @marcaaron do you have any idea if we have plans to get emoji to work like this as part of a bigger project?

Sorry, I do not

do you have any idea if we have plans to get emoji to work like this as part of a bigger project?

Not that I know of, but again I'm not sure. Wbu @stitesExpensify?

We do not have plans to do :) or :p. It would be easy to add another regex filter once we have things like :smile: implemented though.

Noted. Are you planning to add a picker where you could :smile: which is currently supported in Github comments and Slack input too?

Yes, we want to do :smile: style emojis but have not come up with a solid plan on how yet.
The problem is that right now we have keywords with overlap. We need to have a default keyword for each emoji that does not overlap. We would like to use the same or similar default keywords as slack, but haven't found a good way to add that to our emoji.js list. Any suggestions?

Is this a 2 step thing @stitesExpensify? Step 1 replace the keywords we want to use for emojis that overlap with something else, sept 2 implement the keyword replacement for emojis?

It can be either. Depends on if someone wants to take the whole thing on or just do part.
To clarify though, we are not replacing keywords that overlap as those are still useful for searching. We need to add a new field that has a unique keyword for in-chat replacement

We could use this to create the keywords.
https://github.com/missive/emoji-mart/blob/master/data/all.json We can match the keys by Unicode value.
We can even extend the data source with the above dataset. Currently, we have ~1360 emojis, whereas the above link has ~1740

I don't feel this is a daily, as there is no pressing need for this change.
@stitesExpensify do you mind I assign you, it seems you are on top of this way more than me.

Sure, go for it!

@mananjadhav so you're saying we should swap our whole emoji.js list for that one?

Either swap or at least get the keywords/unique ids for all the emojis based on Unicode.

Personally I'd like to just put uniqueIDs into our current emoji file rather than replace the whole thing

and as I mentioned earlier we can do that too.
'use strict';

const emojiMap = require('./expensify-emoji.json');
const externalEmojiMap = require('./emoji-mart.json').emojis;
const fs = require('fs');

const emojiTitleMap = fetchEmojiMartMap();

for(let category in emojiMap) {
  let emojis = emojiMap[category];
  for (var i=0; i<emojis.length; i++) {
    // Existing code logic from emoji.js stays here
    // ...
    // ...
    // ...

    // Pick title
    if(emojiTitleMap[emojis[i].code]) {
      emojis[i].title = emojiTitleMap[emojis[i].code].title;

      // Bonus: We can extend keywords too
      emojis[i].keywords = emojis[i].keywords.concat(emojiTitleMap[emojis[i].code].keywords).filter((v, i, a) => a.indexOf(v) === i)
    }
  }

}

function fetchEmojiMartMap () {
  let emojiMap = {};
  for(let emojiKey in externalEmojiMap) {
    const currentEmoji = externalEmojiMap[emojiKey];
    let emojiUnicode = `U+${currentEmoji['b']}`;
    emojiMap[emojiUnicode] = {...currentEmoji, title: emojiKey, keywords: currentEmoji['j']};
  }
  return emojiMap;
}

No update, focused on internal priorities

Hi @mananjadhav As part of our internal process, for big projects like this we need to send out changes in a design doc format for internal engineering review. I'm going to be hopefully sending that out soon, but in the mean time i'm demoting this to monthly

Thanks for the update @stitesExpensify. Then I think we should also put https://github.com/Expensify/App/issues/4888 on hold as well. Let me know what you think?

This is still holding

No update

No update

No update

No update, getting to this soon though

Proposed UX here: https://expensify.slack.com/archives/C01GTK53T8Q/p1643388153631749?thread_ts=1643388153.631749&cid=C01GTK53T8Q

No update

@mananjadhav would you want to work on this? I think we can move forward without a doc for this particular part of emojis

would you want to work on this?

@stitesExpensify Yes.
I'll write up a proposal and share it.

Sounds great!

Hi @mananjadhav any update here?

@srikarparsi test

Hi @stitesExpensify, I had been OOO and I don't have enough bandwidth to work on it right now. Please open it to the pool. Considering the experience with EmojiPicker, I am fine doing C+ Review on this one.

Chatting about this in :that: issue. We will likely be adding Help Wanted to this issue soon.

internal
external

@stitesExpensify Question for you: Do you feel confident that this is going to conform pretty closely with the previous designs that we put through our internal review process?

Awesome, thank you!

Proposal
We can use these emoji names, these are similar to github emoji names.
our emojis.js file will be look like this :

Proposal
we can use these emoji names, these are similar to github emoji names.
Our emojis.js file will look like this :
const emojis = [
    {
        code: 'smileysAndPeople',
        'header': true
    },
    {
        code: '😀',
        keywords: [
        'face',
        'grin'
        ],
        name: 'grinning'
    },
    {
        code: '😁',
        keywords: [
        'eye',
        'face',
        'grin',
        'smile'
        ],
        name: 'grin'
    },

         ...

in ReportScreen.js we use this function :
/**
 * Replace any emoji name in a text with the emoji icon
 *
 * @param {String} text
 * @returns {String}
 */
function replaceEmojis(text){
    let newText = text;
    const emojiNames = text.match(/:[\w+-]+:/g);
    if( !emojiNames || emojiNames.length == 0) return text;
    for(let i=0; i < emojiNames.length; i++){
        for(let j=0; j< emojis.length; j++){

            if(emojiNames[i].slice(1,-1) == emojis[j].name){
                newText = newText.replace(emojiNames[i], emojis[j].code)
                break;
            }
        }
    }
    return newText;
}

    ...

    onSubmitComment(text) {
        Report.addAction(getReportID(this.props.route), replaceEmojis(text));
    }

Result :
https://user-images.githubusercontent.com/108357004/178582324-98affd91-e695-46b7-aa0a-69595f25c4a7.mov

Looking for a better proposal.

@Santhosh-Sellavel Yes, it is, from these and these we needed to add a new field to our 1360 emojis in emojis.js,  this field represent a unique keyword for each emoji, @mananjadhav suggested we can get these keywords from this file, but later on Nov 5, 2021 someone published most emojis and keywords that Github use here, this made it easy for us, we got these keywords and used it in our emojis.js under the name field.
I attached emojis.js file using '.txt' because Github refuse '.js' files, change the extension and paste it into your emojis.js and it will work.
emojis.txt

Your proposal doesn't work for me.

It worked fine on Firefox-Chrome-Safari/MacOS, Could you explain the error you got?

What do you not like about the solution specifically @Santhosh-Sellavel ? @Karim-30 One thing I did notice is that your emojis are not rendering inside of the compose bar, only after they are sent. Can you make that change please? (It's at the very end of the example video, easy to miss).

@stitesExpensify We can implement it easily by calling  replaceEmojis function when the text inside the Composer changes not when the user submits a comment.
inside RepartActionCompose.js
/**
 * Replace any emoji name in a text with the emoji icon
 *
 * @param {String} text
 * @returns {String}
 */
function replaceEmojis(text){
    let newText = text;
    const emojiNames = text.match(/:[\w+-]+:/g);
    if( !emojiNames || emojiNames.length == 0) return text;
    for(let i=0; i < emojiNames.length; i++){
        for(let j=0; j< emojis.length; j++){

            if(emojiNames[i].slice(1,-1) == emojis[j].name){
                newText = newText.replace(emojiNames[i], emojis[j].code)
                break;
            }
        }
    }
    return newText;
}

   ...

    updateComment(newComment) {
        this.textInput.setNativeProps({text: replaceEmojis(newComment)});
        ...

Here how it looks like :
https://user-images.githubusercontent.com/108357004/179185232-05fbd5e6-9c06-4e0a-b0b5-f0374768029f.mov

What do you not like about the solution specifically @Santhosh-Sellavel ?

@stitesExpensify
I'm not sure what I missed out on, it didn't work for me. If it's working for you then we are good to hire @Karim-30. I'll test it in the PR.

@stitesExpensify @Santhosh-Sellavel
Quick question here, don't you think we should also add a dropdown of the suggestions in this one? Honestly thats the part I couldn't get the hold of and I decided not to pursue this. I feel it might be required as users don't always know the whole keyword.

Yes, that would be ideal @mananjadhav. We had planned on that in the original design

However, we did not specify that in the original description and since @Karim-30 has already provided a solution, I think we should just follow through with this issue, and then create a new one for the hover (plus then we'll have basic functionality).

but given the size of the emoji dataset I think a Trie might be an appropriate data structure to use here.

Makes sense but loaded on component mount and only searched inside replaceEmojis

Makes sense but loaded on component mount and only searched inside replaceEmojis

Yeah, it makes sense to me to load the Trie early on in a separate module (i.e: as a non-blocking operation during app initialization). Then we can use it in replaceEmojis and also as a quick way to search the emoji list and generate matches with a partial keyword onChangeText when we want to create the popover thingy

load the Trie early on in a separate module (i.e: as a non-blocking operation during app initialization).
That way the emoji Trie is basically a global singleton that can be shared wherever it's needed.

Even better.

Makes sense but loaded on component mount and only searched inside replaceEmojis

Yeah, it makes sense to me to load the Trie early on in a separate module (i.e: as a non-blocking operation during app initialization). Then we can use it in replaceEmojis and also as a quick way to search the emoji list and generate matches with a partial keyword onChangeText when we want to create the popover thingy
Edit/Clarification: Instead of loading the Trie on component mount and thus tying it to component lifecycle, we should only generate it once in a separate module and implement replaceEmojis in there. That way the emoji Trie is basically a global singleton that can be shared wherever it's needed. At least, that's the approach I would recommend.

Thanks, @mananjadhav @roryabraham.
We should get this addressed as part of this issue itself.
cc: @stitesExpensify

We should get this addressed as part of this issue itself.

Ok

Full proposal

Replace all assets/emojis.js content with emojis.txt in the attachments.
Change EmojisTrie.txt to EmojisTrie.js and paste it into src/libs/.

inside src/pages/home/report/ReportActionCompose.js :

emojis.txt
EmojisTrie.txt

not overdue! Reviewing proposals

@Santhosh-Sellavel Good news it works for you.

Why should we replace emoji.js

because there were more than 60 emojis that don't have the name field on the previous emoji.js i sent earlier.

after replacing one emoji gets deleted not sure about which one ?

I thought there is duplication here but it isn't, So I gonna retrieve the deleted one.

We could have different Name for Node class, ex: TrieNode
Define methods separately instead of defining everything in the constructor.
We can add more relevant comments to Trie & Node definitions.

Ok.
new emojis.txt

@Karim-30

@Santhosh-Sellavel Good news it works for you.
I didn't test this yet but looks promising, will test it and let you know.

@stitesExpensify
And can you clarify the questions asked in https://github.com/Expensify/App/issues/4324#issuecomment-1190544475
Also, can we bump this down to Weekly
cc: @adelekennedy

bump @stitesExpensify

Sorry for the delay.

I think it should expensify of common lib

@Santhosh-Sellavel Where else could you see us using this type of data structure?

Replace assets/emojis.js content with emojis.txt in the attachments.

@Karim-30 Can you outline the differences between the files please? What was changed besides adding the name field?
Also, I think that given the new complexity for this issue we should increase the bounty to at least $500 cc: @adelekennedy

Can you outline the differences between the files please? What was changed besides adding the name field?

@stitesExpensify in the 1st one there were some emojis that didn't have the name field.
in the 2nd all emojis had the name field but I removed one emoji by the mistake(I thought there is a duplication).
in the 3rd  all emojis are exist and all have the name field.

Great, thanks for the clarification

@Santhosh-Sellavel changes you asked for.
In src/pages/home/report/ReportActionCompose.js :
  import withNavigationFocus from '../../../components/withNavigationFocus';
+ import * as EmojiUtils from '../../../libs/EmojiUtils';

        ...

    updateComment(newComment) {
+       const textWithEmojis = EmojiUtils.replaceEmojis(newComment);
+       this.textInput.setNativeProps({text: textWithEmojis});
        this.setState({
            isCommentEmpty: !!newComment.match(/^(\s|`)*$/),
        });

        // Indicate that draft has been created.
        if (this.comment.length === 0 && newComment.length !== 0) {
            Report.setReportWithDraft(this.props.reportID.toString(), true);
        }

        // The draft has been deleted.
        if (newComment.length === 0) {
            Report.setReportWithDraft(this.props.reportID.toString(), false);
        }

+       this.comment = textWithEmojis;
+       this.debouncedSaveReportComment(textWithEmojis);
+       if (textWithEmojis) {
            this.debouncedBroadcastUserIsTyping();
        }
    }

In src/pages/home/report/ReportActionItemMessageEdit.js :
  import VirtualKeyboard from '../../../libs/VirtualKeyboard';
+ import * as EmojiUtils from '../../../libs/EmojiUtils';

   ...

    updateDraft(newDraft) {
+       const textWithEmojis = EmojiUtils.replaceEmojis(newDraft);
+       this.textInput.setNativeProps({text: textWithEmojis});
+       this.setState({draft: textWithEmojis});

        // This component is rendered only when draft is set to a non-empty string. In order to prevent component
        // unmount when user deletes content of textarea, we set previous message instead of empty string.
+       if (textWithEmojis.trim().length > 0) {
+           this.debouncedSaveDraft(textWithEmojis);
        } else {
            this.debouncedSaveDraft(this.props.action.message[0].html);
        }
    }

in src//libs/EmojiUtils.js :
  import * as User from './actions/User';
+ import emojisTrie from './EmojisTrie';

   ...

+ /**
+  * Replace any emoji name in a text with the emoji icon
+  * @param {String} text
+  * @returns {String}
+  */
+ function replaceEmojis(text) {
+     let newText = text;
+     const emojiNames = text.match(/:[\w+-]+:/g);
+     if (!emojiNames || emojiNames.length === 0) { return text; }
+     for (let i = 0; i < emojiNames.length; i++) {
+         const checkEmoji = emojisTrie.isEmoji(emojiNames[i].slice(1, -1));
+         if (checkEmoji.found) {
+             newText = newText.replace(emojiNames[i], checkEmoji.code);
+         }
+    }
+     return newText;
+ }

export {
    isSingleEmoji,
    getDynamicHeaderIndices,
    mergeEmojisWithFrequentlyUsedEmojis,
    addToFrequentlyUsedEmojis,
    containsOnlyEmojis,
+   replaceEmojis,
};

the EmojisTrie.js file will look like this EmojisTrie.txt.

@Karim-30 I find it really odd to use to function based definition for TrieNode.  Can we have class implementation like Trie. Also I still there is no comments added for TrieNode methods.
Also I tested code works!

@stitesExpensify

@Santhosh-Sellavel Where else could you see us using this type of data structure?

We could use this for any keyword based search suggestions. So we might use this in future.
🎀 👀 🎀  C+ Reviewed.
We are good to hire @Karim-30 for this one.
One thing @Karim-30 let's follow proper JSDoc styles for comments about methods.

the PR is ready for review.

@Karim-30 and @Santhosh-Sellavel will you apply to the role here? the previous post expired

not overdue!

Not overdue this is still being actively coded

Still being actively worked on. Will review today.

Randomly stumbled upon this, STOKED for it, thanks for working on it @Karim-30 , @Santhosh-Sellavel , @stitesExpensify , @adelekennedy

Not overdue, we are in the final stages of review

I think that this is at least a $2,000 issue now.

I agree. @Karim-30 has done a great job responding to feedback and gracefully handling all the additional requests that surfaced during the PR despite the additional scope.

@stitesExpensify Thank you so much, it is the second time you increase the budget for this issue 😍.
@roryabraham Thank you so much, I have learned a lot from you.

@adelekennedy Just confirming that we've updated the Upwork job for the new, higher payout? We should also update this issue title too.

Updated the title and job - ready to pay out at the higher rate!

@adelekennedy Are you still looking for someone on this? Then I can share my idea.
Thanks

We have hired someone already for this job, thanks for interest @jaedm97.
There are other open jobs available here

checking here are we still reviewing this? I want to make sure i pay out on time @stitesExpensify @roryabraham

Still Review in progress @adelekennedy

No on the final stage, close to merging.

PR was merged today 🎉 :excited:

Thanks @mallenexpensify And Thanks all.

I had to reopen the job, but it's payment time. @Santhosh-Sellavel @Karim-30 will you apply here?

try again? I've refreshed (the job is not private and open to anyone)

@adelekennedy I've messaged you from the contract.
I've been hired already

@Santhosh-Sellavel that job expired and was at the lower rate - I can pay you through either contract and cancel the other

We can add the remaining amount as a bonus or add a new milestone.
@Karim-30 here is the link https://www.upwork.com/jobs/~010caa5ffae4fb2e37
@adelekennedy you accidentally posted the link that's only accessible for you https://www.upwork.com/ab/applicants/1587845308835868672/job-details

@adelekennedy Applied.

@adelekennedy was sick at the end of last week.

Hope she feels better soon.

Hired @Karim-30 , please accept and @adelekennedy will pay https://www.upwork.com/jobs/~010caa5ffae4fb2e37
@Santhosh-Sellavel can you apply for C+ too plz?

Applied @adelekennedy
cc: @mallenexpensify

Accepted Offer, thanks!

Accepted.

Paid and contract ended!


UI: show download images link on kontainerdrivers page

Since we have dynamic updates to metadata now, we have now added a new link rancher-images to allow users to download rancher-images.txt which has list of newer images to download.
We need to show this option in UI. Probably near the refresh action.
https://github.com/rancher/rancher/issues/22364

The bug fix is validated in Rancher:master-head d7b425da7
Now the extension of the downloaded file is .txt


library conflict between plstreamingkit and plplayerkit

im using both plcamerastreamingkit and plplayerkit in one application,
but there is duplicate symbol between plstreamingkit.a which used by plcamerastreamingkit and plplayerkit.a
is there any solution to use both library in one application?
谢谢

please tell me the following information:

what version of PLPlayer and PLStreamingKit are you using?
what symbol you have encountered?

duplicate symbol _PILI_RTMP_Connect0 in:
/Users/mohamedmoosa/Desktop/peeq/Source/Pods/PLPlayerKit/Pod/Library/lib/libPLPlayerKit.a(rtmp.o)
/Users/mohamedmoosa/Desktop/peeq/Source/Pods/PLStreamingKit/Pod/Library/lib/libPLStreamingKit.a(rtmp.o)
anyway i found the solution just delete the duplicate symbol which conflict between the library

thank you very much, the issue is scheduled, we will fix it as soon as possible

i have same problem ...

duplicate #51


Why no image map for this xarray object grouped by time?

I've successfully used hvplot to make super-quick maps of some global wave model data with time slider as described in the gridded data user guide:

But for other global wave model data, I still get the histogram using the same approach:

The notebook is here:
https://nbviewer.jupyter.org/gist/rsignell-usgs/3ff85b150bfd118f2b2ed768f98116a1
Any idea why and how I can work around this?

I think if you manually input lon and lat like this:
ds['sig_wav_hg_surface'].hvplot('lon', 'lat', groupby='time2')
it should work

@ahuang11 , yes!  That gives me what I was looking for:

Do you know why hvplot didn't do this by default in this case?

I suspect it got thrown off by the reftime coordinate and the logic to check whether data is 2D is faulty and missing check that the coordinate is actually indexing anything.

@philippjfr, yep, seems like that's it, because this works:
ds = xr.open_dataset(url, drop_variables=['reftime2'])
ds['sig_wav_ht_surface'].hvplot(groupby='time2', clim=(0,5))

I'll keep this open because we should only be checking for actual coordinates, i.e. coordinates that have dimensions in common with the value array.


CMake Error at CMakeLists.txt:272 (add_executable):   No SOURCES given to target: fbcp-ili9341

I was trying to compile the executable and it gave me this error.

I made a typo and forgot the " .." on the cmake line


rustup

@bors r+

:pushpin: Commit<PHONE_NUMBER>952cc5fe28184885e2289005fb38ae has been approved by saethlin
It is now in the queue for this repository.

:hourglass: Testing commit<PHONE_NUMBER>952cc5fe28184885e2289005fb38ae with merge 032d117ab8446fd3cbc478c7e8617a910bcb9bd8...

:sunny: Test successful - checks-actions
Approved by: saethlin
Pushing 032d117ab8446fd3cbc478c7e8617a910bcb9bd8 to master...


RFC 9660 The DNS Zone Version (ZONEVERSION) Option

Thanks Willem! Just two comments:

line 1820 of query.c: in the spirit of future maintainability, would it not be better to define a constant, for example “ZONEVERSION_SOA-SERIAL" with value 0 and referring to https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#zoneversion-type-values , just in case new ones appear in the future?
in my patches on an older version of nsd, I added a “(RCODE(q->packet) == RCODE_OK)” condition to the option. At the moment I don't remember the reason for that test, but couldn't it be that we're returning zonerversion on some edge condition that shouldn't happen? Sorry, but I haven't compiled the code to do live compliance testing.

Thanks Willem! Just two comments:

Thanks for the prompt review @huguei

* line 1820 of query.c: in the spirit of future maintainability, would it not be better to define a constant, for example “ZONEVERSION_SOA-SERIAL" with value 0 and referring to https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#zoneversion-type-values , just in case new ones appear in the future?

Good point! I'll add that shortly.

* in my patches on an older version of nsd, I added a “`(RCODE(q->packet) == RCODE_OK)`” condition to the option. At the moment I don't remember the reason for that test, but couldn't it be that we're returning zonerversion on some edge condition that shouldn't happen?

But the last paragraph of Section 3.2 of RFC 9660, Responders states that ZONEVERSION should also be returned for NXDOMAIN and for SERVFAIL. So I reckoned that if nsd could find a zone for the question (i.e. the zone field in struct query is set) it can also return a ZONEVERSION for that zone regardless the kind of response. WDYT?

Sorry, but I haven't compiled the code to do live compliance testing.

I can do that for you and serve some zones on a droplet in digital ocean ;). Do you have a zone in mind (or several zones) for you to test?
I suppose we should capture those compliance tests in a test package, so you can review that script.


Multiple Spotify Control connections breaks things

Spotify Control Api only seems to like a single app connection at a time. The Spotify Api Connector should be converted to a singleton.

I suspect this might be related to #254 in some way

I think https://github.com/hufman/AndroidAutoIdrive/tree/spotify_singleton contains this change, but it doesn't seem to fix the problem for me and one user said it broke Spotify functionality entirely.
The upgraded SDK plugin seemed to fix it, so this is probably fixed by that instead.


Documentation Updates

Updates on the landing page, manual, and explanation.

feel free to merge it when you are done with these changes and have the tests passing. Make sure you squash it.


openshift: crd: update to deal with latest CRDs

catch up with MCO https://github.com/openshift/machine-config-operator/pull/4315

without this PR:

without this PR: https://github.com/openshift-kni/numaresources-operator/actions/runs/8689034703

/retest-required


Icon color of inactive tab is hardcoded / can't be changed

Hi, an issue I noticed: the style option only affects the text-color, but not the icon. Could you also provide a variable to alter the icon color, for instance like:  --mdc-tab-icon-color-default: red
Currently the text changes color, but the icon is hardcoded (the unselected tab). When I use a dark mode theme, the icon becomes invisible due to the hardcoded color.

can you please paste your config and a screenshot of the issue?

I use this config:
                  - type: custom:tabbed-card
                    styles:
                      --mdc-theme-primary: var(--light-accent-color)
                      --mdc-tab-text-label-color-default: var(--text-color)
                    tabs:

Which alters the text color of the selected text+icons, to var(--light-accent-color) (which is a yellow color I defined in my theme.yaml) but only the text of the unselected tabs changes with --mdc-tab-text-label-color-default to var(--text-color) (which is a white color during the night through my theme.yaml). As you can see, the icon of the unselected tab doesn't change to white. When using a black background like me, the icon is not visible, since only the text will be changed. In my example you see the unselected tab where the text is white (like I configured) but the icon is invisible, since it's hardcoded a certain color.

Using inspect element I can see the icon is hardcoded with: 'color: var(--mdc-tab-color-default, rgba(0, 0, 0, 0.54))' which makes it invisible since I use a black background during the night.
Solution: allow us to use a theme color to change the icon color, or match it with the variable -mdc-tab-text-label-color-default.

in the styling section of the readme, theres a link to the tabs api which shows you what can be explicitly configured. you need to also set: --mdc-tab-color-default to your white color. if this fixes your issue, please close this.
if you would like to still have separate color for icons from text, im not saying i wouldnt implement it, but its best to open a post under the ideas category of the discussion forum to keep track of it.

Thanks, strange how I missed that link to the tabs api. All works now :)


Improve parsing errors to be more specific.

In order to generate more specific errors messages, it's necessary to relax some rules of the PEG grammar, so that we can emit errors at the point of failure, rather than failing a high level construct like a type or path statement.
@tomlarkworthy

Addresses issues #100, #107, and #113.


fix parquet reader confuses logical/physical/slot id of columns

Proposed changes
ParquetReader confuses logical/physical/slot id of columns. If only reading the scalar types, there's nothing wrong, but when reading complex types, RowGroup and PageIndex will get wrong statistics. Therefore, if the query contains complex types and pushed-down predicates, the probability of the result set is incorrect.
Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

(From new machine)TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 46.06 seconds
stream load tsv:          557 seconds loaded<PHONE_NUMBER>9 Bytes, about 128 MB/s
stream load json:         20 seconds loaded<PHONE_NUMBER> Bytes, about 112 MB/s
stream load orc:          65 seconds loaded<PHONE_NUMBER> Bytes, about 16 MB/s
stream load parquet:          31 seconds loaded 861443392 Bytes, about 26 MB/s
insert into select:          29.1 seconds inserted 10000000 Rows, about 343K ops/s
storage size:<PHONE_NUMBER>2 Bytes


Override SDL dpad keymaps on Android

#237

Thanks for doing this since I had noooo idea what to do 😅


setenv specifying opam root causes lots of noisy output

In the setenv script here: https://github.com/kframework/k/blob/f537759890446bd6e9e0a2aea5bd83612e22600d/k-distribution/src/main/scripts/lib/setenv#L25
If we are using a global install of K, this will set the opam root to something like /usr/lib/kframework/opamroot, which is not a directory writeable by the user account in most cases.
This causes quite a bit of noise from opam when using krun (even when not using the OCaml backend at all), for example see the output of the Cross-Validation test-suite here: https://office.runtimeverification.com/jenkins/blue/organizations/jenkins/michelson-semantics/detail/PR-39/26/pipeline/76

Note that the linked PR is on the Michelson Semantics, which is using opam 2.0, even though the K docker image is created with opam 1.2 installed.

Most likely the solution is to make sure that /usr/bin is at the front of the path when invoking setenv. This would mean that if the user installs the kframework debian package, they will get the debian-installed version, 1.2, when running this command, which is what we want.

I'm actually confused by this error. It looks like we're already doing what I just described... When setenv is invokec, K_LIB_DIR gets set to /usr/lib/kframework, and then PATH gets set to /usr/lib/kframework/../../bin:$PATH which means that /usr/bin is now at the front of the PATH. So unless the user is installing opam 2.0 into /usr/bin (which they should not be doing; if they need their own version of opam it should go in /usr/local/bin), then they should invoke the 1.2 version of opam that gets installed as part of the K package, which should in turn mean that they don't get any errors reported.
I can't fix the scenario where files in /usr point to completely different, non-backwards-compatible versions of the same projects that K depends on; that's just a messed up linux installation.

Well the Michelson semantics needs opam 2.0 installed, so it does install opam 2.0 into the K docker image.
One potential solution of this is to just install opam 2.0 into the K docker image, a la https://github.com/kframework/k/pull/1313 (which it looks like you closed).
I'm not sure why the user should be forced to prefer our version of opam over theirs actually, that doesn't really make sense to me. But I guess we would have the same problem (in reverse) if we installed opam 2.0 by default in the docker image, and they needed opam 1.2?
Either way, we're the only users of the docker images, and the only one of our projects that cares about the opam version is Tezos, so I don't really see a reason not to just do opam 2.0 by default in the docker image.

I mean, if you need opam 2.0, just install it to /usr/local. It shouldn't conflict with the installation of opam 1.2 being used by the ocaml backend.

We are using the version of opam provided by an upstream maintained PPA from the ocaml devs, so we can't change where we want to install it unless we decide to do a custom install instead of relying on the PPA. Thoughts?

it sounds like there is a problem associated with the debian package of K and opam 2. I will try and get the focal fossa debian package building on CI, since that is something we need to do anyway.  If I don't, it's probably not worth fixing. If I do fix it for focal fossa, it ought to become fixed for your PPA as well.

I am unable to reproduce this with opam 2.0 as installed from Ubuntu Focal Fossa. I would suggest you migrate your build of michelson to use Focal instead of an opam ppa if you need opam 2.0. I am going to close this because it is almost certainly some kind of local problem involving your project's PPA and as such is not an issue with K per se.

@dwightguth the build of Michelson is relying on the K dockerhub image, so this would require using Focal Fossa for the K dockerhub image. Is that what you want to do?

I'm fine with that as a solution.


Create the testable instance of FullServerContext

The puzzle 52-7cb7fe64 from #52 has to be resolved:
https://github.com/Decision-Driven-Development/logic-checker/blob/6e1f37d6783767469d1325df3e3c01e06701bd66/src/main/java/ru/ewc/checklogic/FullServerContext.java#L78-L78
The puzzle was created by Евгений Терехов on 02-Aug-24.
role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@0pdd the puzzle #55 is still not solved.

The puzzle 52-7cb7fe64 has disappeared from the source code, that's why I closed this issue.

@0pdd the only puzzle #55 is solved here.


LOOP does not support REFERENCE with inline declarations

DATA table TYPE STANDARD TABLE OF string.
DATA declared_line TYPE string.

" These works just fine:
LOOP AT table INTO declared_line.
LOOP AT table REFERENCE INTO declared_line.
LOOP AT table INTO DATA(inline_1).

" This one does not:
LOOP AT table REFERENCE INTO DATA(inline_2).

Workarounds are plenty.

All options work for READ TABLE. 👍

the transpiler currently targets 702 syntax, so the abaplint downport feature is used to "out-line" the inline variables
so this would probably be a fix in the rule https://rules.abaplint.org/downport/

scenario above will be fixed via https://github.com/abaplint/abaplint/pull/1591


ForceTorqueSensor: add API for newest measurement

🎉 New feature
Needed for https://github.com/gazebosim/gz-sim/issues/2268 and https://github.com/gazebosim/gz-sim/issues/2391.
Summary
Currently the wrench data published by gz-transport is not available via the C++ API. This pull request adds an accessor to the most recent Wrench message that is identical to that published on gz-transport.
Test it
Build and run bin/INTEGRATION_force_torque
Checklist

[X] Signed all commits for DCO
[X] Added tests
[ ] Added example and/or tutorial
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] Consider updating Python bindings (if the library has them)
[X] codecheck passed (See contributing)
[X] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

cc @bperseghetti


Support for High Resolution Time API inconsistent in iOS Safari

Hi.
The data show that this API is supported in version 8.0 but not in 8.1-8.3 and I'm sure this isn't the case. Which one is correct?

The data is correct as it is. They briefly supported it in 8.0 then removed it in 8.1. Still not supported in 8.3.

Thank you for the reply @Fyrd. I was pretty sure it was an error because I was weird.


Get-OfficeAddins PS script taking 20-30minutes, taking 25-50% CPU

Not sure if anyone else is experiencing this, but we've deployed the Get-OfficeAddins solution as a package/program and, when running from software center, it takes roughly 20-30m to complete taking up a whole core.  It does eventually finish and does reflect the correct info.  We've seen this across the board in our testing.  Checking to see if it's something in our environment, if this is something others are seeing, or if this is the expectation.  Just seems a little intense for what it's doing.
Thanks!
Meta:
Windows 10 Enterprise 1703
HP 840 G3s (Kaby Lake i5, 16gb ram, 256gb NVME, )
Office 365 2013 [15.0.5007.1000]and 2016[16.0.8201.2258] (32-bit and 64-bit)

We're seeing the same or similar.  Not sure where the script is getting hung up at.  But it just runs for a long time consuming quite a bit of CPU.


vcs_git_download_url does not support when using parameters

Describe the bug
We had an issue with bower remote repo which did not works, the support ( ticket 260432 ) advised us to configure vcs_git_download_url as follow: "{0}/{1}/archive/{2}.{3}" but we are getting the following error :

Our terrafrom code:
      bower = {
         "bower-wix-private" = {
              url                                   = "https://github.com/"
              vcs_git_provider                      = "CUSTOM"
              bower_registry_url                    = "https://github.com/"
              vcs_git_download_url                  = "{0}/{1}/archive/{2}.{3}"
              username                              = "********"
              password                              = ********
              unused_artifacts_cleanup_period_hours = 48
              content_synchronisation = {
                enabled                         = true
                statistics_enabled              = true
                properties_enabled              = true
                source_origin_absence_detection = true
          }
        }

Module conf :

resource "artifactory_remote_bower_repository" "bower-remote" {
  for_each = try(var.repositories.remote.bower, {})

  key                  = each.key
  project_key          = lookup(each.value, "project_key", "default")
  url                  = lookup(each.value, "url", null)
  xray_index           = lookup(each.value, "xray_index", null)
  username             = lookup(each.value, "username", null)
  password             = lookup(each.value, "password", null)
  vcs_git_provider     = lookup(each.value, "vcs_git_provider", "GITHUB")
  bower_registry_url   = lookup(each.value, "bower_registry_url", "https://registry.bower.io")
  vcs_git_download_url = null
  #vcs_git_download_url                  = lookup(each.value, "vcs_git_download_url", null)
  unused_artifacts_cleanup_period_hours = lookup(each.value, "unused_artifacts_cleanup_period_hours", null)

  content_synchronisation {
    enabled                         = try(lookup(each.value.content_synchronisation, "enabled", null), null)
    properties_enabled              = try(lookup(each.value.properties_enabled, "enabled", null), null)
    source_origin_absence_detection = try(lookup(each.value.source_origin_absence_detection, "enabled", null), null)
    statistics_enabled              = try(lookup(each.value.statistics_enabled, "enabled", null), null)
  }

}

Hi @eliorso! Can you please provide an actual error message? I don't see it in the ticket description.

Also, please provide the information for a bug ticket:

Describe the bug
A clear and concise description of what the bug is.
Requirements for and issue

[ ] A description of the bug
[ ] A fully functioning terraform snippet that can be copy&pasted (no outside files or ENV vars unless that's part of the issue). If this is not supplied, this issue will likely be closed without any effort expended.
[ ] Your version of artifactory (you can curl it at $host/artifactory/api/system/version
[ ] Your version of terraform
[ ] Your version of terraform provider

Hi,
I just see that the error was not added.
The error we can see from Terraform is:
Error: expected "vcs_git_download_url" to have a host, got {0}/{1}/archive/{2}.{3}
We are working with Artifactory SaaS.
provider version :
artifactory = {
source  = "registry.terraform.io/jfrog/artifactory"
version = "7.5.0"
Terrafrom version :  "1.4.6"

@eliorso This is fixed in v8.2.2. If you can upgrade to this version, this is preferred solution 😄


CSS Grid examples

Adds some simple layout examples for the Grid component

Main Story: ch

Details

This PR will address changes to the following:

[x] Components
[ ] Hooks

Acceptance Crtieria

[x] Storybook should render the grid examples

API Changes

[ ] [Breaking] This PR introduces breaking changes
[ ] [Documentation] Documentation has been written about the API change

Deployment
Before merge to master
Note: Code merged to master should be safe to automatically deploy to production as-is.

[ ] [QA] User-testing/quality assurance done
[ ] [Test] All components and hooks should have a corresponding unit test
[x] [Storybook] All components and hooks should have a corresponding Storybook story
[ ] [Documentation] Documentation has been written or updated
[ ] [Version] Version number has been updated

Merging since @alexanderchan is on PTO.


Checkbox wrapped in label = trouble

If upon jcf.replacing the checkbox was wrapped in its own label it will not uncheck well. It sometimes unchecks and sometimes it doesn't. Looks like the toggle event is triggered twice because of it.
Many frameworks like Yii2 often wrap their checkboxes in label by default and in such situations it is very tricky to find out what goes wrong.

Just put correct ID-FOR attributes into checkbox-label and all works fine
https://jsfiddle.net/wdgumry4/


No way to apply --no-daemon: current process arguments format bug

Expected Behavior

It should be possible to adjust jvm settings to match daemon criteria and run trully embedded with --no-daemon
Current Behavior

There's no way to satisfy daemon criteria
Context

When trying to run Gradle in --no-daemon mode, see "To honour the JVM settings for this build a single-use Daemon process will be forked" message. To run trully embedded we have to match daemon jvm options.
This check is executed in org.gradle.launcher.daemon.configuration.BuildProcess#configureForBuild it compares required options for daemon and actual options from current jvm.
Required options are parsed as command-line args, for example: --add-opens java.base/java.util=ALL-UNNAMED is parsed here as ["--add-opens", "java.base/java.util=ALL-UNNAMED"]
Current options are provided with ManagementFactory.getRuntimeMXBean().getInputArguments(), for example: --add-opens java.base/java.util=ALL-UNNAMED is parsed here as ["--add-opens=java.base/java.util=ALL-UNNAMED"]
So, JVM options never match
Steps to Reproduce

run gradle with --no-daemon option and follow https://docs.gradle.org/7.3.3/userguide/build_environment.html#sec:configuring_jvm_memory instructions
Your Environment

Gradle 7.3.3
Build time:   2021-12-22 12:37:54 UTC
Revision:     6f556c80f945dc54b50e0be633da6c62dbe8dc71
Kotlin:       1.5.31
Groovy:       3.0.9
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.15 (Eclipse Adoptium 11.0.15+10)
OS:           Mac OS X 12.2.1 x86_64

I encountered same issue. When I tried to switch to JDK 8, it works. Meaning the gradle daemon is disabled.

I encountered the same issue on Windows 10 with the latest Gradle 7.4.2, and JVM Eclipse Adoptium 11.0.15+10.

The suggested fix is:

Change the default requirements for Java 9+ daemon args to use the single-argument format (--add-opens=x.y/z.a=ALL-UNNAMED), so that it could be possible to match them by passing custom GRADLE_OPTS;

Remove some duplicated --add-opens arguments;

Add --info-level logging that would make it easier to discover the arguments that the launcher JVM needs. If org.gradle.jvmargs are not empty, the build will print a message looking like this into the --info logs:

Checking if the launcher JVM can be re-used for build. To be re-used, the launcher JVM needs to match the parameters required for the build process: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED -Xms300m -Xmx600m -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/Users/sergey.igushkin/Projects/Gradle/gradle/subprojects/launcher/build/tmp -Duser.country=US -Duser.language=en -Duser.variant -ea

This change causes IntelliJ to create multiple daemons during import of any project with a buildSrc folder, because this code no longer works with the changed argument syntax.

There is no information about this behavior in the Gradle message: "To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/8.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
" or the documentation referenced by it. I understood that there are additional hidden parameters passed to the daemon only after finding this bug.
Running without a daemon can be very useful in CI environment since there is a high probability that the daemon will not be reused anyway due to ephemeral containers. Running without a daemon writes all log messages in a single place which is also very useful in a CI environment.

I concur with @sergeykad . Launching essentially two JVMs in a CI environment a) consumes more system resources than necessary, b) takes much longer. Especially for small projects, the time it takes to launch the build may take longer than the build / test run itself.