Accept Rails 7.0.0

Thank you!

Looks like Rails 7.0 requires Ruby 2.7 and above.

I get an error when using devise-two-factor and upgrading an app to Rails 7.0. I tried with the version from this PR and the error persists.
$ rails db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
rails aborted!
NoMethodError: undefined method `has_key?' for nil:NilClass
/Users/andy/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/attr_encrypted-3.1.0/lib/attr_encrypted.rb:224:in `attr_encrypted?'
/Users/andy/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/bundler/gems/devise-two-factor-f5e97fad4dc5/lib/devise_two_factor/models/two_factor_authenticatable.rb:17:in `block in <module:TwoFactorAuthenticatable>'

This eventually comes from app/models/user.rb:2 in my app which is:
devise :two_factor_authenticatable, :two_factor_backupable, otp_secret_encryption_key: ENV['OTP_KEY']

I don't know what the solution is from here, but the attr_encrypted latest version is 3.1.0 from 2018. I don't know if the use of that gem should be replaced with the default Rails 7.0 solution (or how we'd migrate data in existing encrypted columns to it).

https://github.com/tinfoil/devise-two-factor/blob/ecd182e97e8e92436bd908af30165c18f17fe67e/lib/devise_two_factor/models/two_factor_authenticatable.rb#L10-L22
As long as opt_secret andotp_secret =are defined before loading the module,
so before trying Rails 7,I tried define encrypts: opt_secret provided by lockbox before the devise: two_factor_authenticatable.
encrypts :otp_secret
devise :two_factor_authenticatable, ...

After that, I upgraded to Rails 7 with this PR and rewrite encrypts to lockbox_encrypts for Rails 7.
lockbox_encrypts :otp_secret
devise :two_factor_authenticatable, ...

It worked correctly.
You need to take steps before upgrading to rails 7,
lockbox is well documented for migration from attr_encrypted.
https://github.com/ankane/lockbox#migrating-from-another-library
I propose decoupling otp_secret encryption from devise-two-factor and allowing Rails 7's default encrypts or lockbox to be selected.

Hello everyone,
Any update concerning this issue ?

I haven't got back to upgrading that site yet due to a vacation over Xmas/NY. I'm hoping I'll have another chance this weekend and will let you know.

Thanks for the update @andyjeffries.
I will try out the changes of this issue and see if there is something else that comes up. :)
Have a nice week!

andyjeffries

I get this error as well after going to Rails 7.  It is the only thing keeping me from upgrading fully.  Is there any ETA for a fix or what can any of us do to help?

I installed the lockbox gem and added the lockbox_encrypts :otp_secret
The server now starts but when I try to login I get:
NoMethodError - undefined method `otp_secret_ciphertext'

I actually ended up using the branch from cybersecuricy here #192  and it works perfectly.

Agree, that one works perfectly for me too. Thanks @jason-hobbs

Just checking in on what the next steps are here.  This is one of the gems holding me back from upgrading to Rails 7.

I also tested @cybersecuricy's approach. Seems to work just fine after migrating encrypted_otp_secret to otp_secret.

@bsedat Does this look good to merge?

@bsedat Thank you. Could we add a version tag as well?

I don't know about anyone else, but seeing that this was merged, I switched back to the mainline version so that I can get 4.0.1 to fix CVE-2021-43177 on Rails <IP_ADDRESS>, but it now breaks again for me.
If I run rspec in my codebase after switching, I get:
Failure/Error: devise :two_factor_authenticatable, :two_factor_backupable, otp_secret_encryption_key: ENV['OTP_KEY']

NoMethodError:
  undefined method `has_key?' for nil:NilClass

      encrypted_attributes.has_key?(attribute.to_sym)
                          ^^^^^^^^^
# ./app/models/user.rb:2:in `<class:User>'
# ./app/models/user.rb:1:in `<main>'

If I switch back to cybersecuricy's branch it works fine (but my CI run fails due to the CVE). So it looks like there's some fix on their branch that still isn't merged here.


ENH: Changed NIFTI IO to support different flavors of Analyze readers

Changed ITK NIFTI Reader, according to the discussion from https://discourse.itk.org/t/nifti-file-orientation-change-between-2019-08-26-and-itk-v5-1rc01/2594 .
New behaviour is to reject Analyze files, unless one of the flavours is specified:
Reject Analyze files (default) to avoid confusion:
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeReject);
Use NIFTI reader behaviour introduced in ITK v4 (ignore orientation code, flip dimensions if step size is negative):
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeITK4);
Simulate SPM reader, mode similar to depricated Analyze reader from ITK3 (interpret orientation code, flip dimensions if step size is negative):
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeSPM);
Simulate FSL reader (respect orientation code, ignore negative step size):
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeFSL);

PR Checklist

[X] :no_entry_sign: Makes breaking changes
[X] :no_entry_sign: Makes design changes
[ ] :no_entry_sign: Adds the License notice to new files.
[ ] :no_entry_sign: Adds Python wrapping.
[X] :no_entry_sign: Adds tests and baseline comparison (quantitative).
[ ] :no_entry_sign: Adds test data.
[ ] :no_entry_sign: Adds Examples to ITKExamples
[ ] :no_entry_sign: Adds Documentation.

Refer to the ITK Software Guide for
further development details if necessary.

Oops, looks like I left some debug code...

Sorry to chime in. I have loosely followed the related conversation on discourse. Forgive me if my comments are not totally accurate. I have a few comments:

Although necessary, this patch set breaks the current API, if I have read the code appropriately (e.g. the changes to the itk::NiftiImageIO::GetLegacyAnalyze75Mode, itk::NiftiImageIO:SetLegacyAnalyze75Mode methods). Thus, this should be guarded with some macro to make it compatible with previous version until a new major version is released, if we are to follow the usual practice.
I have not read the new tests, but given the breadth of the discussion on discourse, and the  implications it has for third-party applications, and the time scale of the first considerations made by Hans, I think having this thoroughly tested would facilitate the understanding and rationale for the reasons of the change. This may imply using new or more image tests to demonstrate the behavior Andras showed on discourse.
May be the rationale or the discussion should be cast into the ITK5MigrationGuide.md document or the class headers? Not sure if editing the ITK5MigrationGuide.md is appropriate since on my mind the ITKxMigrationGuide.md-like files are to be edited only at a major version change.

I understand that this is a much needed change, that it implies a great deal of work and testing, and that some third-party applications require this to be merged. Thanks to all that strived to improve and make more robust the current behavior.

I can make default behavior to still accept Analyze files using ITK4 convention , but display a warning about depricated file format.

New behaviour is to reject warn about Analyze files, unless one of the flavours is specified:

Reject Analyze files to avoid confusion:
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeReject);
Use NIFTI reader behaviour introduced in ITK v4 (ignore orientation code, flip dimensions if step size is negative):
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeITK4);
Simulate SPM reader, mode similar to depricated Analyze reader from ITK3 (interpret orientation code, flip dimensions if step size is negative):
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeSPM);
Simulate FSL reader (respect orientation code, ignore negative step size):
imageIO->SetLegacyAnalyze75Mode(itk::NiftiImageIO::AnalyzeFSL);

Now there is a new cmake configuration option ITK_ANALYZE_FLAVOUR with possible values ITK4Warning ITK4 SPM FSL Reject


Feat: Add styling to projects in second deadline

Add styling to a project that has reached a second deadline.
See screen shot below (I did not have a project in the second deadline but changed the class of the project available to show the styling implementation)

Good one Caleb! I'd like to know if there are distinct classes for these deadlines?

Yes, the project that goes into the second deadline has the in_second_deadline class.

I have added the styling for this as well. I had to add a JS script that looks for the text "deadline for a second chance before" within the different project DIVs and then appends the in_second_deadline to them so that they can change styling when the page loads.
See screen shot below:

I have added the on hover styling for the anchor tags and changed the script for appending the in_second_deadline class to look at list-group-item as the parent element instead of the pending_logs div element.


Add meta descriptions for SEO per Alex

Add meta descriptions for SEO

Reviewed and approved by Alex
Can merge now

Deploy preview for calico ready!
Built with commit b12e536ff3f6e4539ba9c70a323282f980482b94
https://deploy-preview-2906--calico.netlify.com


Fix url issue for iconFont when build on windows platform

fix issue #242

Oh, good catch. There are probably other places where I should be using url instead of path in this project too... Thanks!


Update testcontainers version

With the current version there is an issue with the current Mac Docker. This can be fixed by updating to the newest testcontainers version (1.15.0)

Testcontainers updated to 1.16.0 in c88763bb6acefd20187c63fa54f94cd479d3fcef, contained in release v3.0.0.


Ausstellungsdauer naming

https://github.com/artsy/eigen/blob/master/Artsy/Classes/Categories/Apple/NSDate+DateRange.m
Might make sense to move category name to dateRangeToDate. It's been refactored out of it's original context.
/thanks @ tangphillip

what about dateRangeToString ? or dateRangeAsString ?

i still like austellungsdauer

Me too. It's staying.

Didn’t know this was up for debate before, I’m not a fan, I always have to look it up.


Invalid buffer after pasting content into new file

Buffer is shifted by 1 line due to p. vscode is eating first newline


Unable to discover FFmpeg on Debian

To reproduce this issue I've first installed and configured a Debian within VirtualBox:

Installed VirtualBox 5.1 on an Ubuntu 16.04 host
Installed Debian 8.8.0 in the VirtualBox
Inside Debian installed the following packages via apt-get:

cmake (as a side-note: this installs version 3.0.2, but GIFT-Grab has been tested with 3.2)
git
python-pip
cmake-curses-gui (for the ccmake command-line interface)
pkg-config (used by GIFT-Grab's FFmpeg discovery script)

Inside Debian installed the following FFmpeg packages:

libavfilter-dev (libavutil-dev, libswscale-dev and libavcodec-dev were automatically installed as part of this)
libavformat-dev (this step creates the missing /usr/lib/x86_64-linux-gnu/pkgconfig/libavformat.pc file)

After the usual git clone and build folder creation for GIFT-Grab, calling cmake -D USE_FILES=ON ../GIFT-Grab/src fails with the following error:
[...]
Could NOT find FFmpeg (missing: FFmpeg_INCLUDE_DIRS FFmpeg_LIBRARY_DIRS)
[...]

I've managed to trace this error down to the pkg-config (which is called from GIFT-Grab's FFmpeg discovery script.
On my Ubuntu 16.04, running pkg-config --cflags --libs libavformat gives:
-I/home/dzhoshkun/env/giftgrab/usr/local/include -L/home/dzhoshkun/env/giftgrab/usr/local/lib -lavformat

Running the same command on Debian 8.8.0 yields only:
-lavformat

So exactly the FFmpeg_INCLUDE_DIRS and FFmpeg_LIBRARY_DIRS are missing from the output.

@dzhoshkun I can verify that this is the issue I see.

It turns out that the include and library dirs are not returned by pkg-config when a library is installed in a standard location already known to the system. So I will need to relax these in the FFmpeg discovery script.

On the other hand, even after relaxing the include and library dirs in the discovery script, GIFT-Grab does not build against FFmpeg installed via apt-get install on Debian (seems to be version 3.2.5, if I read the version tag correctly). But I've managed to build it against FFmpeg version 3.1.2 installed by building from source.
@stefanv Which FFmpeg version do you have on your Debian?

Just to be more explicit, these are the two errors when running make:
[...]
GIFT-Grab/src/ffmpeg/ffmpeg_video_source.cpp:381:70 error: 'av_opt_set_int_list' was not declared in this scope
[...]
GIFT-Grab/src/ffmpeg/ffmpeg_video_source.cpp:433:79 error: 'avfilter_graph_parse_ptr' was not declared in this scope
[...]

Looks like an API incompatibility between FFmpeg 3.1.2 and 3.2.5. I will investigate this further.

I run Debian testing, which has FFMPEG 3.2.5.

[ ] TODO: document Debian version supported

The two compilation errors documented above do not hold for Debian Testing (see #2)

This issue still holds though. Will relax the include and library dirs requirement now.

@stefanv This issue has been fixed now. I've managed to successfully run the SciPy processing example on Debian testing. Could you please give it a try as well. Please note:

Only the GitHub version has this fix for now, and not the pip version (I'll make a new PyPI release once you've confirmed you can run the example)
GIFT-Grab builds against the Debian-repo FFmpeg version on Debian testing, but not on Debian 8.8.0 due to issue #2

@stefanv Have you had time to try the fix? I was thinking, in case it's not clear how to build GIFT-Grab Python bindings from source, i.e. without pip, here is what you need to do:

Turn on the following options in CMake:

BUILD_PYTHON
USE_FILES
USE_HEVC
USE_NUMPY

If you're using GPU acceleration, you need to turn on the following options as well:

ENABLE_NONFREE
USE_NVENC

That is, the whole CMake configuration command looks like: cmake -D BUILD_PYTHON=ON -D USE_FILES=ON -D USE_HEVC=ON -D USE_NUMPY=ON -D ENABLE_NONFREE=ON -D USE_NVENC=ON ../../GIFT-Grab/src
The subsequent make then creates a pygiftgrab.so within the build folder, which holds the Python bindings.
So the SciPy example can be run directly from within the build folder.

In case you have further questions, please let me know.

I now receive the following error:
CMake Error at /usr/share/cmake-3.7/Modules/FindBoost.cmake:1831 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.62.0

  Boost include path: /usr/include

  Could not find the following Boost libraries:

          boost_numpy

Can you provide a list of packages to install on Debian?

Boost does not support NumPy in versions prior to 1.63. This version is not yet available from the Debian repos, so it needs to be manually installed. To do this, you can follow the steps below:

Install NumPy (otherwise the Boost build does not install NumPy support)
Download Boost 1.63
./bootstrap.sh --with-libraries=python (--with-libraries=python deactivates all other Boost components, ensuring minimum compilation time)
./b2 install

I've installed the following packages to make the SciPy example run:

apt install build-essential
One of NVENC, kvazaar (default) and x265 is needed for the encoding. The easiest for me was to use x265, as the Debian FFmpeg seems to support it by default. See these instructions on how to enable one of these encoders in GIFT-Grab.
apt install libavfilter-dev (this installs all needed FFmpeg components: see the issue description above)
apt install python-dev
apt install python-numpy
Boost 1.63 as outlined in the above comment
apt install python-scipy

Then I've built GIFT-Grab using cmake -D BUILD_PYTHON=ON -D USE_FILES=ON -D USE_HEVC=ON -D USE_NUMPY=ON -D ENABLE_GPL=ON -D USE_X265=ON ../../GIFT-Grab/src

@stefanv Any luck with this? I was thinking, in case you don't want to disrupt your system-wide Boost installation when installing 1.63; you can install it locally and use BOOST_ROOT to let GIFT-Grab pick up the correct one

Had to: export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/usr/include/python3.5/" to get Boost to build

BOOST_ROOT does not seem to work

@dzhoshkun Could you please verify whether you can use boost without installing it system wide?

@stefanv Yes, I can. I've used it for a very long time on our test server (Ubuntu). I've now also reproduced it on Debian Testing.

@stefanv BOOST_ROOT must be the include directory containing a boost folder.
On my system I built Boost using:
./bootstrap.sh --with-libraries=python --prefix=/home/dzhoshkun/tools
./b2 install

This creates /home/dzhoshkun/tools/include/boost where the Boost headers are located.
I then did a export BOOST_ROOT=/home/dzhoshkun/tools/include before cmakeing GIFT-Grab, and that works.

Further notes:

CPLUS_INCLUDE_PATH is necessary, otherwise pyconfig.h not found
b2 install copies headers, even if build fails, but install may be broken; so perhaps ./b2; ./b2 install is to be recommended?
You need to specify -D BOOST_ROOT=..., NOT with a shell export (perhaps a caching issue)

I'm now running into:
CMake Error at /usr/share/cmake-3.7/Modules/FindBoost.cmake:1831 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.63.0

  Boost include path: /home/stefan/src/boost_install/include

  Could not find the following Boost libraries:

          boost_numpy

  Some (but not all) of the required Boost libraries were found.  You may
  need to install these additional Boost libraries.  Alternatively, set
  BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT
  to the location of Boost.
Call Stack (most recent call first):
  cmake/boost.python/CMakeLists.txt:7 (FIND_PACKAGE)

I also see:
$ find ~/src/boost_install/include/boost/* -iname "*numpy*"
/home/stefan/src/boost_install/include/boost/python/numpy.hpp
/home/stefan/src/boost_install/include/boost/python/numpy
/home/stefan/src/boost_install/include/boost/python/numpy/numpy_object_mgr_traits.hpp

and
$ find ~/src/boost_install/lib/* -iname "*numpy*"
/home/stefan/src/boost_install/lib/libboost_numpy3.a
/home/stefan/src/boost_install/lib/libboost_numpy3.so
/home/stefan/src/boost_install/lib/libboost_numpy3.so.1.63.0
/home/stefan/src/boost_install/lib/libboost_numpy.a
/home/stefan/src/boost_install/lib/libboost_numpy.so
/home/stefan/src/boost_install/lib/libboost_numpy.so.1.63.0

Could this detection problem be in GIFT-Grab?

re CPLUS_INCLUDE_PATH: I've never had to use this. Neither on our test server (Ubuntu), nor on my Debian. But will:

[ ] add it to the caveats

re -D BOOST_ROOT=...: for me BOOST_ROOT as a shell variable works (both on Ubuntu and Debian). Probably a CMake caching issue then.

re boost_numpy not found:
It's not a GIFT-Grab problem. GIFT-Grab just calls FIND_PACKAGE(Boost ...)
See my comment above starting with "Boost does not support NumPy". The absence of NumPy on the system when building Boost is the only problem I've come across so far related to being unable to discover boost_numpy. But on your system everything seems to be there.
This might be related to the "re -D BOOST_ROOT=..." issue (my previous comment). I'd recommend starting a fresh CMake (= deleting everything in the CMake folder); CMake sometimes caches things in an inconvenient way and fails to discover updated settings.

Success!  It was the CMakeCache.txt and CMakeFiles

I think we're close.
$ LD_LIBRARY_PATH=~/src/boost_install/lib/ python -c "import pygiftgrab"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: /home/stefan/src/GIFT-Grab/pygiftgrab.so: undefined symbol: _ZN5boost6python6detail11init_moduleEPKcPFvvE

That looks like a Python version problem. Can you please verify that:

you are using Python 2
your Boost is built and linked against Python 2 libs

Python 3 is not supported?

No, not yet.

If you can incorporate everything we've learned above into the installation instructions, I think we're good to go.  The installation document may be quite overwhelming, so it would be good to have clear, step-by-step installations for building a minimal version (much like you had me do above).

Also, it'd be good to mention the Python 3 issue very prominently, if it is not already stated so.

[ ] re "incorporate everything we've learned"

Sure. Could you please let me know your system specs such as these

[ ] re "Python 3 issue"

There is already a detailed list of the supported versions of all dependencies. But I've noticed now that it's a bit obscured by the way the documentation is structured. I'm going to revise the documentation to give it more visibility.

Great, thank you!
My system info:
Debian 9 (testing), Linux 4.9.0-2-amd64
gcc 6.3.0
ffmpeg 3.2.4
cmake 3.7.2
Python 3.6.0 <-- the problem ;)
boost 1.63

@dzhoshkun Let me know when you are ready for us to wrap this up.

@stefanv Sure. I'm restructuring the documentation, as your feedback made me realise that it's not that easy for the user to find the relevant information and instructions due to the way it's structured. I'm also polishing the GIFT-Grab PyPI page: PyPI has recently been migrated to a new platform with an improved web interface, and the current GIFT-Grab PyPI page doesn't look very appealing on the new PyPI.
Once these tasks are finished (should be very soon now), I'm going to publish a new release on PyPI and let you know.

@stefanv I've incorporated everything we've learned into the documentation now. I've also restructured and revised the documentation to make it easier for the user to find information.
In particular:

Restructured the main README file to reduce content and to make it easier for the user to find relevant information.
Added instructions for building a minimal GIFT-Grab version for testing NumPy compatibility: https://github.com/gift-surg/GIFT-Grab/blob/master/doc/minimal.md
Made the requirements and the dependency installation guidelines sections more visible and easier to find.
Emphasised the need for pip install options for installing GIFT-Grab from PyPI.
Revised the GIFT-Grab PyPI description to make the GIFT-Grab PyPI page a bit more appealing and more useful to the user.
Known issues and limitations are now kept in a separate MD file: https://github.com/gift-surg/GIFT-Grab/blob/master/doc/issues.md
More internal cross-links to make it easier for the user to browse and navigate the documentation.

(For more details, please see the CHANGELOG)
I've published a 1708 release candidate on PyPI: https://pypi.org/project/GIFT-Grab/1708rc4/
I've been able to install this RC successfully on my Debian Testing and subsequently to run the SciPy example with it.
Would you be able to give it a try on your Debian as well, using this command:
pip install gift-grab==1708rc4 --install-option="--files" --install-option="--hevc" --install-option="--x265" --install-option="--enable-gpl" --install-option="--numpy"

==1708rc4 is important as otherwise pip will just pick the last stable release from May
Once you've confirmed this RC installs successfully on your system, I will:

[ ] publish the official 1708 release as well

This all looks great---and it works!  Consider:

Linking to the minimal build document from the README
Mentioning that the project only builds on Python 2
Mentioning BOOST_ROOT for alternative installation path.

Awesome!

re "Linking to the minimal build document from the README": there already is a link in the Getting started section
re "Mentioning that the project only builds on Pytho2": was already mentioned in the project summary in README, but also added explicit note in the minimal example
re "Mentioning BOOST_ROOT for alternative installation path.": agreed, and added a note to the minimal example.


support of azure openai generator

following a previous PR comment that suggested to use OpenAI API compatibility class
https://github.com/leondz/garak/pull/638#issuecomment-2099777617

I have read the DCO Document and I hereby sign the DCO

thanks! will take a look

update - we're waiting on azure acct to be provisioned; once this module is validated, if all goes well, it'll merge

Testing complete, thank you for the contribution!


[Feature Request] Could we have the plex logo change to the album cover?

What it says in the subject

The images displayed in your rich presence have to uploaded on the assets page of the app on the developer portal so this isn't possible.


If more then 2 airgradients running, only one sensor provides data in HA

First of all - Thanks for your awsome integration !
When I install 2 airgradients (name is different in the config of course), the ESPHome log shows that both are working, each have different IP addresses, both deliver different values. But in Grafana only one of the sensor provides accessable data. Would it be possible that they collide somehow ?
Peter

Mh, unfortunately I do not have 2 devices to test that.
Could you try to change the name for the sensors and not only the device itself?
Maybe the sensors need different values to be different things in your whatever you are using.
I am guessing influxdb with grafana from the home assistant add ons?

I have tested with two airgradients: their yaml are identical except the esphome name, air-gradient and air-gradient-1. In my homeassistant and grafana instances they show different sensor values. For example, air-gradient and air-gradient-1 have sensair_co2_value and sensair_co2_value_2, respectively.

Mh, if sensors have different names and the entity as well I see no problem why Grafana is not showing you both.

two devices working perfectly for me with only differnces being the names
esphome:
name: air-gradient-1
esphome:
name: air-gradient-2

Will close this since it seems to work for others.
If you need help regarding this maybe go to the home assistant forum or the discord for esphome and/or home assistant.
There are more and more knowledgeable people than just me and the few others which use this project 🙂


removeDirectory method

Coverage decreased (-2.0%) to 74.25% when pulling 38022bfd37f511d7c9c18f0ce951a9fe46465bd3 on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Coverage decreased (-1.25%) to 75.0% when pulling ab071a0e65120911d4b1842a74c915196db3062b on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Coverage decreased (-0.63%) to 75.63% when pulling eaec0e387a555a6f77bfebdc794f7f3620db4974 on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Coverage decreased (-0.63%) to 75.63% when pulling eaec0e387a555a6f77bfebdc794f7f3620db4974 on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Coverage decreased (-1.25%) to 75.0% when pulling 20fd60cb9a3e1b939b10bf121825db451b4a555b on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

I think you must throw exception if input is not directory

Coverage decreased (-2.28%) to 73.97% when pulling 5f6999414e2c8b31ddd10079540385ecdf1f37f5 on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Coverage decreased (-0.5%) to 75.75% when pulling 52f0d84858d370425a58054ecbef66c35b8f540f on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Coverage decreased (-0.5%) to 75.75% when pulling 52f0d84858d370425a58054ecbef66c35b8f540f on ARACOOOL:master into fcdf4a1e6935b7e5df3dc51365b6739e7b6e9ac8 on brandonwamboldt:master.

Merged via b02ff2e29e7b7a9f496f45bdca9c922a34765856
I ended up manually pulling this down, and tweaking it. Your commit history was a bit dirty, and I adjusted the function to have better errors and tests (also renamed it to rmdir). Your name is still on the commit though!
Thanks


Fails when version ranges or wildcards are used

You can specify NuGet versions as ranges, e.g. [1.0, 2.0) or with wildcards, e.g. 1.*.
If any of these are present in a project, the extension stops doing anything.
Such versions should be ignored, also the package manager does not offer updates for those.

Good point! Didn't even think about version ranges...
Fix looks very good! Would definitely merge as a PR :)


[SIP-43] Unified Chart Controls

Disclaimer: regardless of the details embedded, this document is a conceptual proposal intended to start conversations. We are not committed to implement all or any of the proposed changes yet.
[SIP-43] Unified Chart Controls
Motivation
After obtaining tabular data from datasources, visualizations need to know how to map data columns to marks and channels in visualizations. Sometimes the visualization may also require or the users would like to perform additional transformations before plotting (compute moving average, pivot, aggregate, transpose, sample, window, etc.), which are not possible/convenient to do at the datasource/SQL query level.
The concept of post-processing is not new to Superset. Historically, we had some flavors of these known as advanced analytics in a few charts such as the line chart, but they lack clarity and consistency.
Consistency: Most of these transformations are implemented in viz.py, with each visualization having its own non-standardized post-processor. This Python module has grown out of control and become difficult to maintain. The coupling between visualization and query response makes it difficult to improve some important features such as chart slice caching, embeddable charts and visualization plugins.
We have been slowly migrating to a new visualization-independent query API (SIP-5, SIP-6, #6220). The idea is to decouple data querying with visualizations, move most visualization-specific transformations to the frontend. The new API will always return tabular data. It is up to each visualization plugin to take the output, optionally run it through a generalized post-processing API on the server side before (#9427), and pass the tabular data to the visualization code, which handle the rest of the visualization-specific transformation on the client-side.
Clarity: Some post-processing can be implicit but straightforward, e.g., when users want to add moving averages to a line chart, we simply introduce a form control that computes a derived column. It is easy to infer how that column should be presented in the visualization. However, while there is room for abstraction, this approach requires developers to create custom controls for every visualization, each with their own transformProps logics. Like many basic chart controls in Superset, these controls affect both data manipulation and presentation, so they still unavoidably bind data querying to visualizations. It may be straightforward to use them in one simple chart, but it quickly becomes confusing when there are a lot of different controls across many visualizations---both developers and users sometimes have to guess what’s happening under the hood.
Flexibility: In addition to lack of clarity and consistency, the custom control approach also fall short of supporting more powerful visualizations. For example, following table chart with mock data is common in top-line business reports. It compactly displays multiple metrics (bookings and revenue) across multiple dimensions (state, user type) and multiple time periods (point-in-time measurement and 7 day moving average):

Suppose each metric and dimension is a column in the database, and each row is their values at a given date. Currently, in order to create this output table, users have to write very complex SQL queries and use a virtual datasource. But it’s actually possible to very quickly build the same chart using a combination of Pandas post-processing operators, without writing complex database queries.
Proposed Change
To solve the challenges above, we propose to (1) add a Transform section for server-side post-processing and (2) rearrange the Customize controls in the control panel.

The Transform Section
In the Transform section, users can specify stackable atomic transform operators mapped directly to the pandas_postprocessing API already implemented in the backend. For example, the screenshot below shows the controls popup for Rolling Window transformation:

This one-on-one mapping between transform controls and post processing operators makes it easy for documentation. We can just point users to the Python API spec for pandas_postprocessing.
After applying a transformation, users should be able to view the intermediate and final tabular data (the final results returned by the server will always be tabular). We can add a button to switch between data view and chart view:

Or implement the split-view proposed in SIP-34.
Clicking on the accordion list items in Transform will switch between the intermediate transformed results.
The Customize Section
Superset introduced the Data vs Customize tab to reduce clutter in the control panel. This is helpful for charts with many options. But it also makes the Customize options difficult to discover. A lot of users don’t even know they can add pagination to the table chart.
To simplify the user experience, we intend to move the Customize tab to a new Customize section under the main tab and add a Columns section before other chart rendering options.
The Columns section configures per-column meta data such as d3 format, tooltip template, suffix/prefix, and conditional formatting, corresponding to the final data output. Not all visualizations have customizable rendering options, but those with rendering options will always have the Columns section before other rendering options. We believe with refined UI hierarchy, it’s possible to resurface the customize controls without creating clutters.
The full mockup can be found here.
Long-term Plan
In the future, all visualization controls will follow three simple steps: Query (datasource queries) → Transform (server side post processing) → Customize (chart rendering). This is akin to the visualization grammar used by Vega and Vega-lite. This separation of concerns and unification of control semantics make it super clear what each control is responsible for.
By moving column mapping and chart rendering logics to Customize, we can also remove control overrides in the Query section---currently there are too many variants of metrics, columns, and groupby  fields querying the same thing but are stored differently (apache-superset/superset-ui#485 provided a mask to help developers; end users may still be confused). This not only greatly simplifies the code, but also makes it easier to switch between visualization types---all control values for Query, Transform, and even Columns can be easily retained.
In the future (beyond the scope of this SIP), if it’s too tiresome to edit all the transformations one by one, there are many ways to simply the Transform section for users:

We can hide complex operations behind custom operators that are either a preset of other operators, or an arbitrary Python function running in sandbox.
We can add a switch of Simple v.s. Advanced mode. The Advanced mode is what described above. In the Simple mode, users specify transformations using less controls, similar to Advanced Analytics. Each control could potentially represent one or multiple transformations with reasonable defaults.

New or Changed Public Interfaces

New React components for the Transform controls and popup modals, which will interact with the post_processing  field in the new API (/api/v1/chart/data).
New shared controls for the Columns section.
New design pattern for control panel to optimize the hierarchy of existing controls (data source, time, etc.).
Refactor control panel config registrations and chart control overrides.

New dependencies
No new NPM/Pip dependencies needed.
Migration Plan and Compatibility
This change has profound implications on the way we think of charting in Superset. In addition to exposing post-processing API, it also proposes changes to the Query controls.
We will start with implementing the controls for one example visualization type (the table chart for example), then migrate others one by one. For each visualization type, we have to do the following:

Step 1: migrate to the new /chart/data API
Step 2: add Transform controls, implement the data vs chart split view
Step 3: move Customize controls to the main tab, add Columns controls
Step 4: rename and simplify Query controls, db migration may be needed

Rejected Alternatives

Add yet another custom control or visualization type for the advanced table chart: the use case is too specific. There are too many operations in the underlying transformation, it becomes too opaque to the users.
Only add the transform section to charts which need it: this does not solve the long-standing problem of inconsistent and speculative chart controls, but still introduces a new pattern for charting.

References

[SIP-34] A new design direction, system, and process for Superset
Full mockup for the unified controlled based on current UI

I feel the SIP template could use a "Technical Challenges and Risks" section.

The data-centric approach (query + transform + map-data-to-viz-properties) as opposed to the visualization-property-centric approach is certainly interesting, but that last map phase is fairly challenging to design well so that it's intuitive to the user.
This was discussed at length in the sessions leading to SIP-34. Some of the challenges with the query-centric approach are:

doing good guesswork around mapping data to viz properties attribute is challenging and we need to allow the user to override
forcing the right granularity: some visualization require different things (a particular number of dimensions, a particular number of metrics). While the "Query" panel seem like a conceptually universal thing, the mechanics / restrictions applied to it are tricky (say if we need to force you to pick exactly 2 dimensions and a single metric, or if you're not allowed to pick a dimensions [big number], or if you have to pick a metric and a secondary one is optional, ....).
for many users, if you're just trying to make a bar chart, or a big number, the whole query -> transform -> map mind gymnastic is a bit complicated.

We should dig out the best design we had for this during the design biltz. The design would show a query panel with the viz-property-mapping within the dropped "pill" in the droppable area of the query (the wireframe would be worth 10k words here...). That seemed somewhat intuitive but I feel like that design/model couldn't support another layer of transformation that we disregarded at that time.
One more thought, it's the fact that transformations are unevenly tricky, and we may want to categorize them:

in-place mutations - transforms that don't change the shape of the result set - are easy
metric derivative - a new computed metric work generally well with visualizations that support multiple metrics
pivots - where the shape of the data following the transformation is dynamic are generally tricky, the visualization has to expect a certain shape here. Clearly not any pivot table can be visualized by any type of visualization...
grain changing: many viz care a lot about having the perfect "grain" and some transforms could mess with that

Was this the query panel design you were looking for?
I like its simpleness and directness---the grouping of visualization types and unification of control UI are really slick. It does seem difficult to fit the query + transform + map model in this design.
There is definitely a tradeoff between simplicity and flexibility. To better understand the problem, I looked at what other BI tools are doing in this regard:

Redash:

Users always write SQL queries before visualization.
No post-processing transformation possible.
Property mapping mostly manual.

Metabase:

Similar to Redash, separate steps for query building and visualization
No post-processing transformations, except simple cumulative sums (mixed with normal aggregation functions).
Property mapping is manual or based on metric/dimension definitions at the query stage.

Looker:

A combined Explore view for query + visualization
Support "Table Calculation" (post-processing on query results) and "Custom Fields" (query level calculated columns), both have similar interactions
Data retrieval not tied to visualization
Post-processing and ad-hoc columns achieved via DLS

Mode

Query with SQL
Apply advanced data transformations with R or Python notebook
Charting controls only operate on query results
Property mapping is totally manual

Tableau:

Visualization centric, no separate querying step for most cases
Powerful custom functions and on-chart controls to apply transformations
Custom function could trigger both optimized queries or post-processing, but the whole process is fully opaque to users.

Domo

Visualization centric, all charting/querying options in one page called Analyzer
Transformations like rolling average must be applied at the data source level via SQL queries

Power BI

Very similar to Tableau
Most transformations (including data source joins) probably happen locally (in desktop app or on Power BI server, as oppose to the datasource)

TL;DR: Tableau, Domo, Power BI use the visualization-centric approach; others data-centric.
In terms of functionality and philosophy, Looker is the closest to what's been proposed in this SIP; Domo is the closest to SIP-34. Either way seems to work from an end-user's point of view. For Superset, it's a matter of which mode is the best for our users and whether we can smoothly get there.
To answer some of your concerns:

data <-> viz property mapping: it's possible to keep track of derived metrics and use the same property type for source and derived metrics. Pivot tables also know which output columns are dimensions which are metrics.
granularity: I'm not sure I understand this correctly. "Grain change" is the same as adding/removing a column in regular controls, isn't it? I don't think we have to have restrictions on query output. Like Redash/Mode and others, excessive columns can simply be ignored---during chart configuration, you select only the columns you need for visualization. Visualizations should not run any implicit aggregations on the client side, and should throw errors if the final output has excessive/missing dimensions or is not in desired shape.
complexity: simple bar chart will not need transform. The transform controls could be part of an "Advanced" section hidden (but discoverable) from regular users. There are ways to make the UI intuitive and non-intrusive. Both Looker and Tableau, the most powerful of above all, use DSL to hide the complexity of the transformation layer. We don't have to go there yet, but it could eventually be a choice.

In summary, the addition of a transform layer does involve a lot of work, but I'd argue it adds valuable flexibility for the users which would really differentiate Superset from its competitors.

Per-column formatting has been added to table chart in https://github.com/apache/superset/pull/13758
A transformation layer adds significantly more complexity and would be very difficult to design well. Over the past year, Superset has seen many gradual improvements and a lot of work for steps 1 - 3 in the Migration Plan of this SIP has been done and still ongoing. It's better to keep the gradual approach and push for bigger changes when the codebase is more stable, thus closing this SIP without a vote.

Since this issue is closed, we'll also consider the SIP/proposal process closed as well. If you want to rekindle this proposal, please re-open this Issue, and send a new [DISCUSS] thread to the dev@ mailing list. Thank you!


RSS a121 v1.7.0

Updated to work with RSS a121 version 1.7.0
Mostly documentation changes
acc_detector_distance_config_sensor_set function was removed
Adding rss/include/acc_detector_presence_processing.h which is needed by the presence library

Closing. This was recently done upstream.


Introduce CIFS utils for Windows file share volumes

What this PR does / why we need it:
Enables the ability to create CIFS volumes for Azure Files or FlexVolumes by including CIFS utils (and the mount.cifs command).
How can this PR be verified?
With the 0.23.0 CFCR's Azure support, use an Azure File StorageClass provisioner:
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/aks/azure-files-dynamic-pv.md
Is there any change in kubo-deployment?
No.
Is there any change in kubo-ci?
This may be best captured in a regression test along with other volume types tested.
Does this affect upgrade, or is there any migration required?
No.
Which issue(s) this PR fixes:
Release note:
Added support for mounting CIFS volumes

Hi @svrc-pivotal
I would like to clarify. Right now, only azure-disk storage class is supported. With the PR, we will be able to create azure-file volumes?
Is the test for azure-file volume will be sufficient?

Yes that’s correct. @alex-slynko

We added an integration test, which passes locally. We then merged and pushed to develop, 4bc0d0b4bab0aa766862c7e87f8ca7ff4c79e407.


And test has odd syntax for greedy arguments

The and test has the following
say TrueFunc taking nothing and TrueFunc taking nothing
I'm pretty sure that's not valid syntax, as the first invocation tries to grab the second TrueFunc token as a second argument (i.e nothing and TrueFunc get regarded as the args), and then we end up with "taking nothing" dangling off the end.
I think the line needs some notable rewriting...

This is now fixed with #166 merged in.


Improve example workflow steps in readme

--color always is necessary to enable colorful outputs on GitHub Actions. Otherwise colors are not reflected like this.
codecov-action@v3 is the latest version at this point. In general, using the latest version in example is better because many people copy and paste the example code. I confirmed this upgrade did not break the example.

In 3c96c10, I set CARGO_TERM_COLOR at job level so that all cargo commands can refer the setting.


Fix hdPaths runtime error with proper defaultOptions and options merging

I'd appreciate a test, otherwise 👍 🎉

ed020e6
this test fails if you try it without the changes in this PR:

Great, thanks. Let's see what @willclarktech says. We probably have the same problem in different places in the codebase.


Release of version <IP_ADDRESS> of xComputerManagement

Releasing version <IP_ADDRESS>

This change is

Codecov Report

Merging #139 into master will increase coverage by <1%.
The diff coverage is 87%.

@@          Coverage Diff           @@
##           master   #139    +/-   ##
======================================
+ Coverage      88%    89%   +<1%
======================================
  Files           5      5
  Lines         783    638   -145
======================================
- Hits          695    568   -127
+ Misses         88     70    -18


⚠ Bofrost.lu has degraded performance

In 308ed93, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1236 ms

Resolved: Bofrost.lu performance has improved in d0777ca after 10 minutes.


Update CI for node 4.x

Updates CI for node 4.x

If this is merged, please notify me so that I can update the dependencies, bump the version number, submit a new PR, and then publish to NPM.

@jfmercer merged; please release as per your comments


How to visualize depth map?

Hi,
In your paper, I saw the visualization results of depth map. However, when I run the eval_depth.py. I only obtain the error of evaluation and can not obtain the visualization results of depth map.
On flow task, I run the eval_flow.py. I can obtain the flow color map. So, how to visualize the depth map?
Best,
Mingliang

You can refer to this code. Remember to try another color map for consistency with our paper.


incubator-kie-issues#389: Include environment variables on all KIE Sandbox-related images to configure the port used

Closes: https://github.com/apache/incubator-kie-issues/issues/389
Added variables for the configuration of images:

Kie-Sandbox-Image:

KIE_SANDBOX_PORT

Cors-Proxy-Image:

CORS_PROXY_HTTP_PORT
CORS_PROXY_ORIGIN
CORS_PROXY_VERBOSE

Could these changes affect the kie-sandbox-distribution and kie-sandbox-helm-chart packages?

Hey @Josephblt, I gave this a better thought (and testing) and I don't think using Environment Variables for the port makes sense (I know... I was the one that wrote that in the original issue, my bad).
It doesn't make sense because the EXPOSE instruction is not executed during runtime, so the exposed port will always be the one defined in the ARG.
So let's say we set the ARG port as 8080 during build time, but we set the ENV as 9022 during runtime. The exposed port will still be 8080, but the app will be running at 9022.
Now, according to the Docker documentation, the EXPOSE instruction is only a way to document the port that is expected to be available, but in practice, you can still map any container port to any host port. The problem is that Kubernetes (and OpenShift) usually expects the exposed port to be the one where the app is available, so by default, all Services are created pointing to these ports.
Having said all that, having the ARGs for defining the ports is enough, and we don't need to change them during runtime.
What do you think?
PS1.: When using ARGs we can revert those sed commands back to the Containerfile.
PS2.: I discovered that OpenShift creates a bunch of environment variables by itself on its containers, potentially overwriting the ENVs we defined here, take a look:
KUBERNETES_SERVICE_PORT_HTTPS=443
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_SERVICE_PORT_8080_TCP=8080
WORKSPACEB8CB941D988C49CF_SERVICE_SERVICE_HOST=<IP_ADDRESS>
KUBERNETES_SERVICE_PORT=443
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT_8080_TCP_PROTO=tcp
HOSTNAME=runtime-tools-task-console-webapp-image-6b5df5fcbc-bn2jw
WORKSPACEB8CB941D988C49CF_SERVICE_PORT_4444_TCP=tcp://<IP_ADDRESS>:4444
NSS_SDB_USE_CACHE=no
WORKSPACEB8CB941D988C49CF_SERVICE_PORT_4444_TCP_PORT=4444
PWD=/
WORKSPACEB8CB941D988C49CF_SERVICE_SERVICE_PORT_EXEC=4444
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_SERVICE_PORT=8080
container=oci
HOME=/
KUBERNETES_PORT_443_TCP=tcp://<IP_ADDRESS>:443
WORKSPACEB8CB941D988C49CF_SERVICE_PORT=tcp://<IP_ADDRESS>:4444
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT_8080_TCP_ADDR=<IP_ADDRESS>
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT_BLA=8080
TERM=xterm
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_SERVICE_HOST=<IP_ADDRESS>
WORKSPACEB8CB941D988C49CF_SERVICE_SERVICE_PORT=4444
SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=<IP_ADDRESS>
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT_8080_TCP_PORT=8080
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT_8080_TCP=tcp://<IP_ADDRESS>:8080
KUBERNETES_SERVICE_HOST=<IP_ADDRESS>
KUBERNETES_PORT=tcp://<IP_ADDRESS>:443
KUBERNETES_PORT_443_TCP_PORT=443
WORKSPACEB8CB941D988C49CF_SERVICE_PORT_4444_TCP_ADDR=<IP_ADDRESS>
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT=tcp://<IP_ADDRESS>:8080
WORKSPACEB8CB941D988C49CF_SERVICE_PORT_4444_TCP_PROTO=tcp
_=/usr/bin/printenv

Out of all of these, only RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT_BLA was defined by me, as RUNTIME_TOOLS_TASK_CONSOLE_WEBAPP_IMAGE_PORT was being overwritten by OpenShift.

Here's an example of what that would look like: https://github.com/apache/incubator-kie-tools/pull/2226/commits/f5a525d5295ec86f67924c424e05fae01a9c0e23

Hello @tiagobento, @thiagoelg, I think we are set here. Thanks.

Hello @tiagobento. I think this is good to merge. Thanks.


[FLINK-3660] Measure latency and exposes them via a metric

This commit adds the initial runtime support for measuring latency of records going through the system.
I therefore introduced a new StreamElement, called a LatencyMarker.
Similar to Watermarks, LatencyMarkers are emitted from the sources at an configured interval. The default value for the interval is 2000 ms. The emission of markers can be disabled by setting the interval to 0. LatencyMarkers can not "overtake" regular elements. This ensures that the measured latency approximates the end-to-end latency of regular stream elements.
Regular operators (excluding those participating in iterations) forward latency markers if they are not a sink.
Operators with many outputs randomly select one to forward the maker to. This ensures that every marker exists only once in the system, and that repartition steps are not causing an explosion in the number of transferred markers.
If an operator is a sink, it will maintain the last 512 latencies from each known source instance.
The min/max/mean/p50/p95/p99 of each known source is reported using a special LatencyGauge from the sink (every operator can be a sink, if it doesn't have any outputs).
This commit does not visualize the latency in the web interface.
Also, there is currently no mechanism to ensure that the system clocks are in-sync, so the latency measurements will be inaccurate if the hardware clocks are not correct.

The metrics documentations contains a list of all measured metrics, we should add this metric there as well.

Good point, thank you! I'm not sure yet if I keep the format of the metrics like this.
I find those nested HashMaps quite clumsy. Once this PR and the metrics-in-webinterface-pr is merged, I'll add the latency to the web interface as well .. Then I can make a final decision on the format.

Thanks for the contribution @rmetzger. I briefly skimmed over the code and noticed that LatencyMarker don't participate in windows. Thus, I was asking myself what latency actually means. Could you please define properly what latency measures and how this can be a useful metric for users (especially wrt windows and window functions).

I agree that the semantics are not properly defined. I'll add a section to the documentation explaining what users can expect from the LatencyMarks.

I got some offline feedback from @aljoscha regarding the change to implement the methods required by OneInputStreamOperator and TwoInputStreamOperator in AbstractStreamOperator to avoid "polluting" all the custom operators.
I'm currently working on fixing the EventTimeWindowCheckpointingITCase, which seems to be failing more frequently due to my change.

@aljoscha I updated the pull request, which now builds green (just rebasing fixed the issues).
I also keep metrics now per operator, not only for the sinks.

Thank you for the review @zentol and @aljoscha.
I addressed your comments and rebased the code to the current master. I'm currently testing the change again locally. Once that is completed successfully, I would like to merge the change. This pull request has been open for a long time, and I don't want to rebase it again ;)

I had an offline discussion with @aljoscha about this PR, and we decided to remove the isSink flag from the AbstractStreamOperator.
I updated the PR.

This looks good to merge now! 👍

Thanks a lot for reviewing it again!


Issue for phone number formatting while exporting to Excel & CSV

I am facing an issue for phone number formatting while exporting to Excel & CSV
Scenario:
During export phone number's leading zero (0) are getting removed.
And if adding country code (+353) it will remove plus (+) sign from the field.
e.g.
Case: 1 number is 0########## and during export it's removed leading zero and converts to ##########
Case: 2 number is +353########## and during export it's removed plus sign and converts to 353##########
How to fix this ? Does anyone have idea about it ?

Also facing following issue while while using exportFormat(NumberFormat::FORMAT_TEXT) while formatting mobile number:

Along with that we used ecportFormat() in our datatable yet while exporting the excel sheet shows monile number column format as 'integer':

Could you please help us with this issue?

Along with that we used ecportFormat() in our datatable yet while exporting the excel sheet shows monile number column format as 'integer':

Could you please help us with this issue?

I think NumberFormat is a php issue, make sure the class is imported. For exportFormat, are you using Laravel Excel or the laravel-datatables-export package?

I think NumberFormat is a php issue, make sure the class is imported. For exportFormat, are you using Laravel Excel or the laravel-datatables-export package?

Using laravel-datatables-export in Laravel 8.x version
what is the solution on it?

See the readme docs for possible options: https://github.com/yajra/laravel-datatables-export#formatting-columns
Note: formatting doesn't work on CSV as it is an OpenSpout limitation.


[Feature Request] Spacing Utilities

Existing Component
No
Component Name
Layout
Description
Element UI already provides utilities to control the horizontal layout of elements as well as their visibility, but doesn't offer any tools to control the vertical spacing.
It would be nice to also have a set of spacing utilities similar to what Bootstrap 4 is offering https://getbootstrap.com/docs/4.0/utilities/spacing/ to control adjust the spacing (margin & padding) of elements.

Sorry, we have no plan to support this.

In addition to layout - it would be useful to have helper utilities for spacing around cards and other items.

I ended up solving this by including tachyons-spacing, a lightweight CSS lib which provides a set of responsive padding/margin helpers.
Docs: http://tachyons.io/docs/layout/spacing/


Add blank lines

Fixes #51
Every other template has blank lines in their project files:

angular
classlib
console
mstest
mvc
react
reactredux
web
webapi
xunit

This is the only template with a "squashed" file format, which is a tiny bit less nice to work with.
This PR just adds a line between the <PropertyGroup> and <ItemGroup>s.
cc/ @Eilon

Thanks!


Ability to exclude directories from search.

After reading the documentation I failed to find anything related to this feature I'd like to have. My apologies if I missed it and it is indeed documented.
So, I have fairly large project and your plugin is really useful when refactoring and quick searching for things am not sure of their location. However, I do have libraries/ directory which is filled with some annoying stuff which always makes my quickfix window unreadable. It would be incredibly useful if we could globally specify ignore list for search, but also have an option to specify ignore before starting a search.
Thanks!

Grepper merely provides the means for easy access to the tools. You decide how they're run. Excluding directories should be by the tools.
E.g. the following searches "foo" without taking "libraries/" into account:
$ git grep 'foo' -- * ':!libraries'

So you do the same at the prompt:
git grep -nI> 'foo' -- * ':!libraries'

@MeanEYE ping

Ah sorry didn't know you were expecting my response. You can close the
issue as your suggestion works.
On Apr 2, 2016 2:53 AM, "Marco Hinz"<EMAIL_ADDRESS>wrote:

@MeanEYE https://github.com/MeanEYE ping
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/mhinz/vim-grepper/issues/33#issuecomment-204611491


Add WiFi channel for hotspot to config

We currently hardcode the WiFi channel for the hotspot. We should make this an option in Astoria.toml so that we can change it without changing code.

Are we not able to let the Pi chose the best channel at the time? At a competition event, whatever the default channel is is probably going to get pretty crowded.

Are we not able to let the Pi chose the best channel at the time? At a competition event, whatever the default channel is is probably going to get pretty crowded.

That sounds like a separate thing to me and also is a much larger and complex task to implement scanning and channel selection. There's a thing in the kernel for ACS, but we'd need to test it with the Pi WiFi driver and things.
I think for now it's probably safest to move the robotics onto channel 6 so that we don't interfere with comp infrastructure.

Ah I see, I had thought it was as simple as pick_the_best_channel = true. I agree if it's something we'd have to implement ourselves it's a separate thing probably not worth doing for a while.

Ah I see, I had thought it was as simple as pick_the_best_channel = true

It is sometimes. We need to make sure that both the kernel and hostapd are being compiled with ACS enabled (I haven't checked yet), that the Broadcom driver supports it (this is the biggest question) and then we need to add the config option to hostapd.
Unfortunately hostapd silently fails if any of the above isn't true, so I'd rather we were really sure. The fallback mechanism appears to be a random channel.

The other approach would be to do a network scan before starting the hotspot to find an uncongested channel. However that would delay the start of the hotspot.


Reinforcement Learning Sensor Manager

Added a reinforcement learning sensor manager. Currently only working for Linux-based OSes.
There was a recent numpy update that might make tests fail until tensorflow is updated to fix the error.

It might also be worth adding some comments on how quickly it runs in comparison the the brute force approach? I ran it as a notebook with %%time in cells 12, 13 and 15 - although the training took 2min 36s, once trained the sensor management tracking loop took 2.38s as opposed to 1min 20s for the brute force

Everything works well and I'm ready to approve except I'm still struggling to generate the docs without installing the reinforcement dependencies. I wonder if I'm having a similar issue as mentioned here: https://github.com/dstl/Stone-Soup/pull/264#issuecomment-653587283
I'll ask @sdhiscocks about it as I can't get that solution to work yet either.

Everything works well and I'm ready to approve except I'm still struggling to generate the docs without installing the reinforcement dependencies. I wonder if I'm having a similar issue as mentioned here: #264 (comment)
I'll ask @sdhiscocks about it as I can't get that solution to work yet either.

I've been able to get the docs running without installing reinforcement dependencies. With a fresh virtual environment, I do:
pip install -e ".[dev,orbital]"
I clone the pull request, and ensure that nothing remains in the docs source folder:
git clean -xf docs/source/auto_*
Then I do a git pull to download the notebook, rst, and md5 files from the PR repo, and then build the docs, and that works for me.
In the comment you linked, md5 checksums should now be OS independent, so it should work on both windows and linux. I verified the above method on Windows using WSL.


Write a Python program to convert string to consonantcase

Description
Write a Python program to convert string to consonantcase
Consonantcase is a style of writing in which all consonants are converted to uppercase and all vowels are converted to lowercase.
Input  : "hello world"
Output : "HeLLo WoRLD"

How to contribute

Save the solution in convert-string-to-consonantcase.py file
Add convert-string-to-consonantcase.py file in program/convert-string-to-consonantcase folder

!assign


Adding and Removing Edge Lists

Added utility functions for adding and removing lists of edges.

Also could you add some tests?

Also could you add some tests?
Sure, I just added them.

I added some checks for formatting. Could you format your code:
julia> cd(pkgdir(NamedGraphs))

julia> using JuliaFormatter

julia> format(".")

Codecov Report

Merging #29 (3e92dba) into main (4dcbda7) will decrease coverage by 0.96%.
The diff coverage is 40.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main      #29      +/-   ##
==========================================
- Coverage   77.90%   76.95%   -0.96%
==========================================
  Files          19       19
  Lines         774      794      +20
==========================================
+ Hits          603      611       +8
- Misses        171      183      +12

Impacted Files
Coverage Δ

src/Graphs/abstractgraph.jl
51.17% <40.00%> (-1.50%)
:arrow_down:

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

Thanks!


not listed as contributor

hey there 4 days ago i  monthly i became monthly backers  but still im not listed ?  organization : online roulette uk ,thx

Which Collective did you donate to?


Add include / exclude rules

Allow the configuring of include and exclude rules. By default you would have:
include="*"
exclude=""

Might be useful to do something like:
// don't process the less css global include files
exclude = "css/less/global/*";

or
// only process js, css and the bootstrap.less file (ignoring other .less files that might be @imported in the bootsrap.less file)
include = "*.js, *.css, *bootstrap.less";

Is there any progress on this issue, as i'm running into the exact problem you've highlighted when bootstap's less files are within the staticDirectory cfstatic bombs because the individual less files don't compile on their own.
For now i've set things up such that bootstrap is outside staticDirectory and i include the bootstrap less files into my apps "master" less stylesheet.

I've just pushed a change to implement this. You can use includePattern and excludePattern config options (both regular expressions). So, perhaps (untested example):
includePattern = '(\.js)|(\.css)|(bootstrap\.less)$
This has not been tagged as a release and still undocumented. Please download the bleeding edge here and let me know how you get on if you try it.
TIA

I forgot to include a ref to this issue in my commit, but i've sent a pull request
https://github.com/DominicWatson/cfstatic/pull/28


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>Minor Changes

#5350 7fd7fe3 Thanks @jculvey! - feat: Rename 'webFramework' --type argument to 'web-framework' and show deprecation warning when used.

<EMAIL_ADDRESS>Minor Changes

#5310 528c011 Thanks @penalosa! - feat: Watch the entire module root for changes in --no-bundle mode, rather than just the entrypoint file.

#5327 7d160c7 Thanks @penalosa! - feat: Add wrangler pages download config

#5284 f5e2367 Thanks @CarmenPopoviciu! - feat: Add wrangler.toml support in wrangler pages dev
As we are adding wrangler.toml support for Pages, we want to ensure that wrangler pages dev works with a configuration file.

#5353 3be826f Thanks @penalosa! - feat: Updates wrangler pages functions build to support using configuration from wrangler.toml in the generated output.

#5102 ba52208 Thanks @pmiguel! - feature: add support for queue delivery controls on wrangler queues create

Patch Changes

#5327 7d160c7 Thanks @penalosa! - fix: Use specific error code to signal a wrangler.toml file not being found in build-env

#5310 528c011 Thanks @penalosa! - fix: Reload Python workers when the requirements.txt file changes

<EMAIL_ADDRESS>Patch Changes

Updated dependencies [7d160c7, 528c011, 7d160c7, f5e2367, 3be826f, 528c011, ba52208]:

<EMAIL_ADDRESS>

this PR itself is covered by CR-847734


Linux: update.sh apply chmod +x to SteamPrefill on update

If update.sh is run, it would be helpful if chmod +x is re-applied to SteamPrefill.
If you wanted it to be more security conscious before the upgrade you get check if the existing older binary has the execute flag, and if it does, set chmod +x at the end of the upgrade. If not, then leave it be.
For me as a user, every time the binary is replaced with a new version, I have to re-apply chmod +x to SteamPrefill or my scripts will break.
Granted I could script the chmod +x myself as well, its a nice to have though ^^

Taken care of in pull request #85


nextcloud update: General error: 1 no such table: oc_appconfig

Describe the bug
I have been trying to upgrade my nextcloud server via nixops but activation fails because of a nextcloud error:
systemctl status nextcloud-setup.service
● nextcloud-setup.service
   Loaded: loaded (/nix/store/ny7pszv7x741kmqamsxhhiz2haxizlmc-unit-nextcloud-setup.service/nextcloud-setup.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2019-08-23 14:38:08 JST; 25s ago
  Process: 2208 ExecStart=/nix/store/vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start (code=exited, status=1/FAILURE)
 Main PID: 2208 (code=exited, status=1/FAILURE)

Aug 23 14:38:08 gitolite vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start[2208]: #25 /nix/store/i2xyg2ba0pkiwckm0q6w76skiz93m6vg-nextcloud-16.0.4/lib/private/legacy/app.php(114): OC_App::getEnabledApps()
Aug 23 14:38:08 gitolite vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start[2208]: #26 /nix/store/i2xyg2ba0pkiwckm0q6w76skiz93m6vg-nextcloud-16.0.4/lib/base.php(640): OC_App::loadApps(Array)
Aug 23 14:38:08 gitolite vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start[2208]: #27 /nix/store/i2xyg2ba0pkiwckm0q6w76skiz93m6vg-nextcloud-16.0.4/lib/base.php(1056): OC::init()
Aug 23 14:38:08 gitolite vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start[2208]: #28 /nix/store/i2xyg2ba0pkiwckm0q6w76skiz93m6vg-nextcloud-16.0.4/console.php(46): require_once('/nix/store/i2xy...')
Aug 23 14:38:08 gitolite vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start[2208]: #29 /nix/store/i2xyg2ba0pkiwckm0q6w76skiz93m6vg-nextcloud-16.0.4/occ(11): require_once('/nix/store/i2xy...')
Aug 23 14:38:08 gitolite sudo[2214]: pam_unix(sudo:session): session closed for user nextcloud
Aug 23 14:38:08 gitolite vadyi9z59gybajxdgv9xb2mxcslawpws-unit-script-nextcloud-setup-start[2208]: #30 {main}
Aug 23 14:38:08 gitolite systemd[1]: nextcloud-setup.service: Main process exited, code=exited, status=1/FAILURE
Aug 23 14:38:08 gitolite systemd[1]: nextcloud-setup.service: Failed with result 'exit-code'.
Aug 23 14:38:08 gitolite systemd[1]: Failed to start nextcloud-setup.service.

I am the single user of this nextcloud instance so it doesn't matter much. I wanted to share the error in case it was useful. Otherwise I wondered how I could fix it ? I thought about removing the nextcloud module and enabling it again so that it appears as a fresh install. But I am not sure it won't reuse the old state (aka "database").
cc @flokli @Ma27

@teto in order to properly reproduce the issue, can you please tell us the nixpkgs rev you're on? :)

it's a local checkout with some changes (but none to nextcloud).
system: "x86_64-linux", multi-user?: yes, version: nix-env (Nix) 2.3pre20190712_aa82f8b, channels(teto): "", channels(root): "", nixpkgs: /home/teto/nixpkgs
I've just tried running the nixops deploy NIX_PATH=nixpkgs=channel:nixos-unstable ./dev-shell (which would now be 54c76638733ca5e85aefea3caefd3286e8b537c5) with the same result.

Ok, I just had a closer look at the isntaller's code and the NixOS module, to track down the actual issue I have the following questions:

Which tables exist in your Nextcloud database? (oc_appconfig isn't something new, so I doubt that this is due to a broken migration currently)
Which tableprefix is set? (if left empty or not declared, oc_ is used by Nextcloud)
Is it possible to give some more information about the stuff in /var/lib/nextcloud/config/{,override.}config.php? (Without secrets etc. of course)

I suppose my db was in /var/lib/nextcloud/data/nextcloud.db (I have an owncloud.db next to it :s ) but when I load it with sqlite3 it looks empty "> .tables" returns nothing :/ is that the correct way to dump the schema.
Here are the config

cat /var/lib/nextcloud/config/config.php                                                                               ~
<?php
$CONFIG = array (
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/var/lib/nextcloud/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/lib/nextcloud/store-apps',
      'url' => '/store-apps',
      'writable' => true,
    ),
  ),
  'datadirectory' => '/var/lib/nextcloud/data',
  'skeletondirectory' => '',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'log_type' => 'syslog',
  'passwordsalt' => 'fake',
  'secret' => 'fake',
  'dbtype' => 'sqlite3',
  'version' => '<IP_ADDRESS>',
  'overwrite.cli.url' => 'http://localhost',
  'installed' => true,
  'instanceid' => 'oc8qd89r2bcd',
  'loglevel' => 2,
  'maintenance' => false,
  'log_level' => '0',
  'app_install_overwrite' =>
  array (
    0 => 'calendar',
  ),
  'trusted_domains' =>
  array (
    0 => 'nixos.fake.net',
  ),
);

cat /var/lib/nextcloud/config/override.config.php
<?php

$CONFIG = [
  'apps_paths' => [
    [ 'path' => '/var/lib/nextcloud/apps', 'url' => '/apps', 'writable' => false ],
    [ 'path' => '/var/lib/nextcloud/store-apps', 'url' => '/store-apps', 'writable' => true ],
  ],
  'datadirectory' => '/var/lib/nextcloud/data',
  'skeletondirectory' => '',
  'memcache.local' => '\OC\Memcache\APCu',
  'log_type' => 'syslog',
  'log_level' => '0',

  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',

  'dbuser' => 'nextcloud',

  'dbtype' => 'sqlite',
  'trusted_domains' => ["nixos.fake.net"],
];

Is there a backup of the database somewhere ? (I can't access the online server anymore: Internal Server Error)

That's indeed pretty weird :/
I'll set up a Nextcloud instance with sqlite3 locally during the day and report back.

Is there a backup of the database somewhere ? (I can't access the online server anymore: Internal Server Error)

AFAIK Nextcloud doesn't do automatic backups, I usually create regular, automated backups with some custom service.
Regarding your current problem: I tested a Nextcloud with sqlite in a VM and I didn't encounter any issues (including upgrade stuff). Do you recall the previous Nextcloud version you used (there's maybe something broken in their updater).

I suppose my db was in /var/lib/nextcloud/data/nextcloud.db (I have an owncloud.db next to it :s )

Could you please explain to me why there's an owncloud.db? I just checked the Nextcloud code and the file is <dbname>.db, so there shouldn't(tm) be an owncloud database.

Thanks for looking into it.
I installed the nextcloud as a best effort only, I was not serious about the VM (used for experimentation, with nixos-unstable etc.). As I am going to lose access to the VM as well, I think I will just subscribe to fastmail and use their instance instead. I am not sure looking into the source will prove worthwile. Closing.

Ack. In case anybody else stumbles upon this issue, feel free to ping me :)

I recently updated my nextcloud instance from NixOS 19.03 with state version 18.09 to NixOS 19.09 with state version 19.09 and faced the same issue. I noticed owncloud.db was several MB in size whereas nextcloud.db was just a few KB. After deleting nextcloud.db and renaming owncloud.db to nextcloud.db I was able to run systemctl start nextcloud-setup which successfully upgraded my database and fixed the installation. I guess somewhere in between these versions they renamed the database file.

thanks. I am really glad to know even though I have since then moved on to another nextcloud server.
I had no idea what I had done wrong, seems like it was not my fault after all :D


[Base] - Touchups

Ignite Base Change

[x] Works on iOS/Android/XDE
[x] Tests Pass (run: npm run test)
[x] Code is StandardJS compliant (run: npm run lint)

Small modifications after a meeting with @skellock
Firstly, to make the Themes screen auto-generate, and secondly to rename Base.


crashed when used with

Wasn't sure if I have to post this in ui.bootstrap or ui.router
But it happens when you are using <base href="/any-base/"> altogether with ui.router and ui.bootstrap I can't seem to get out of the problem. At first, I thought this is a problem with ui.router; turns out when you comment the ui.bootstrap in angular dependencies, the problem stops.
The problem it caused is a continuous loop to load the required js files

The problem does not happen when you are using <base href="/"> or <base href="/any-base"> but this doesn't produce wanted result. the use case is that: like to make a multiple-angular-UI application (suppose https://host is where I store the primary application), I need to make a separate angular application by heading to https://hosts/admin, using the same API as frontend. Using a  will result all ui-sref="..." routes the link to https://hosts/admi/path/to/route instead of https://hosts/admin/path/to/route
Here's the example of code where it loads js infinitely
https://embed.plnkr.co/Nw4fPlELncOPoWdB2ehe/
although it won't work if not hosted on a single host
Angular: 1.5.8
UIBS: 2.1.3
UIR: 0.3.1
Bootstrap: 3.3.7

@christopherthielen wasn't this fixed (where the last character in base was getting stripped) or did we punt it off to the angular team since it was a bug in ng core?

@eddiemonge I honestly don't recall...  #2357 maybe?


Performance

I believe this module is responsible for a huge performance break in my current jsdom-based project.
Specifically this line https://github.com/chad3814/CSSStyleDeclaration/blob/master/scripts/generate_properties.js#L22
I am not qualified to say how to solve this, but it seems that dynamically loading a node module with readFileSync is not a good idea.
I'd love to hear your throughts.

Well, generate_properties.js just runs once before the npm module is published (see https://github.com/chad3814/CSSStyleDeclaration/blob/master/package.json#L37). It does that, in fact, to speed things up.
If you have some code you believe to be slow, I can try to look into it.

I have a test case that uses vdom-virtualize to serialize a 20x10 table. With the current code it takes 14s, with my proposed changes in #34 it takes 475ms.


NNAPI doesn't support tensors with rank 0 (index 3 name PadV2/constant_values)

Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template
System information

OS Platform and Distribution : Windows 10 and Android 9.0
Mobile device : Xiaomi 8
TensorFlow version : org.tensorflow:tensorflow-lite:0.0.0-nightly (using 1.11.0 has the same problem)
Model: resnet18 convert from Pytorch

logs from Android 9.0
E/tflite: NNAPI doesn't support tensors with rank 0 (index 3 name PadV2/constant_values)
E/tflite: Returning error since TFLite returned failure nnapi_delegate.cc:736.
Failed to build graph for NNAPI
other
if I use resnet50 from tensorflow.contrib.slim.python.slim.nets, it also has similar problem like:
E/tflite: NNAPI doesn't support tensors with rank 0 (index 7 name inference_model/Mean/reduction_indices)
Returning error since TFLite returned failure nnapi_delegate.cc:736.
Failed to build graph for NNAPI

@RoyIronGrey In order to expedite the trouble-shooting process, please provide a code snippet to reproduce the issue reported here. Thanks!

@RoyIronGrey In order to expedite the trouble-shooting process, please provide a code snippet to reproduce the issue reported here. Thanks!

protected Interpreter tflite;
private Interpreter.Options tfliteOptions = new Interpreter.Options();

tfliteModel = loadModelFile(activity);

/** This is for tensorflow-lite:0.0.0-nightly **/
/** If I activate this option, the error like the title will occur**/
tfliteOptions.setUseNNAPI(true);

tflite = new Interpreter(tfliteModel, tfliteOptions);

protected String getModelPath() {
      return "resnet18_mv.tflite";
}

Below is Python Code and Script to describe how to get the model
'''
  Package Version
    torch:       0.4.0
    torchvision: 0.2.1
    tensorflow:  1.12.0
    mmdnn:       0.2.4
'''

'''
  Part 1: Pytorch resnet18 saving
'''

# Resnet18 model from torchvision
base_model = getattr(torchvision.models, 'resnet18')(pretrained=True)

# Load weights
weights    = 'resnet18_model_checkpoint.pth.tar'
checkpoint = torch.load(weights)
base_dict  = {'.'.join(k.split('.')[1:]): v for k,v in list(checkpoint['state_dict'].items())}
base_model.load_state_dict(base_dict)
base_model.eval()

# Save model
model_path = 'resnet18_model.pth'
torch.save(base_model, model_path)

'''
  Part 2: Resnet18 from Pytorch (.pth) to Tensorflow (.pb) with MMdnn
          See https://github.com/Microsoft/MMdnn/blob/master/mmdnn/conversion/pytorch/README.md#convert-pytorch-pre-trained-models-to-ir
'''

mmtoir -f pytorch -d resnet18 --inputShape 3,224,224 -n resnet18_model.pth
mmtocode -f tensorflow --IRModelPath resnet18.pb --IRWeightPath resnet18.npy --dstModelPath tf_resnet18.py
mmtomodel -f tensorflow -in tf_resnet18.py -iw resnet18.npy -o tf_resnet18 --dump_tag SERVING

'''
  Part 3: Tensorflow (.pb) to Tensorflow Lite (.lite) with TFLiteConverter.from_session
'''

with tf.Session() as sess:

    mmdnn_pb_path = 'tf_resnet18/'

    # Load pb model file (MMdnn, see https://github.com/Microsoft/MMdnn/blob/master/mmdnn/conversion/tensorflow/README.md#reuse-the-converted-tensorflow-model)
    tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], mmdnn_pb_path)

    input_node_name  = 'input'
    output_node_name = 'dense/BiasAdd'
    input_tensor     = sess.graph.get_tensor_by_name(input_node_name  + ':0')   # Input tensor
    output_tensor    = sess.graph.get_tensor_by_name(output_node_name + ':0')   # Logits tensor

    # Convert
    converter        = tf.contrib.lite.TFLiteConverter.from_session(sess, [input_tensor], [output_tensor])
    tflite_model     = converter.convert()

    open('tf_resnet18.tflite', "wb").write(tflite_model)

@RoyIronGrey In order to expedite the trouble-shooting process, please provide a code snippet to reproduce the issue reported here. Thanks!

And Thanks for your attention!

@miaowang14 can you provide an update on scalar support?

I have a pending fix internally, and will further test / improve it. Looking forward to get it ready for the next couple of days.

@RoyIronGrey is the issue still reproducible on top of tree?

@RoyIronGrey is the issue still reproducible on top of tree?

Thanks for your reply. Yes, If I use the same edition of TF lite API. Is there anything new or any new edition for this problem?

@RoyIronGrey is the issue still reproducible on top of tree?

Or I may misunderstand what you mean

@RoyIronGrey is the issue still reproducible on top of tree?

Or I may misunderstand what you mean

@RoyIronGrey We just submitted a couple of fixes related to this issue. I don't think tensorflow-lite:0.0.0-nightly or 1.11.0 build include them.
You might be able to build TFLite binaries from source and try it out: https://www.tensorflow.org/lite/guide/build_arm64

The nightly should have the fixes, but you might need to clear your gradle cache.

The nightly should have the fixes, but you might need to clear your gradle cache.
Yes, It works. But why does it cost more time and unsteady?(Maybe I made some mistakes)
Below it's the difference

     //If set useNNAPI true
     tfliteOptions.setUseNNAPI(true);
     //time from Log
     infer mv/frame: 375 ms
     infer mv/frame: 175 ms
     infer mv/frame: 516 ms

     //If set useNNAPI false
     tfliteOptions.setUseNNAPI(false);
     //time from Log
     infer mv/frame: 100 ms
     infer mv/frame: 87 ms

I guess the performance issues could be related two possible causes:

There are still operations in the Model not supported by NNAPI, so they fallback to TFLite CPU implementation. The overhead and sync cost between multiple subgraphs  could be high.
The model itself is a floating point model, while Mi8 may just have an hardware accelerator (Hexagon DSP) that can only accelerate quantized 8bit models.

I will mark this specific issue as fixed. But feel free to keep comment on it or create new ones if you have questions about the performance and NNAPI delegate.

I will mark this specific issue as fixed. But feel free to keep comment on it or create new ones if you have questions about the performance and NNAPI delegate.

Thanks a lot! I'll stay focus on the processing of this project as it really supports my research


Support for Gradle 7

Motivation:
The upstream Gogradle doesn't
seem to be maintained anymore.

https://github.com/gogradle/gogradle/issues/328
https://github.com/gogradle/gogradle/issues/330

I wanted to migrate a project that builds go cli client to Gradle 7 but
Gogradle was a blocker.
https://github.com/line/centraldogma/blob/b69bb00f199c0009ce58994e21c75208327f66d0/cli/build.gradle#L20
So I decided to fork the upstream code and make the plugin run in
Gradle 7. But I don't know the internal and the full features of
Gogradle. I strongly wish this repo would remain a temporary solution
until the maintainer of the upstream comes back.
Modifications:

Update dpendencies to th latest one

Gradle version is upgraded to 7.5

Fix GogradleModule to inject a Project instance correctly.

Guice tried to bind 'project' to DefaultProject.class which causes
the following error.1) [Guice/InjectAbstractMethod]: Injected method DefaultProject.getBuildscript() cannot be abstract.

Implement new method introduced in Gradle 7 in GoTestResultsProvider
Shade all depedencies apart from Guice.// pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <!-- This module was also published with a richer model, Gradle metadata,  -->
  <!-- which should be used instead. Do not delete the following line which  -->
  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->
  <!-- that they should prefer consuming it instead. -->
  <!-- do_not_remove: published-with-gradle-metadata -->
  <modelVersion>4.0.0</modelVersion>
  <groupId>kr.ikhoon</groupId>
  <artifactId>gogradle</artifactId>
  <version>0.12.0-RC1</version>
  <dependencies>
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
      <version>5.1.0</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>

Result:
Gogradle now runs with Gradle 7.
plugins {
  id 'kr.ikhoon.gogradle' version '0.12.0-RC1'
}

Side note:
The new plugin uploaded to Gradle portal has not been approved yet.


Show tab in right dock by default

Currently, you need to explicitly run the jitsi jupyterlab command before the right tab is attached and can be opened.
We should instead have it attach by default, but not show anything until clicked.
I think this requires we have another Widget, and this widget is in that widget.

woop woop, this is done now.


Parking assistance

Acceptance Criteria.
Scenario: Driving through a congested area
Given: obstacles are in the way
When: the car should sense obstacles around it
Then: calculate the distance between the objects and it, display it on the distance panel.

Decided not to implement.


Fix settings labels and annotations for all services

What this PR does:
Fix settings labels and annotations for all services
Which issue(s) this PR fixes:
Fixes #
Checklist

[ ] CHANGELOG.md updated - the order of entries should be [CHANGE], [FEATURE], [ENHANCEMENT], [BUGFIX]

Closed due to #164. Thank you!


Specify Celluloid::IO::UDPSocket#recvfrom to flags=0

This is a workaround for behavior change against Celluloid::IO with Ruby 2.3.
see also: https://github.com/celluloid/celluloid-io/pull/163

This commit will fix some tests, but there is a failing test on Ruby 2.3.
E, [2015-12-31T03:36:26.560601 #5714] ERROR -- : Actor crashed!
RuntimeError: can't modify frozen String
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/2.3.0/resolv.rb:2463:in `block in create'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/2.3.0/resolv.rb:2463:in `scan'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/2.3.0/resolv.rb:2463:in `create'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-io-0.16.2/lib/celluloid/io/tcp_socket.rb:56:in `initialize'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:240:in `new'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:240:in `try_tcp_server'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:199:in `try_server'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:157:in `block (2 levels) in dispatch_request'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid.rb:407:in `block in timeout'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/actor.rb:252:in `timeout'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid.rb:406:in `timeout'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:156:in `block in dispatch_request'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:284:in `block in each'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:281:in `each'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:281:in `each'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:147:in `dispatch_request'
	/Users/tricknotes/src/github.com/ioquatix/rubydns/lib/rubydns/resolver.rb:93:in `query'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/calls.rb:26:in `public_send'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/calls.rb:26:in `dispatch'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/calls.rb:63:in `dispatch'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/cell.rb:60:in `block in invoke'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/cell.rb:71:in `block in task'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/actor.rb:357:in `block in task'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/tasks.rb:57:in `block in initialize'
	/Users/tricknotes/.rbenv/versions/2.3.0-dev/lib/ruby/gems/2.3.0/gems/celluloid-0.16.0/lib/celluloid/tasks/task_fiber.rb:15:in `block in create'

However this is a Ruby's bug and it is fixed on trunk.

Looks fine, but we should revert once Celluloid::IO releases a fixed version.

Looks fine, but we should revert once Celluloid::IO releases a fixed version.

It seems like 2.3.0 is a bit of a borked release? Perhaps we should skip 2.3.0 and wait for 2.3.1?

I think so too :<

maybe they will do a patch release which fixes this broken behaviour? or is it slated for 2.3.1?


URL Scheme for integration with other apps?

It'd be awesome if Helium had a URL scheme so we could have like a bookmarklet or Chrome Extension to open a URL in Helium.

I checked the code and it has URL scheme. You can use from terminal by entering
$open helium://https://www.youtube.com/your_video
About Chrome Extension, Google Chrome does not allow directly run a command (like above). It only allows you to communicate with a particular app by message passing and this requires some changes on  App code.
https://developer.chrome.com/extensions/nativeMessaging

done that #33

fyi - I just made an alfred workflow for Helium, which you can grab here. Lets you open a URL in Helium with h:{query} :)

Couldn't get it to work via iTerm. But I got it to work with this AppleScript:
tell application "System Events"
	tell current location of network preferences
		set VPN to service "My VPN Connection" -- your VPN name here
		if exists VPN then connect VPN
		repeat while (current configuration of VPN is not connected)
			delay 1
		end repeat
	end tell
end tell

set appname to "Helium"
tell application appname to launch
tell application "System Events"
	repeat until visible of process appname is true
		delay 0.5
	end repeat
end tell

do shell script "open helium://http://google.com" -- your default URL here

I made this new Workflow for opening the current Safari tab video on Helium! Its available here: https://github.com/txaidw/OpenInHelium_AlfredWorkflow
I hope you enjoy!
:D

@txaidw Really cool, nice!

Closing because this was implemented a while ago


linkage section

decide how the linkage section should be implemented.
my current preference is to have the program behave like a function, taking the linkage section as input parameters.
The linkage sections is only allowed to have copy member inside and can only be called with the same copy members.
this way each copy member could be regarded as its own type.
See also: https://github.com/LoPoHa/CobolTruffle/issues/12

partially fixed in #32

The check is currently disabled in #46, but it should be enabled once it is designed to work:
Should a copy have only one root variable and that variable has to be passed or is it allowed to pass a variable that is not (the only) root?


Inconsistency between CardPreAuthorization and PayInExecutionDetailsDirect

In com.mangopay.entities.CardPreAuthorization there is SecureModeNeeded attribute
 @SerializedName("SecureModeNeeded")     private String secureModeNeeded with getter and setter method.
In com.mangopay.entities.subentities.PayInExecutionDetailsDirect there is also SecureModeNeeded attribute, but instead of getter method there is "isSecureModeNeeded()" function that return a Boolean
public boolean isSecureModeNeeded() {
        if (ObjectTool.nonNull(secureModeNeeded)) {
            return Boolean.parseBoolean(secureModeNeeded);
        } else {
            return false;
        }
}

in order to maintain consistency between Entities is better to introduce the isSecureModeNeeded() also in CardPreAuthorization Class, or remove it in from PayInExecutionDetailsDirect

Dear @federicogatti,
Thanks for your feedback, which is good :)
We will enhance this ASAP and deprecate old getters and setters, ensuring this is not breaking.

Fix released


[Event Request] codeunit 6620 "Copy Document Mgt."- OnAfterUpdatePurchCreditMemoHeader

Hi, would it be possible to get an event OnAfterUpdatePurchCreditMemoHeader codeunit 6620 "Copy Document Mgt.", like this :
    local procedure UpdatePurchCreditMemoHeader(var PurchaseHeader: Record "Purchase Header")
    var
        PaymentTerms: Record "Payment Terms";
        ToSalesHeader: Record "Sales Header";
    begin
        with PurchaseHeader do begin
            "Expected Receipt Date" := 0D;
            GLSetup.Get();
            Correction := GLSetup."Mark Cr. Memos as Corrections";
            if ("Payment Terms Code" <> '') and ("Document Date" <> 0D) then
                PaymentTerms.Get("Payment Terms Code")
            else
                Clear(PaymentTerms);
            if not PaymentTerms."Calc. Pmt. Disc. on Cr. Memos" then begin
                "Payment Discount %" := 0;
                "Pmt. Discount Date" := 0D;
            end;
        end;

        OnAfterUpdatePurchCreditMemoHeader(ToSalesHeader);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterUpdatePurchCreditMemoHeader(VAR ToSalesHeader : Record "Sales Header")
    begin
    end;

Thanks!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Demo CLA

Demonstation

You did it @openanthem-admin!
Thank you for signing the Anthem Opensource Software CLA.


CORS error

Getting Cross Origin error in server.

Could you provide the exact error raised as displayed in logging

The last log url was this:
31-Dec-2023 17:09:53<PHONE_NUMBER>) - The Hunter : INFO - RESPONSE - GET - /cdn-cgi/challenge-platform/scripts/jsd/main.js? - ***

I think it's a human verification test.

Yeah it seems to be a captcha challenge. I've no idea on addressing that. Hope we gonna find way out with time.


Work View Validation

We need client side validation in place for fields publication date (may be able to take @rschenk work from CHO), rights, subject auto complete.
may want to refer to #265

Current thinking is to allow the date field to be free text, we implement a date picker that allows a user to select a specific date or they can enter their own free form date. The only date validation will be on ETDF.
Only date validation will be on front-end using javascript we will not do validation on the model.


Implement SVML Intrinsics paths for VS2019 builds.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: darkscott sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Provides a good solution for VS 2019 SSE paths for https://github.com/microsoft/DirectXMath/issues/12

Resolved conflicts, some minor code review. Submitted in this commit


Change Change AsyncRetryOp<> to derive from AsyncOperation

Per the discussion in #1289, we want to allow application developers to cancel asynchronous operations.
If the application requests a cancelation then the Cancel() operation should:

[ ] Set the state of the class so not new requests are issued.
[ ] Cancel the currently pending operation, the current timer if there is one, or the current asynchronous request.
[ ] When the pending operation cancels (or succeeds) signal the result to the application via the callback.

Fixed in #1388.


68 ref app posting to slack

Added undefined checks so HTML code still runs in browser and simulator.