Build issue on Intel / Sonoma - missing exiftool_filetypes.json in .egg

Building from source using python 3.10 (through pyenv) and pipenv shell.
I'm on an Intel MacBook Pro with Sonoma 14.1.1 (23B81).
I get everything to build but I'm getting the error:
$ osxphotos info
Traceback (most recent call last):
File "/Users/nicolas/.local/share/virtualenvs/osxphotos-wrbWIk7z-python/bin/osxphotos", line 33, in
sys.exit(load_entry_point('osxphotos==0.64.3', 'console_scripts', 'osxphotos')())
File "/Users/nicolas/.local/share/virtualenvs/osxphotos-wrbWIk7z-python/bin/osxphotos", line 25, in importlib_load_entry_point
return next(matches).load()
File "/Users/nicolas/.pyenv/versions/3.10.6/lib/python3.10/importlib/metadata/init.py", line 171, in load
module = import_module(match.group('module'))
File "/Users/nicolas/.pyenv/versions/3.10.6/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 992, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/Users/nicolas/.local/share/virtualenvs/osxphotos-wrbWIk7z-python/lib/python3.10/site-packages/osxphotos-0.64.3-py3.10.egg/osxphotos/init.py", line 12, in
File "/Users/nicolas/.local/share/virtualenvs/osxphotos-wrbWIk7z-python/lib/python3.10/site-packages/osxphotos-0.64.3-py3.10.egg/osxphotos/exiftool.py", line 41, in
File "/Users/nicolas/.pyenv/versions/3.10.6/lib/python3.10/pathlib.py", line 1119, in open
return self._accessor.open(self, mode, buffering, encoding, errors,
NotADirectoryError: [Errno 20] Not a directory: '/Users/nicolas/.local/share/virtualenvs/osxphotos-wrbWIk7z-python/lib/python3.10/site-packages/osxphotos-0.64.3-py3.10.egg/osxphotos/exiftool_filetypes.json'
I've gone through quite a bit of pyenv/pipenv shell gymnastics to get to this point so maybe that's part of the problem.
Any hints on how to troubleshoot it further ?

Thank you for the super quick reply, very appreciated, osxphotos is an essential piece of my backups.
I used python3 setup.py install according to the README.
Looking at build.sh most commands are related to documentation so I just tried:
rm -rf dist build
python3 -m build
I get:
/Users/nicolas/.local/share/virtualenvs/osxphotos-wrbWIk7z-python/bin/python3: No module named build
Which makes sense because there is no build module, which step am I missing ?

You shouldn't need to build from source unless you're developing osxphotos.  python3 -m pip install osxphotos or pipx install osxphotos if you just want the stand-alone CLI.
However, I see now that the README instructions were never updated for build -- I'll fix that.
If you do need to install from source, this should work:
python3 -m pip install -r dev_requirements.txt
python3 -m pip install .

If you need to build the package (distinct from installing it), you can use:
python3 -m build
The command  python3 -m pip install -r dev_requirements.txt  installs the development requirements.
Again, if you're just using the osxphotos command line tool, I strongly recommend just using pipx. If you are using osxphotos in your own scripts, I recommend to pip install the package. The source tree is 3.5GB due to a large number of test libraries and if all you are doing is running osxphotos, the built wheel is only 2MB so you don't need to install the large source tree.

@all-contributors please add @nicad for docs

I've used osxphotos from the CLI happily and would prefer to do so this way but I upgraded to Sonoma and need a more recent version of osxphotos to get the alpha sonoma support.
So with the instructions above I was able to build and run osxphotos. I hit a crash, I'll create a separate issue once I have time to gather all the details. Thank you.

The pipx version works on Sonoma. You may get a warning about an unsupported OS but it will still work.

Since you've installed the source distribution, would you indicate running pytest in the osxphotos source folder. That will give me a full test on Sonoma and I can then update the supported versions matrix.

humm I thought I had tried to upgrade through pipx, my bad.
Happy to run the tests:
pwd
/Users/nicolas/imports/osxphotos
pytest tests
ImportError while loading conftest '/Users/nicolas/imports/osxphotos/tests/conftest.py'.
ModuleNotFoundError: No module named 'tests.conftest'

ok got time to google, running with 'python -m pytest tests/':
python -m pytest tests/
================================================= test session starts =================================================
platform darwin -- Python 3.10.6, pytest-7.4.0, pluggy-1.3.0
rootdir: /Users/nicolas/imports/osxphotos
configfile: pytest.ini
plugins: mock-3.12.0, cov-4.0.0
collected 1950 items / 1 skipped

tests/test_10_12_6.py .................                                                                         [  0%]
tests/test_albums_folders_catalina_10_15_7.py ..................                                                [  1%]
tests/test_albums_folders_high_sierra_10_13_6.py .............                                                  [  2%]
tests/test_albums_folders_mojave_10_14_6.py ..............                                                      [  3%]
tests/test_bigsur_10_16_0_1.py ...............................................................................  [  7%]
tests/test_catalina_10_15_7.py ................................................................................ [ 11%]
...sssssss....s............                                                                                [ 12%]
tests/test_cli.py ....................................................................sss...................... [ 17%]
..............................s...............................s...............s................................ [ 23%]
............ssssssss.......................................................                                     [ 27%]
tests/test_cli_add_locations.py s                                                                               [ 27%]
tests/test_cli_add_to_album.py sss                                                                              [ 27%]
tests/test_cli_all_commands.py ..................                                                               [ 28%]
tests/test_cli_batch_edit.py sssssss                                                                            [ 28%]
tests/test_cli_dump.py .....                                                                                [ 28%]
tests/test_cli_exiftool.py ....                                                                                [ 28%]
tests/test_cli_export_cloud.py .....                                                                            [ 29%]
tests/test_cli_export_projects.py .                                                                             [ 29%]
tests/test_cli_export_sidecar_template.py ................                                                      [ 30%]
tests/test_cli_exportdb.py .                                                                                [ 30%]
tests/test_cli_import.py ssssssssssssssssssssssssssssss                                                         [ 31%]
tests/test_cli_iphoto.py ......                                                                                [ 32%]
tests/test_cli_orphans.py ..                                                                                [ 32%]
tests/test_cli_param_types.py ..............                                                                    [ 32%]
tests/test_cli_push_exif.py .............F                                                                      [ 33%]
tests/test_cli_sync.py ss                                                                                [ 33%]
tests/test_cli_template.py ....                                                                                [ 33%]
tests/test_cli_utils.py ..                                                                                [ 33%]
tests/test_cli_verbose.py .......                                                                               [ 34%]
tests/test_cloud_owner_catalina.py ....                                                                         [ 34%]
tests/test_comments.py ....                                                                                [ 34%]
tests/test_concurrent_export.py ssssssssssssssssssss                                                            [ 35%]
tests/test_configoptions.py .......                                                                             [ 36%]
tests/test_datetime_formatter.py ...                                                                            [ 36%]
tests/test_datetime_utils.py ........                                                                           [ 36%]
tests/test_debug.py ....                                                                                [ 36%]
tests/test_empty_library_4_0.py ...........                                                                     [ 37%]
tests/test_exif_info.py ..                                                                                [ 37%]
tests/test_exiftool.py .................................                                                        [ 39%]
tests/test_exiftool_caching.py ...................                                                              [ 40%]
tests/test_exifwriter.py ...............                                                                        [ 40%]
tests/test_export_catalina_10_15_7.py ...............................                                           [ 42%]
tests/test_export_catalina_10_15_7_use_photos_export.py sssssss                                                 [ 42%]
tests/test_export_convert_to_jpeg.py sss                                                                        [ 43%]
tests/test_export_db.py ...........                                                                             [ 43%]
tests/test_export_mojave_10_14_6.py ................                                                            [ 44%]
tests/test_export_raw_catalina_10_15_1.py .....                                                                 [ 44%]
tests/test_exportresults.py ...                                                                                [ 44%]
tests/test_faceinfo.py ..........................................................                               [ 47%]
tests/test_fileutil.py .......ss...                                                                             [ 48%]
tests/test_fingerprint.py .                                                                                [ 48%]
tests/test_gitignorefile_cache.py ..                                                                            [ 48%]
tests/test_gitignorefile_ignore.py .                                                                            [ 48%]
tests/test_gitignorefile_ignored.py F                                                                           [ 48%]
tests/test_gitignorefile_match_non_str.py ..                                                                    [ 48%]
tests/test_gitignorefile_matched.py ........................................................................... [ 52%]
.......                                                                                [ 53%]
tests/test_highsierra.py ..............                                                                         [ 53%]
tests/test_image_converter.py ssssss                                                                            [ 54%]
tests/test_incloud_big_sur_10_16_0.py .....                                                                     [ 54%]
tests/test_incloud_catalina_10_15_1.py .....                                                                    [ 54%]
tests/test_incloud_catalina_10_15_6.py ........                                                                 [ 54%]
tests/test_incloud_mojave_10_14_6.py .....                                                                      [ 55%]
tests/test_iphoto.py ........................                                                                   [ 56%]
tests/test_live_catalina_10_15_1.py .....                                                                       [ 56%]
tests/test_modified_date_catalina_10_15_7.py ..                                                                 [ 56%]
tests/test_modified_date_mojave_10_14_6.py .                                                                    [ 56%]
tests/test_mojave_10_14_6.py ...........................................................                        [ 59%]
tests/test_mojave_10_14_6_path_edited.py ..                                                                     [ 60%]
tests/test_monterey_12_0_1.py ..............................................................................    [ 64%]
tests/test_monterey_dev_beta_12_0_0.py ........................................................................ [ 67%]
...........sssss....s.....                                                                                [ 69%]
tests/test_movies_4_0.py ................                                                                       [ 69%]
tests/test_movies_5_0.py ................                                                                       [ 70%]
tests/test_path_utils.py ...                                                                                [ 70%]
tests/test_personinfo.py ....                                                                                [ 71%]
tests/test_photokit.py sssssssssssssssssssssss                                                                  [ 72%]
tests/test_photosalbum_unicode.py sss                                                                           [ 72%]
tests/test_photosdb_utils.py .....................                                                              [ 73%]
tests/test_placeinfo.py ...........                                                                             [ 74%]
tests/test_places_catalina_10_15_1.py ....                                                                      [ 74%]
tests/test_places_high_sierra_10_13_6.py .....                                                                  [ 74%]
tests/test_places_mojave_10_14_6.py ....                                                                        [ 74%]
tests/test_projects_catalina.py ........................                                                        [ 75%]
tests/test_projects_sierra.py ................                                                                  [ 76%]
tests/test_score_info.py ..                                                                                [ 76%]
tests/test_search_info_10_14_6.py .....                                                                         [ 77%]
tests/test_search_info_10_15_4.py .....                                                                         [ 77%]
tests/test_search_info_10_15_5.py .....                                                                         [ 77%]
tests/test_search_info_personal_library.py ssss                                                                 [ 77%]
tests/test_shared_catalina_10_15_1.py .........                                                                 [ 78%]
tests/test_shared_mojave_10_14_6.py ......                                                                      [ 78%]
tests/test_shared_ventura_13_1.py .                                                                             [ 78%]
tests/test_sidecar_xmp.py .                                                                                [ 78%]
tests/test_sidecarwriter.py ..........                                                                          [ 79%]
tests/test_sonoma_14_0_0.py ................................................................................... [ 83%]
.......                                                                                [ 83%]
tests/test_specials_bigsur_10_16_0.py ......                                                                    [ 84%]
tests/test_specials_catalina_10_15_1.py .....                                                                   [ 84%]
tests/test_specials_mojave_10_14_6.py s...s                                                                     [ 84%]
tests/test_specials_sierra_10_12.py .....                                                                       [ 84%]
tests/test_sqlite_utils.py ..                                                                                [ 84%]
tests/test_sqlitekvstore.py ...............                                                                     [ 85%]
tests/test_template.py .....ss.............................................................                     [ 89%]
tests/test_template_counter.py ..............                                                                   [ 89%]
tests/test_template_today.py ..                                                                                [ 90%]
tests/test_unicode.py .....                                                                                [ 90%]
tests/test_uti.py .......                                                                                [ 90%]
tests/test_utils.py .s....s.                                                                                [ 91%]
tests/test_ventura_13_0_0.py .................................................................................. [ 95%]
..............                                                                                [ 96%]
tests/test_ventura_dev_preview_13_0_0.py ...................................................................... [ 99%]
........                                                                                [100%]

====================================================== FAILURES =======================================================
___________________________________________ test_cli_push_exif_metadata_arg ___________________________________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x112414b20>

    def test_cli_push_exif_metadata_arg(monkeypatch):
        """Test push-exif command with combinations of the METADATA argument"""

        # Note: this is a big test that tests a lot of combinations of the METADATA argument
        # it's easier to test this way than to write a bunch of individual tests which would require
        # copying the library for each test

        runner = CliRunner()
        with runner.isolated_filesystem():
            cwd = pathlib.Path(os.getcwd())

            if sys.version_info[0:2] <= (3, 9):
                monkeypatch.setattr("xdg.xdg_data_home", lambda: cwd)
            else:
                monkeypatch.setattr("xdg_base_dirs.xdg_data_home", lambda: cwd)

            test_library = copy_photos_library(os.path.join(cwd, "Test.photoslibrary"))

            # clear metadata
            photosdb = PhotosDB(test_library)
            photo = photosdb.get_photo(UUID_KEYWORDS_PERSONS)
            clear_exiftool_metadata(photo)
            photo = photosdb.get_photo(UUID_LOCATION)
            clear_exiftool_metadata(photo)

            # first run with all
            result = runner.invoke(
                push_exif,
                [
                    "all",
                    "-V",
                    "--force",
                    "--library",
                    test_library,
                    "--uuid",
                    UUID_LOCATION,
                    "--uuid",
                    UUID_KEYWORDS_PERSONS,
                ],
            )
            assert result.exit_code == 0

            # verify metadata was pushed
            photo = photosdb.get_photo(UUID_KEYWORDS_PERSONS)
            exif = ExifTool(photo.path).asdict()
            assert sorted(photo.keywords) == get_exiftool_keywords(photo)
            assert sorted(photo.persons) == get_exiftool_persons(photo)
            assert photo.title == exif["XMP:Title"]
            assert photo.description == exif["XMP:Description"]
            assert photo.date.strftime("%Y:%m:%d %H:%M:%S") == exif["EXIF:DateTimeOriginal"]
            assert photo.date.strftime("%Y:%m:%d %H:%M:%S") == exif["EXIF:CreateDate"]
            assert sorted(photo.persons) == get_exiftool_tag_as_list(
                photo, "XMP:PersonInImage"
            )
            assert "EXIF:GPSLatitude" not in exif

            photo = photosdb.get_photo(UUID_LOCATION)
            exif = ExifTool(photo.path).asdict()
            assert photo.title == exif["XMP:Title"]
            assert photo.description == exif["XMP:Description"]
            assert photo.date.strftime("%Y:%m:%d %H:%M:%S") == exif["EXIF:DateTimeOriginal"]
            assert photo.date.strftime("%Y:%m:%d %H:%M:%S") == exif["EXIF:CreateDate"]
            assert abs(photo.latitude) == pytest.approx(exif["EXIF:GPSLatitude"])
            assert abs(photo.longitude) == pytest.approx(exif["EXIF:GPSLongitude"])
            assert "XMP:RegionName" not in exif

            # clear metadata
            photosdb = PhotosDB(test_library)
            photo = photosdb.get_photo(UUID_KEYWORDS_PERSONS)
            clear_exiftool_metadata(photo)
            photo = photosdb.get_photo(UUID_LOCATION)
            clear_exiftool_metadata(photo)

            # delete the update_db
            update_db = cwd / "osxphotos" / "push_exif.db"
            update_db.unlink()

            # now run just keywords
            result = runner.invoke(
                push_exif,
                [
                    "keywords",
                    "-V",
                    "--force",
                    "--library",
                    test_library,
                    "--uuid",
                    UUID_KEYWORDS_PERSONS,
                    "--uuid",
                    UUID_LOCATION,
                ],
            )
>           assert result.exit_code == 0
E           AssertionError: assert 1 == 0
E            +  where 1 = <Result OperationalError('disk I/O error')>.exit_code

tests/test_cli_push_exif.py:652: AssertionError
------------------------------------------------ Captured stdout call -------------------------------------------------
    1 image files updated
    1 image files updated
    1 image files updated
    1 image files updated
------------------------------------------------ Captured stderr call -------------------------------------------------
2023-11-23 16:17:44,375 - root - WARNING - photosdb.py - 151 - WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
2023-11-23 16:17:45,027 - root - WARNING - photosdb.py - 151 - WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
2023-11-23 16:17:45,821 - root - WARNING - photosdb.py - 151 - WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
2023-11-23 16:17:46,465 - root - WARNING - photosdb.py - 151 - WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
-------------------------------------------------- Captured log call --------------------------------------------------
WARNING  root:photosdb.py:151 WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
WARNING  root:photosdb.py:151 WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
WARNING  root:photosdb.py:151 WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
WARNING  root:photosdb.py:151 WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 14.0]: you have Darwin, OS version: 14.1
_______________________________________________ TestIgnored.test_simple _______________________________________________

self = <tests.test_gitignorefile_ignored.TestIgnored testMethod=test_simple>

    def test_simple(self):
        for is_dir in (None, False, True):
            with self.subTest(i=is_dir):
                self.assertFalse(
                    osxphotos.gitignorefile.ignored(__file__, is_dir=is_dir)
                )
                if is_dir is not True:
                    self.assertTrue(
                        osxphotos.gitignorefile.ignored(
                            f"{os.path.dirname(__file__)}/__pycache__/some.pyc",
                            is_dir=is_dir,
                        )
                    )
                self.assertFalse(
                    osxphotos.gitignorefile.ignored(
                        os.path.dirname(__file__), is_dir=is_dir
                    )
                )
                if is_dir is not False:
>                   self.assertTrue(
                        osxphotos.gitignorefile.ignored(
                            f"{os.path.dirname(__file__)}/__pycache__", is_dir=is_dir
                        )
                    )
E                   AssertionError: False is not true

tests/test_gitignorefile_ignored.py:27: AssertionError
=============================================== short test summary info ===============================================
FAILED tests/test_cli_push_exif.py::test_cli_push_exif_metadata_arg - AssertionError: assert 1 == 0
FAILED tests/test_gitignorefile_ignored.py::TestIgnored::test_simple - AssertionError: False is not true
=============================== 2 failed, 1803 passed, 146 skipped in 271.11s (0:04:31) ===============================

Thanks! I'll take a look at those two failed tests.

@all-contributors please add @nicad for tests

OK, I think these two tests are ok so looks like everything is working correctly. I'll update the tested version matrix.
The first test failed due to a disk or OS error. Not sure why but it wasn't an osxphotos error.

Result OperationalError('disk I/O error')>.exit_code

The second test looks for some files that would only be present in the development environment if you were actively working on the python code in that environment. I'll look at updating the code so it doesn't fail if these files aren't present:

f"{os.path.dirname(file)}/pycache", is_dir=is_dir

Thanks for running the test suite!


readme and log example

https://gist.github.com/mcuadros/21c86bc1c32952e3ae65ac0d813e9c37

Current coverage is 77.03% (diff: 100%)

Merging #181 into master will decrease coverage by 0.70%

@@             master       #181   diff @@
==========================================
  Files            91         91
  Lines          5823       5823
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           4527       4486    -41
- Misses          816        865    +49
+ Partials        480        472     -8

Powered by Codecov. Last update fb7b525...302e5c0


TP-7532 pagination by scrolling

pull request for https://relayr.tpondemand.com/entity/7532

And fix the tests


Fix #5

i move setopt extendedglob to the function body. because i found if i press Ctrl+r too fast, setopt extendedglob will have no effect for the function. now it can solve this problem.

Thanks again! These is a great improvement.


fix $isComposite semantic confusion

Working on a many to many relationship, we found a semantic confusion resulting in a bug:
We have a table A, single PK(A_1) and table B, composite PK(B_1, B_2)
We define a many to many relationship involving A_1 and B_1 (not B_2).
We build the schema, everything is OK.
But when adding to the collection of B in a A entity (A->addToBCollection(...)), then the ManyToManyPersister is buggy, because what is currently named $isComposite has in fact nothing to do with composite primary keys. array_pop() is used as if $identifier1 (or 2) is a single element array, but that is not the case for us, leading to the "popping" of the last column of the composite PK, which is invalid.
This patch makes less assumptions and fixes the bug.

The code is not equipped to handle with this kind of mapping. Is this a legacy mapping? It seems to be weird even for a relational database schema (sorry to be blunt about it). What is the use-case?
Can you try to call "orm:validate-schema", does it work or fail for you?

I updated the SchemaValidator to throw an error on this kind of mapping setup.

I was experimenting with a versioned table T, PK(T1,T2), where T1 was enough to identify the object whatever it's version, and (T1,T2) would identify the specific version of the T1 object. I had a hard time experimenting this with doctrine because the validate schema didn't say anything, but the code really doesn't handle this kind of mapping.
So thank you for updating SchemaValidator.
One issue still remains : the array_pop method can lead to SQL injection. That's what I experimented before understanding the bug. array_pop takes the last element, but sql-quoting then is done based on the field/column name type, which leads to a type missmatch.
My patch makes less assumptions and is more local, I think it's still worth including, not for supporting my strange mapping, but for robustness, don't you think ?


Improvements for buttercup-desktop

I opened this PR with 2 main things:

Make it more flexible regarding Buttercup incomplete URLs. So when fetching URL from entry, it will prepend https:// if no http/https protocol is found.
Regarding buttercup-desktop tests, I had trouble due to this module not being transpiled, so I added a basic babel config and dist/ transpiled code.
I noticed later, probably this could also have been fixed using this specific option from the babel-register functionality used by Ava in buttercup-desktop, but I think it's a better thing in any case to expose already compatible code from the module.

Thanks Hugo..
I’ll properly review this tomorrow, but I don’t think we should commit dist. It can be git ignored and created on publish. You could use a prepublish script to build, and you could change the “main” entry to point there..

Also let’s npmignore the babelrc file too.

Totally agree on the dist, my bad.
I'm not sure on how much should go on the published npm package, though.
On one hand, only dist is really needed, so the rest is all extra.
On the other hand, sometimes it's nice to be able to read/debug a module's source code, maybe even tests, etc. from node_modules. I don't have a clear opinion here.

Industry standard, so far as I've seen, is:

gitignore dist - don't commit built code
build on publish
point, in package.json, to the built files using "main"
npmignore source, tests and build files (ie. babelrc) - If users want to peruse code, they can check out the github repo. If they want to debug, they can as it's only babel transpiled. If we minify and publish then attaching a sourcemap wouldn't be a bad idea..

And thanks for making updates like this! :)

Sounds good! Regarding .npmignore, as far as I see, when publishing only dist, seems like even simpler to specify package.json´s files option instead.

Thanks @hugo-cardenas! Some very minor points and after those are addressed I can merge immediately and release.


Contribution file Modified

Review requirements added.
Commit guide lines added. (under "commit your update")
Pull request guide lines modified.

looks good , great work paz .

LGTM!

Good job!

Got to appreciate the irony that a PR defining that reviews cannot be all "lgtm" have three lgtm reviews.

@RawanAbuleil @thetaxas2468 @MeitarRizner @LiorSilberman
We're going to need some more compelling reviews before the mentors can provide their reviews.

You can delete some extra empty lines that you have in the file.
in pull request: maybe we can add that after uploading PR, you should let the team members know that there are new PR by writing in slack or by direct message if the PR directed for someone.

It is better to mark the lines you are referring to in the code and write your comments there (as @thetaxas2468 did in this PR).

Hi @pazMenachem, here are a few notes:

I suggest adding more to the Making changes locally section. Maybe even renaming it Prerequisites.
Some of the titles can be better described (as I mentioned above).
I suggest looking at older projects from previous courses for more examples.

@pazMenachem almost there. Good job!

I would suggest including information about the development environment in the README file, as it is mentioned multiple times (what is vagrant? for example). this is for another PR, but make sure to at least open an issue for it.
Do mention that those rules are enforced. PRs which doesn't follow those rules won't be reviewed (this PR does not follow the guide... )

also:

When creating a PR, assign yourself to it and assign reviewers so they'll be notified.
mention the issue the PR is solving, like this: ' fix #12 ' (this PR lacks that), it'll link the Issue and the PR, so that when the PR merges, the issue will be automatically closed.

I would suggest including information about the development environment in the README file, as it is mentioned multiple times (what is vagrant? for example). this is for another PR, but make sure to at least open an issue for it.
Do mention that those rules are enforced. PRs which doesn't follow those rules won't be reviewed (this PR does not follow the guide... )

ill open an issue for it.
care to mention where else it doesnt follow the guide? except the title that will be changed next commit.

also:

When creating a PR, assign yourself to it and assign reviewers so they'll be notified.
mention the issue the PR is solving, like this: ' fix Add PR review process and general acceptance criteria to contributing guide #12 ' (this PR lacks that), it'll link the Issue and the PR, so that when the PR merges, the issue will be automatically closed.

fix #12.
tried looking how to write the same you did with out success, would like to know please.

FYI you don't have to create a new commit to change those details:

PR title and description can just be edited through GH.
Commit details can be changed by doing git commit --amend ->  -> git push -f origin <branch_name>

You did the fix tag right, but it should be in the description of the PR, not in the comments. note that GH did not link the issue to the PR as a result.
I'll see that you'll have right to assign each other.

You did the fix tag right, but it should be in the description of the PR, not in the comments. note that GH did not link the issue to the PR as a result.
I'll see that you'll have right to assign each other.

FYI you don't have to create a new commit to change those details:

PR title and description can just be edited through GH.
Commit details can be changed by doing git commit --amend -> <make changes> -> git push -f origin <branch_name>

got it

can you refer to which points I'm missing?

@pazMenachem i meant, you had some discussions going on with @Omeramsc. Once he confirms that he’s good with the result, the pr can be merged as far as I’m concerned.


Javadoc in readme

there doesn't seem to be a reference to javadoc in the readme, does there?

@l3r8yJ thank you for reporting this. I'll assign someone to take care of it soon.

@l3r8yJ this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-06-05T17:22:16.941841.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@l3r8yJ javadoc link is attached to the javadoc badge

@h1alexbel got it

@l3r8yJ thank you for resolving this ticket. I've just added it to your active invoice. You can always check all your invoices and more on the Contributor Dashboard.


Upgrading kubeadm clusters - cleanup

We should make sudo usage consistent across the upgrade document.
Also, would it be better to set an environment variable for the new version KUBEVER=1.28.1-00 and reuse it on all of the apt/dnf commands?

/retitle Standardize sudo usage and introduce environment variable for consistency in "Upgrading kubeadm clusters" page


[SPARK-42915][SQL] Codegen Support for sentences

What changes were proposed in this pull request?
The PR adds Codegen Support for sentences.
Why are the changes needed?
Improve codegen coverage and performance.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Add new UT.
Pass GA.

JDK 8: https://github.com/panbingkun/spark/actions/runs/5410145447
JDK 11: https://github.com/panbingkun/spark/actions/runs/5410147733
JDK 17: https://github.com/panbingkun/spark/actions/runs/5410152308


Type-check on Python 3.12

Summary of changes
Actually type-check targeting all Python versions in CI, including 3.12
I'd rather if it was possible for the CI to tell mypy which python version to target to override python_version config.
Pull Request Checklist

[x] Changes have tests (these are the test changes)
[x] News fragment added in newsfragments/. (not public-facing)
(See documentation for details)

I'm gonna leave this one for later. I won't have a choice but to tackle it to merge setuptools stubs from typeshed, but it doesn't affect pkg_resources which I'm focusing on for now.

Looks like I'll have to handle a handful of the typeshed-related TODOs first. Because distutils imports become Any in Python 3.12, a handful of type-ignores become unused.

Hopefully I didn't forget to add anything to typeshed. Waiting for https://github.com/python/mypy/issues/17285


Positioning problems

The current implementation reads position data from a file and positions the vertices accordingly. By default these would directly correspond to spatial positions in the recording or the simulation. In some cases, however, this is not trivial. Eg. Utah arrays often record 2 or 3 neurons per electrode, thus these have the same position. In simulations it's even possible that there are no positions, because the simulation does not have any notion of locality.
These cases need to be investigated and some kind of alternative positioning needs to be found.
For non-positional cases some kind of fallback mechanism would be required, e.g. a circle or some precalculated arrangement already based on correlation data (e.g. different clustering algorithms).

Maybe: Starting position in circle that results with same correlation between all pairs, e.g,weights == np.zeros(...) or siimilar.
This however needs a starting point, too, e.g. a rectangle like the Utah array positioning, maybe random distribution on that rectangle.

Initial positioning other idea: https://doi.ieeecomputersociety.org/10.1109/TC.1984.1676443; https://ieeexplore.ieee.org/ielx5/12/35237/01676443.pdf?tp=&arnumber=1676443&isnumber=35237&ref=aHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL3N0YW1wL3N0YW1wLmpzcD90cD0mYXJudW1iZXI9MTY3NjQ0Mw==&tag=1
Direct positioning algorithm based on eigenvectors of a matrix. Intended for weighted hypergraphs but may be applicable for lower orders


Log user running experiment

I'm in the process of setting up Sacred on a remote server for several people to use, and it is quite important to know who owns which logged experiment. My team usually run experiments on shared GPU instances, and would log straight from the GPU instances to the Sacred instance. I know Sacred logs the host name, but when sharing a machine this is not useful for identifying who actually ran the code.  The ideal scenario would Sacred automatically logging the username of whoever runs an experiment. Is there a way to achieve this?

I'm also running into this issue. We too run on shared GPU instances, with a common "login" node. I'm a little surprised this isn't supported. Perhaps there is a bigger issue here of running sacred with a central mongodb in a multi-user environment?

I guess there are many ways of achieving this.

You can add this info to the info dict
You can add it to the run info using the host info gatherer
You can customize the MongoObserver and add this info in your custom observer.

I can't speak for the maintainers, but they might be willing to accept a PR that adds this to the Observers by default.


[FEAT]  Change the styling of the website

The alignment of the text as well as the contact us form is not properly styled
I am a Hactoberfest 22 participant and I want to work on improving the styling of the website

Hey there @Anish-Parkhi - I'll need some more information about what you plan to change before I give this a go-ahead
But yeah, this will count for Hacktoberfest if it works out ✨

Make the text center aligned

Improve the style of the contact us form

I think the website alignment is a matter of preference, but please feel free to work on the Contract Us section
I'll edit the Issue details accordingly

Ok, I will work on the contact us section

Here are our basic requirements:

[ ] Must have the following fields:

Name
Email
Message

[ ] Must not exceed 100vh (i.e.) the height of the viewport
[ ] Must be responsive

Hey there!
If you aren't working on this issue, do let me know, I'll assign someone else to work on it

Sorry for inconvenience

No worries, thanks for raising this issue!

Heya @KlausMikhaelson - I'll assign this issue to you, best of luck ✨

Hey @Akshu-on-github I have created a pr can you please review it ?

@KlausMikhaelson - could you please open a new PR with changes specific only to the Contact Us section? We aren't looking for UI changes other than that atm

Ooo okay the ss of those UI's were mentioned so I thought even they need some changes, can you just give some idea what changes you want to see on the contact page ? I am just adding a placeholder for now please let me know so that I can update it !

Here are a few possibilities:

Restyle the input fields
Add a "subject" drop-down that has the options Feedback, Queries, Collab Request and Other
Add an I agree to abide by the CoC checkbox

These are just suggestions, feel free to implement what you feel best

Yup got it !


[TS 4437] Add new limit rate example plugin

Can one of the admins verify this patch? Only approve PRs which have been reviewed.

The unfortunately fails the clang-format test: https://ci.trafficserver.apache.org/view/github/job/Github-Linux/78/console

Also, when you fix clang-format, can you squash the two commits into one? No reason to retain the one without the license blurb.

done

.

I need some help for fixing unexpected Segmentation fault.
NOTE: Traffic Server received Sig 11: Segmentation fault
/opt/trafficserver-4.2.3/bin/traffic_server - STACK TRACE:
/lib64/libpthread.so.0(+0x318aa0f710)[0x2b804a60f710]
/opt/trafficserver-4.2.3/bin/traffic_server(_ZN6HttpSM17tunnel_handler_uaEiP18HttpTunnelConsumer+0x32e)[0x51bd0e]
/opt/trafficserver-4.2.3/bin/traffic_server(_ZN10HttpTunnel16consumer_handlerEiP18HttpTunnelConsumer+0x9e)[0x56c16e]
/opt/trafficserver-4.2.3/bin/traffic_server(_ZN10HttpTunnel12main_handlerEiPv+0x10d)[0x56d16d]
/opt/trafficserver-4.2.3/bin/traffic_server[0x687961]
/opt/trafficserver-4.2.3/bin/traffic_server(_Z15write_to_net_ioP10NetHandlerP18UnixNetVConnectionP7EThread+0x8b5)[0x68acf5]
/opt/trafficserver-4.2.3/bin/traffic_server(_ZN10NetHandler12mainNetEventEiP5Event+0x283)[0x67ed43]
/opt/trafficserver-4.2.3/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0x8f)[0x6ab4cf]
/opt/trafficserver-4.2.3/bin/traffic_server(_ZN7EThread7executeEv+0x44b)[0x6abd0b]
/opt/trafficserver-4.2.3/bin/traffic_server[0x6aa85a]
/lib64/libpthread.so.0(+0x318aa079d1)[0x2b804a6079d1]
/lib64/libc.so.6(clone+0x6d)[0x318a6e88fd]

#0  get_netvc (this=0x2b8078a00000, event=104, c=0x2b8078a01ca8) at HttpServerSession.h:113
#1  HttpSM::tunnel_handler_ua (this=0x2b8078a00000, event=104, c=0x2b8078a01ca8) at HttpSM.cc:3067
#2  0x000000000056c16e in HttpTunnel::consumer_handler (this=0x2b8078a01c00, event=104, c=0x2b8078a01ca8) at HttpTunnel.cc:1261
#3  0x000000000056d16d in HttpTunnel::main_handler (this=0x2b8078a01c00, event=<value optimized out>, data=<value optimized out>) at HttpTunnel.cc:1492
#4  0x0000000000687961 in handleEvent (event=<value optimized out>, nh=0x2b804c50ac00, vc=0x2b805a415a80) at ../../iocore/eventsystem/I_Continuation.h:146
#5  write_signal_and_update (event=<value optimized out>, nh=0x2b804c50ac00, vc=0x2b805a415a80) at UnixNetVConnection.cc:153
#6  write_signal_done (event=<value optimized out>, nh=0x2b804c50ac00, vc=0x2b805a415a80) at UnixNetVConnection.cc:180
#7  0x000000000068acf5 in write_to_net_io (nh=0x2b804c50ac00, vc=0x2b805a415a80, thread=0x2b804c507000) at UnixNetVConnection.cc:472
#8  0x000000000067ed43 in NetHandler::mainNetEvent (this=0x2b804c50ac00, event=<value optimized out>, e=<value optimized out>) at UnixNet.cc:400
#9  0x00000000006ab4cf in handleEvent (this=0x2b804c507000, e=0x2b804e616cc0, calling_code=5) at I_Continuation.h:146
#10 EThread::process_event (this=0x2b804c507000, e=0x2b804e616cc0, calling_code=5) at UnixEThread.cc:145
#11 0x00000000006abd0b in EThread::execute (this=0x2b804c507000) at UnixEThread.cc:269
#12 0x00000000006aa85a in spawn_thread_internal (a=0x2b804b6854f0) at Thread.cc:88
#13 0x00002b804a6079d1 in start_thread () from /lib64/libpthread.so.0
#14 0x000000318a6e88fd in clone () from /lib64/libc.so.6

@zwoop, would you have a time to look closer at this PR?

@zwoop, could you have a time to look closer at this PR?

[approve ci] Doing a fresh build.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/179/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/287/ for details.

Sorry for the delay. Would you mind squashing this down to just one commit as well please?

OK, I will do, but could you first look at the first two commits separately?
There are various operation logic and I have some concerns about it.
At first one I calculate time which should elapsed before next write operation may be executed an SD I used TSContSchedule for delaying operations and I don't know what minimum value of delay can I use and how large number of delayed tasks will impact on server.
At second one I calculate a number of bytes for elapsed time and just reenable operation until there will be ability to make write operation.
Another problem is that server writes data to cache after transformation and I don't know how to change this behavior.
I can do some improvement in plugin like separate limits per url or limit rate after some amount of bytes transferred but I don't want to do that before reviewing.

@zwoop, did you review the code? Is it absolutely wrong and I should throw it out and close this PR? can you give any feedback?

Aww, don't close it. I don't think anything absolutely wrong here, we should land this. There are things that needs to be fixed, but they are pretty minor (like, squashing, clang-format, typos like "avial" which likely should be "avail" etc.
I think you should reopen this.

Closing PR is the only way to attract your attention :smile:
If serious, I think you shouldn't land this as is (even after squashing and fixing spelling typos) because it sometimes crashes and repeatedly writes data to cache and, in my opinion, rate limiting should by implemented somewhere in iocore(thats why I closed this PR)

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/328/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/435/ for details.

Hmmm, well, if it doesn't work, then it's a moot point. I know people have implemented rate limiting in plugins, it was just never open sourced. If you don't feel strongly about it, closing it is fine.

It does what it should. If somebody will help to solve the problem with multiple writing to cache this will fine open source example :-)

@zwoop, I did squashing and fixing clang-format and spelling typos. Review please :)

I'm not sure if anyone has had the cycles to help debug this :-/ It might be worth emailing dev@ with a concrete question / request for help.


Let users offer unique things up for sale

Just an idea but maybe something like:
!forsale skeleton, golden axe, etc...

And then someone else could maybe search for stuff that was on offer? 🤷♀

So I've actually seen this concept called cataloging come up. People can drop houseware items in a little area somewhere on their island. Not place them, but just drop them so they looks like a leaf. Anyway, someone else can visit the island and just pick up each thing, then set it back down. That way that person now has access to all those things in their nook shopping back home.
It would be cool if each user could do something like:
!addcatalog unicorn bits, a foot
> Turbot: I've added those items added to your catalog.

!listcatalog lexicalunit
> Turbot: User lexicalunit has unicorn bit and a foot available for catalog.

!searchcatalog corn
> Turbot: I found "unicorn bits" in lexicalunit's catalog, is that what you are looking for?

!removecatalog a foot
> Turbot: I've removed that item from your catalog.


Add a feature actions summon

Hello, I would like to ask you to add a feature so that you can summon mobs.
For example, I use set_block and it is very great that it does not leave logs in the console, but this type of summon is very much missing, so I have to use console_command: summon snow_golem ... which is also good, but not what is expected.
Thank you in advance!

I will take it into consideration

@Ajneb97  Thanks a lot for adding the feature


Speedup exclude/include checking

What does this PR change? What problem does it solve?
Backup (and restore) slow down a lot if a large number of excludes is used, see e.g. #2694. This PR optimizes the pattern processing to reduce the number and size of memory allocations. In total this speeds up the benchmarks by a factor between 5 and 76:
name                          old time/op    new time/op    delta
FilterPatterns/Relative-4       62.1ms ±15%    12.1ms ±23%  -80.56%  (p=0.000 n=9+10)
FilterPatterns/Absolute-4        111ms ±10%       9ms ±11%  -91.87%  (p=0.000 n=10+9)
FilterPatterns/Wildcard-4        393ms ±15%      42ms ± 5%  -89.27%  (p=0.000 n=10+10)
FilterPatterns/ManyNoMatch-4     10.0s ± 3%      0.1s ±20%  -98.69%  (p=0.000 n=10+10)

name                          old alloc/op   new alloc/op   delta
FilterPatterns/Relative-4       16.4MB ± 0%     3.6MB ± 0%  -78.25%  (p=0.000 n=10+9)
FilterPatterns/Absolute-4       31.4MB ± 0%     3.6MB ± 0%  -88.62%  (p=0.000 n=9+10)
FilterPatterns/Wildcard-4        168MB ± 0%      20MB ± 0%  -88.25%  (p=0.000 n=10+10)
FilterPatterns/ManyNoMatch-4    3.23GB ± 0%    0.00GB ± 0%  -99.89%  (p=0.000 n=10+9)

name                          old allocs/op  new allocs/op  delta
FilterPatterns/Relative-4         178k ± 0%       22k ± 0%  -87.50%  (p=0.000 n=10+10)
FilterPatterns/Absolute-4         266k ± 0%       22k ± 0%  -91.67%  (p=0.000 n=10+10)
FilterPatterns/Wildcard-4        1.87M ± 0%     0.09M ± 0%  -95.27%  (p=0.000 n=10+10)
FilterPatterns/ManyNoMatch-4     17.7M ± 0%      0.0M ± 0%  -99.88%  (p=0.000 n=9+10)

TheManyNoMatch test uses 200 exclude patterns which are suffixed such that these do not match any filenames, but require matching against the full pattern which is the worst-case performance wise. Originally I've tried to add all 22k tested filepaths to the filter patterns, however that was way too slow.
Assuming restic should be able to check 20k excludes per second (i.e., 1.2 million excludes per minute), one "op" of the ManyNoMatch benchmark shouldn't take much more than one seconds. With the optimizations I'm currently able to increase the number of exclude pattern to 2000.
Was the change discussed in an issue or in the forum before?
The exclude performance problems were in parts discussed in #2694.
Checklist

[x] I have read the Contribution Guidelines
[x] I have enabled maintainer edits for this PR
[x] I have added tests for all changes in this PR The code already had a lot of tests, I've added some special case tests to increase coverage to 95%
[ ] I have added documentation for the changes (in the manual)
[ ] There's a new file in changelog/unreleased/ that describes the changes for our users (template here)
[x] I have run gofmt on the code in all commits
[x] All commit messages are formatted in the same style as the other commits in the repo
[x] I'm done, this Pull Request is ready for review

I've fixed the "ManyNoMatch" (previously "Many") benchmark to actually work as intended and to cause the worst-case performance.

Profiling the optimized code now reports that more than half of the time is spent in hasDoubleWildcard. However, optimizing that function away just shifts the costs to some other part of the match function. So it looks like the string comparisons begin to be memory-bound.

Impressive result. I implemented my glob-to-regexp translation idea, and while it gets rid of the allocations, it's almost twice as slow as the current code.

MichaelEischer/restic#1 gives a further 25% speedup on the hardest benchmark.

@greatroar Wow, thanks for the extra speed-up. I've updated the comparison in the PR description, now we're at a speed-up by a smooth factor of 100. 🥳


Everyone share name and ADA wallet address, and other details.

[ ] Nadim Karam
[ ] Nori Nishigaya
[ ] Stephen Rowan
[ ] Michael Yagi
[ ] Peter Wolcott
[ ] Felix Weber
[ ] Jonathan Postnikoff
[ ] Miroslav Rajh
[ ] Chris Keller
[ ] Andre Diamond

Chris Keller https://www.linkedin.com/in/racedriver/ @Drivingtipdaily
addr1qyfzn48ue63dwvc6u858s7j5nwf96yzks3fck80r40ntknkwpxufkenyh6du4g42mzpws2d5krr4s7y83zp2trchqn7s7tvamt


examples/src/demos/Gestures.js is not working

examples/src/demos/Gestures.js is not working on react-use-gesture v7. Is this a known issue?

not that i know of, maybe david have changed the api? @dbismut

Yep. { pointerEvents: true } is now { events: { pointer: true } }

Thank you, but '{eventOptions: {pointer: true}}' <- this works. @dbismut

Damn can’t remember the API I wrote myself 😅


Umbrella issue for IOU payment method

This issue is for tracking issues related to the creation of an IOU payment method.
Tasks

[ ] Create IOU payment form
[ ] Create a general PaymentCheckoutAction component that will house multiple payment methods: Stripe + IOU to start
[ ] Create IOU component with PaymentCheckoutAction

implemented it #218 and #219


Remote Cache DNS failures on Mac

What version of Turborepo are you using?
1.1.10
What package manager are you using / does the bug impact?
pnpm (likely all)
What operating system are you using?
Mac
Describe the Bug
When building with a remote cache on an internal host, i.e. pnpm turbo run build --api="https://<internal_host>" ...,
all requests fail due to failed DNS lookup.
2022-03-24T21:31:10.266-0400 [ERROR] run: request failed: error="Get \"https://<internal-host>/v8/artifacts/0a1e1749d7886ac6?slug=***\": dial tcp: lookup <internal-host> on <IP_ADDRESS>:53: no such host" method=GET url=https://<internal-host>/v8/artifacts/0a1e1749d7886ac6?slug=***

Expected Behavior
TurboRepo is able to hit internal remote cache hosts on any OS without DNS lookup failures.
Notes
This is a known issue with golang name resolution on Darwin.
The situation becomes even more complicated when cross-compiling, as described in the discussion of this issue.  My understanding from the above issue:

For Darwin resolution to work, would need the binary to be built with cgo
When cross-compiling, most folks build with cgo off, as TurboRepo does
Even if built with cgo enabled, it appears there are cross compilation issues for Darwin , and ideally the binary would be built on Darwin

Hoping it's possible to update the build process to build the darwin distro on darwin, or document how MacOS users should proceed if there are other ways to workaround the issue. (Or other options I'm not thinking of!)
To Reproduce
On MacOS, specify a remote cache using an internal hostname. Run with -vvv to see error logs.

Thanks for the report and writeup. Confirmed the bug and was able to reproduce. We are investigating alternatives. We do build and release turbo from an M1, so natively compiling on mac should be possible.

This fix will be available in the next canary (releasing in a few minutes)

Still experiencing this issue on Mac OS. Tested on a fresh repo with turbo versions 1.2.0 and latest 1.3.1 (at the time of writing). Getting the same exact no such host errors when -vvv is enabled.
Everything works fine in CI/non-mac machine.


image inspect fixes & cleanup

Overall, this enhances image inspect:

multiple images with the same digest are now coalesced properly into one, with multiple RepoTags
multiple images resulting for multiple arguments in the call to image inspect will coalesce into one array, instead of a stream of arrays
ImageFromNative has been cleaned-up and simplified, making room for later addition of currently missing properties

In the process, we stopped calling on the image Walker which serves little to no purpose here, hence significantly reducing the complexity.
This mainly fixes #3004 and part of #3006.
After this, more work is needed overall for inspect across objects, and then some specifically for image inspect.

hey @AkihiroSuda
Most of my PRs are failing the CIs.
Looks like:
#85 1.141 cni-plugins-linux-amd64-v1.4.1.tgz: FAILED
#85 1.142 sha256sum: WARNING: 1 of 1 computed checksums did NOT match

If this is it ^, did the cni-plugins folks do something messy?

Asking in:

https://github.com/containernetworking/plugins/issues/1038

@AkihiroSuda I am closing this.
There is a lot more work needed to fix image inspect which I am currently working on.
I'll reopen a more thorough PR (hopefully with tests) once I am fully done.


FDTN-239: Don't send content-type header for 204 responses

Tested locally

Can do. I will have to rewrite helpers.rb to use an http library instead of curl


Maintaining view state

I have something like this:
function RowView(vm, state) {
	var w = domvm.watch().on(function() {
		vm.redraw();
	});

	var c = w.prop('red');

	return function() {
		return ["tr", {
			onclick: flip,
			class: c()
		}, state.text];
	};

	function flip() {
		if (c() === 'red') {
			c('blue');
		} else {
			c('red');
		}
	}
}

function BodyView(vm, state) {
	return function() {
		return ["tbody", [
			state.displayItems.map(function(itemData) {
				return [RowView, {
					text : itemData.text,
					_key : itemData.key
				}];

			})
		]];
	}
}

function TableView(vm, state) {
	return function() {
		return ["table", [
			[BodyView, {
				displayItems : state.displayItems
			}]
		]];
	};
}

var items = [
	{
		text: 'one',
		key : 1
	},
	{
		text: 'two',
		key : 2
	},
];

var vm = domvm.view(TableView, {displayItems:items}).mount(document.body);

So if I click the items, they toggle between red and blue. If I had a function that sorted the items then called vm.redraw(), c will get reset to red regardless of _key in BodyView. Where would you put this kind of state?
Another example might be a tr with some information and a button. You click the button and it can be in one of three possible states: ready, in progress, done. If you have a list of n items, you might have a few items with a ready button, a few in progress, and a few done. If sort the list, they would all get reset to ready -- using the method above.
I would have thought, since I set the _key attribute that the node would be (reused??) and only the return function will execute?
How would you approach this?

_key is for keying elements: ["div", {_key: 123}], to key the views, you have to pass them as a third param: [RowView, {text : itemData.text}, itemData.key]
[1] https://jsfiddle.net/88otx64e/

you can do a bunch of simplification here as well [1]

child arrays dont need to be explicit, so reduce braces
if objects in items are persistent, they don't need to have keys, since views will use the objects - themselves as keys by default. (assumption of model persistence).
each w.prop has a .toString and can be compared via == without invoking the getter.
since all w.prop are functions/getters, they can be used directly as values and attributes in templates without invocation. (domvm will invoke them for you).
domvm.watch factory accepts a handler as a param without needing .on

[1] https://jsfiddle.net/88otx64e/5/

@Veid
something else i'll advise it to not over-componentize unless/until you need to maintain state and do granular redraw. doing premature componentization makes the templates less readable for little benefit. i would recommend useing sub-template generating functions [1] or staying monolithic [2] until you have perf problems. making every node a component is far from necessary and will actually negatively affect perf.
[1] https://jsfiddle.net/88otx64e/8/
[2] https://jsfiddle.net/88otx64e/7/

@leeoniya
This is all tremendously helpful, thank you!
About point two, "if objects in items are persistent, they don't need to have keys...". So if I wanted to implement sorting in the above example, e.g.
items = _.sortBy(items, 'text');
If I was using my original, over-componentized  example, would I have to key both the BodyView and each individual RowView?

If I was using my original, over-componentized example, would I have to key both the BodyView and each individual RowView?

basically if you recreate the state/model on each redraw (which you do by making a new object {displayItems: state.displayItems}, you have to either key it by some fixed value or peristent object or explicitly unkey it via false. If domvm sees the old model has disappeared it will unmount the view, destroy the dom and recreate everything. so, any of these will work to maintain the view state and recycle the dom:
// a persistent model
var model = {};

// this is just shorthand [View, model, model], where the
// model also serves as the key (assumed persistent)
[View, model]

// an ad-hoc re-generated wrapper (model as key)
[View, {myModel: model}, model]

// an ad-hoc re-generated wrapper (fixed key)
[View, {myModel: model}, 'fixed_key']
[View, {myModel: model}, model.id]

// explicitly unkeyed (essentially a slot that maintains
// view state that can have the model swapped)
[View, model, false]
[View, {myModel: model}, false]

the fixed-key and false-key versions can be used with immutable structures where models get replaced wholesale but you still need to recycle the dom. however false-key views will not follow/track the model if a list is sorted, they just stay in place.
hope some of that makes sense.

also, you can just make the wrapper itself persistent:
function TableView(vm, state) {
    var wrap = {displayItems : state.displayItems};
    return function() {
        return ["table",
            [BodyView, wrap]
        ];
    };
}

closing, but feel free to discuss further.

This is great, thanks again! I felt I was doing something strange in my toy examples. For example:
function HeadView(vm, state) {
	return function() {
		return ["thead", [
			["tr", state.columnOrder.map(function(columnItem) {
				return ["th", [
					["span", {
						onclick: vm.emit.bind(this, 'sortByChange', columnItem)
					}, 'blah'
					]
				]];
			})]
		]];
	};
}

If instead I decomponentized it, as in your fiddles:
function HeadTpl(args) {
	return ["thead", [
		["tr", args.columnOrder.map(function(columnItem) {
			return ["th", [
				["span", {
					onclick: vm.emit.bind(this, 'sortByChange', columnItem)
				}, 'blah'
				]
			]];
		})]
	]];
}

But then I'm left with the issue of how I was using the vm that got passed to each view: vm.emit.bind(this, 'sortByChange', columnItem)
So then instead of using an ad-hoc regenerated wrapper, as I was doing. I could do something like this:
function TableView(vm, tableModel) {
	return function() {
		return ["table", [
			HeadTpl(tableModel),
			BodyTpl(tableModel)
		]];
	};
}

Where tableModel is something like:
function TableModel(args) {
	this.displayItems = args.items;
	// more stuff
}
TableModel.prototype = {
	sortBy: function(sortKey) {
		this.displayItems = _.sortBy(displayItems, sortKey);
		...
		// where do you call redraw() though? Pass the vm into here
		// then call args.vm.redraw()?
		// or maybe use domvm.watch?
	}
}

Then inside of HeadTpl:
function HeadTpl(tableModel) {
	return ["thead", [
		["tr", tableModel.columnOrder.map(function(columnItem) {
			return ["th", [
				["span", {
					onclick: tableModel.sortBy.bind(this, columnItem)
				}, 'blah'
				]
			]];
		})]
	]];
}

So then each sub-template inside of the table view gets the tableModel.

yep, that looks better 👍

where do you call redraw() though? Pass the vm into here then call args.vm.redraw()? or maybe use domvm.watch?

Sorry, i missed this. This problem is kind of why i prefer to do view-wrapping models:
// model
function Table() {
	// model-view binding
	this.vm = domvm.view(TableView, this);
}

Table.prototype = {
	sortBy: function(col) {
		// sort...
		vm.redraw();
	}
};

// view
function TableView(vm, table) {
	return function() {
		return ["table",
			HeadTpl
			BodyTpl
		];
	}

	function HeadTpl() {
		return ["thead", ...];
	}

	function BodyTpl() {
		return ["tbody", ...];
	}
}

this gives you bi-directional comm.


do not throw exception for unsupported min/max no dictionary columns

This is a bugfix related to #10891. That PR added support for setting min/max column metadata for no dictionary columns, but it didn't add support for all data types. This specifically affected us because we use no dictionary columns + ingestion aggregation. By returning rather than throwing an exception, we effectively revert to the previous behavior of not having the metadata.
I've added unit tests with no data just to ensure this doesn't break. I've also tested on a broken cluster internally where segment commits were failing with the IllegalStateException. Segment commits were able to proceed with this fix.
Ideally we would add support for all data types, but I want to unblock this cluster upgrade before undertaking a larger fix. The code isn't particularly complicated, but setting up more robust unit tests that test all data types will take me some time.

cc @Jackie-Jiang are you

ok with this approach for now
know of any new assumptions that have been made that all segments must have min/max in their column metadata

I did a more thorough fix in #12502

Codecov Report
Attention: Patch coverage is 0% with 3 lines in your changes are missing coverage. Please review.

Project coverage is 0.00%. Comparing base (59551e4) to head (b4fc78d).
Report is 14 commits behind head on master.

Files
Patch %
Lines

.../columnminmaxvalue/ColumnMinMaxValueGenerator.java
0.00%
3 Missing :warning:

Additional details and impacted files
@@              Coverage Diff              @@
##             master   #12499       +/-   ##
=============================================
- Coverage     61.75%    0.00%   -61.75%
+ Complexity      207        6      -201
=============================================
  Files          2436     2360       -76
  Lines        133233   129499     -3734
  Branches      20636    20090      -546
=============================================
- Hits          82274        6    -82268
- Misses        44911   129493    +84582
+ Partials       6048        0     -6048

Flag
Coverage Δ

custom-integration1
?

integration
<0.01% <0.00%> (ø)

integration1
<0.01% <0.00%> (ø)

integration2
0.00% <0.00%> (ø)

java-11
<0.01% <0.00%> (-61.71%)
:arrow_down:

java-21
0.00% <0.00%> (-61.63%)
:arrow_down:

skip-bytebuffers-false
<0.01% <0.00%> (-61.75%)
:arrow_down:

skip-bytebuffers-true
0.00% <0.00%> (-27.73%)
:arrow_down:

temurin
<0.01% <0.00%> (-61.75%)
:arrow_down:

unittests
?

unittests1
?

unittests2
?

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

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

jackie's PR is better than mine


Add better error messages for setup in general

[Just generally more informative messages in general. You can start from lib/github-integration/install.js.]

If any necessary env vars are missing, let the dev know which ones are missing and what the developer needs to do
There was something else, but I don't remember what

Closes #363


java.lang.IllegalStateException

I was trying to prevent the user to swipe to right (only left) in view pager and found this solution: http://stackoverflow.com/a/21603398/4744158.
This solution above works fine with the native ViewPager, but if I use WCViewPager I get the exception:
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!
This happens if I call notifyDataSetChanged() from my adapter.
The problem is with PagerAdapterWrapper. If I change the method notifyDataSetChanged() for this:
@Override
public void notifyDataSetChanged() {
    super.notifyDataSetChanged(); // new line
    innerAdapter.notifyDataSetChanged();
}

The crash doesnt happen anymore, but, unfortunately, the resize doesnt work either. :/

Without seeing your implementation it's really hard to say, could you fork the repository and modify the sample app to reproduce the issue?

Off course! When I finish I'll let you know.

It's done: https://github.com/luizfp/WCViewPager
It took me a lot of time because I left the code quite the same of my app but the problem seems to not happen. But, after I updated the support library and all the other stuff the problem was there. I have not tested yet, but probably the same problem will happen if you add some content to the adapter dynamically and call notifyDataSetChanged().
If you look at the code now you will see that when you click in one adapter item I do this:
    @Override
    public void onClick(View view) {
        mListener.onClickAdapterItem();
    }

This tells the activity that an item was clicked and, in response, the activity calls this method back in the adapter:
 @Override
    public boolean enableNext() {
        if (count >= images.size())
            return false;

        count++;
        notifyDataSetChanged();

        return true;
    }

In my project I need to pass this event to the activity because I need to do some other processing too, but to reproduce the crash this may not be necessary.
I separated in another class the adapter that I use to reproduce the issue: ImageViewPagerAdapter

Sorry, didn't have time to check this yet.
However in order to narrow the issue, can you try on your project to use the older support library?
I suspect that there has been a change in the support library that is causing the issue. Probably this change:
https://android.googlesource.com/platform/frameworks/support/+/38cc44cffde90f6fe689b0df6b82f49481a981f7^!/#F2

So I think I solved the issue, but it requires a bit of a change since I can't use the PagerAdapterWrapper anymore.
Please see the implementation in https://github.com/rnevet/WCViewPager/tree/support24
Basically your PagerAdapter implementation will need to extend the new class ObjectAtPositionPagerAdapter instead of PagerAdapter.

@luizfp  did you have a chance to test this?

@rnevet Sorry for the delay. I tested and now works fine. No more crashes. Thanks! :+1:


[capture] Capture one specific App

Describe the capture bug:
When there are multi-app was opened at the same time, if user only want to capture one specific App, then you can do it by setting the
App progress name.

you created a PR for it "#1670"

@ziga-lunarg  @mikes-lunarg  : Is this a problem where our Android usage documentation need to be updated?  Isn't this the issue where we currently document enabling the layer globally, but it should be enabled for a specific application?

@MarkY-LunarG There is already a way to limit capture to a specific package using the gpu_debug_app setting, which is in the current docs.
@yuacui01 Can you give any more details about why that option doesn't work for you?

sometimes, gpu_debug_app doesn’t work in earlier Android versions.

We're observing this problem as well when capture is set up via settings, as in the docs:
adb shell settings put global enable_gpu_debug_layers 1
adb shell settings put global gpu_debug_app ${Package Name}
adb shell settings put global gpu_debug_layers VK_LAYER_LUNARG_gfxreconstruct
adb shell settings put global gpu_debug_layer_app com.lunarg.gfxreconstruct.replay

The problem is on some devices this simply does not work, the layer is not loaded by the target app.
Sadly, I can't provide any more details on why this happens - not even sure it's related to the android version.
However, if we try to set it up globally via setprop:
adb shell setprop debug.vulkan.layers VK_LAYER_LUNARG_gfxreconstruct

The layer gets loaded properly, but we end up with another issue - all new apps will attempt to load the capture layer.
This gets even worse with skiavk enabled as the android ui keeps crashing.
Another thing we tried is forcing skiagl, but I don't think we can rely on this option for long.
Also, with this approach gpu_debug_app has no effect, so we need another way of specifying the app to capture on android.

the layer is not loaded by the target app

In adb shell settings put global gpu_debug_layer_app com.lunarg.gfxreconstruct.replay
Are you setting gpu_debug_layer_app or gpu_debug_layers_app?  Notice the difference in the extra s.
We had a bug in the usage doc, where the name of the setting was wrong and it was fixed just recently: https://github.com/LunarG/gfxreconstruct/pull/1649/files

@ziga-lunarg , If the target App is not debuggable, is the method still applicable?

In that case this method wont work.


fix: number of Prometheus replicas can be 0

This updates my original PR cbb95f32509ecde346b70eb30bd558483f162e2f to allow 0 number of replicas for the Prometheus config.

then one still has to scale down the Prometheus operator (to scale Prometheus to custom number of replicas - including 0)

it shouldn't be needed. As soon as OBO set spec.replicas  to 0 for the Prometheus object, the Prometheus operator will scale the number of Prometheus pods to zero.
I'll defer the final approval to @sthaha and @jan--f :)

@tremes I agree with Simon, that we shouldn't have to create artificial limits for the minimum allowed. IMHO, we should permit all values that PO permits this keeps the interfaces consistent.
Could we please add a  test for the scenario that Simon mentioned that setting 0 does indeed scale down the pods. E.g.

set replica to 1
validate pod count = 1
set replica to 0
validate pod count = 0


[BUG] The number of resource segments needs to match the provided resource type in Microsoft.Web/sites/config@2022-09-01

Existing rule
No response
Description of the issue
The PSRule is throwing the number of resource segments error when using the resource Microsoft.Web/sites/config@2022-09-01 in a for loop.
If a remove the for loop it works but if I keep the for loop and remove the user defined type (that is not even being used in that example) it works as well.
It was working with the version v.1.38.0.
Error messages
##[error]Unable to expand resources because the source file 'D:\a\1\s\main.bicep' was not valid. The number of resource segments needs to match the provided resource type.
Reproduction
main.bicep
type AppServiceSkuTier = 'Basic' | 'Standard' | 'PremiumV2' | 'PremiumV3'

var webAppsNames = [
  'example1-webapp'
  'example2-webapp'
]

resource webApps 'Microsoft.Web/sites@2022-09-01' existing = [ for webAppName in webAppsNames : {
  name: webAppName
}]

resource webAppSettings 'Microsoft.Web/sites/config@2022-09-01' existing = [for i in range(0, length(webAppsNames)): {
  name: 'appsettings'
  parent: webApps[i]
}]

Version of PSRule
2.9.0
Version of PSRule for Azure
1.39.1
Additional context
No response

Thanks for reporting the issue @CharlesToniolo.


Move codegen from AssemblyProcessor into Roslyn based solution

I've had contact with AssemblyProcessor's codegen for data serializers on two occasions so far and while doable, moving around the code is not very intuitive and the codegen itself often quite fragile, because for the most part its involved in manual IL emit using Mono.Cecil data structures.
The current setup is working well for a lot of cases, but more and more we can find edge cases (especially with generic types) that will require modifications to the how code is generated. It's likely that the complexity of this tool will only increase, the way it's written now, and increase the modification (and debugging) costs even further.
As such I'm proposing to look into alternative approaches like the source generators. This issue will be used for tracking ideas and bottlenecks related to migrating. One of the main things is that we need to be able to come up with a black box design description of the current codegen setup.
The processors to consider for migration:

AssemblyScanProcessor
SerializationProcessor
ModuleInitializerProcessor

FYI, we were using Roslyn API in the past for the SerializationProcessor. This was really nice to maintain/understand (vs Cecil), but this was too slow (esp. loading Roslyn DLL and Roslyn init for every DLL).
The fact we needed both Roslyn and Cecil was also not helping much.
However it was before the advent of source generators, so it might be much better now (esp. if Roslyn loading is done once by a single reusable process such as the compiler).
Also, C# improved a lot so it might be possible to move everything to Roslyn + new C# extensions/libraries so that Cecil is not needed anymore. That would make it even better/faster.
Good thing is, the Roslyn code is probably still there in the Git history. It might need some adjustment for source generators API but it might be a good starting point.


Bump the crate version to 0.3.2.

@LaurentMazare It would be better to add a git tag when release new version.


Update removevolume virtctl example.

The example didn't include all examples like addvolume does. Added an
example of removevolume and removevolume with --persist.
Signed-off-by: Alexander Wels<EMAIL_ADDRESS>
What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes RHBZ 1954498
Special notes for your reviewer:
Release note:

NONE

/cherrypick release-0.41


(WIP) Add multiselect widget

- Summary
Add multiselect widget.
Remaining work:

[ ] select-like UI and styling

- Test plan
Tested manually

- Description for the changelog
Add multiselect widget

Just pushed up some local commits from a few months back, this still needs to be completed.

Deploy preview for cms-demo ready!
Built with commit e496bf3d6dd6d88bbab2f4654424083534930918
https://deploy-preview-922--cms-demo.netlify.com

Any thoughts on ETA for delivering this? Or is this something someone else needs to pick up and run with?

@cpjolicoeur this does need a sponsor, of you're interested in taking it on let me know
Sent with GitHawk

@erquhart Will do.  Not sure I can commit currently, but perhaps in the next few weeks.  We are in the middle of rolling our own widget for this, but after that, I'll circle back and see about making a more generic, publically consumable multiselect.

Awesome, sounds good.

They're only being replaced if someone replaces them. Need to close pull requests that stop moving, but anyone is free to pick one up and open a new PR.
Sent with GitHawk

Note: multi-select is now supported in the select widget via the multiple config flag: https://www.netlifycms.org/docs/widgets/#select


Removed redundant $alternate_base_url switching

The $alternate_base_url switching code below doesn't seem to serve a purpose. I'm sure it was probably put there for a reason so please correct me if I'm wrong - but I couldn't find any positive impact it had on the generated cache files. It does however have some negative impacts:

causes all links in the generated page to become absolute, which is not necessary because of the included base tag, and also makes it inconsistent with the live site
documentation states that FilesystemPublisher::$static_base_url must not include a trailing slash, but omitting this in combination with the absolute link conversion causes all paths to assets to be broken (e.g. mysite.comthemes/css/etc.)
causes some mangling of links that point to pages on other subsites

Fixes #15

I believe this change breaks the case described by @wilr

the correct way to publish to a different domain would be to change the value of FilesystemPublisher::$static_base_url... I think?
Since that value isn't used anywhere now, it's a) useless, and b) means you can't publish to a different URL

May we have this reverted until sufficient tests can be completed? Currently the tests are overriding alternate_base_url too, which may be what we decide to do, but as it stands, the documentation implies this isn't required.
For the original issue, I haven't been able to reproduce it yet, but perhaps if you can provide a test case for it specifically @jonom we can see if this is the only fix.

The use-case that this setting is designed for is where you host the CMS server on a different domain from the live server.
So you have cms.mysite.com sitting behind a firewall, and www.mysite.com available publicly. Static publisher is used to generate HTML files on the CMS server and then once they're generated, rsync them out to the public server.
When those files are rendered, they need to use www.mysite.com as the absolute URL of the pages (e.g. for the <base> tag), even those the Director::absoluteBaseURL() return value will be cms.mysite.com. We can't override base URL for the entire CMS instance—that will break other things—which is why FilesystemPublisher.static_base_url is available as a config option.

Hi @ss23 I apologise if I've inadvertently broken something but I've just tried setting this with this patch in place on a local site:
FilesystemPublisher:
  domain_based_caching: true
  static_base_url: http://staticsite.dev

And the generated html files (found in cache/test.dev/ directory) included a base tag for <base href="http://staticsite.dev/"> and relative URLs as expected. I had a few absolute URLs on the page too and these were formed correctly and began with http://staticsite.dev/.
This tells me that the FilesystemPublisher::$static_base_url setting is still being respected with this patch in place, and it should still be possible to export a site to whatever URL you like.
I tried generating the cache files again with domain_based_caching set to false and got the same results which I thought was a bit odd but a little digging showed me this is overridden to true if you're using subsites. Perhaps this patch only works as expected when domain_based_caching is set to true?
If I have time later today I will try this patch on a fresh site that doesn't use subsites and see what results I get.


Provide jsdoc highlighting

From @Tyriar on February 23, 2016 17:39
Supporting jsdoc highlighting would make them easier to read, this comment documentation style is pretty widespread.
/**
 * Sorts an array.
 * @param {Array} arr The array to sort.
 * @returns An array.
 */
function sort(array) {
  ...
}

@param, @returns at the least would be easy to highlight (Atom supports this). {Array} and arr could potentially also be highlighted.
Related https://github.com/Microsoft/vscode/issues/514
Copied from original issue: Microsoft/vscode#3364

Fixed by #257


downloadFile With Retry method hangs

Thank you for your package.
According to your documentation, everything from connecting to ftp, downloading, and disconnecting worked perfectly.
However, sometimes the ftp server is connected, but the download stops. When I took a log one by one, it was confirmed that it stopped at  FileDownload(_socket, mode, _log).downloadFile(context, sRemoteName, fFile,         onProgress: onProgress, supportIPV6: supportIPv6);.
exactly
await dataSocket.listen((data) {
      sink.add(data);
      if (onProgress != null) {
        received += data.length;
        var percent = ((received / fileSize) * 100).toStringAsFixed(2);
        //in case that the file size is 0, then pass directly 100
        double percentVal = double.tryParse(percent) ?? 100;
        if (percentVal.isInfinite || percentVal.isNaN) percentVal = 100;
        onProgress(percentVal, received, fileSize);
      }
    }).asFuture();

The inside of listen is processed, but it seems that an error occurs in asFuture(). Is there any way to handle the exception??

 Future<T> timeout(Duration timeLimit, {FutureOr<T> onTimeout()?});. thank you!


new version of FancyZones can`t capture a window for placing, but previous version did fine

Microsoft PowerToys version
0.69.1
Installation method
GitHub
Running as admin
Yes
Area(s) with issue?
FancyZones
Steps to reproduce
After the update to fresh version (0.69.1) the FancyZones module now fails to "capture" a window to place it according to the current layout.
The issue here is that before the update it was not a problem for FZ module; everything worked as expected - each window was properly recognized by FancyZones and could be placed on chosen area.
The closest investigation revealed, that the last stable release to do the job correctly/as expected – is build 0.55.2
Starting from the build 0.56.1 some windows now not seen by FancyZones on the "layout" activation, compared to ver. 0.55.2 which worked fine with the same windows.
According to the changelog, ver 0.56.1 brings changes into work of FZ : Child and Popup window support for FancyZones.
These parameters can be seen in the bottom of the settings list.
But none of the combination for it [++], [+-], [--], [-+] can bring the previous behavior back, and since the intoduction of this feature - some windows cant be captured anymore. Of course, exceptions list is empty.
✔ Expected Behavior
FancyZones creates a layout menu to place the window

❌ Actual Behavior
instead, after the update the FancyZones module now can’t recognize the window to work with it

Other Software
Clean Windows 10 image, no overlapping software installed

Not able to repro this, going to close. Let us know if you see this again!


Easier item creation

tbh it's currently confusing & annoying & a pain. Can we have a quick-add option? I will make some sketches.

Sounds nice to me.

This is what Square's item creation system looks like - I like it a lot, generally speaking, but it does lack the features we offer (of course).

That does look good. I'll look at applying something like that to what we have.

Folks are running into this as a serious issue; it would be great if we could try to find some kind of resolution.

By making the UI more intuitive and/or having examples of what to enter.

I just sketched up an item creation UI, but basically it's more or less the same as the Square UI above, I'm realizing. So, uh, yeah. I'm picturing the advanced options folding out the way the the options for the mail/check payment processor or the more name options fold out. (And similarly having them stay there if they've been modified from their defaults.)
Even though it looks like a table, this will probably be easiest not coded as a table.

This will rely on #510, probably.

We should also provide examples in help text (or even templates/defaults? separate ticket, maybe). Here are some thoughts:

NAME: e.g., Registration, T-Shirt, Meal
ITEM OPTION NAME: e.g., Saturday Only, Small, Lunch

Oh hey this is resolved with the merge of #532 :-)


Structure of Notebook Cell Output does not line up with API and text/error output not supported by built in renderers

Version: OSS (built from source, latest commit is 14669c2e457 (HEAD -> master) Make scopes parameter optional to getSessions and remove getAllSessions)
Commit: 6ac9a3ecb3698e82bf901f11bbb5940f6bc3c197
Date: 2021-02-12T05:12:31.721Z
OS: Darwin x64 20.3.0

Steps to Reproduce:

Use Jupyter extension & update API to use the latest Proposed API.
Open an existing notebook

Jupyter extension will return a NotebookData object each containing a NotebookCellData object.

After the notebook has been opened, inspect the notebook object using window.activeNotebookEditor
The property window.activeNotebookEditor.cells[0].outputs is not an array of NotebookCellOutput
Based on the API it should be an array of NotebookCellOutput, instead it seems to still be using the old VS Code API that returns an array of Objects keyed with the mime types.
See below screenshot of watch window

At the same time I'm getting errors in the UI about renderers not being found for the new mime types.

@jrieken @rebornix /cc

Does this issue occur when all extensions are disabled?: Yes/No

Never mind, its working in VS Code insiders. No idea why not in OSS (possible some changes in OSS that haven't yet made its way into insiders).


Select a time-series database

Select a (time-series) database to store the bechmarks metrics. The structure of the data stored in would have a (tree) shape like:

TorXakis version.

Example name:

Average execution time.
Standard deviation.
etc.

I've looked at graphite as a possible alternative. Starting it up from a Docker container is quite easy:
docker run -d\
 --name graphite\
 --restart=always\
 -p 80:80\
 -p 2003-2004:2003-2004\
 -p 2023-2024:2023-2024\
 -p 8125:8125/udp\
 -p 8126:8126\
 graphiteapp/graphite-statsd

And feeding data onto it is also quite straightforward:
echo "local.random.diceroll 1 `date +%s`" | nc -q0 localhost 2003

The big downside is that the visualization interface looks ugly, but we could use other tools like grafana or kibana.

I don't know if we can feed data into carbon that as a different format from:
metric_path value timestamp

In our case, we don't care about the time-stamp (or we care less about it), the data that we will be probably feeding to the time-series database will have the form:
example_name mean_execution_time git_commit

So in whatever DB engine and plotting tool we use, it should support a "git commit" identifier as the y (or time) axis.

Another alternative a bit more battle tested is elasticsearch, which is the database engine used by kibana.

For benchmark metrics that do not occur ofter I don't think Grafana will give a nice looking plot. See the example below.

Maybe with points it looks better:

If we want something that can be tweaked in any way we want and written in Haskell we can always try dashdo.

I checked CouchDB.
Pros:

Easy to set up & maintain
Easy to use due to REST API
Map-Reduce functionality to quickly process data before retrieval
Cons:
Map-Reduce functions are in JS
Map-Reduce functions are stored on CouchDB instance

I think it's a no-go.

TimescaleDB looks like a good option.
Pros:

Open source
Full SQL interface for all SQL natively supported by PostgreSQL (including secondary indexes, non-time based aggregates, sub-queries, JOINs, window functions)
Time-oriented features, API functions, and optimizations (see some analytics functions)

See: Introduction page.
For details, see this blog post.

I checked Akumuli. It's a numeric time-series database, focused on performance (real-time) and size (low-overhead).
Pros:

Built for time-series data
Active project in GitHub
Cons:
Input with TCP and UDP, output with TCP, UDP or HTTP.
Has it's own communication protocol

My opinion: Probably overkill for us.


Reimplement Path, Contours and Polygons plots

Over the past few months I've slowly been laying the groundwork to support more powerful Path, Contours and Polygons elements and in this PR I am also finally exposing this new functionality in plotting classes. This PR finishes off some final issues with the internally facing API and will reimplements the plotting classes based on this new API.
New features:

Path, Contours and Polygons can now have any number of value dimensions associated with them which are revealed while hovering and which can be colored by.
Each geometry in a Contours or Polygons element can now have a different value associated with it, so you no longer have to create huge NdOverlays with one element per geometry.
Path now allows supplying varying value dimensions which are drawn as paths with continuously varying color.

Here is a demo of the new (and old) features.
This PR will address the following issues:

https://github.com/ioam/holoviews/issues/102
https://github.com/ioam/holoviews/issues/416
https://github.com/ioam/holoviews/issues/1558
https://github.com/ioam/holoviews/issues/1963
https://github.com/ioam/holoviews/issues/1856

and will allow me to finish off my geopandas interface in geoviews:

https://github.com/ioam/geoviews/pull/88

Fabulous! Was the county name meant to be visible in the hover?

Fabulous! Was the county name meant to be visible in the hover?

Yes, not quite done yet :-)

Actually nevermind, it does work, I just hadn't declared County as a dimension.

@jlstevens This is ready for review once you have time.

Additional user API is not part of this PR btw, the two main things I think we should still add are:

Allow groupby by value dimensions on Contours/Polygon (but not Path)
Allow selecting subpaths by index and value dimensions

It looks like you've found a few more things to improve in this PR. I'll review it once you think it is ready again...

It looks like you've found a few more things to improve in this PR. I'll review it once you think it is ready again...

It's ready.

Looks good. My main comments are:

I am assuming old code still works and that many of the updates to the notebooks just show the new, cleaner way of doing things.
We need to be clear about any changes to behavior, e.g the way the contour function no longer overlays thing.
The change in how you use attribute access in the introduction notebook seems like the most worrying change I noticed...
Reading notebook diffs is tricky - I can't tell if you only updated the element notebooks or added material to showcase all the new functionality. Github's notebook rendering seems off (a problem with the HTML maybe?):

If you haven't added material it would be good to see more examples (e.g of the split method).
Anyway, none of this is critical and once a few of my comments above are addressed (typos, stray print and other minor things), I'm happy to merge. The main other thing I would like is more examples for the docs.

I am assuming old code still works and that many of the updates to the notebooks just show the new, cleaner way of doing things.

Correct.

We need to be clear about any changes to behavior, e.g the way the contour function no longer overlays thing.

Yes, contours needs a note about backward compatibility.

The change in how you use attribute access in the introduction notebook seems like the most worrying change I noticed...

This is a result of two things 1) it's no longer overlaid by default and b) contours now returns a single Contours element not an NdOverlay of them so this falls under "noting contours backward compatibility changes".

Reading notebook diffs is tricky - I can't tell if you only updated the element notebooks or added material to showcase all the new functionality. Github's notebook rendering seems off (a problem with the HTML maybe?):

Not sure what you're referring to, looks fine to me.

If you haven't added material it would be good to see more examples (e.g of the split method).

I'm working on a "Working with Geometries" user guide which will cover stuff like this. Will see how far I get with that, but I can add it in a later PR.

Ok great!
Should contours get a compatibility flag in config? If we find ourselves with a number of small backwards incompatibility issues, we could group them under a new config flag.
That doesn't need to be decided right away and I'll merge once you get rid of that stray print and fix that typo.

The tests have now passed except for on transient error (build restarted and still running).
Merging.


Fix small metrics mobile issues left over after responsive changes

Description
Fixes #5353

Adds cursor pointer to all links, regardless of whether they have an href
Moves the "Select instrument" text to the same position as select resource on mobile
The filter dialog closes immediately after selecting an instrument/metric
The filter dialog does NOT close immediately after changing the instrument, and the list of available instruments/metrics are recomputed in the dialog

https://github.com/user-attachments/assets/e6758b90-b6a5-47a5-9586-f7d0f75822cb
Checklist

Is this feature complete?

[X] Yes. Ready to ship.
[ ] No. Follow-up changes expected.

Are you including unit tests for the changes and scenario tests if relevant?

[ ] Yes
[X] No

Did you add public API?

[ ] Yes

If yes, did you have an API Review for it?

[ ] Yes
[ ] No

Did you add <remarks /> and <code /> elements on your triple slash comments?

[ ] Yes
[ ] No

[X] No

Does the change make any security assumptions or guarantees?

[ ] Yes

If yes, have you done a threat model and had a security review?

[ ] Yes
[ ] No

[X] No

Does the change require an update in our Aspire docs?

[ ] Yes

Link to aspire-docs issue:

[X] No

Microsoft Reviewers: Open in CodeFlow

/azp run

/azp run

@adamint I tested and found an issue with selecting the initially selected resource not working. Added a fix.

There are some test failures. Route parameter binding isn't working in the tests and I've asked the bunit folks for help. If there isn't feedback soon then I'll figure out a workaround to get the test working.


Extract sex

The issue has been resolved through PR #15 , which extracts all values (min_age, max_age, sex, diagnosis, is_control, assessment tool and image modality) at once.