use setuptools for scripts and deps

make script work on win32
simplify install instructions
AFAIK pip requires setuptools to be present when installing from source.

Hi,
Thanks for you contribution! I have a few points you should address before I can merge this.
I actually tried installing dependencies with setup.py some time ago but couldn't make it work reliably, because the numpy dependency couldn't be installed. So that is why you can see the weird call to wget (which will fail on windows).
I tried your solution today and I can't make it work in a virtualenv, which is (I think) the same issue I was having when I tried it.
zsh» python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to bloscpack.egg-info/requires.txt
writing bloscpack.egg-info/PKG-INFO
writing top-level names to bloscpack.egg-info/top_level.txt
writing dependency_links to bloscpack.egg-info/dependency_links.txt
writing entry points to bloscpack.egg-info/entry_points.txt
reading manifest file 'bloscpack.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'bloscpack.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/log.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/util.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/append.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/constants.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/testutil.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/args.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/serializers.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/exceptions.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/pretty.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/__init__.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/file_io.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/abstract_objects.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/version.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/abstract_io.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/checksums.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/cli.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/headers.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/defaults.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/memory_io.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/sysutil.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/metacodecs.py -> build/bdist.linux-x86_64/egg/bloscpack
copying build/lib.linux-x86_64-2.7/bloscpack/numpy_io.py -> build/bdist.linux-x86_64/egg/bloscpack
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/log.py to log.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/util.py to util.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/append.py to append.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/constants.py to constants.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/testutil.py to testutil.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/args.py to args.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/serializers.py to serializers.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/exceptions.py to exceptions.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/pretty.py to pretty.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/file_io.py to file_io.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/abstract_objects.py to abstract_objects.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/version.py to version.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/abstract_io.py to abstract_io.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/checksums.py to checksums.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/cli.py to cli.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/headers.py to headers.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/defaults.py to defaults.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/memory_io.py to memory_io.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/sysutil.py to sysutil.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/metacodecs.py to metacodecs.pyc
byte-compiling build/bdist.linux-x86_64/egg/bloscpack/numpy_io.py to numpy_io.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying bloscpack.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying bloscpack.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying bloscpack.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying bloscpack.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying bloscpack.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying bloscpack.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/bloscpack-0.7.2_dev-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing bloscpack-0.7.2_dev-py2.7.egg
removing '/home/esc/virtualenv/blospack/lib/python2.7/site-packages/bloscpack-0.7.2_dev-py2.7.egg' (and everything under it)
creating /home/esc/virtualenv/blospack/lib/python2.7/site-packages/bloscpack-0.7.2_dev-py2.7.egg
Extracting bloscpack-0.7.2_dev-py2.7.egg to /home/esc/virtualenv/blospack/lib/python2.7/site-packages
bloscpack 0.7.2-dev is already the active version in easy-install.pth
Installing blpk script to /home/esc/virtualenv/blospack/bin

Installed /home/esc/virtualenv/blospack/lib/python2.7/site-packages/bloscpack-0.7.2_dev-py2.7.egg
Processing dependencies for bloscpack==0.7.2-dev
Searching for numpy
Reading http://pypi.python.org/simple/numpy/
Best match: numpy 1.9.1
Downloading https://pypi.python.org/packages/source/n/numpy/numpy-1.9.1.zip#md5=223532d8e1bdaff5d30936439701d6e1
Processing numpy-1.9.1.zip
Running numpy-1.9.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ergV8_/numpy-1.9.1/egg-dist-tmp-8Jr1eZ
Running from numpy source directory.
Warning: distutils distribution has been initialized, it may be too late to add a subpackage commandWarning: distutils distribution has been initialized, it may be too late to add a subpackage fcompilernon-existing path in 'numpy/distutils': 'site.cfg'
Warning: distutils distribution has been initialized, it may be too late to add a subpackage distutilsWarning: distutils distribution has been initialized, it may be too late to add a subpackage testingnon-existing path in 'numpy/f2py': 'docs'
non-existing path in 'numpy/f2py': 'f2py.1'
Warning: distutils distribution has been initialized, it may be too late to add a subpackage f2pyWarning: distutils distribution has been initialized, it may be too late to add an extension _dummyWarning: distutils distribution has been initialized, it may be too late to add a library npysortWarning: distutils distribution has been initialized, it may be too late to add an extension multiarrayWarning: distutils distribution has been initialized, it may be too late to add an extension umathWarning: distutils distribution has been initialized, it may be too late to add an extension scalarmath/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/system_info.py:1526: UserWarning:
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  warnings.warn(AtlasNotFoundError.__doc__)
Warning: distutils distribution has been initialized, it may be too late to add an extension _dotblasWarning: distutils distribution has been initialized, it may be too late to add an extension umath_testsWarning: distutils distribution has been initialized, it may be too late to add an extension test_rationalWarning: distutils distribution has been initialized, it may be too late to add an extension struct_ufunc_testWarning: distutils distribution has been initialized, it may be too late to add an extension multiarray_testsWarning: distutils distribution has been initialized, it may be too late to add an extension operand_flag_testsWarning: distutils distribution has been initialized, it may be too late to add a subpackage coreWarning: distutils distribution has been initialized, it may be too late to add an extension _compiled_basenon-existing path in 'numpy/lib': 'benchmarks'
Warning: distutils distribution has been initialized, it may be too late to add a subpackage libWarning: distutils distribution has been initialized, it may be too late to add an extension fftpack_liteWarning: distutils distribution has been initialized, it may be too late to add a subpackage fft/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/system_info.py:1432: UserWarning:
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  warnings.warn(AtlasNotFoundError.__doc__)
Warning: distutils distribution has been initialized, it may be too late to add an extension lapack_liteWarning: distutils distribution has been initialized, it may be too late to add an extension _umath_linalgWarning: distutils distribution has been initialized, it may be too late to add a subpackage linalgWarning: distutils distribution has been initialized, it may be too late to add an extension mtrandWarning: distutils distribution has been initialized, it may be too late to add a subpackage randomWarning: distutils distribution has been initialized, it may be too late to add a subpackage maWarning: distutils distribution has been initialized, it may be too late to add a subpackage matrixlibWarning: distutils distribution has been initialized, it may be too late to add a subpackage compatWarning: distutils distribution has been initialized, it may be too late to add a subpackage polynomialWarning: distutils distribution has been initialized, it may be too late to add a subpackage docWarning: distutils distribution has been initialized, it may be too late to add a subpackage numpy_configtest.c:1:5: warning: conflicting types for built-in function ‘exp’ [enabled by default]
_configtest.o: In function `main':
/tmp/easy_install-bZ653E/numpy-1.9.1/_configtest.c:6: undefined reference to `exp'
collect2: error: ld returned 1 exit status
_configtest.o: In function `main':
/tmp/easy_install-bZ653E/numpy-1.9.1/_configtest.c:6: undefined reference to `exp'
collect2: error: ld returned 1 exit status
_configtest.c:1:5: warning: conflicting types for built-in function ‘exp’ [enabled by default]
_configtest.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.
_configtest.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.
Traceback (most recent call last):
  File "setup.py", line 50, in <module>
    'Topic :: Utilities',
  File "/usr/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install.py", line 73, in run
    self.do_egg_install()
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install.py", line 101, in do_egg_install
    cmd.run()
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 349, in run
    self.easy_install(spec, not self.no_deps)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 569, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 621, in install_item
    self.process_distribution(spec, dist, deps)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 673, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 576, in resolve
    dist = best[req.key] = env.best_match(req, self, installer)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 821, in best_match
    return self.obtain(req, installer) # try and download/install
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 833, in obtain
    return installer(requirement)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 589, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 619, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 809, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 1086, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py", line 1075, in run_setup
    run_setup(setup_script, args)
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py", line 30, in run_setup
    lambda: execfile(
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py", line 72, in run
    return func()
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py", line 32, in <lambda>
    {'__file__':setup_script, '__name__':'__main__'}
  File "setup.py", line 251, in <module>

  File "setup.py", line 243, in setup_package

  File "/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/core.py", line 169, in setup
  File "/usr/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/esc/virtualenv/blospack/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_egg.py", line 172, in run
    self.run_command("egg_info")
  File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/command/egg_info.py", line 10, in run
  File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/command/build_src.py", line 153, in run
  File "/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/command/build_src.py", line 170, in build_sources
  File "/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/command/build_src.py", line 329, in build_extension_sources
  File "/tmp/easy_install-ergV8_/numpy-1.9.1/numpy/distutils/command/build_src.py", line 386, in generate_sources
  File "numpy/core/setup.py", line 432, in generate_config_h

  File "numpy/core/setup.py", line 42, in check_types
    classifiers = ['Development Status :: 3 - Alpha',
  File "numpy/core/setup.py", line 293, in check_types

SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.

Installing numpy using pip in the same virtualenv works fine. Maybe doing this with something that came from PyPi will work, I don't know.
I addition to that removal of the blpk script breaks the build, because the cram command-line tests can not be run. Last time I checked, only doing an install would generate the entry-points and there is no way to generate this into the source tree, but maybe that has changed?
Also, I really dislike duplicating the requirements into two different places, the setup.py and the requirements.txt`. If the issues above can be solved, maybe you could read the requirements from the requirements.txtin thesetup.py`` to avoid unnecessary duplication.

For more issues trying to install numpy like above see:
https://github.com/pydata/numexpr/issues/143
https://stackoverflow.com/questions/21605927/why-doesnt-setup-requires-work-properly-for-numpy

I keep forgetting that. I'll fix this soon soon enough,

If you can manage to put all the dependencies in setup.py and make the solution work reliably, I'd be delighted!

Please note that the above error is caused by missing packages - as noted by the log :
SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.

Yes, I thought so too, but then why does pip install numpy succeed?

Coverage decreased (-9.42%) to 85.74% when pulling 364f32039b105d29b198aa68bb2970ce4df76ba2 on mindw:setuptools into 0b1762c374ebbce28ebc78d5b29400e7e20b3e75 on Blosc:maint-0.7.x.

Okay, so it seems the Python.h is found by pip in /usr/include/python2.7 which is the system Python.

Not sure what the deal is with the drop in coverage, maybe some of the coverage generated by cram is missing, not too important though.

an example of reading the requirements files:
https://github.com/pydata/numexpr/blob/master/setup.py#L27

re-using requirement files for package metadata is not recommended:
https://caremad.io/2013/07/setup-vs-requirement/

cram does not seem to be very portable. Maybe scripttest (https://github.com/pypa/scripttest) is a better choice ...

Any idea why the coverage dropped? I can't reproduce, because the changes break being able to run this locally.

The error I get is:
   $ blpk compress data.dat
+  /bin/sh: 12: run: not found
+  [127]
   $ ls
   data.dat
-  data.dat.blp

The low coverage is because the coverage from the cram cli tests isn't being included:
bloscpack.cli                  217    129    41%   85, 109-111, 131-143, 147-153, 157-162, 167-169, 174-175, 188-195, 198, 201, 265-268, 291-305, 428-521

I saw you managed to get coverage back up by not deleting the blpk script. Maybe you could make a commit sausage when doing this kind of experimental stuff and only squash commits before I merge the pull-request? That way I could follow what you are trying and avoid duplicating efforts. :star:

I actually though it might be to do with the .coveragerc file which I needed during the early days of coveralls, but removing it didn't help:
https://travis-ci.org/esc/bloscpack/jobs/51884466

It was mostly trial and error. Travis did not report report the "after_success" action has failed (forgot to add coveralls to requirements.txt). While at it I cleaned up some more stuff.
In any case installations works on Travis and on my Linux test system (Fedora 20).

You want to leave it like it is?

What is the current state?
On Feb 27, 2015 2:10 AM, "Valentin Haenel"<EMAIL_ADDRESS>wrote:

You want to leave it like it is?
—
Reply to this email directly or view it on GitHub
https://github.com/Blosc/bloscpack/pull/28#issuecomment-76303649.

I think it is fine like this, will be merged today, sorry for the delay.

closed via 6e9edcade6d3a8b737cdcacd78ba93a7c67f5109

Thanks again for this, works like a charm with version '0.7.2'!

My pleasure :)

If you want to, have time and inclination, Bcolz could probably do with a closer look at the setup.py: https://github.com/Blosc/bcolz :-D


Border rounding around avatars break in Notifications panel when mouseover

macOS 13.2 (22D49) Safari Version 16.3 (186<IP_ADDRESS>.5)
https://user-images.githubusercontent.com/56189/236386199-8acb8a99-c083-42c9-8a3e-a6b0d983013e.mov

Is this inside the new Notifications popover or the page?

The new popover

🤔 Can't seem to replicate this bug on my side; Safari Version 16.4 (186<IP_ADDRESS>.1)

I can't reproduce it on the popover now because the notification reproducing it aren't at the top anymore, but I can still see it if I go to https://dev.phanpy.social/#/notifications and scroll to them and mouseover.
Maybe this is only on 16.3? I think you said for the other rounded corner issue I reported that it fixed itself on 16.4.

@hboon not really sure if it's a 16.3 bug but possible… Safari recently did fix/add lots of stuff 😅 (they probably should have version it v17 😂)

I tried with Safari Technology Preview Release 167 (Safari 16.4, WebKit 186<IP_ADDRESS>) and can't reproduce it so it probably fixed itself :)


DataLogger: replace DataLogger with Experimental.DataStreamer2

This should be enough to replace DataLogger with DataStreamer2.
The existing use cases should not be broken.
I've decided to put the new functionality into DataLogger and not DataStreamer because DataStreamer2 is actually based on DataLogger and the API is compatible.

@swharden Any comments on this PR?

Hi @drolevar, this looks great!
I was out of town for about a week then got behind on some other stuff so I've been away from ScottPlot for a few weeks and just now catching up 😅

The existing use cases should not be broken

This certainly makes things easier. Thanks for implementing this in a non-breaking way! I'm excited to see this will be in the next release 👍


Instructions are incorrect

There is no JSON after this text:
Next, we'll use another For Each control using the ‘capacity’ of the Parse-CurrentItem output. Then we parse this into a strongly typed object using this JSON schema:
The JSON for the above actually features after this text:
As the last step in the ‘For each environment’ loop, we now can capture the environment details for this row in the report. Using the Append to array variable control, use the following JSON schema:
But as it is in the wrong place, the JSON that should be there isn't

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 816403f3-0104-3d3a-e889-bf0d4cf9bcae
Version Independent ID: 0f0d27e8-2aaa-0d7c-ea3e-fe949bd9b3b1
Content: Tutorial: Create a daily capacity report (preview) - Power Platform
Content Source: power-platform/admin/programmability-tutorial-create-daily-capacity-report.md
Service: power-platform
Sub-service: admin
GitHub Login: @laneswenka
Microsoft Alias: laswenka

Thanks for your comment, @asemak. This issue has been assigned to the doc author for review.


Try to run as many concurrent workers as possible

Addresses #493

@hellt @karimra I've done a first pass of this feature for the deploy action. Let me know what you think before I do the rest.

how does the latest commit look like? @hellt @steiler @karimra

@networkop I think it looks good

@networkop I think it looks good

cool, i'll add a similar code to the destroy action then.

I think it all looks good now. wdyt @hellt ?

thanks @networkop


Clearer documentation for prep_riboviz.py call

I'm finding the updated prep_riboviz.py call confusing because (a) it's different from what it used to be (b) it could be more clearly and prominently explained than currently in docs/run-vignette.md.
Can we put an anatomy of the command
python -m riboviz.tools.prep_riboviz rscripts/ vignette/vignette_config.yaml

and options such as --dry-run, somewhere very easy to find. Either at the top of run_vignette.md in a section "How to call prep_riboviz", or in its own help page?
(What's the python equivalent of a help file?)
Apologies if this documentation already exists and I didn't find it.

A code review by @ewallace and @FlicAnderson will be good.

Branch docs-80 branched from use-umi-tools-deplex-81 has rewritten documentation. See README.md and links to:

Map mRNA and ribosome protected reads to transcriptome and collect data into an HDF5 file. This describes how to run vignette without detailed exp;anations of configuration or what is going on.
Run UMI extraction, deduplication and demultiplexing examples. This page now solely describes how to run these examples.
What the RiboViz workflow does. This describes in detail what prep_riboviz.py does, including deduplication and demultiplexing, and the files it outputs.
Configuring the RiboViz workflow. This describes the required inputs and the parameters of the YAML configuration file.
Running the RiboViz workflow. This describes in detail how to run prep_riboviz.py, without any reference to the vignette.

Request new riboviz users @amandamok and @john-s-f check documentation and suggest changes where needed.

If relative then they are relative to RiboViz home directory.

Really? Not relative to the directory prep_riboviz.py is called from?

Closed by  #118


Broken syntax in multiline arrow function argument

I noticed this:
Just pangloss/vim-javascript

With vim-jsx-pretty

It does not understand the reason this issue, so I fixed  simple way.

@MaxMEllon thank you!


fix(TextInput): aria-describedby casing

React warning throws if casing is off.
Pretty self explanatory. Without this fix, this warning shows:
Warning: Unknown ARIA attribute aria-describedBy. Did you mean aria-describedby?

Thanks so much @psachs21!


Provider generator - tasks_private

fix wrong files section in gemspec ( there was a dot instead of comma)
introduce tasks_private to provider
README.md in lib/tasks to keep that directory, but add a note about the consquences
make specs a private task

@miq-bot add_label enhancement, pluggable providers
@miq-bot assign @Fryguy
related: https://github.com/ManageIQ/manageiq-providers-amazon/pull/187
@Fryguy could you have a final look at the related amazon PR as well?
cc @bdunne

I'll add the empty namespaced task template suggested here
https://github.com/ManageIQ/manageiq-providers-amazon/pull/187#issuecomment-289049304

@Fryguy added the empty example rake task in lib/tasks


Additional metadata for jackson-databind

What does this PR do?
Adds more metadata for com.fasterxml.jackson.core:jackson-databind:2.15.2
Code sections where the PR accesses files, network, docker or some external service

(example link to code section)

Checklist before merging

[x] I have considered including reachability metadata directly in the library or the framework (see our contributing document)
[x] I am the original author of all content provided in the pull request, and I did not copy the content from any other source (see the tests section from our contributing document)
[x] For all tests where I am not the sole author, I have added a comment that proves I may publish them under the specified license (see the tests section from our contributing document)
[x] I have properly formatted metadata files (see our formatting guide)
[x] I have added thorough tests (see the tests section from our contributing document)
[x] I have filled all places where my pull request accesses files, network, docker, or any other external service (see the section above)

We need to rebase to fix the conflicts.

We need to rebase to fix the conflicts.

Already resolved conflicts (yesterday).


SPI Context API: cleanup or document config and owner fields

The struct spi_context structure provides two fields, config, and owner.  On first glance, these fields appear redundant, and it isn't clear what is the intended purpose of each field.
In addition, owner is set automatically by the spi_context_* routines, and config is not.  It appears that it is assumed that all SPI drivers are required to set the config field, but this step can be missed, leading to incorrect driver behavior.
Proposal
Combine the config and owner fields, if possible.  Also have the spi_contex_* APIs manage setting and clearing the field if possible.
If both fields are needed, add documentation detailing their use, especially the required used of spi_contex->cfg.

I would like to raise attention to this issue as well. I just stumbled into it with NXP's spi_mcux_flexcomm driver.
I agree it is confusing the purpose of config and owner and could not find a reference for it.
struct spi_context {
	const struct spi_config *config;
	const struct spi_config *owner;
...

The bug I encountered is a missing data->ctx.config = spi_cfg; when the SPI bus was configured for slave operation. I will submit a PR and reference this issue.
The problem is likely to exist in other SPI drivers, as well.


Add compatibility info for server version 8.0

Codecov Report

Merging #315 (b65ee50) into main (50877aa) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #315   +/-   ##
=======================================
  Coverage   91.89%   91.89%
=======================================
  Files          47       47
  Lines        2987     2987
=======================================
  Hits         2745     2745
  Misses        242      242


Added typing / comments to the FilterInterface and removed the token argument

There are six interfaces for custom classes that may be passed into the configs to change how the Rollbar package works. They are:

DataBuilderInterface handled in #586
FilterInterface handled in this PR
ResponseHandlerInterface
ScrubberInterface
SenderInterface
TransformerInterface

The others will be addressed in future PRs (coming soon).
Description of the change
Implementing the FilterInterface is the lesser used filtering alternative to the check_ignore function.
I removed the $accessToken argument from the FilterInterface::shouldSend() method. This does not seem necessary, or helpful. And passing any sort of secret around where not needed seems like a poor idea. Additionally, if the implementation desperately needs it, calling $payload->getAccessToken() will provide it from the Payload instance.
Design Question
The check_ignore function accepts a boolean $isUncaught argument that is used to designate the log item as an uncaught error or exception. FilterInterface::shouldSend() method could likely possibly benefit from this additional argument. Should I add it? Any input would be helpful.
If we did not add the $isUncaught argument to FilterInterface::shouldSend(), there is a simple workaround that would likely work...
class MyCustomFilter implements FilterInterface {
    private static bool $isUncaught;
    public static function checkIgnore(bool $isUncaught, string|Stringable $toLog, Payload $payload) {
        self::$isUncaught = $isUncaught;
        // Other logic
    }
    public function shouldSend(Payload $payload): bool {
        $isUncaught = self::$isUncaught
        // More logic
    }
}
Rollbar::init([
    'check_ignore' => MyCustomFilter::checkIgnore,
    'filter' => MyCustomFilter::class,
]);

I appreciate any input on this question.
Type of change

[ ] Bug fix (non-breaking change that fixes an issue)
[ ] New feature (non-breaking change that adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] Maintenance
[ ] New release

Related issues
None
Checklists
Development

[x] Lint rules pass locally
[x] The code changed/added as part of this pull request has been covered with tests
[x] All tests related to the changed code pass in development

Code review

[ ] This pull request has a descriptive title and information useful to a reviewer. There may be a screenshot or screencast attached
[ ] "Ready for review" label attached to the PR and reviewers assigned
[ ] Issue from task tracker has a link to this pull request
[ ] Changes have been reviewed by at least one other engineer

@waltjones I appreciate you questioning the need for the two redundant filtering mechanisms. Having thought about it, I think we should keep them both for now. Let me first explain the difference between the two, and then I will explain why I think this.
The check_ignore function
The check_ignore function is non stateful function that should look like the following...
function myCustonIgnore(bool $isUncaught, string|Stringable $toLog, Payload $payload): bool {
    // logic goes here...
}

Rollbar::init([
    'check_ignore' => myCustonIgnore,
]);

Alternatively, as pointed out above, it could be a static method in a class. This is much more probable in most instances where autoloading is being used. However, because PHP has good support for programs written in a procedural style, such as much of WordPress, it may also be common to see a standalone function being used.
PHP does not at this time support function typing beyond the callable type. This means that function arguments and return types cannot be type checked.
The check ignore function is documented and seems to be the most widely used filtering method.
The FilterInterface
On the other hand, a class implementing the FilterInterface can be both stateful and explicitly typed, however the 'filter' argument is currently undocumented.
For example...
class MyCustomFilter implements FilterInterface {
    private string $tenant;

    public function __construct(array $options) {
        $this->tenant= $options['tenant'] ?? 'none';
    }

    public function shouldSend(Payload $payload, bool $isUncaught): bool;
        // filtering logic...
    }
}

Rollbar::init([
    'filter' => MyCustomFilter::class,
    // The options are passed to the filter constructor
    'filterOptions' => [
        'tenant' => 'my_tenant',
    ],
]);

During the initialization the instance of MyCustomFilter is created with the $tenant property set to 'my_tenant'. Keeping track of state like this with the check_ignore function would be difficult.
Additionally, the shouldSend() method must comply with the interface. This helps keep return types and arguments in sync and reduces bugs.
Unfortunately, the filter config option is not in our documentation. And does not appear to be widely used.
My Opinion
The filter option is the better way of filtering. Unfortunately, it is the less used. We should document it and promote it as the default filtering mechanism.
Removing check_ignore would be a pretty serious breaking change. One that we would probably get a lot of backlash for removing. It may be worth deprecating and possibly removing in a future v5. This would give us plenty of time to encourage our users to implement move to filter.
A short note on multi-projectp runtimes
Thank you for pointing out the use case of access token being used to distinguish between projects in a multi-project runtime. This is not something I had considered, so thank you.
I spent a few minutes thinking about how to set up a multi-project runtime, and what I found might be worth noting. Because of the way the Rollbar class is it is not possible to have multiple access tokens in the same PHP process without throwing out the Rollbar class entirely. This is because the init method is static and the error handlers and logger are both private and static.
Calling Rollbar::init() will not create a new instance if one already exists but reconfigure the existing instance.
To get around this a user would need to create an alternative to the Rollbr class that could be initialized with each project as a separate instance.
Alternatively, Rollbar::init() could be called late enough in the process that the project is known, and it can be initialized with the project details. However, this puts us back in the position where some state is needed at that point in the process to identify the project, and that state would likely be available to the filtering function as well.
It may be worth considering how to make multi-project runtimes a little easier.
Sorry for the long-winded reply.

@danielmorell Thank you for the detailed reply. No apology needed. :)
I think the reason for both the existence and the popularity of check_ignore has to do with it existing in nearly the same form in many of the other SDKs. (Even including the isUncaught flag.) Your comments about why the filter option is better make sense, and I agree it makes sense to keep both.
Thanks for the explanation on multi-project configurations. It sounds even more reasonable to remove the $accessToken argument.


Pluginlib Tutorial (#1700)

Pluginlib Tutorial
Co-authored-by: Christophe Bedard<EMAIL_ADDRESS>Co-authored-by: Michael Carroll<EMAIL_ADDRESS>

FYI: This was already merged into rolling in #1700


HabitRPG renamed to Habitica

Hi there,
on July 31, HabitRPG was officially renamed to "Habitica", which includes the URL "habitrpg.com" redirecting to "habitica.com". Therefore, the toggl button does not work anymore.
If someone could just replace all mentions of "habitrpg" with "habitica" in your source code, this should be fixed.
Thanks!

Nvm, did it myself. See pull request #306: https://github.com/toggl/toggl-button/pull/306.


[2pt] Updates to Vehicles table and API response to Reservations

Implement Authorization for The api

Rename and add new columns to table vehicle
Update vehicle controller due new columns
Add user name and vehicles's data to Reservation API response


feat(jellyfish-api-core): add decodeScript RPC

What this PR does / why we need it:
/kind feature
Which issue(s) does this PR fixes?:
decodeScript() from Issue#48
This feature allows the decoding of a hex-encoded script.
Additional comments?:
References and good-to-knows #1, #2, #3, #4.

Looking into how I could call for a dummy transaction script (e.g. P2PH, P2PKH, multisig) to test for decodeScript().


pretrain performance

Hi,
Thanks for your great work.
When I tried to reproduce the pretrained performance, I found the results were mismatch with the paper, especially for Refcoco.
Any help would be much appreciated.
| GQA AP | Flickr AP | Flickr R@1 | Refcoco AP | Refcoco R@1 | Refcoco+ R@1 | Refcocog R@1
-- | -- | -- | -- | -- | -- | -- | --
Res101 | 58.9 | 75.6 | 82.5 | 60.3 | 72.1 | 58.0 | 55.7
reprodude | 58.6 | 75.7 | 82.9 | 56.5 | 70.2 | 55.3 | 54.2

Thanks @ashkamath .


netty OutOfDirectMemoryError in socks server

Netty: 4.1.4.Final
Java: 1.8.0_101
OS: Linux 4.4.0-31-generic
This happened in my code and netty example socks proxy code.
I test it with following command where 1000M is a 1000M file contains random data
proxychains ab -n 1000 -c 100 http://<IP_ADDRESS>/1000M
It costs huge amount of memory(over 4GB) and prints exception like this. Why would it happen, could you please check this?
Backtrace
io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 16777216 byte(s) of direct memory (used:<PHONE_NUMBER>, max:<PHONE_NUMBER>)     at io.netty.util.internal.PlatformDependent.incrementMemoryCounter(PlatformDependent.java:614)     at io.netty.util.internal.PlatformDependent.allocateDirectNoCleaner(PlatformDependent.java:568)     at io.netty.buffer.PoolArena$DirectArena.allocateDirect(PoolArena.java:686)     at io.netty.buffer.PoolArena$DirectArena.newChunk(PoolArena.java:675)     at io.netty.buffer.PoolArena.allocateNormal(PoolArena.java:237)     at io.netty.buffer.PoolArena.allocate(PoolArena.java:221)     at io.netty.buffer.PoolArena.allocate(PoolArena.java:141)     at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:262)     at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179)     at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:170)     at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:131)     at io.netty.channel.DefaultMaxMessagesRecvByteBufAllocator$MaxMessageHandle.allocate(DefaultMaxMessagesRecvByteBufAllocator.java:73)     at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:117)     at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571)     at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512)     at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426)     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398)     at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877)     at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)     at java.lang.Thread.run(Thread.java:745)

@wudizhanche1000 It would be great if you could provide some code example and full stacktrace.
As I'm aware of, Netty's proxy example uses backpressure mechanism (it changes channel's AUTO_READ property depending on the channel's writability status), so It's very unlikely that the problem in Netty's example code.
Can you provide a reproducer or a snippet of code that contains the main logic of your program? It would be more simpler to help you if you could provide this information.

@maseev I just compile socksproxy in example code. And test it with following command
proxychains ab -n 1000 -c 100 http://<IP_ADDRESS>/1000M  where I start a nginx service on localhost port 80, and put a random file size of 1000M.
After read your comment, I test example code again with AUTO_READ off, and it failed again, here's my changes.
SocksServerConnectHandler.java line 56
                              responseFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture channelFuture) {     ctx.pipeline().remove(SocksServerConnectHandler.this);     ctx.channel().config().setAutoRead(false);     outboundChannel.config().setAutoRead(false);     outboundChannel.pipeline().addLast(new RelayHandler(ctx.channel()));     ctx.pipeline().addLast(new RelayHandler(outboundChannel)); } });
RelayHandler.java line 38
  @Override     public void channelRead(ChannelHandlerContext ctx, Object msg) {         if (relayChannel.isActive()) {             relayChannel.writeAndFlush(msg).addListener((ChannelFutureListener) future -> {                 if (future.isSuccess()) {                     ctx.read();                 }             });         } else {             ReferenceCountUtil.release(msg);         }     }

I don't know why github didn't format my code, I just turn auto read off and add a listener for reading following data.

@wudizhanche1000 It's kinda difficult to understand what your application is actually doing. I think you simply forgot to release incoming byte buffers somewhere. Try to enable memory leak detection in Netty.

@maseev this is not my code, it's sample code in netty example, and no memory leak was detected even in PARANOID level.

@wudizhanche1000 i have meet the same question, have you solve it yet?

Same issue with Netty: 4.1.6.Final and memory leak detection doesn't help

Same issue, also Netty: 4.1.4.Final.
I was able to make dump diff.

It seems that there is something leak in HttpPostMultipartRequestDecoder

@refine36 - Why do you think the leak is in HttpPostMultipartRequestDecoder ? Do you have a leak report?

Let me close this as there was no more followup from the reporter. Please reopen if you still think there is an issue after upgrading to latest version and provide more infos


cpo: kcm: add nfs pv recycler pod template

Follow on to https://github.com/openshift/hypershift/pull/2180
KCM currently isn't configured with the PV recycle pod template that standalone uses
https://github.com/openshift/cluster-kube-controller-manager-operator/blob/master/bindata/assets/config/defaultconfig.yaml#L15
https://github.com/openshift/cluster-kube-controller-manager-operator/blob/master/bindata/assets/kube-controller-manager/recycler-cm.yaml
Because of this, the default pv recycler from upstream kube is started in the default namespace rather than openshift-infra, resulting in a failed in conformance due to PSA policy.
This PR aligns Hypershift KCM with standalone.

/test e2e-conformance

/test e2e-conformance

/test e2e-conformance
/test e2e-aws

/test e2e-conformance

PersistentVolumes NFS when invoking the Recycle reclaim policy should test that a PV becomes Available and is clean after the PVC is deleted now passes :+1:

/lgtm


Improve loading visual for Resources Page (#2907)

Pull request opened by the merge tool on behalf of #2907

Merged in f9c2efc69397c5aeee184bf5345d27aed1f866f1


community[minor]: Adds support for Cohere Command-R via AWS Bedrock

This PR will cover Amazon Bedrock's Cohere Command-R and Command-R+.
The request and response formats have changed from the previous Cohere Command model, and the Command-R model does not work with the current implementation.
In addition to response generation from generated AI, the Command-R model supports search query generation and response generation with documents loaded (RAG).
Along with this, test files have been modified and test patterns have been added.
I welcome comments and feedback on this merge request.
I'm sorry for my poor English.
Thank you for the opportunity to contribute to the project!

Looks fantastic, thank you!

Small bug with non-streaming message parsing, fixed in the most recent commmit

Thank you!


Detected blocking call to load_verify_locations

Hi, just tried your integration. It successfully connect and retrieve data but I've this log at startup:
Detected blocking call to load_verify_locations with args (<ssl.SSLContext object at 0x771889505d50>,) inside the event loop by custom integration 'groheblue' at custom_components/groheblue/__init__.py, line 58: devices = await client.get_devices() (offender: /usr/local/lib/python3.12/site-packages/httpx/_config.py, line 149: context.load_verify_locations(cafile=cafile)), please report it to the author of the 'groheblue' custom integration For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#load_verify_locations Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 783, in async_setup_locked await self.async_setup(hass, integration=integration) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 546, in async_setup await self.__async_setup_with_context(hass, integration) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 635, in __async_setup_with_context result = await component.async_setup_entry(hass, self) File "/config/custom_components/groheblue/__init__.py", line 58, in async_setup_entry devices = await client.get_devices()
HA 2024.12.2

Thanks for pointing this out. This log output is also produced by several other integrations and shouldn't limit the functionality. In a future release I will change the functionality of the code to address this warning.

Good to know. I integrates Grohe Blue Home using Node-Red and was looking to have more "native" integration. When I poll the API, I issue a get_current_measurement command to have the latest data. Also I use the time_since_last_withdrawal measure to check if I need a flush (I prefer doing it with my logic as from the app the auto flush doesn't work very well). the time_since_last_withdrawal is alreindy in the data the integration get (I did a quick test modifying the sensor definition in sensor.py and coordinator.py. It would be nice to expose the service for issuing the commands.
msg.payload = {
    command : {
        //co2_status_reset: false,
        //tap_type: 0,
        //cleaning_mode: false,
        //filter_status_reset: false,
        get_current_measurement: true
        //tap_amount: 0,
        //factory_reset: false,
        //revoke_flush_confirmation: false,
        //exec_auto_flush: false
    }
};

I've just pushed a new release 0.2.1, which implements the new measure and an action for executing custom commands. Also I added a 'timestamp' measure to indicate when the data was last updated. Feel free to give it a try!

Thank you for updating.
I think the goal is to have the latest measurement at each update, so the get_current_measurement should be always called before the 5 mins update.
Of course this can be done inside HA with the service provided, but in this case, the polling should be configurable and eventually put at 0 (is it possible?) and calling inside HA get_current_measurement becomes a configurable refresh polling. Also the delay of the refresh after get_current_measurement shoud be configurable (maybe 5 sec are not enough for all situations).
In Node what I do (maybe it is not very elegant...) is to send the get_current_measurement every 5 minutes and I try to get the latest measurement with:
if (msg.payload !== undefined && msg.payload.command !== undefined){
    let data = msg.payload;
    data.type = node.devicetype;
    let startDate = new Date();
    let startTime = startDate.getTime()
    let response = await node.config.session.setApplianceCommand(
        node.applianceIds.locationId,
        node.applianceIds.roomId,
        node.applianceIds.applianceId,
        data);
    // Hint: response is not used right now.

    let i = 0;
    let eventTime = 0;
    // Try to wait to get the latest measurement from device
    if (msg.payload.command.get_current_measurement == true){
        do {
            await sleep(1000 + (i * 1000));
            i += 10;
            let responseDataLatest = await node.config.session.getApplianceDataLatest(
                node.applianceIds.locationId,
                node.applianceIds.roomId,
                node.applianceIds.applianceId);
            let dataLatest = JSON.parse(responseDataLatest.text);
            let measurementTimestamp = dataLatest.data_latest.measurement.timestamp;
            let eventDate = new Date(measurementTimestamp);
            eventTime = eventDate.getTime()
        } while (i < 9 && eventTime < startTime);
    }

}

Maybe just putting some delay (as you did) could be enough but I think it is worth to "embed" the get_current_measurement command before every update.
Then, some suggestions for improvement:
Sensors:
Add filter_change_count, filter_type
Sensors SCHEMA:
Adding state_class, device_class (to better visualization, statistics)
For %:
state_class: measurement
unit_of_measurement: %

For volumes:
state_class: total
unit_of_measurement: L
device_class: volume

For duration (s, min):
state_class: measurement
unit_of_measurement: s | min
device_class: duration

For dates:
device_class: timestamp
For ENUM (filter_type):
device_class: ENUM
S_SIZE(1), ACTIVE_CARBON(2), ULTRA_SAFE(3), MAGNESIUM_PLUS(4), M_SIZE(5)

Thanks for the recommendations. I agree that get_current_measurement should be called every sensor update and that it is better to check if the actual measurement happened (timestamp changed) and then update the sensors. I will also make the delay of the refresh and the update interval configurable in the next update.
I don't really get what you mean with putting the polling at 0. Would that mean that polling would be deactivated and only manual polling using the service is allowed? Or do you mean setting the polling rate to update more frequently?
I will also add the sensors you recommended and update the schema of the sensors for better visualization and statistics. Sorry for not having done that in the first place, this is my first integration.
Should be done this weekend.

The idea of polling at 0 was only if the get_current_measurement  had to be periodically called from HA and not "embedded". In other words to leverage the get_current_measurement  to both have fresh data and to update the integration with the new values.
If you make get_current_measurement  "embedded" (best solution), there is no need to put polling at 0, just make it configurable as the delay.
Thank you for your work. Maybe in the future I'll fork and trye to collaborate (need to learn python a little bit more...).

In relation with Detected blocking call to load_verify_locations with args [...], is it linked to this? So there is the need to from homeassistant.helpers.httpx_client import get_async_client? Just learning.

Yes it is related to that. I looked into it yesterday, but I would completely have to change the functionality of the groheblue python package to accept an external httpx client. It was also pretty dumb from me to use httpx and aiohttp in the package, which makes this change even harder. I will change it in the future but it does not have priority because it doesn't impact the functionality.

I just released 0.3.0. I have added the new sensors and state_class/device_class parameters for better statistics and visualization support. I also updated the groheblue python package to support the homeassistant httpx_client, so the warning mentioned above should no longer appear.
When polling, the integration now first requests a new measurement, waits until the new data is available from the API and then updates the sensor values.
The integration also now has an option to set a custom polling interval, although I suspect that the Grohe API has some type of rate limiting to prevent requesting a new measurement too often. In my testing, a polling interval of 5 minutes worked best, but you can try yourself. Thank you for the recommendations. If you have any other issues/suggestions, please contact me.

That could be because of your HA version, although I am not sure. On November 12, homeassistant published this blog post, which explains that you shouldn't define the config_entry variable manually anymore and that it will stop working with 2025.12, which is why I decided to use this new method: https://developers.home-assistant.io/blog/2024/11/12/options-flow/.
I will change it back to the old method for a few months and then update to use the new method some time in the future.

So, I updated Dev at 2024.12.3 and with 0.3.0, no log message, with 0.3.1, log message, as expected.
Maybe you could check min HA version and stay with the new method?


Make Git quite when running tests in Travis

Make Git quite when running tests in Travis
Without this change, test automation logs are polluted
with about 430 lines like:
Unpacking objects:  91% (51/56)
See:
https://docs.travis-ci.com/user/customizing-the-build/#git-clone-quiet

The commit message seems having typo quite → quiet


Renamed methods and updated comments

Reason for the change is that the previous implementation was a bit misleading.

Thanks for the review @gavanderhoorn 👍


Docker image not provided

From the examples/in-cluster/kustomization.yaml there is a reference to harbor.bryanl.dev/test/octant which doesn't work, I'm assuming this is an internal/private registry
Can an image be built and tagged on a docker Hub or Quay as part of the release process?

This is in-progress and shouldn't be difficult to add into goreleaser.
It should be possible to build an image with the current Dockerfile and use it with kustomize as well.

can I provide some help?

@gitirabassi Sure thing! We love to get a PR that builds a docker image in the release process. (And get some feedback/docs about running CI for forks as well). Then I can figure out the remaining piece on which image registry and where credentials should live.

there are some problems with docker:
% docker run -it -v ~/.kube/:/kube  octant:latest ./octant --kubeconfig /kube/config
2019-08-14T06:15:32.739Z	INFO	module/manager.go:75	registering action	{"component": "module-manager", "actionPath": "deployment/configuration", "module-name": "overview"}
2019-08-14T06:15:32.742Z	INFO	api/content.go:52	Registering routes for overview
2019-08-14T06:15:32.743Z	INFO	api/content.go:52	Registering routes for cluster-overview
2019-08-14T06:15:32.743Z	INFO	api/content.go:52	Registering routes for configuration
2019-08-14T06:15:32.743Z	INFO	dash/dash.go:326	Dashboard is available at http://<IP_ADDRESS>:41319

2019-08-14T06:15:32.744Z	WARN	dash/dash.go:330	unable to open browser: exec: "xdg-open": executable file not found in $PATH
github.com/vmware/octant/internal/dash.(*dash).Run
	/workspace/internal/dash/dash.go:330
github.com/vmware/octant/internal/dash.Run.func1
	/workspace/internal/dash/dash.go:185

we should be able to disable xdg-open when running inside docker
dashboard port is randomly chosen? Its difficult to forward port if its random. I tried to use --ui-url parameter but it does not display anything (perhaps because of xdg-open?)

@zetaab this should be fixed with #199 and using OCTANT_DISABLE_OPEN_BROWSER=1 when the next version is shipped. It also looks like there is some work with this example. https://github.com/vmware/octant/tree/master/examples/in-cluster
I agree having this run in a docker image and then moving to run in-cluster is a great use-case.

Just a heads up, closing this, more details can be found in #450.


[DOCS] Simplify project version evaluation

Why are the changes needed?

build/mvn is slow than grep, the change is aim to simplify and speed up the project version evaluation in docs/conf.py
How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[x] Run test locally before make a pull request

(apache-kyuubi) ➜  docs git:(doc-beeline) ✗ python
Python 3.8.12 (default, Sep 17 2021, 20:21:14)
[Clang 12.0.0 (clang-1<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.getoutput("grep 'kyuubi-parent' -C1 ../pom.xml | grep '<version>' | awk -F '[<>]' '{print $3}'")
'1.8.0-SNAPSHOT'
>>>

Codecov Report

Merging #4599 (7458aef) into master (e9cb434) will decrease coverage by 0.01%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #4599      +/-   ##
============================================
- Coverage     53.31%   53.30%   -0.01%
  Complexity       13       13
============================================
  Files           577      577
  Lines         31574    31574
  Branches       4246     4246
============================================
- Hits          16835    16832       -3
- Misses        13153    13154       +1
- Partials       1586     1588       +2

see 4 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Thanks, merged to master/1.7


[FR]

[READ] Guidelines

When filing a feature request please make sure the issue title starts with "[FR]".
A good feature request ideally

is either immediately obvious (i.e. "Add Sign in with Apple support"), or
starts with a use case that is not achievable with the existing Firebase API and
includes an API proposal that would make the use case possible. The proposed API
change does not need to be very specific.

Once you've read this section, please delete it and fill out the rest of the template.
Feature proposal

Firebase Component: _____ (Auth, Core, Database, Firestore, Messaging, Storage, etc)

Describe your use case and/or feature request here.

Hi @Mercadojale,
It appears that you've sent a blank template with no useful information. I'll be closing this for now. Please file a new ticket containing the needed information pertaining to your desired feature.


New feature request - Viber integration

Could you please integrate Viber? It would be a LIFE SAVER!! My parents are too old to migrate over to Whatsapp and I speak with them regularly (from the other side of the world). I believe Viber has a web app now - https://account.viber.com/en/login
Feature Description
Integration of Viber via web app - https://account.viber.com/en/login
Motivation and Context
This change will make Franz the best in the world.
My parents are old and on the other side of the world, so it's hard to talk through technological changes such as downloading different apps. They use Viber already and aren't able/willing to move over to Whatsapp.
This solves the problem of me managing multiple message applications (furthering Franz's value proposition).
Mockups, Screenshots (if available):
None available but I know you know what this looks like (exactly the same as your other app integrations).
Thank you!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Unfortunately it's not possible at the moment as Viber doesn't provide a web interface for chatting. Im very sorry!

Viber does have a Desktop client. Can that be integrated? I wouldn't mind basically installing it, as long as it's in the Franz front end.

Hi @ComradeVVA - I've actually made a franz plugin that does just that: https://github.com/david-nedved/viber-franz

Hi @ned-kelly can you please make a video or some better explanation on how to add viber to franz? Im new guy, can't really understand the instructions. Thanks in advance.

@ned-kelly Can this be pushed upstream ? I don't see the need for this to be outside of Franz core.

+1 please - would like to see this in Core

+1

Same here!


swagger server doesn't take in account default value

Hi,
Here is my swagger yaml:
swagger: "2.0"
info:
  title: Customers API
  description: Customers API
  version: "1.0.0"
host: localhost:3000
schemes:
  - http
  - https
basePath: /v1
produces:
  - application/json
paths:
  /customers:
    post:
      description: Creates new customer
      operationId: newCustomer
      parameters:
        - name: request
          in: body
          description: customer
          required: true
          schema:
            $ref: ./data-structures/NewCustomer.yaml
      responses:
        200:
          description: boolean
          schema:
            type: boolean
            default: false
definitions:
  Error:
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
      fields:
        type: string

Which results to this response:

Shouldn't it return false instead?
Regards,

I came across this issue while looking for a solution - I'm experiencing the same thing. I have used both default and example keys, but it still responds with whatever is in the body of the POST request.
Adding a default or example response for GET requests seem to work.
PUT and POST seems to just echo back what you send to it.


SelectPanel2: Add default Header and Footer, Replace SelectPanel.Heading

Related context:

https://github.com/github/primer/pull/2490
https://github.com/github/primer/issues/2396

Part 1/2: Add default Header and Footer when not provided
This minimal example would render the fallback header and footer:
<SelectPanel title="Select labels" onSubmit={onSubmit}>
  <SelectPanel.Button>Assign label</SelectPanel.Button>

  <SelectPanel.ActionList>
    {labels.map(label => (
      <ActionList.Item
        onSelect={() => onSelect(label.id)}
        selected={selectedLabelIds.includes(label.id)}
      >
        {label.name}
      </ActionList.Item>
    ))}
  </SelectPanel.ActionList>
</SelectPanel>

Part 2/2: Heading element is mandatory and not customisable
Related context:

https://github.com/github/primer/issues/2578 (It's not, it should always render h1)

// before:
<SelectPanel>
  <SelectPanel.Header>
    <SelectPanel.Heading>Select labels</SelectPanel.Heading>
  </SelectPanel.Header>
   ...
</SelectPanel>

// after:
<SelectPanel title="Select labels">
   ...
</SelectPanel>

@siddharthkp let me know when it is ready for review 🙌🏻

@broccolinisoup Ready for you!
I have a follow up PR as well 🤭: https://github.com/primer/react/pull/3763

Canary Release is failing, but that is not related to the changes :(

Yeah super weird that happens occasionally and no idea why :( If you re-ran the job, it should go away hopefully 🤞🏻


OIDC WebClient proxy support

Follow up for https://github.com/helidon-io/helidon/pull/6230
Once Níma WebClient has proxy support implemented, it needs to be changed int class OidcUtil:69 as well.
Níma proxy support issue: https://github.com/helidon-io/helidon/issues/6006

Fixed by #7255


Release 0.0.4 is planned for Friday 16th

For a pre-release on Dingo we need some additional options in oemof.db that necessitates a new release.
Therefore, I create a  list a additions I would to implement. Feel free to add yours!

Done

Thank you for you work. I had a brief look at your changes. Looks good.
I guess in the readme you want to install oemof.db and not oemof?


MirroringAsyncConfiguration

This PR adds subclass of MirroringConfiguration to be used by 2.x client.
See https://github.com/Unoperate/java-bigtable-hbase/pull/34 for original review.

This change is

Changed base branch so that merges can be nicely chained.

Rebased onto new version of ac/delaySecondaryRequest


fix: Update defaults for config overrides

The Issue
We're about to release a major version and we want to make sure that the config overrides match current requirements.
How This PR Solves The Issue
Links are in the code for the changes to Laravel, Silverstripe, Magento1/Openmage
Manual Testing Instructions
Try out the quickstarts for the changed items.
Automated Testing Overview

Related Issue Link(s)
Release/Deployment Notes

in regards of drupal, d8 requires php 7 which is covered with 7.4 and the problem for drupal 9 in regards of database is solved by removing mariadb 7.4. looks good


Add a User Task and Generic UI to Your Workflow

Tutorial URL: https://developers.sap.com/tutorials/cp-wf-02-add-user-task.html
Please specify the step you are referring to step 9 - "Re-deploy the workflow definition and try it out"
I do not get any data shown. Deployment is fine with no errors.

What have i done wrong?

Hello @mts2605 - I checked the tutorial and this does not happen for me - I suspect it may be something you're encountering that is perhaps related to the steps you've taken so far. This feedback system is mainly for issues with the tutorial content itself (e.g. typos, etc) - if you are still encountering this issue, may I please suggest you ask for help in the relevant section of the SAP Community Q&A - there is a dedicated SAP Cloud Platform Workflow tag for this area. Thanks!


weird behaviour DatePicker

hi
i'm using bootstrap 4 and when i click a first time the year is correct but as soon as i re-click on the calendar icon the year decrease of 1 unit?Any idea
this is my code

Data
"type="text" placeholder="day" >

We fixed that in the new development version. The dot in the short name of the month was a troublemaker.
You can find the latest stable builds at https://github.com/atatanasov/gijgo/tree/1.9/dist

resolved for Spannish, but still an issue for French and Turkish


move extension activity bar icon to the bottom

The extension view/activity button would be better suited to be on the bottom near the config activity.
It's not really a view that is often needed during work - like the search or git view.

You can hide it by right clicking it.

No I didn't mean the whole activity bar (different issue). I just meant, that the extension icon/button is better suited to be near the wheel/config button on the bottom of the bar.
As it is normally nothing you would constantly use during work.

You can hide the individual button too, by right clicking it.

As it is normally nothing you would constantly use during work.

I disagree, but that's why we let you customize it.


getReports doesn't seem to understand a lot of reportTypes, causes schema errors

I'm just trying to assemble a list of actually working reportTypes that can be passed to getReports, since it's not as functional as it used to be in MWS...
and...
    // 'GET_PAN_EU_OFFER_STATUS', // Spain, UK, France, Germany, Italy only?
    // 'GET_MFN_PANEU_OFFER_STATUS', // Spain, UK, France, Germany, Italy only?
    // Settlement Reports - see https://developer-docs.amazon.com/sp-api/docs/report-type-values-settlement
    // 'GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE', // Invalid?!
    // 'GET_V2_SETTLEMENT_REPORT_DATA_XML', // Invalid?!
    // 'GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2', // Invalid?!
    // Order Reports - see https://developer-docs.amazon.com/sp-api/docs/report-type-values-order
    // 'GET_FLAT_FILE_ACTIONABLE_ORDER_DATA_SHIPPING',
    // 'GET_ORDER_REPORT_DATA_INVOICING',
    // 'GET_ORDER_REPORT_DATA_TAX',

all of these order types fail with
CustomError: One or more parameters does not conform to the schema constraints.
    at SellingPartner.callAPI (C:\src\finder\node_modules\amazon-sp-api\lib\SellingPartner.js:659:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Object.find (C:\src\finder\src\services\amazon-report\amazon-report.class.js:55:32) {
  code: 'InvalidInput',
  details: 'reportTypes;',
  type: 'error'
}

i am not seeing where in the source code any of this is, so, not sure how to go about fixing it
This is likely nowhere near a comprehensive list, the new reportTypes list is immense and scattered across 20 pages of documentation, and so it could take me quite a while to go through if i have to do it line by line

@ericblade Nice to idea to have a comprehensive list of all report types! Maybe I can help a bit here:
Concerning the PAN-EU offer status reports: You are right, its just these 5 countries.
Concerning the settlement reports: Maybe you are using the old (2020-09-04) version of the report instead of the new (2021-06-30) version and these reports are not available for the old version?
Concerning the order reports you mentioned: These are restricted by Amazon, you can only request these if you have the restricted role "Tax invoicing".

Hi! Thanks for the response.
Can you confirm if the 2021-06-30 version has a larger list of report types available than the 2020-09-04 version?  I was trying to find somewhere in the source where it validates any of this, and I couldn't find anything.
The schema constraints error is an issue, though, I think, unless I completely fail to understand what's going on.  The schema constraints error appears to be coming from this library, rather than from Amazon.  I don't think the library would be able to understand that I do or do not have access to those reports.  Am I wrong there?
I definitely need a list of reports that are available, so I can pass the list along, or I get to completely redesign the reports view functionality in my app in a user-hostile method, because Amazon is not allowing us to query "give a list of any kind of report" as it used to do with MWS. :D  It's forcing the user to specify which report they want to request/review.   Which also means that the l ist of reports that can be requested are different from the list of reports that can be viewed, because there are several reports that can be viewed but only Amazon can create.
The reports system is a worse mess than most of the rest of the API, and the rest of the API is an awful mess.

I can't really confirm that 2021-06-30 has more reports available, but its just a matter of testing each report against the two endpoints and see if the new one returns a valid answer whereas the old one doesn't.
But I can confirm that the error message you see definitely comes from Amazon and not from the library.
I agree that the reports section is quite complicated due to the nature of so many different reports, but at least Amazon has now finally provided a list of the returned attributes for each report. Its definitely not the best and most well documented API, but compared to MWS I would say its a big step forward.

ok, thank you for confirming then that this library is not doing the validation, and that it's Amazon actively refusing it.  I couldn't find the validation code because it isn't there :-D
so, this isn't a problem with this software, we can close it, but while I do have your attention real quick :) can you tell me if this is the correct way to setup, with the latest version of that API?
new SellingPartnerAPI({
        region: 'na',
        refresh_token: res.refresh_token,
        endpoints_versions: {
            reports: '2021-06-30',
        },
        credentials: {
            SELLING_PARTNER_APP_CLIENT_ID,
            SELLING_PARTNER_APP_CLIENT_SECRET,
            AWS_SECRET_ACCESS_KEY,
            AWS_ACCESS_KEY_ID,
            AWS_SELLING_PARTNER_ROLE,
        },
    });

@ericblade Yes, the config looks fine to me.


New package: ContinuousNF v0.4.0

Registering package: ContinuousNF
Repository: https://github.com/impICNF/ContinuousNF.jl
Created by: @github-actions[bot]
Version: v0.4.0
Commit: e6dc215365a64d2bf327af2f54c1a2eb4a80a6a7
Reviewed by: @github-actions[bot]
Reference: https://github.com/impICNF/ContinuousNF.jl/commit/e6dc215365a64d2bf327af2f54c1a2eb4a80a6a7#commitcomment-115130551
Description: Implementations of Infinitesimal Continuous Normalizing Flows Algorithms in Julia

ContinuousNormalisingFlows.jl ?

IMHO, if we use a full name, it seems to be the best and only package, but I want to leave some space for other packages that may appear in the future.
Also, personally, I don't like long names for packages. Using them isn't the problem, but extending the interface or developing new functionality based on the interface requires having full qualified functions that result to import the package by the actual name. Or use a as clause that makes reading codes inconsistent because someone may use import ContinuousNormalizingFlows as ContinuousNF and another one use  import ContinuousNormalizingFlows as CNF.
However, if there's any strong points to have a long name; I'm willing to change the name.

You should always aim for your package to be the one and only best package that others contribute to, we dont actually want 4 packages for this...
But maybe read the guidelines, I'm just repeating point number 1 of the official spec:
https://pkgdocs.julialang.org/v1/creating-packages/#Package-naming-guidelines

Okay, I will make a new PR.
Please close this one.

Fixed in #84384


Get drawable height of WindowControl

There is no way to get the height of the WindowControl body without the title bar height.

Fixed in 58a2dabf90cd5fb5e7eee22dcbd6938db9b1bf9e


son-validate: Fail in son-example Jenkins job

Hi @lconceicao,
we just noticed that son-validate fails when Jenkins uses it to validate the services in son-examples:
2017-08-23 07:37:06 jenkins son.validate.validate[1337] INFO Validating integrity of function descriptor 'eu.sonata-nfv.empty-vnf3.0.1'
2017-08-23 07:37:06 jenkins son.validate.validate[1337] INFO Validating topology of function 'eu.sonata-nfv.empty-vnf3.0.1'
2017-08-23 07:37:06 jenkins son.validate.validate[1337] INFO Validating topology of service 'eu.sonata-nfv.sonata-empty-service.0.1'
Traceback (most recent call last):
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/venv/bin/son-validate",> line 11, in <module>
   load_entry_point('sonata-cli', 'console_scripts', 'son-validate')()
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/src/son/validate/validate.py",> line 1365, in main
   result = validator.validate_project(project)
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/src/son/validate/validate.py",> line 328, in validate_project
   return self.validate_service(nsd_file)
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/src/son/validate/validate.py",> line 361, in validate_service
   if self._topology and not self._validate_service_topology(service):
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/src/son/validate/validate.py",> line 815, in _validate_service_topology
   self.write_service_graphs(service)
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/src/son/validate/validate.py",> line 1171, in write_service_graphs
   .format(service.id, lvl)))
 File "<decorator-gen-382>", line 2, in write_graphml_xml
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/venv/lib/python3.5/site-packages/networkx-2.0b1-py3.5.egg/networkx/utils/decorators.py",> line 221, in _open_file
   result = func(*new_args, **kwargs)
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/venv/lib/python3.5/site-packages/networkx-2.0b1-py3.5.egg/networkx/readwrite/graphml.py",> line 109, in write_graphml_xml
   writer.add_graph_element(G)
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/venv/lib/python3.5/site-packages/networkx-2.0b1-py3.5.egg/networkx/readwrite/graphml.py",> line 519, in add_graph_element
   make_str(v), scope, default))
 File "<http://jenkins.sonata-nfv.eu/job/son-examples/ws/service-projects/son-cli/venv/lib/python3.5/site-packages/networkx-2.0b1-py3.5.egg/networkx/readwrite/graphml.py",> line 449, in add_data
   raise nx.NetworkXError(msg % element_type)
networkx.exception.NetworkXError: GraphML writer does not support <class 'dict'> as data values.
Build step 'Execute shell' marked build as failure
Skipped archiving because build is not successful
[Set GitHub commit status (universal)] ERROR on repos [GHRepository@753eba56[description=Example network services and VNFs to test SONATA's tools and platforms,homepage=,name=son-examples,license=<null>,fork=false,size=30869,milestones={},language=C,commits={},source=<null>,parent=<null>,url=https://api.github.com/repos/sonata-nfv/son-examples,id=55224530]] (sha:040b00b) with context:son-examples
Setting commit status on GitHub for https://github.com/sonata-nfv/son-examples/commit/040b00b2363170d27f73d17114ab90632bbea168

Please see this PR: https://github.com/sonata-nfv/son-examples/pulls
And Jenkins: https://jenkins.sonata-nfv.eu/view/DEVELOPMENT/job/son-examples/159/
Any idea why this happens?

Hi @mpeuster ,
I'm looking at the problem, but not being able to replicate the error. Everything works fine on this side:
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating project 'sonata-empty-service-emu'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO ... syntax: True, integrity: True, topology: True
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating service 'sonata-empty-service-emu/sources/nsd/nsd.yml'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO ... syntax: True, integrity: True, topology: True
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating syntax of service 'eu.sonata-nfv.sonata-empty-service.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating integrity of service 'eu.sonata-nfv.sonata-empty-service.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating function 'sonata-empty-service-emu/sources/vnf/empty-vnf2/empty-vnf2-vnfd.yml'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO ... syntax: True, integrity: True, topology: True
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating syntax of function 'eu.sonata-nfv.empty-vnf2.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating integrity of function descriptor 'eu.sonata-nfv.empty-vnf2.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating topology of function 'eu.sonata-nfv.empty-vnf2.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating function 'sonata-empty-service-emu/sources/vnf/empty-vnf3/empty-vnf3-vnfd.yml'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO ... syntax: True, integrity: True, topology: True
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating syntax of function 'eu.sonata-nfv.empty-vnf3.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating integrity of function descriptor 'eu.sonata-nfv.empty-vnf3.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating topology of function 'eu.sonata-nfv.empty-vnf3.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating function 'sonata-empty-service-emu/sources/vnf/empty-vnf1/empty-vnf1-vnfd.yml'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO ... syntax: True, integrity: True, topology: True
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating syntax of function 'eu.sonata-nfv.empty-vnf1.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating integrity of function descriptor 'eu.sonata-nfv.empty-vnf1.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating topology of function 'eu.sonata-nfv.empty-vnf1.0.1'
2017-08-23 09:21:43 ananke son.validate.validate[6092] INFO Validating topology of service 'eu.sonata-nfv.sonata-empty-service.0.1'```

Did it work fine before this PR?

Mhm strange. Maybe its cause by the Jenkins update.
Now the job stops with an install issue:
Cloning into 'son-cli'...
The path /usr/bin/python3.4 (from --python=/usr/bin/python3.4) does not exist
Build step 'Execute shell' marked build as failure
Skipped archiving because build is not successful
[Set GitHub commit status (universal)] ERROR on repos [GHRepository@15070742[description=Example network services and VNFs to test SONATA's tools and platforms,homepage=,name=son-examples,license=<null>,fork=false,size=30869,milestones={},language=C,commits={},source=<null>,parent=<null>,url=https://api.github.com/repos/sonata-nfv/son-examples,id=55224530]] (sha:691e22c) with context:son-examples
Setting commit status on GitHub for https://github.com/sonata-nfv/son-examples/commit/691e22c2bd28dd8d994922cc59da6a70a900f7a2

Seems that Python3.4 is missing? Can this be @felipevicens

Ok, found the error. The new version of the networkX library has some object restrictions. Must be limited to version 1.11. I will update it as soon as I merge my current work in son-cli.

Ah great. We delay https://github.com/sonata-nfv/son-examples/pull/96 until it is fixed then. Thanks @lconceicao

Works! Thanks!


pandad: refactor to single thread

To minimize changes and avoid introducing new issues, the original C-style functions have been retained.
Main Changes

Renamed xxx_thread() functions to xxx().
Changed variables in the original thread functions to static to retain values across calls.
Moved send_peripheral_state from panda_state() to peripheral_state() for a better fit.
Move 'safety_future' to a global variable to ensure the safety_setter_thread gracefully quits on exit.
Prefix all global variables with 'g_'

Additional Note
A possible better approach to eliminate the static variables is to declare classes for PeripheralState, PandaState, etc., and move the static variables to their member variables. The final code might look something like this:
void PandaD::run() {
    ...
    panda_state.process();
    peripheral_state.process();
}

However, since the pandad process always restarts after failures, keeping these variables as static in this PR is harmless.

Nice work! I added to the 0.9.8 milestone and will try to get this merged soon.

trigger-jenkins

@Quantizr can you verify this in the testing closet and merge if it looks good?

Looks good on the testing closet, significant reduction in the variability of the timing of pandaStates messages, going from a relative standard deviation of ~0.0175 to ~0.0049 and small improvements in various other service timings.
This PR timings:

Prior timings:


SL: Edit to validation message and blue bubble info in the "Final Submission" section

As a form submitter, I want to have a thorough and accurate alert box message when I make the final submission
A/C _UPDATE THE TWO ISSUES NOTED BELOW

update the alert box message

FROM:  "It is highly recommended that you have a conversation with the senior leader.
TO: “It is highly recommended that you have a conversation with the senior leader about the SLR process and contents of this form prior to final submission”

Blue bubble (question mark) language update/edit
From: “Ensure ministry-specific validation protocols are followed prior to the September 29, 2023 closing date. Contact Strategic HR or DMO for further instruction”.

TO: Ensure ministry-specific validation protocols are followed prior to final submission on or before the September 29, 2023 closing date. The ministry SLR contact can provide further instruction”
(add hyperlink to the MS Teams site )

Edits have been updated, waiting for hyperlink as mentioned above in the ticket.

@JodiLittle Hi there, please send us the Team link so we can close thicket and test. Thanks

1/ Message edit is good.
2. Blue 'Info'/'tool tip' bubble is also correct. The link that needs to be added is in tix #1140

PO Approved and closing this tix


DATE_ADD and TIMESTAMPADD function not support quarter unit

Steps to reproduce the behavior (Required)
Execute the following SQLs in sr.
mysql> select date_add('2001-01-31', INTERVAL "1" QUARTER);
ERROR 1064 (HY000): Vectorized engine doesn't implement function quarters_add backend

mysql> select TIMESTAMPADD(QUARTER,1,'2003-01-02');
ERROR 1064 (HY000): Vectorized engine doesn't implement function quarters_add backend

Expected behavior (Required)
Execute the following SQLs in MySQL 5.7 version.
mysql> select date_add('2001-01-31', INTERVAL "1" QUARTER);
2001-04-30

mysql> select TIMESTAMPADD(QUARTER,1,'2003-01-02');
2003-04-02

Real behavior (Required)
I think sr should return the correct information like mysql does.

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampadd
https://dev.mysql.com/doc/refman/5.7/en/expressions.html#temporal-intervals

StarRocks version (Required)
You can get the StarRocks version by executing SQL select current_version(): 2.5.11 b75b46d55d
It also fails on main branch

SR doesn't support quarter unit now.  See date_add for more info.


[Feature] Show current global values in the entity explorer

Summary
Users should be able to see global values like:

Current user
Current local storage value

This will teach users that they can access these in the JS they write inside Appsmith.

+behavior on app launch, keep - reset

create - delete
value on design mode


Version Packages

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
<EMAIL_ADDRESS>Major Changes

#1 698cd7a Thanks @trevor-scheer! - Rename package to @apollo/datasource. The transition to this package should be seamless, as there are no changes to the interface. Where you once used apollo-datasource, you would uninstall and replace that with @apollo/datasource instead.

@trevor-scheer This ... is failing CLA again.  Any idea?  Can we close this and have it start over and see if that fixes it? 😆  Otherwise, I'll dig into CLA again.

@hwillson and I paired on getting the github-actions[bot] name entered into the CLA database so this should be all set now 👍


Use Embeddable Voice in Electron

Following is a demo to show how RingCentral Embeddable Voice works with Electron https://github.com/embbnux/ringcentral-embeddable-voice-app


feat(docker): support build-docker with push and load inputs

Description
Allow build-docker composite action to configure following:

whether the user wants to push an image to registry or just build an image
whether the user wants to automatically load the single-platform build result to docker images

Changes

feat(docker): support build-docker with push and load inputs

🚀 PR created with fotingo

The changes are tested in here