Feature Requests: control OSBee programs from ha-osbee

I would like to be able to control programs from within Home Assistant.  In my setup I have switches that run for a short time only because they feed water to containers.  For  example, a 20 minute timeout is way too long and will flood these containers.  I am typically enabling this switch for 15-60 seconds, and maybe several times with a delay of something like 5-10 minutes.  On another switch I am using drip tape which needs to run for much longer than the default max of 20 minutes.  I  run for 19 minutes x 6 for 2 hrs.
It would be useful to be able to enable/disable or run existing programs in OSBee from HA.  The intention is to achieve a manual rain delay by interacting with a button/etc. in HA.  This can also form the basis of having HA, if detected rain (by means unrelated to OSBee), then automatic disable OSBee programs via HA, or vice versa if clear skies.
The reason to have HA control programs as opposed to programming OSBee and performing all actions from HA is that I relying on OSbee, and embedded control, seems more reliable when away from the physical location for some time (a week).  There are any number of reasons as to why access to HA could be lost (dynamic IP changes, VPN issues, HA issues, failed wifi network, etc.)  but the OSBee device will continue to do its thing on schedule.  If there are technical issues, all things being equal, water plants during rainy period is prefer to no water at all during a dry period.  Rain delay with HA, or even manual intervention is preferable, but things happen.
Also not that since I am managing OSBee switches with programs that are being re-run in succession, disable ha-osbee switches is only an intermittent change as OSBee turns them back on with the next program iteration.  Off-cycle watering for containers is straight forward  as can run for 15 seconds via HA (this could be a timed button in HA as well), but off-cycle for the drip tape will only be 20 minutes, as opposed to multiple iterations if I decide to, say, water in the evening when I am only on an AM OSBee watering program.
That's my user story, and I am sticking to it :)

The osbee has a default program time, but you can still turn it on and off.
for example, you can build an automation that:

Turn on switch (valve)
Delay 20 seconds
Turn off switch

This should work just fine with any switch, including osbee, and you don’t need to change the default program duration.
otherwise, the fix would be exposing a config value to change the default program duration, and I’m happy to do it, but the basic 3-step automation should work for you now
Can you give it a try, tell me how it works?

@gitwob101 ^^ tagging you to ensure GitHub lets you know.
Although the above would let you have the same control on your system that I have in mine, re-reading your feature-request,  it seems you actually want more of a way to define and apply new schedules that the OSBee runs independently?  If that's the case, what would that look like?  I don't mean to argue, I'm looking for an idea of how that would work best for you.

I have implemented some schedules via Home Assistant which should get me where I need to now.
My original ask was have Home Assistant call the OSBee API to enable or disable OSBee programs, or to be able to "run now".  The "run now" is mostly the same effect as calling an automation from HA.  The problem that I was trying to solve is to conveniently disable a program in the event of rain.
The problem that I am trying to solve is to make watering reliable and choose the most resilient path so I we away for a week, etc..  For example if there was a power outage that exceed my UPS capacity, the OSBee could potentially continue as it can be run on its own power bank.  It is located away from my IT/network stuff as it is close to the water source so requires this anyway.  If the infrastructure running HA failed, OSBee would continue to keep trucking.
I am not an engineer, but my thought is that HA is left for the bells and whistles, and let OSBee be its own fail save.  The stakes aren't actually high as this is an attempted to growing a small quantity of backyard vegetables (this is not a farming operation), but I also rather not lose things because HA decides to fail for some reason (operating VMs/containers much more complex than an embedded controller).  HA on its own embedded hardware?  Maybe but that is not a summer project for me, and also negates the whole point of consolidating my IT stuff.
Context: I live in the GTA in Ontario, Canada.  We get a spurt of hot summer periods where I will need to provided additional watering.  Despite being a "word class" city, the area that I live in doesn't have the most stable electrical supply.  My UPS devices squawk regularly, and we do get brown outs and the occasional power outages more regularly than is reasonable, and sometimes seemingly quite randomly.

I have implemented some schedules via Home Assistant which should get me where I need to now.

:)

Context: I live in the GTA in Ontario, Canada. We get a spurt of hot summer periods where I will need to provided additional watering

This makes a bit more sense.  Although I'm currently in Victoria, BC, I had a few years in Kingston, commuting into TO for meetings, I can point at what those summers are like :)  I like your notion of trimming the dependencies down to just the program that OSBee independently runs.
It might be possible to convert this to a different sort of module:

some sort of "set a value" for a program
expose schedules as switches that allows you to activate/deactivate a schedule
some sort of "run now" similar to what is this integration does for one-off runs

Conversely to building a way to push out schedules, if the schedules don't change often, Terraform might suffice (if you haven't use dit, you can read some values, derive a value, and store that back in via a basic REST.  This would perhaps let you set schedules.  I run terraform "apply" to push out configs in GitHub Actions that use a GitHub-runner running on my NAS.

@gitwob101 looking for your thoughts on how this module can dramatically change together you what you're looking for ^^

Can we start with enable/disable each of the 6 program schedules?

Can we start with enable/disable each of the 6 program schedules?

Simple switch on/off ?  IIUC, this would result in a jp to read program data, and a cp to send a change -- the only change is that the enable bit in the first byte of the "config" value toggles on or off... sound correct ?
I want to confirm: the API I see offers up to 32 programs, not 6, so I want to be fairly certain.  (I'm not connected to "Ray", who builds these)

Hi, I can't speak to this question.  In the UI, under "Programs" I see 1-6.

Hi, I can't speak to this question. In the UI, under "Programs" I see 1-6.

Hey.  Sorry, missed this reply as well :(
OK, so we're looking at it from very different sides :)  I want to ask some questions but I don't want to sound obnoxious or rude.  Also, my memory is bad, so I may re-ask questions(sorry), but I don't see us going to this detail in the history.
Are you comfortable running a python program ?
Have you used "curl" or "wget" programs?
If you're OK with curl and your OSBee was on IP <IP_ADDRESS>, can you share me the result of:
curl -vL http://<IP_ADDRESS>/jp

Finally, if your Device Key on your OSBee was "chicken" does this activate your second program (of course, replace "chicken" with your actual device key) ?
curl -vL http://<IP_ADDRESS>/rp?dkey=chicken&pid=1

Here you go:
curl -vL http://<IP_ADDRESS>/jp
*   Trying <IP_ADDRESS>:80...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 80
> GET /jp HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Access-Control-Allow-Origin: *
< Content-Length: 511
< Connection: close
<
* Closing connection
{"tmz":32,"progs":[{"config":32609,"sts":[360,5,30,-1,-1],"nt":1,"pt":[445441],"name":"Horseshoe AM"},{"config":65634,"sts":[300,3,5,-1,-1],"nt":1,"pt":[15362],"name":"Patio AM 5:00"},{"config":32608,"sts":[330,3,5,-1,-1],"nt":1,"pt":[15364],"name":"Front 05:30"},{"config":32737,"sts":[1200,5,30,-1,-1],"nt":1,"pt":[445441],"name":"Horseshoe PM"},{"config":32608,"sts":[1020,3,5,-1,-1],"nt":1,"pt":[15362],"name":"Patio PM 17:00"},{"config":32736,"sts":[1050,3,5,-1,-1],"nt":1,"pt":[15364],"name":"Front PM"}]}

Second one:
curl -vL http://<IP_ADDRESS>/rp?dkey=redacted&pid=1

Trying <IP_ADDRESS>:80...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 80
> GET /rp?dkey=redacted HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 500 OTF error
* Header without colon
* Closing connection
curl: (8) Header without colon

[1]+  Exit 8                  curl -vL http://<IP_ADDRESS>/rp?dkey=redacted

Hey @gitwob101

...
curl -vL http://<IP_ADDRESS>/rp?dkey=redacted&pid=1
...
< HTTP/1.1 500 OTF error

Header without colon
...

I think there's something confusing the parser at your OSBee; do you have special characters in your password? You might need to URL-Encode it.  If you don't have a handy too to do that, loo at https://www.urlencoder.org
"OTF" seems to be "Open Things Framework", so the error seems to be coming from deeper in the OSBee code.  The only thing that I can't see looking free of risk would be your dkey.  Of course, I don't want to know your key, but you might be able to URLEscape or URLEncode it to avoid parsing until it's copied to parameters.

FWIW, I've been able to trigger a stored program in the underlying library; I'll work soon to make them available as .. I guess switches that show "on" once activating a program, and will remain"on" until the program completes or any of the switches for individual vales is triggered (which replaces the running program with a "77" or "Manual" program (OSBeeAPI-1.0.0 section 11 bullet 2)
Still in-progress


Add support / tests for enterprise plan

Description
Only testing "standard" at the moment.

Coming in In https://github.com/terraform-ibm-modules/terraform-ibm-icd-mongodb/pull/158


Proposed breaking changes for the next major version

Methods should be specifically marked as public or private in the docs. It will tighten library contract and allow to refactor internal bits more freely.

Methods should not return item when it passed as a parameter to them. Since objects are passed by reference, item outside the method will be changed even without return. It might be confusing to somebody who will think that if they not reassigned item returned from the method their original object was not changed. Only use cases for this that I can see is function composition, but there is not room for it in the library.

Property els should be turned into local variable. If library user wants to have all elements as a node list, they can just get it first and pass it to library, not use it as a DOM manipulation library.

Helper functions should not be exposed. Purpose of this library is to provide sticky polyfill, not to provide getClosestParent or toggleClasses functionality.

I suggest getting rid of userAgent property. Since library has no custom logic figuring userAgent out, it offers no additional value to somebody who is debugging it. It's just a dead weight.

All above is just my opinion of course, you are free to disagree and offer additional insight :)

Point (2): There might be something there.
Point (3): I would need to look closely at that els.
Point (1, 5): The API was more private. Making everything public was specific to vocal customers; same with providing  userAgent for debugging.

⚠ Please use the Github templates.

do you want to submit a PR for item 2 and close this issue?

Are you ready for the new major release? If so, I can give it a shot next weekend.

Also, did you receive my email?

Yes, and replied :)


Incorrect 'used rules' when using the pretty or junit formatters

If you have a set of templates, that use a subset of rules, and pass them all into cfn-lint with --format pretty or --format junit, then only the last template's rules get used for evaluating the rules used for all the templates.

I believe this is fixed now.  We can re-open as needed.


Daemon suddenly stopped working - BufferUnderflowException

After few weeks of using this excellent utility, it suddenly stopped working. Reinstallation did not help.
$ java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
$ mvnd --version
mvnd native client 0.7.1-windows-amd64 (97c587c11383a67b5bd0ff8388bd94c694b91c1e)
Terminal: org.jline.terminal.impl.jansi.win.JansiWinSysTerminal
Exception in thread "main" java.nio.BufferUnderflowException
        at java.nio.ByteBuffer.get(ByteBuffer.java:798)
        at java.nio.ByteBuffer.get(ByteBuffer.java:826)
        at org.mvndaemon.mvnd.common.DaemonRegistry.readString(DaemonRegistry.java:303)
        at org.mvndaemon.mvnd.common.DaemonRegistry.doUpdate(DaemonRegistry.java:213)
        at org.mvndaemon.mvnd.common.DaemonRegistry.read(DaemonRegistry.java:164)
        at org.mvndaemon.mvnd.common.DaemonRegistry.getAll(DaemonRegistry.java:102)
        at org.mvndaemon.mvnd.client.DaemonConnector.connect(DaemonConnector.java:101)
        at org.mvndaemon.mvnd.client.DefaultClient.execute(DefaultClient.java:272)
        at org.mvndaemon.mvnd.client.DefaultClient.main(DefaultClient.java:118)

The registry may have been corrupted somehow.  Could you try deleting the ~/.m2/mvnd/registry directory and try again ?

Seems it helps. Thank you very much! Are you interested about corrupted registry.bin file for future investigation.

Sure, please attach it to this issue, I'll try to have a look.

@eforx also, you should have seen the warning printed at https://github.com/apache/maven-mvnd/blob/4cea5d30785dbac160b1e140f612e8b99d8dbd04/common/src/main/java/org/mvndaemon/mvnd/common/DaemonRegistry.java#L252-L255.  Isn't that the case ? it should have hinted you at deleting the registry file.

The log does not contain mentioned phrase (I attached last log from yesterday also). It also looks like, the daemon stopped creating logs after computer restart (after registry corruption) - no more logs from today, till I removed ~/.m2/mvnd/registry directory.
daemon-239b49e8.log
registry_corrupted.zip

we've seen similar errors. has this been fixed and when will 0.8.1 be released?

Fixed by https://github.com/apache/maven-mvnd/commit/e51416f7f2f6d95add36c06090ff9b5aaa2a705a


Codelab seems really outdated and doesn't build out of the box.

A fresh clone of the repository and subsequent building results in the following error:
* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin 'com.android.internal.version-check'.
   > Minimum supported Gradle version is 7.0.2. Current version is 6.8. If using the gradle wrapper, try editing the distributionUrl in /Users/.../AndroidStudioProjects/exoplayer-intro/gradle/wrapper/gradle-wrapper.properties to gradle-7.0.2-all.zip

Going into Project Structure and setting the gradle version to something above 7.0.2 does fix the problem. I was able to get it to build by creating a gradle/wrapper directory and adding a gradle-wrapper.properties file with the following content:
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

Next I was getting the following error: "This version only understands SDK XML versions up to 2 but an SDK XML file of version 3 was encountered." This I fixed by removing the buildToolsVersion field from the common.gradle file.
Lastly, the ExoPlayer dependencies weren't resolving. This I fixed by adding jcenter() as a repository to allprojects.
Even with this, I'm still getting some warnings that there are references to both AndroidX and the old support library. However, following the above steps, I was able to follow the codelab and run it successfully.

I am having so many problems as well. Every step I follow as in the instructions I get an error. Very bad. Such a gigantic company and cant even get their examples right.


Update: Fixed cargo build process

This fixes previous issues with the library code and the build process.

cargo test still does not execute properly due to bindgen using clang as a frontend. More info about this can be found at https://discord.com/channels/1063947616615923875/1072460385866756196/1087323812607033425.

For now, this can be merged, but incremental updates and reviews will be required to fix this issue completely from both sides. Building the project with clang fails at the arrow build stage.

Here is some more information related to this:
In file included from /usr/include/c++/12.2.1/vector:64,
                 from /usr/include/c++/12.2.1/functional:62,
                 from /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.h:22,
                 from /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:18:
In constructor ‘std::_Vector_base<_Tp, _Alloc>::_Vector_impl_data::_Vector_impl_data(std::_Vector_base<_Tp, _Alloc>::_Vector_impl_data&&) [with _Tp = arrow::Datum; _Alloc = std::allocator<arrow::Datum>]’,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_impl::_Vector_impl(std::_Vector_base<_Tp, _Alloc>::_Vector_impl&&) [with _Tp = arrow::Datum; _Alloc = std::allocator<arrow::Datum>]’ at /usr/include/c++/12.2.1/bits/stl_vector.h:152:68,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::_Vector_base<_Tp, _Alloc>&&) [with _Tp = arrow::Datum; _Alloc = std::allocator<arrow::Datum>]’ at /usr/include/c++/12.2.1/bits/stl_vector.h:335:7,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&) [with _Tp = arrow::Datum; _Alloc = std::allocator<arrow::Datum>]’ at /usr/include/c++/12.2.1/bits/stl_vector.h:615:7,
    inlined from ‘arrow::compute::ExecBatch::ExecBatch(arrow::compute::ExecBatch&&)’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec.h:179:21,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:605:73,
    inlined from ‘_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = move_iterator<__gnu_cxx::__normal_iterator<optional<arrow::compute::ExecBatch>*, vector<optional<arrow::compute::ExecBatch>, allocator<optional<arrow::compute::ExecBatch> > > > >; _OIter = back_insert_iterator<vector<arrow::compute::ExecBatch> >; _UnaryOperation = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(optional<arrow::compute::ExecBatch>)>]’ at /usr/include/c++/12.2.1/bits/stl_algo.h:4263:12,
    inlined from ‘std::vector<To> arrow::internal::MapVector(Fn&&, std::vector<_ValT>&&) [with Fn = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>; From = std::optional<arrow::compute::ExecBatch>; To = arrow::compute::ExecBatch]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/vector.h:102:17,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:604:44,
    inlined from ‘typename std::enable_if<(((! std::is_void<ContinueResult>::value) && (! arrow::detail::is_future<ContinueResult>::value)) && ((! NextFuture::is_empty) || std::is_same<ContinueResult, arrow::Status>::value))>::type arrow::detail::ContinueFuture::operator()(NextFuture, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; Args = {}; ContinueResult = arrow::Result<std::vector<arrow::compute::ExecBatch> >; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:150:22,
    inlined from ‘void arrow::detail::ContinueFuture::IgnoringArgsIf(std::true_type, NextFuture&&, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >; Args = {const arrow::internal::Empty&}]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:188:15,
    inlined from ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:545:39:
/usr/include/c++/12.2.1/bits/stl_vector.h:106:24: warning: ‘*(__vector(4) long unsigned int*)((char*)&<unnamed> + offsetof(std::optional<arrow::compute::ExecBatch>,std::optional<arrow::compute::ExecBatch>::<unnamed>.std::_Optional_base<arrow::compute::ExecBatch, false, false>::<unnamed>))’ may be used uninitialized [-Wmaybe-uninitialized]
  106 |         : _M_start(__x._M_start), _M_finish(__x._M_finish),
      |                    ~~~~^~~~~~~~
In file included from /usr/include/c++/12.2.1/functional:64:
/usr/include/c++/12.2.1/bits/stl_algo.h: In member function ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’:
/usr/include/c++/12.2.1/bits/stl_algo.h:4263:31: note: ‘<anonymous>’ declared here
 4263 |         *__result = __unary_op(*__first);
      |                     ~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/c++/12.2.1/bits/shared_ptr.h:53,
                 from /usr/include/c++/12.2.1/memory:76,
                 from /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.h:23:
In member function ‘void std::__shared_count<_Lp>::_M_swap(std::__shared_count<_Lp>&) [with __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’,
    inlined from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::__shared_ptr<_Tp, _Lp>&&) [with _Tp = arrow::compute::SelectionVector; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at /usr/include/c++/12.2.1/bits/shared_ptr_base.h:1534:21,
    inlined from ‘std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = arrow::compute::SelectionVector]’ at /usr/include/c++/12.2.1/bits/shared_ptr.h:360:41,
    inlined from ‘arrow::compute::ExecBatch::ExecBatch(arrow::compute::ExecBatch&&)’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec.h:179:21,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:605:73,
    inlined from ‘_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = move_iterator<__gnu_cxx::__normal_iterator<optional<arrow::compute::ExecBatch>*, vector<optional<arrow::compute::ExecBatch>, allocator<optional<arrow::compute::ExecBatch> > > > >; _OIter = back_insert_iterator<vector<arrow::compute::ExecBatch> >; _UnaryOperation = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(optional<arrow::compute::ExecBatch>)>]’ at /usr/include/c++/12.2.1/bits/stl_algo.h:4263:12,
    inlined from ‘std::vector<To> arrow::internal::MapVector(Fn&&, std::vector<_ValT>&&) [with Fn = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>; From = std::optional<arrow::compute::ExecBatch>; To = arrow::compute::ExecBatch]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/vector.h:102:17,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:604:44,
    inlined from ‘typename std::enable_if<(((! std::is_void<ContinueResult>::value) && (! arrow::detail::is_future<ContinueResult>::value)) && ((! NextFuture::is_empty) || std::is_same<ContinueResult, arrow::Status>::value))>::type arrow::detail::ContinueFuture::operator()(NextFuture, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; Args = {}; ContinueResult = arrow::Result<std::vector<arrow::compute::ExecBatch> >; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:150:22,
    inlined from ‘void arrow::detail::ContinueFuture::IgnoringArgsIf(std::true_type, NextFuture&&, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >; Args = {const arrow::internal::Empty&}]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:188:15,
    inlined from ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:545:39:
/usr/include/c++/12.2.1/bits/shared_ptr_base.h:1099:32: warning: ‘((__vector(2) long unsigned int*)((char*)&<unnamed> + offsetof(std::optional<arrow::compute::ExecBatch>,std::optional<arrow::compute::ExecBatch>::<unnamed>.std::_Optional_base<arrow::compute::ExecBatch, false, false>::_M_payload.std::_Optional_payload<arrow::compute::ExecBatch, false, false, false>::<unnamed>.std::_Optional_payload<arrow::compute::ExecBatch, true, false, false>::<unnamed>.std::_Optional_payload_base<arrow::compute::ExecBatch>::_M_payload)))[2]’ may be used uninitialized [-Wmaybe-uninitialized]
 1099 |         _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
      |                                ^~~~~
/usr/include/c++/12.2.1/bits/stl_algo.h: In member function ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’:
/usr/include/c++/12.2.1/bits/stl_algo.h:4263:31: note: ‘<anonymous>’ declared here
 4263 |         *__result = __unary_op(*__first);
      |                     ~~~~~~~~~~^~~~~~~~~~
In member function ‘void std::__shared_count<_Lp>::_M_swap(std::__shared_count<_Lp>&) [with __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’,
    inlined from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::__shared_ptr<_Tp, _Lp>&&) [with _Tp = std::variant<arrow::Datum, arrow::compute::Expression::Parameter, arrow::compute::Expression::Call>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at /usr/include/c++/12.2.1/bits/shared_ptr_base.h:1534:21,
    inlined from ‘std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = std::variant<arrow::Datum, arrow::compute::Expression::Parameter, arrow::compute::Expression::Call>]’ at /usr/include/c++/12.2.1/bits/shared_ptr.h:360:41,
    inlined from ‘arrow::compute::Expression::Expression(arrow::compute::Expression&&)’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/expression.h:45:20,
    inlined from ‘arrow::compute::ExecBatch::ExecBatch(arrow::compute::ExecBatch&&)’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec.h:179:21,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:605:73,
    inlined from ‘_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = move_iterator<__gnu_cxx::__normal_iterator<optional<arrow::compute::ExecBatch>*, vector<optional<arrow::compute::ExecBatch>, allocator<optional<arrow::compute::ExecBatch> > > > >; _OIter = back_insert_iterator<vector<arrow::compute::ExecBatch> >; _UnaryOperation = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(optional<arrow::compute::ExecBatch>)>]’ at /usr/include/c++/12.2.1/bits/stl_algo.h:4263:12,
    inlined from ‘std::vector<To> arrow::internal::MapVector(Fn&&, std::vector<_ValT>&&) [with Fn = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>; From = std::optional<arrow::compute::ExecBatch>; To = arrow::compute::ExecBatch]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/vector.h:102:17,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:604:44,
    inlined from ‘typename std::enable_if<(((! std::is_void<ContinueResult>::value) && (! arrow::detail::is_future<ContinueResult>::value)) && ((! NextFuture::is_empty) || std::is_same<ContinueResult, arrow::Status>::value))>::type arrow::detail::ContinueFuture::operator()(NextFuture, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; Args = {}; ContinueResult = arrow::Result<std::vector<arrow::compute::ExecBatch> >; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:150:22,
    inlined from ‘void arrow::detail::ContinueFuture::IgnoringArgsIf(std::true_type, NextFuture&&, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >; Args = {const arrow::internal::Empty&}]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:188:15,
    inlined from ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:545:39:
/usr/include/c++/12.2.1/bits/shared_ptr_base.h:1099:32: warning: ‘((std::__shared_count<__gnu_cxx::_S_atomic>*)((char*)&<unnamed> + offsetof(std::optional<arrow::compute::ExecBatch>,std::optional<arrow::compute::ExecBatch>::<unnamed>.std::_Optional_base<arrow::compute::ExecBatch, false, false>::_M_payload.std::_Optional_payload<arrow::compute::ExecBatch, false, false, false>::<unnamed>.std::_Optional_payload<arrow::compute::ExecBatch, true, false, false>::<unnamed>.std::_Optional_payload_base<arrow::compute::ExecBatch>::_M_payload)))[6].std::__shared_count<>::_M_pi’ may be used uninitialized [-Wmaybe-uninitialized]
 1099 |         _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
      |                                ^~~~~
/usr/include/c++/12.2.1/bits/stl_algo.h: In member function ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’:
/usr/include/c++/12.2.1/bits/stl_algo.h:4263:31: note: ‘<anonymous>’ declared here
 4263 |         *__result = __unary_op(*__first);
      |                     ~~~~~~~~~~^~~~~~~~~~
In file included from /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:25:
In constructor ‘arrow::compute::ExecBatch::ExecBatch(arrow::compute::ExecBatch&&)’,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:605:73,
    inlined from ‘_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = move_iterator<__gnu_cxx::__normal_iterator<optional<arrow::compute::ExecBatch>*, vector<optional<arrow::compute::ExecBatch>, allocator<optional<arrow::compute::ExecBatch> > > > >; _OIter = back_insert_iterator<vector<arrow::compute::ExecBatch> >; _UnaryOperation = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(optional<arrow::compute::ExecBatch>)>]’ at /usr/include/c++/12.2.1/bits/stl_algo.h:4263:12,
    inlined from ‘std::vector<To> arrow::internal::MapVector(Fn&&, std::vector<_ValT>&&) [with Fn = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>::<lambda(std::optional<arrow::compute::ExecBatch>)>; From = std::optional<arrow::compute::ExecBatch>; To = arrow::compute::ExecBatch]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/vector.h:102:17,
    inlined from ‘arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec/exec_plan.cc:604:44,
    inlined from ‘typename std::enable_if<(((! std::is_void<ContinueResult>::value) && (! arrow::detail::is_future<ContinueResult>::value)) && ((! NextFuture::is_empty) || std::is_same<ContinueResult, arrow::Status>::value))>::type arrow::detail::ContinueFuture::operator()(NextFuture, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; Args = {}; ContinueResult = arrow::Result<std::vector<arrow::compute::ExecBatch> >; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:150:22,
    inlined from ‘void arrow::detail::ContinueFuture::IgnoringArgsIf(std::true_type, NextFuture&&, ContinueFunc&&, Args&& ...) const [with ContinueFunc = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; NextFuture = arrow::Future<std::vector<arrow::compute::ExecBatch> >; Args = {const arrow::internal::Empty&}]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:188:15,
    inlined from ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’ at /home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/util/future.h:545:39:
/home/michael/Public/ukv/build_release/_deps/arrow-src/cpp/src/arrow/compute/exec.h:179:21: warning: ‘*(arrow::compute::ExecBatch*)((char*)&<unnamed> + offsetof(std::optional<arrow::compute::ExecBatch>,std::optional<arrow::compute::ExecBatch>::<unnamed>.std::_Optional_base<arrow::compute::ExecBatch, false, false>::<unnamed>)).arrow::compute::ExecBatch::length’ may be used uninitialized [-Wmaybe-uninitialized]
  179 | struct ARROW_EXPORT ExecBatch {
      |                     ^~~~~~~~~
/usr/include/c++/12.2.1/bits/stl_algo.h: In member function ‘void arrow::Future<T>::ThenOnComplete<OnSuccess, OnFailure>::operator()(const arrow::Result<T>&) && [with OnSuccess = arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()>; OnFailure = arrow::Future<>::PassthruOnFailure<arrow::compute::DeclarationToExecBatchesAsync(Declaration, ExecContext*)::<lambda()> >; T = arrow::internal::Empty]’:
/usr/include/c++/12.2.1/bits/stl_algo.h:4263:31: note: ‘<anonymous>’ declared here
 4263 |         *__result = __unary_op(*__first);
      |                     ~~~~~~~~~~^~~~~~~~~~

It might be, but it seems like it's coming from the Arrow side, not ours.


10 unit tests for renku notebook service

Thanks! I am not usually a fan of commenting when it does not add more value to the code (and I am happy to discuss about it in retrospective). However, I added them to comply with the coding standard.


Can't select ignored symbols from deleted libraries

I recently had a lot of Zeplin export problems because of symbols that were referencing deleted libraries.
Symbol Swapper can see them, but they show up in the report as foreign, and therefore un-selectable.

It would be great if there was some way to select the instances in the current document, so they could be nuked.

Need the same.
'Foreign' symbols are detected. But they can't be clicked to find where in the current Sketch document they are used.
Can't find them based on the name. Can't fine them using the name using the Runner plugin.
Need to find them to either delete them or replace them with the correct Library symbol.
Would it be possible to allow clicking on these foreign symbols in the report to jump to their location?

@marcushasfun, @patrickplaggenborg Thanks for the feedback, I will consider adding more functionality around the ignored symbols report to make it easier to take action on them.

This is a regular issue for me. Is there any way to locate these foreign symbols so that they can be swapped manually?


feat(backend): release version

关联研发信息
dev_branch: feat/release_version/#1594
target_branch: v1.2.0


Snippet grammar fixes and minor formal improvements throughout the LSP spec

While reading through the specification, I've noticed a few style issues as well as some shortcomings in the EBNF grammar for snippets. This PR should fix them. See the list below for details on what was changed.
Detailed changes

Most of the changes are various grammar, spelling, punctuation, formatting, or consistency improvements[^1].
Some incorrect TypeScript syntax in the examples has been fixed.
The EBNF grammar for snippets has been improved in the following ways:

Incorrect grouping of alternatives in some parts has been fixed.
Ambiguities present in the grammar have been fixed, the grammar should now be LL(1)-parseable.
The grammar has been made consistent with the description above it. Specifically, characters which have to be escaped per the textual description now also need to be escaped per the grammar rules[^2].
A description for the ':+', ':?', and ':-' modifiers has been added, as they seem to not be explained anywhere else in the spec.

I have used the VSCode source code as a basis for these.

The link has been updated to refer to the right EBNF specification, as the grammar uses the XML variant rather than the one described in the originally linked Wikipedia article.

[!NOTE]
These changes have only been applied to the upcoming 3.18 LSP specification, and not to the meta models. If they should be applied to the current version 3.17 or the meta models, I could port the changes over as well.

[^1]: Not all the changes necessarily fix errors, some just reword certain passages to sound more natural, which may be somewhat subjective.
[^2]: Technically, the text clarifying escaping rules could be removed, as the grammar already describes them now. Keeping the text for clarity's sake might still make sense, though.

@microsoft-github-policy-service agree

@falko17 thanks you so much for the great PR. Highly appreciated. I have several comments about indentation. If you are too busy to fix them I am happy to do so. I have one additional comment about the changes you did to the snippet syntax I would like to get your comment on.

Thank you for the detailed review, @dbaeumer! I've addressed your comments, please tell me if there is anything else that should be done. Also, sorry about all the indentation problems, my editor displayed tabs as 2 spaces, which is why I didn't catch these. Should be all fixed now.


Core Dev: express testing

In order to test Express, one must mock Express. There is an existing open source project, node-mocks-http that we are using to mock routes. We need it to mock other items like app.use, but it is not open to do that at this time.
Feature: Change open source project
  As a core developer
  I want to test Express.js functions
  So that we can test express portions of our code in unit tests instead of E2E tests.

  Scenario: Repair open source project
    Given that the open source project node-mocks-http has a suite of functions to test express functions
      And that said project is not currently allowing use of it's mock-express functionality
      And that I need access to this functionality
     When I want to use mock-express
     Then I need to submit a change to said project to allow use of mock-express
      And I need that change to be approved and merged
      And I need to use this latest version as a dependency of Punchcard.

Change open source project

[ ] Repair open source project

I have an issue opened in the project about this

I submitted a PR: https://github.com/howardabrams/node-mocks-http/pull/107


Feature: new Block type: Separator

Problem
A horizontal line or separator line to divide sections in a document.
Based on #57

I think sections are already divided sufficiently with headings and hierarchy, right? If we want a horizontal separator, I'm not sure it should be a separate block type. Probably a good idea to use a <hr> between every h1 section
Or if we REALLY want publishers to control the separator for each block, it can be an attribute of headings. (but I think its not ideal! Right now, blocks all represent important content for the document, and a Separator is purely cosmetic and not really important to understand the content) It could also be a setting for the reader (and web site)


Change merge configs to avoid creating empty values

Fixes #114

hi @FSuman , thanks for your contribution.
It looks fine. Please

add testing to include this use case, so that the test would have failed without your fix.
rename the commit header comply with conventional commits.

hi @FSuman , thanks for your contribution.
It looks fine. Please

add testing to include this use case, so that the test would have failed without your fix.
rename the commit header to comply with conventional commits.
Make sure to add type bints accordingly

Hi @pwoolvett, tests added, commit header renamed and mypy is locally happy now

From the docs here:

By default, FlakeHeaven runs only pyflakes and pycodestyle.

The defaults are set here, which is what I guess you mentioned in #114 .
So this behavior was actually intended but not working. (!)
Just ran a git blame against that section of the code and it was like this for a while now.
However, this will likely start crashing some users checks (specially in CI envs), where, without proper configuration, neither of those pugins was being executed!
One last change before the merge:  As this is a breaking change, please mark it explicitly in your second commit eg to something like this
fix(logic)!: properly merge configs to avoid creating empty values

fixes #114

BREAKING CHANGE: pycodestyle and pyflakes will now run when unconfigured.

Thanks @FSuman , your changes have been merged and released with flakeheaven 2.0.0


FTF Test Data: Reg No is disclosive

fixed by hashing. ftfSample_v1.0 will be pre-processed in the same way. Anything else we need to hash/encrypt?

Fixed in current export.


Where should I override role variables?

Question

ansible <IP_ADDRESS>
molecule, version 2.12.1

Molecule installation method (one of):

pip

Ansible installation method (one of):

OS package

In my role, in the default/main.yml, I have:
def_proxy_env:
      http_proxy: ""
      https_proxy: ""
      no_proxy: ""

I tried to surcharge those values ( in molecule.yml, and prepare.yml like below), but they are never taken.
  environment:
    def_proxy_env:
      http_proxy: "http://xx.xx.xx.xx:8080"
      https_proxy: "http://xx.xx.xx.xx:8080"

Where should I surcharge those proxy values ?

Not sure I understand what supercharge variable means.

Override maybe ?
I have proxy vars set to "" in my role dictionary, but in local, I need to set them.
How should I do this ?

Could you set them in molecule's playbook.yml file, either as set_facts or extra vars?
http://docs.ansible.com/ansible/devel/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable

You can also set as inventory in the provisioner.

I ended up having following config:
In molecule/create.yml, I added:
buildargs:
          http_proxy: "{{ lookup('env','http_proxy') }}"
          https_proxy: "{{ lookup('env','https_proxy') }}"

in
- name: Build an Ansible compatible image
      docker_image:
        path: "{{ molecule_ephemeral_directory }}"
        name: "molecule_local/{{ item.item.image }}"
        dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
        force: "{{ item.item.force | default(true) }}"
        buildargs:
          http_proxy: "{{ lookup('env','http_proxy') }}"
          https_proxy: "{{ lookup('env','https_proxy') }}"
      with_items: "{{ platforms.results }}"
      when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0

And in molecule.yml, I had to add a group ( here group1 )
platforms:
  - name: instance
    image: centos:7
    groups:
      - group1
provisioner:
  name: ansible
  inventory:
    group_vars:
      group1:
        proxy_env:
          http_proxy: "{{ lookup('env','http_proxy') }}"
          https_proxy: "{{ lookup('env','https_proxy') }}"

I can't use playbook.yml (as it's my production playbook that I'm testing with molecule) and I can't use inventory section of molecule.yml, as I'm linking group_vars to my ansible repo group_vars). Is there any other way to override the variables?

Ok, I've found a work-around for that issue. I load testing variables only in molecule, but not in prod:
pre_tasks:
    - include_vars: molecule-test-variables.yml
      when: lookup('env','MOLECULE_PROJECT_DIRECTORY') != ''

I think you want to define them in test playbook like this:
---
- name: Install and Test my-role
  vars:
    color: blue
    http_proxy: "http://example.com"
    https_proxy: "https://example.com"
  hosts: all
  roles:
    - role: my-role


throw error when statefulset volumeMounts.subPath is invalid

https://github.com/rancher/rancher/issues/14061

This PR needs an integration test


EWHM workspaces module not working

Checklist

[X] I have read the appropriate section in the contributing
guidelines
[X] I believe this issue is a problem with polybar itself and not a misconfiguration on my part.
[X] I have searched for other open and closed issues that
may have already reported this problem.
[X] I have checked the known issues page for this problem.

Describe the bug
The ewhm workspace icons module stopped working with the new git build on arch linux (the standard one is working) and on the last git version was working correctly
The workspaces icons don't change when a workspace is focused or has a window open in it
Expected behavior:
The icons should change color
Was it working before?

Did you also experience this bug in an earlier version of polybar (yes/no/don't know)? no, and the the standard release is still working

To Reproduce

[module/ewmh2]
type = internal/xworkspaces

icon-0 = 1;1
icon-1 = 2;2
icon-3= 4;3
icon-2 = 3;4
icon-4 = 5;5
icon-5 = 6;6
icon-6 = 7;7
icon-7 = 8;8
icon-8 = 9;9
icon-9 = 10;10

label-monitor = %name%
label-monitor-foreground = ${colors.buffer}

label-active = %icon%
label-active-foreground = ${colors.nord7}
label-active-padding = 2

label-occupied = %icon%
label-occupied-foreground = ${colors.nord9}
label-occupied-padding = 2

label-empty = %icon%
label-empty-foreground = ${colors.buffer}
label-empty-padding = 2

label-urgent = %icon%
label-urgent-foreground = ${colors.urgent}
label-urgent-padding = 2

label-separator = ""
label-separator-foreground = ${colors.buffer}

[bar/debug]
modules-left = ewmh2

Polybar Log

notice: Parsing config file: /home/alecs/.config/polybar/config
warn: No fonts specified, using fallback font "fixed"
notice: Loaded font "fixed" (name=DejaVu Sans, offset=0, file=/usr/share/fonts/TTF/DejaVuSans.ttf)

Screenshots

Environment:

WM: xmonad (with ewmh pathces)
Distro: Arch Liux
Output of polybar -vvv:

polybar 3.4.0-184-g50d8a1ba

Features: +alsa +curl +i3 +mpd +network(libnl) +pulseaudio +xkeyboard

X extensions: +randr (+monitors) +composite +xkb +xrm +xcursor

Build type: Release
Compiler: /usr/sbin/c++
Compiler flags: -D_FORTIFY_SOURCE=2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wall -Wextra -Wpedantic -O3 -DNDEBUG
Linker flags: -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now

Thanks for reporting. Was able to reproduce this even on herbstluftwm, so it's not isolated to xmonad.
Running git bisect right now to find where we broke things.

Hmm, the offending commit is 4dfbba11c4f84728b31c1b7c628283730d87da41. But I don't see any clear connection to the xworkspaces module yet.

Oh, this is a major bug, it breaks all foreground and background settings in all modules.
What's weird is that I tested those changes with my own config and never ran into this, I must have been using the wrong executable because I am now getting this issue as well. Thanks for catching this.
I will integrate this fix directly into the 3.5.0 release: #2253


Change Java EE Logo

Please Change the j2e-pac4j logo, I think is more convenient to put Java EE logo instead
https://agoncal.files.wordpress.com/2014/05/java_ee_logo_vert_v2.png
See:
https://abhirockzz.wordpress.com/2014/06/01/whats-in-a-name-java-ee-j2ee/

Good point! I'll do that when I find some time...

I can do it if you want. :)

Sure. Go ahead.

Done


@weakify and @strongify generate a warning about unused variable.

The compiler complains about an unused variable when the keyword @ weakify is used. The warning is:

Unused variable 'self_weak_'

It should be possible to fix using
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused"
 ...macro
#pragma clang diagnostic pop

to disable the warning.
Any better idea?

Just to be sure, is there a corresponding @strongify? Which version of Xcode? Could you share some code where this is happening?

Thanks for your answer.
No, there was no @strongify because was not needed in that case.
Adding @strongify Xcode doesn't complains anymore, so this means that both keywords should be used.

A @weakify by itself does nothing, other than create an unused variable as you've seen. You'll want to @strongify the variable in one of the subsequent blocks, that's the inherent idiom/pattern for these macros.


Do not allow image customization for task steps

STONEBLD-2109
Before you complete this pull request ...
Look for any open pull requests in the repository with the title "e2e-tests update" and
see if there are recent e2e-tests updates that will be applicable to your change.

/test build-definitions-pull-request

@chmeliik Robert has done investigation if / where the parameters are set. It turned out, that we have only internal usages of the parameter (in ci namespace). All users stick to the default value, so it's not a breaking change for them.

@rcerven I think we should fail or at least warn users if they try to use deprecated image parameter.

added warning when deprecated parameters are provided


Permission denied on writing wav. Is Windows supported?

Thanks for your job. I tried it on Windows, this is shown:
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "c:\users\christorng\.local\bin\ospeak.exe\__main__.py", line 7, in <module>
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\ospeak\cli.py", line 84, in cli
    stream_and_play(text, voice, speed, speak or not output, token, output)
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\ospeak\cli.py", line 26, in stream_and_play
    play(audio)
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\pydub\playback.py", line 71, in play
    _play_with_ffplay(audio_segment)
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\pydub\playback.py", line 15, in _play_with_ffplay
    seg.export(f.name, "wav")
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\pydub\audio_segment.py", line 867, in export
    out_f, _ = _fd_or_path_or_tempfile(out_f, 'wb+')
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ChrisTorng\.local\pipx\venvs\ospeak\Lib\site-packages\pydub\utils.py", line 60, in _fd_or_path_or_tempfile
    fd = open(fd, mode=mode)
         ^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\CHRIST~1\\AppData\\Local\\Temp\\tmpwyvex3zy.wav'

I've tested on the same Command Prompt, I can add a new file in the folder C:\Users\CHRIST~1\AppData\Local\Temp, without permission problem.

Some troubleshooting with ChatGPT found the underlying issue:

NamedTemporaryFile: If you are using NamedTemporaryFile elsewhere in your code, be aware that this function works differently on Windows compared to Unix-based systems. On Unix, the file can be opened by another process immediately after creation, but on Windows, it cannot be opened by another name until it is closed.

The solution in my case was to inject simpleaudio into the venv:
pipx inject ospeak simpleaudio
Pinging @simonw , maybe you could include that package (or pyaudio), at least for Windows targets? Otherwise we reliably run into the above issue.


HIVE-28439: Iceberg: Bucket partition transform with DECIMAL can throw NPE

What changes were proposed in this pull request?
Fix a bug in the iceberg_bucket UDF.
Why are the changes needed?
A bucket partition transform with DECIMAL doesn't correctly work when the source column type has extreme configurations. Simply, GenericUDFIcebergBucket always uses the default precision and scale regardless of the precise source type.
Does this PR introduce any user-facing change?
No
Is the change a dependency upgrade?
No
How was this patch tested?
Update a qtest which fails in the current master

Thanks!


Dockerhub causing timeouts in CI

I've seen several reports of timeouts in the CI recently and believe it's Dockerhub related.  All of the reports have a docker pull that initially fails and then completes after a lengthy retry:
Example:
http://jenkins.mxnet-ci.amazon-ml.com/blue/rest/organizations/jenkins/pipelines/incubator-mxnet/branches/master/runs/1862/nodes/1013/log/?start=0
http://jenkins.mxnet-ci.amazon-ml.com/blue/organizations/jenkins/incubator-mxnet/detail/master/1862/pipeline
In this example the job gets terminated after running for over 2 hours, but looking at the actual tests they are only running from 22:49:02 to 2018-11-03 22:58:04 (about 10 minutes).  This means we must be spending nearly 2 hours pull docker images (which is very strange).

@mxnet-label-bot [CI, build]

We have seen some Docker Hub issues recently but they have not reported anything for the time this build was triggered: https://status.docker.com/pages/history/533c6539221ae15e3f000031

Yeah I found that strange as well Chance.  I was expecting to see some
outage notices corresponding with these retries to be honest.
On Mon, Nov 5, 2018, 6:16 AM Chance Bair<EMAIL_ADDRESS>wrote:

We have seen some Docker Hub issues recently but they have not reported
anything for the time this build was triggered:
https://status.docker.com/pages/history/533c6539221ae15e3f000031
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/apache/incubator-mxnet/issues/13104#issuecomment-435890310,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHGTE22psBOYsvfXQN7ABuYx3mFpNshpks5usEhMgaJpZM4YNDI4
.

Looks like this has been addressed by DockerHub, haven't seen a occurrence in some time.


What is correct syntax for setting weights to layer?

For example, I want to initialize a layer of shape (2,3) with some weights:
hardcodedWeights = np.array([[1,2,3],[4,5,6]])
model = Sequential()
model.add(Dense(output_dim=3, input_dim=2, weights=[hardcodedWeights]))
This throws AssertionError: Provided weight array does not match layer weights (2 layer params vs 1 provided weights)
How should I correctly specify weights?

A Dense has 2 weight arrays: the main weight matrix, and a bias vector. Therefore you have to provide a list of 2 numpy arrays as the weights argument. I believe the error is explicit about this.
Besides, the shapes of the arrays you provide should match expected shapes.
If you have doubts about what these shapes are, you can simply instantiate your layer then call get_weights(), and look at the output. The argument weights, and also the method set_weights(weights), expect exactly the same format as the output of get_weights.

I also want to init the weights in Convolution2D ,such as set the weights=0.05. But the weight format is the list of numpy array.I don't know how to convert the 0.05 to the right format. Thanks.

Convolution2D has weight in shape (nb_filter, nb_channel, nb_row, nb_col) and bias in shape (nb_filter,). Try this:
weights = numpy.empty(shape)
weights.fill(0.05)

What is the new format for saved weights for Convolution2D in keras2.

If you mean shape, Keras 2's Conv2D has weights:
kernel: self.kernel_size + (input_dim, self.filters)
bias: (self.filters,)
weights: [kernel, bias]

Thanks.

I'm writing a custom layer on top of the Conv2D layer. I want to initialize the filter weights of my layer using a tensor. How can I do it?
I find the following method used in weight initialization:
self.kernel = self.add_weight(shape=kernel_shape,                                  initializer=self.kernel_initializer,                                  name='kernel',                                  regularizer=self.kernel_regularizer,                                  constraint=self.kernel_constraint)
But there's no way to feed a custom tensor to it. Please help.

@yashkant
In the end of document:
from keras import backend as K

def my_init(shape, dtype=None):
    return K.random_normal(shape, dtype=dtype)

model.add(Dense(64, kernel_initializer=my_init))

You can change it to directly return a predefined tensor.


[TFLite] OpenCL strange performance compared to OpenGL

I've run some tests and I keep seeing the behavior below, where CPU execution and OpenGL execution match all expectations (histogram shape, speed), but OpenCL performs unpredictably. The graph refers to tests run on Pixel 4 with an extremely simple model (400x400x1 input => 2D mean => 1x1 output), collecting about 3k samples for each plot.

The first plot cpu is for CPU execution (no delegate). Execution takes 10ms on average.

The second ssbo_mono_gl is for GPU execution with OpenGL. Input is passed as SSBO with the correct dimensions (400x400x1). Shape is nice and it's faster than CPU, as one would expect.

The third ssbo_mono_cl is for GPU execution with OpenCL. Input is passed as SSBO with the correct dimensions (400x400x1). I can see several issues:

On average, 2.5 times slower than OpenGL.
The results cluster around two speed levels.

I'm not concerned with OpenCL slower than OpenGL in theory (might be due to SSBO input) but histogram shows that it's averagely slower just because of the right cluster. The left cluster performs just fine, actually better than GL. This looks suspicious to me.

Things get even weirder in the fourth plot ssbo_dhwc4_cl where I pass a dhwc4 (400x400x4) SSBO to the delegate. What I see:

OpenCL performance gets about 4 times slower, which seems to suggest that most time is spent on conversions? The model is always the same (single channel).
The majority of samples now belongs to the fast cluster! Why would this shift happen?

I'd like to ask two questions,

Is there a known explanation for this (especially the two clusters, and the DHWC4 shift)? Maybe the SSBO to OpenCL conversion should be investigated.
If it's not tensorflow's fault but rather weird behavior from the GPU driver, are we really sure that OpenCL should be the preferred implementation in the V2 delegate? With this data in hand I would choose OpenGL hands down, yet TF prefers OpenCL when available. I know I can use TFLITE_GPU_EXPERIMENTAL_FLAGS_GL_ONLY, I'm just questioning the default.

Hi @impjdi , could you give some insights? Thanks!

Without looking at the model, it's hard to tell why.  It's possible that it's taking all the time in conversions + gpu waits.  If you want to dig deeper, you can use //tensorflow/lite/delegates/gpu/cl/testing/run_performance_profiling.sh to help diagnose the issue.  It's not going to solve anything, but you could pinpoint what is taking so long / where.

I described the model above, it has a single node which is a 2D mean. simple_model_400x400x1.tflite.zip
I used this model so that the profiling above would benchmark mostly i/o conversions. I run the CL profiler but it's not telling me much. My issue is not poor CL performance per se but rather

weird CL behavior, clustering around two performance points
performance being sometimes much worse than GL, despite CL being the default

Also my tests were focused on SSBO input which I don't think that run_performance_profiling.sh is using.
Here is the output on Pixel 4 @impjdi
INFO: Initialized TensorFlow Lite runtime.
Precision: CalculationsPrecision::F16
Storage type: TensorStorageType::TEXTURE_ARRAY
Per kernel timing(1 kernels):
  mean 0 - 0.219904ms
--------------------
Accumulated time per operation type:
  mean - 0.219904ms
--------------------
Ideal total time: 0.219904
--------------------

Memory for intermediate tensors - 0.305178 MB
Total time - 0.228136ms
Total time - 0.228282ms
Total time - 0.227741ms
Total time - 0.228017ms
Total time - 0.226982ms
Total time - 0.228176ms
Total time - 0.226889ms
Total time - 0.227861ms
Total time - 0.228688ms
Total time - 0.228273ms

Hi,
Thank you for opening this issue. Since this issue has been open for a long time, the code/debug information for this issue may not be relevant with the current state of the code base.
The TFLite team is constantly improving the framework by fixing bugs and adding new features. We suggest you try the latest TensorFlow version with the latest compatible hardware configuration which could potentially resolve the issue. If you are still facing the issue, please create a new GitHub issue with your latest findings, with all the debugging information which could help us investigate.
Please follow the release notes to stay up to date with the latest developments which are happening in the TFLite space.
Thanks.


Allow creating Derby as a JNDI datasource

The goal for this issue is to be able to set up and run tests looking up data sources from a JNDI lookup (as in an application server or servlet container); without requiring full blown application server (or servlet container) running.

[ ] Build a light weight (optional) JNDI InitialContext, Context, etc. implementation
[ ] Allow creation of a JNDI datasoure; which should be able to use any context provided (our sample one; or a standard app server one).

Depends on Issue #17


SEARCH-279 snapshot for inverted index

Scope & Purpose
PR adds snapshot usage for inverted indexes the same way as it  is already done for ArangoSearch view.
That is part of the fix for updates consistency.

[ ] :hankey: Bugfix
[x] :pizza: New feature
[ ] :fire: Performance improvement
[ ] :hammer: Refactoring/simplification

Checklist

[x] Tests

[ ] Regression tests
[x] C++ Unit tests
[x] integration tests
[ ] resilience tests

[ ] :book: CHANGELOG entry made
[ ] :books: documentation written (release notes, API changes, ...)
[ ] Backports

[ ] Backport for 3.10: (Please link PR)
[ ] Backport for 3.9: (Please link PR)
[ ] Backport for 3.8: (Please link PR)

Related Information
(Please reference tickets / specification / other PRs etc)

[ ] Docs PR:
[ ] Enterprise PR:
[ ] GitHub issue / Jira ticket:
[ ] Design document:

Tests blue except known ASAN failures


Cannot configure cmake-tools to stop updating the date in my headers

CMake-tools is updating the year from 2021 to 2022 in some files within the project and I can't make it stop.
When CMake-tools is enabled, about 20 files get the datestamp of 2021 updated to 2022  in the project. I'm new to VS Code, so this is all a bit new for me. When I try to open the cmake-tools settings, I get "No Settings Found". Not sure if that's a bug or if there are truly no settings for the extension. I don't want it to auto-update my code for any reason.
How can I make this stop and still have the extension enabled? Thanks!

Okay, so it looks like it's actually the cmake extension that's doing this, and having cmake-tools enabled just forced cmake to run. So nevermind. Not your issue.

Yes, you beat me to it. I was going to say that we just invoke cmake on your behalf, so if your CMakeLists.txt has some logic in it that touches the files and changes the timestamps, the fix would need to be made in your project instead.  If you have any other questions, please let us know.


luci-app-ntpc: convert to JavaScript

Converted the app to use client-side JavaScript instead of Lua. The only real change to the previous implementation is I changed the Current system time field to match the format in Status -> System -> Local Time as I could not get the %c date format to work with the format function; if this is possible feel free to comment this. Package doesn't have a PKG_VERSION so by definition it hasn't been incremented.

[X] This PR is not from my main or master branch :poop:, but a separate branch :white_check_mark:
[X] Each commit has a valid :black_nib: Signed-off-by<EMAIL_ADDRESS>row (via git commit --signoff)
[X] Each commit and PR title has a valid :memo: <package name>: title first line subject for packages
[ ] Incremented :up: any PKG_VERSION in the Makefile
[X] Tested on: (x86/generic, OpenWrt 23.05.2, Chrome and Firefox) :white_check_mark:
[ ] ( Preferred ) Mention: @ the original code author for feedback
[X] ( Preferred ) Screenshot or mp4 of changes:
[ ] ( Optional ) Closes: e.g. openwrt/luci#issue-number
[ ] ( Optional ) Depends on: e.g. openwrt/packages#pr-number in sister repo
[X] Description: (describe the changes proposed in this PR)

Also, would it be interesting to try and calculate the latency between browser and openwrt and attempt to compensate for the offset? Code golf perhaps 😎
Entirely optional.

Great! I didn't even notice we had this app.
Could you hint the host name and port fields for when they're empty?
Maybe also add in the package description that this is a client.

That sounds like good additions, I will add that.

Also, would it be interesting to try and calculate the latency between browser and openwrt and attempt to compensate for the offset? Code golf perhaps 😎
Entirely optional.

Haha, I can give it a shot, but I don't promise anything, if anything I can experiment with it and open a PR later on for it.

@systemcrash I've updated the code with your suggestions, do you think we need a better description than that or should it suffice?

One question: the local Date() clock monotonically increases with time?

One question: the local Date() clock monotonically increases with time?

No, once you enter the app, the clock fetches the current timestamp and displays that, with no auto-refresh or anything fancy like that. That is also how the previous implementation in Lua behaved so I didn't change that, but it wouldn't be hard to implement this if we wanted, like how the overview page auto-refreshes the Local Time every 5 seconds.

OK - I'm trying to reconcile what System -> Time Sync does not do. With such similar data and function, perhaps the two could be merged if they are not already the same.

OK - I'm trying to reconcile what System -> Time Sync does not do. With such similar data and function, perhaps the two could be merged if they are not already the same.

I think the biggest difference is that System -> Time Sync is built to support ntpd while this app was built to support ntpclient, so consolidating them would be quite a challenge of the top of my head as we would need to adapt luci-mod-system to support configuring multiple NTP daemons.
We could of course think of adding UI options of features that ntpclient has that ntpd doesn't but that it currently supports but I think that's entirely separate PR:s to do that work.

Nice find, I didn't even know that the project was dead.

The existing system can make calls to other ntpd sources to synchronise, which is basically what ntpclient does, right?

I'm not entirely sure but yes I think so, I created this PR purely to port it to JavaScript and what I did was to check that the UCI config values that the Lua implementation wrote to was still updated correctly after the conversion.
$ uci show ntpclient
ntpclient.@ntpserver[0]=ntpserver
<EMAIL_ADDRESS><EMAIL_ADDRESS>ntpclient.@ntpserver[1]=ntpserver
<EMAIL_ADDRESS><EMAIL_ADDRESS>ntpclient.@ntpserver[2]=ntpserver
<EMAIL_ADDRESS><EMAIL_ADDRESS>ntpclient.@ntpserver[3]=ntpserver
<EMAIL_ADDRESS><EMAIL_ADDRESS>ntpclient.@ntpdrift[0]=ntpdrift
<EMAIL_ADDRESS>ntpclient.@ntpclient[0]=ntpclient
<EMAIL_ADDRESS>

Nice find, I didn't even know that the project was dead.

Not sure how anyone can rely on a package which has no sources any longer. We can check back in a few days and see whether the host comes back.
I've made a PR otherwise here openwrt/packages#23569

Nice work. Please become a maintainer and add PKG_MAINTAINER

@systemcrash has a PR open in https://github.com/openwrt/packages/pull/23569 to drop support for ntpclient since the sources seems to be dead (https://github.com/openwrt/luci/pull/6945#issuecomment-1973863400), so we may drop the app entirely

Interesting, I found that Luci already has NTP config in a System page if the sysntpd from BusyBox was enabled during a compilation.

It's settings are stored to /etc/config/system:
config timeserver 'ntp'
    option enabled '1'
    option enable_server '0'
    list server '0.openwrt.pool.ntp.org'
    list server '1.openwrt.pool.ntp.org'

So yes, probably the feature may be removed.
Still it may be used in some old firmware of some vendors. So maybe the app will be useful for them.
When removing the app please tag the issue so they may find the PR and maybe use it once last time.

Busybox ntp has been the default server and client at least for a decade, and there has been config for that in System settings (luci-mod-system) all the time.
So, I really wonder if somebody is actively using this. This app has not been modified for some 10 years...
@dannil
you got interested in this. do you actually use it?

Busybox ntp has been the default server and client at least for a decade, and there has been config for that in System settings (luci-mod-system) all the time.
So, I really wonder if somebody is actively using this. This app has not been modified for some 10 years... @dannil you got interested in this. do you actually use it?

No, I basically picked this as a "test platform" to get into developing in LuCI (the whole "we don't develop apps in Lua anymore" seemed a good issue to start with). I'm fine to drop support for the whole app it if we conclude that the ntp functionality in System settings fulfill the same goals.

OK, we can axe ntpc.
@dannil please truncate this PR just to removal.

It needs to be backported to OpenWrt 23.05.

I've opened #6970 to backport it.


add dynamodb lib

Summary
Since our data goes through some processing before storing it in the database we will use the AWS database for local development. This saves time in ensuring both local and deployed instances go through a similar seeding process.

Adds a utility/ folder in our repo with tools for interacting with dynamodb, locally and deployed
Adds necessary packages
Adds documentation

Fixes #23
Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)
[x] This is a documentation update

How To Test
Temporarily modify your PageHeader as follows
import dynamoClient from "../utils/dynamodb-lib";

export const PageHeader = async () => {
  const params = {
    TableName: "institutions",
    Key: { institutionId: 110608, recordType: "data" },
  };
  const response = await dynamoClient.get(params);
  console.log("response", response);
...

Run yarn to install the latest dependencies
Run yarn dev
Once the app loads, verify your terminal (where you ran yarn dev) shows the output of the item you created

Checklist:

[x] My code follows the style guidelines of this project and has no linting errors
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation, including any applicable ADRs
[x] My changes generate no new warnings
[x] I have added tests that fail without these changes
[x] New and existing tests (unit, integration, accessibility) pass locally
[x] Documentation updated

Need help resolving the test issue. I think it's likely a compatibility issue between Jest, Next, Typescript, or something similar.
Some references I found:
https://stackoverflow.com/questions/71427330/nextjs-jest-transform-transformignorepatterns-not-working-with-esm-modules
https://github.com/react-dnd/react-dnd/issues/3443
https://stackoverflow.com/questions/49263429/jest-gives-an-error-syntaxerror-unexpected-token-export


add logo

Description

Steps

Setup: GitHub

[x] created this issue
[x] assigned myself
[x] moved the issue to the project board and added it to the appropriate
column

Setup: local

[x] pulled the most recent code from main/master
[x] created a new feat-branch-name branch for my feature

Steps to complete the task:

[x] step 1 details
[x] step 2 details

Before pushing my branch:

[x] pulled the most recent code from main/master to my feature branch
[ ] ran code quality checks
[x] formatted the code
[ ] fixed all linting mistakes

After pushing my branch:

[x] created a new PR linked to this issue
[x] make sure all of the checks passed
[x] assigned someone to review and merge my PR (if the task is ready)
[x] moved the issue to the appropriate column in the project board to review
it (if the task is ready)

Ok

The approval request does not come to me

because this is an issue and the request is in a pull request


$a{} type seemed to be  Array -> Array or Array -> Expr

I got haxe.macro.Expr should be Array<haxe.macro.Expr> error when I use $a{expr}.

Yes that's correct, thanks!


Parallelize CI

The GW-IaaS CI handles path filtering a bit differently: it sets all the filters for a given library in the filter job, rather than creating a single filter for each library then using OR statements in the individual if clauses.
The benefit of adopting this would be that we could potentially adopt the matrix syntax used by the DeepClean CI, while still getting the benefits of filtering, by referencing {{ matrix.lib }} in the if statement. This will allow our tests to run in parallel, speeding up CI.
The on tricky thing will be the ability to use per-job marks in pytesting (e.g. the data tests use the -m "not gpu" mark to ensure that we don't try to run GPU dataloader tests). There might be a way to control this with some sort of per-job environment variable, but I'm not sure what sort of support GitHub has for this.

We should also consider adding filters for hermes and ml4gw to trigger testing for libraries/projects that depend on these

I think the correct flow here it to replicate the workflow in hermes, which uses filters to build the matrix in the first place, then use include syntax outline here to set job-specific flags


Creating the Conceptual Data Model

A Conceptual Data Model is missing from the project documentation. Draw it up and upload it to the wiki.

Cf. Conceptual model for the Ontology Management Environment prototype
I still have the original .graphml file (for yEd)


Broken with 2024.8

Describe the bug
After upgrading to 2024.8 HA can no longer connect to my sync box:

Reverting back to 2024.7 fixes the issue straight away
To Reproduce
Upgrade to 2024.8
Go into integration in settings.
There will be an error.
Expected behavior
Extension should continue to work
Environment
Provide details about the versions you are using, which helps to reproduce and find the issue quicker.

Home Assistant Core version: 2024.8
Home Assistant operating environment (OS/Container/Supervised/Core): Container
Huesyncbox integration version: 2.0.0
Last working version (if known): 2.0.0

Additional info
2024.8 was literally just released so it's possible the HA core team have a bug they need to fix but I thought I'd raise an issue as a heads-up just in-case there's any actions required on your side.

I've asked on the HA discord:
https://discord.com/channels/330944238910963714/672220541343760384/1270844564864761947
It seems like there might be other extensions that failing for other users:

That has been fixed a few days ago. Update the integration to 2.2.3 (or higher)


Fix internet_exchance method for polling sessions

Fixes:
Fix internet_exchance used method for polling peering sessions

Coverage remained the same at ?% when pulling 547ac3743dcd3bc3d1f5bdbb0ec2a613592e9c63 on klnikita:kln/poll_peering_sessions into 7aec886f76300570f7e75c4a7c7c4f720fd8f718 on respawner:master.

Coverage remained the same at ?% when pulling 547ac3743dcd3bc3d1f5bdbb0ec2a613592e9c63 on klnikita:kln/poll_peering_sessions into 7aec886f76300570f7e75c4a7c7c4f720fd8f718 on respawner:master.

Coverage remained the same at ?% when pulling 547ac3743dcd3bc3d1f5bdbb0ec2a613592e9c63 on klnikita:kln/poll_peering_sessions into 7aec886f76300570f7e75c4a7c7c4f720fd8f718 on respawner:master.


About mqtt_ Bridge is linked for a long time and cannot receive data

A few days after the mqttbridge link, the ROS client cannot receive data from the mqtt server, but the device can receive instructions sent to the mqtt server. At this point, restart mqttbridge and you can receive it again. Why? Is there a link timeout operation in mqttbridge that does not receive data?

I am also facing similar issue. Whenever the mqtt showing disconnected and connected, the communication between ROS client and MQTT server no longer established. But if i re-do roslaunch of mqtt bridge, and it shows connected, then the communication is established.
Why would the connected after disconnected doesn't actually connect ?
Best,
Samuel

Hello @Minpig @HappySamuel
I have the same problem here.
If I use local environment to do the test.
everything is fine.
if I use aws iot mqtt,
the log is like below.

it is really annoying and I spend quite a long time to do the trouble shoot.
and it seems that in the file bridge.py.
_callback_mqtt function is not called.
@HappySamuel
hello Samuel.
what do you mean by re-do roslaunch
how do you make it work?could you please share what you do?

additional information.
I could use mosquitto to receive the data from aws iot 8883 port.

@yuma-m @ledmonster
お二人、何か心当たりがございますでしょうか？

for adding more information.
sometimes, the execution is good.
I added some log printout
but still not good with error

MQTT disconnected
issue still comes
@ledmonster @yuma-m
Could you please help?

the situation is that first
MQTT disconnected
then
MQTT connected
I am using aws iot tls.
I use the same certificated on mqtt.fx to do the test ,everything is fine.
@yuma-m @ledmonster

@chengchenglee @HappySamuel
My situation is different from yours. You have encountered the error "mqtt disconnected" before. This is because the client_id is repeated. If two devices use this ID at the same time, the other device will be disconnected.
My question is that mqtt_bridge is always "mqtt connect". I can send and receive data normally for several consecutive days. But I can't get the data from the topic "mqtt_bridge_to_ros" a week later. Why? But I can send and receive the data from the topic "ros_to_mqtt_bridge".

@Minpig thanks for your information!
for your question, I wonder whether the payload of the mqtt is too large.
I encountered the problem that if I tried to use mqtt to transmit image info. it failed.

@chengchenglee @HappySamuel My situation is different from yours. You have encountered the error "mqtt disconnected" before. This is because the client_id is repeated. If two devices use this ID at the same time, the other device will be disconnected. My question is that mqtt_bridge is always "mqtt connect". I can send and receive data normally for several consecutive days. But I can't get the data from the topic "mqtt_bridge_to_ros" a week later. Why? But I can send and receive the data from the topic "ros_to_mqtt_bridge".

@Minpig
for re-connection issue, I use my local PC for ROS->mqtt and mqtt->ROS bridge.
also, I did not set client id in params file.
when I only connect ROS->mqtt bridge, everything goes well.

adversely, when I only connect mqtt->ROS bridge, re-connection appears.

do you have any idea about this symptom?

Did anybody got solution for this? I am also stucked in this issue . My ros environment is connected to the outside server. But I can't receive my messages from the server. How can I get my messages from mqtt_topic to rostopic .

I am also facing similar issue. Whenever the mqtt showing disconnected and connected, the communication between ROS client and MQTT server no longer established. But if i re-do roslaunch of mqtt bridge, and it shows connected, then the communication is established.
Why would the connected after disconnected doesn't actually connect ?
Best, Samuel

Did you solve the problem, now im facing the same issue.

Hi @sugangandhi
I added a topic to be published up into mqtt and then loop back to receive it. With this, an additional program is used to monitor the topic to check the connectivity. If the subscribed topic is missing, then kill the mqtt and re-launch it.
Best
Samuel

Hi @sugangandhi
I added a topic to be published up into mqtt and then loop back to receive it. With this, an additional program is used to monitor the topic to check the connectivity. If the subscribed topic is missing, then kill the mqtt and re-launch it.
Best
Samuel

Hi @sugangandhi
I added a topic to be published up into mqtt and then loop back to receive it. With this, an additional program is used to monitor the topic to check the connectivity. If the subscribed topic is missing, then kill the mqtt and re-launch it.
Best Samuel

Could you please give me an idea on how you added a topic into mqtt?

Hi @HappySamuel
I am receiving the following error as a response from broker server.

Can you please tell how to solve this?

Hi @sugangandhi
For example the config for mqtt bridge, you will nee
bridge:
ROS to MQTT

factory: mqtt_bridge.bridge:RosToMqttBridge
msg_type: rmf_fleet_msgs.msg:RobotState
topic_from: /amr/robot_state
topic_to: /mqtt/robot_state     must be the same as

MQTT to ROS

factory: mqtt_bridge.bridge:MqttToRosBridge
msg_type: rmf_fleet_msgs.msg:RobotState
topic_from: /mqtt/robot_state   must be the same as
topic_to: /test/robot_state   Listen to this topic to monitor if the mqtt connection is OK or not

Best
Samuel

Hi @HappySamuel
Thanks for your last comment.
As you said I did and now I am receiving the data.I am using std_msgs as msg type.But it shows error when I use other custom messages.
How did you created this msg_type: rmf_fleet_msgs.msg:RobotState
Can you please explain how to publish the received messages from mqtt topic in a new rostopic .
In clear, Now I am receiving the messages from mqtt topic because I subscribed it.Now I want to publish those received messages in a new rostopic when publishing the rostopic using rostopic echo 'topic name'. For that how can I get the mqtt messages to the newly created rostopic.
Thanks in advance
Bala

Hi @foreverbala
It's custom msg i created, you may follow tutorial on how to create custom message. Regardless of custom message, mqtt bridge also can work with default ROS1 message, ex: std_msgs / sensor_msgs
You don't have to publish the received messages from mqtt topic into rostopic, mqtt_bridge will do the job, you just need to study to use the config setting. For publishing those received messages in new rostopic, you can just edit the topic_to: Or put a topic relay in between, then it will subscribe current ros topic name and relay it as another topic name.
Best
Samuel

Hi @HappySamuel
Thanks for your valuable answers.It will help me a lot.


IPFS protocols

Could linkifyjs at some point support the ipfs://, ipns://, and dweb:/ protocols? They have firefox support.

nvm, duplicate of #212


NoMethodError: undefined method `filter' for Rack::Attack::Fail2Ban:Class

I've been using rack-attack successfully for the past year or so--thank you!
Over the past week, I've gotten this error twice:
NoMethodError: undefined method filter' for Rack::Attack::Fail2Ban:Class`
Here's a gist of the relevant lines from my rack-attack.rb file where I'm calling the filter method.
I'm using v 4.2.0. I noticed you released 4.3.0 on 5/22 so perhaps this is related and I should just upgrade?
Thanks for any help!

sounds like a fluke ruby thing is this is extremely rare.

Hi @meowist
Are you still experiencing this issue?
If so, still experiencing it with rack-attack 5?

Hi @grzuy, Not experiencing this anymore, thank you for checking.

Thank you.


Character limit for user names

I have encountered a character limit, when trying to choose username "trendelkampschroer". Is this (relatively restrictive) character limit for keybase usernames intentional (the said username works on github)?

interesting, @malgorithms and i can talk it over. thanks!

Closing this due to inactivity.


Correct README example regarding :error-fn

The indentation of :error-fn seemes to be misaligned. This commit corrects it.

Thanks


How to use findStyleRanges() in ContentBlock?

I want to find a range that I marked with a style in a sentance,
and just find this function in ContentBlock
findStyleRanges(
filterFn: (value: CharacterMetadata) => boolean,
callback: (start: number, end: number) => void
): void
But I don't know how to create a CharacterMetadata to filter the range with the style...
Please help! If you can show an example I'll highly appreciate it!

Help~~~pleazzz

@kangax Are you familiar with this?

I think you want to do something similar like link example except you chang the inline style to your custom style.. then use decorator. no sure if this helps..

@mzbac I want to get the range that I marked with a style in a ContentBlock.
I don't know if I describe the question clearly.
for example:
How are you.
I want to get the "are"'s range in the sentance above which is marked as boldStyle.
Can I get the "are"'s range position---start at 4 and end at 7?

@Raincle  as I said you can use decorator and in your strategy function you can pass in your custom callback
https://github.com/facebook/draft-js/blob/master/examples/link/link.html#L194
do something like
      function findLinkEntities(contentState, contentBlock, callback) {
        contentBlock.findEntityRanges(
          (character) => {
            const entityKey = character.getEntity();
            return (
              entityKey !== null &&
              contentState.getEntity(entityKey).getType() === 'LINK'
            );
          },
          (start, end) => {
             //do whatever you want
             callback(start, end)
           }
        );
      }

@mzbac how would I be able to add to the data object of my entity from the callback?
For example, my rich text editor saves to the server the following: some text
When I transform that back using the example you provide, I see that getData() on the entity has a url key corresponding to www.example.com. Yet it does not have any other keys. How would I be able to customize my decorator to use the callback to inject a new key in the data object of my entity?

@terencechow  entity date insertion you can check the following
https://github.com/facebook/draft-js/blob/master/examples/link/link.html#L102 // not released in npm yet
for current npm version to insert entity data :
 const entityKey = Entity.create(
    'TOKEN',
    'IMMUTABLE',
     {url: urlValue}
  );

I ended up using mergeData
    const entity = contentBlock.getEntityAt(start)
    const text = contentBlock.getText().substr(start, end - start)
    Entity.mergeData(entity, { text })
    callback(start, end)

@terencechow  the link example is using current master branch which has API changes of entity.. it will be release later.. so your code need to change when new version released..

I just want to know how to use "findStyleRanges()". Can anyone give an example, please?

Especially, what "filterFn" should be...?

@mzbac contentState.getEntity(entityKey) is not mentioned in document. I'm not sure if it's released...

@Raincle   contentState.getEntity(entityKey)  didn't release yet. for current npm package you should use
Entity.get(entityKey).getType() === 'LINK'

@mzbac Thank you very very very much!
And I just get through how to use "findStyleRanges()".
I post here in case that someone has the same problem:
yourBlock.findStyleRanges(
  (character) => {
    return character.hasStyle('YOURSTYLE');
  },
  (start, end) => {
    console.log({ start, end });
  }
);

The parameter order has been changed in the recent master repo. https://github.com/facebook/draft-js/blob/master/examples/draft-0-10-0/link/link.html#L194
function findLinkEntities(contentBlock, callback, contentState) {
        contentBlock.findEntityRanges(
          (character) => {
            const entityKey = character.getEntity();
            return (
              entityKey !== null &&
              contentState.getEntity(entityKey).getType() === 'LINK'
            );
          },
          callback
        );
      }

      const Link = (props) => {
        const {url} = props.contentState.getEntity(props.entityKey).getData();
        return (

            {props.children}

        );
      };


iconMargins mixing up fix

As of 2.0.1 iconMargins is not working (properly) because here constrains are assumed to be arranged in "CSS order":
private func applyMarginConstraints(margins: (top: CGFloat, right: CGFloat, bottom: CGFloat, left: CGFloat)) {
	iconConstraints[0].constant = margins.top
	iconConstraints[1].constant = margins.right
	iconConstraints[2].constant = margins.bottom
	iconConstraints[3].constant = margins.left
	setNeedsLayout()
}

by in reality they are arranged differently:
func makeAnchorConstraints(to superview: UIView) -> [NSLayoutConstraint] {
	return [self.topAnchor.constraint(equalTo: superview.topAnchor),
		self.rightAnchor.constraint(equalTo: superview.rightAnchor),
		self.leftAnchor.constraint(equalTo: superview.leftAnchor),
		self.bottomAnchor.constraint(equalTo: superview.bottomAnchor)]
}

(note how left and bottom are misplaced)
Furthermore, (because of how iOS resolving constants in constraints depending on anchors order) left and bottom  should be negative to achieve desired result.
So, this PR contains fix for those issues and cleanup of some duplicating code (addSubview, create constraints, addConstraints)

I ended up adding some comments, could you double-check them? I'm not native speaker as you may have already notice ¯\_(ツ)_/¯.
I cant think about descriptive comment for typealias CariocaController, so atm only 99% cov.

Could you by the way explain why typealias CariocaIndicator = UIView & CariocaIndicatorConfiguration rather then just CariocaIndicatorConfiguration?  There is no single usage of UIView part.
And is there any reason to didSelectItem(at: Int) in CariocaMenu uses 0.5,  as animation timing, then applying some math lilke
var timingAnim1: Double = firstStepDuration * 0.7, timingAnim2: Double = firstStepDuration * 0.3
if hasBoomerang {
    // ...
    timingAnim1 = firstStepDuration * 1.25
}

instead of fetching it outside (i.e. from CariocaController)?  That will be more flexible solution

Hey @Katsz , looks like the docs generated conflicts. Can you fix those ? As soon as it's done, I'll merge the PR.
Thanks a lot for your work, one more time ! 💯

It seems like your develop is ahead of master, including swift version migration, copyright removal, etc. I'm considering closing PR and re-opening it from katsz:develop to arn00s:develop to make git history less spaghetti-ish.


Create duplicate services when using PM2 with next.js

In the projects not using next.js, we use "pm2 start pm2.json. It never generates duplicate pm2 instances.
When using PM2 with next.js, we can't use pm2.json configuration file. The code is like the following:
// package.json
"start": "node --experimental-modules server.mjs"
// deploy.sh
pm2 start npm --name "myproj" -- start
When I run deploy.sh without deleting the existing "myproj" pm2 instance, there would be two "myproj" instances. And it disables the auto-deployment script.
Looking forward to the answer.

@jim-king-2000 would you mind to explain it a little?
I'm using nextjs v7 with PM2, and I use the javascript configuration file:
It looks like this:
//pm2.config.js
module.exports = {
    apps: [
        {
            instances: 1,
            max_restarts: 10,
            merge_logs: false,
            script: './index.js',
            max_memory_restart: '200M'
        }
    ]
};

We also deploy our app using a Docker image. We run this file using pm2 start pm2.config.js and there's no problem. Maybe you need to specify when running pm2 the way you run the number of instances, in order to force instance regeneration and removal of the current running instance?
Hope this helps!

@jim-king-2000 try running in the following way:
pm2 start npm --name "myproj" -- start -i 1

It works. I'm so sorry. The error message is the old one. I see the old error and do not try to access the server. I close the thread. It is a false alarm.

🙏 great!


v1.KubeSchedulerConfiguration is not compatible with controller-gen

I am using the kubescheduler.config.k8s.io/v1.KubeSchedulerConfiguration type as a field in my CustomResourceDefinition. However, when I try to generate CRD manifests from the Go type for the CRD using the command I get various errors.
I'm curious if this use case is supported. It can help projects like kubeadm, Cluster API or Kamaji.
Errors encountered
A few errors about float types (presumably QPS/Burst) in the componentbaseconfigv1alpha1.ClientConnectionConfiguration:

 /Users/abalkan/go-athens/pkg/mod/k8s.io/component-base@v0.29.1/config/v1alpha1/types.go:79:6: found float, the usage of which is highly discouraged, as support for them varies across languages. Please consider serializing your float as string instead. If you are really sure you want to use them, re-run with crd:allowDangerousTypes=true

And a few errors about various []byte fields that have +listType=atomic:

/Users/abalkan/go-athens/pkg/mod/k8s.io/kube-scheduler@v0.29.1/config/v1/types.go:388:2: must apply listType to an array, found string

/Users/abalkan/go-athens/pkg/mod/k8s.io/kube-scheduler@v0.29.1/config/v1/types.go:392:2: must apply listType to an array, found string

/Users/abalkan/go-athens/pkg/mod/k8s.io/kube-scheduler@v0.29.1/config/v1/types.go:396:2: must apply listType to an array, found string

/kind support

Closing in favor of https://github.com/kubernetes/kubernetes/issues/124201