gradle 5.6.2 Could not determine java version from '12.0.1'.

I am trying to compile latest thrift 0.12.0 and get gradle error
code/experiments/thrift-0.12.0
➜ lib/java/gradlew -version --stacktrace

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '12.0.1'.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
java.lang.IllegalArgumentException: Could not determine java version from '12.0.1'.
        at org.gradle.api.JavaVersion.toVersion(JavaVersion.java:72)
        at org.gradle.api.JavaVersion.current(JavaVersion.java:82)
        at org.gradle.internal.jvm.UnsupportedJavaRuntimeException.assertUsingVersion(UnsupportedJavaRuntimeException.java:42)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:32)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:257)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:191)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:31)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:108)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

* Get more help at https://help.gradle.org

code/experiments/thrift-0.12.0
➜ env G JAVA
41:JAVA_HOME=/usr/java/latest

when I run ./configure in thrift root folder I get:
Java Library:
   Using gradlew ............. : lib/java/gradlew
   Using java ................ : java
   Using javac ............... : javac

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '12.0.1'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org
   Using Gradle version ...... :
   Using java version ........ : java version "12.0.1" 2019-04-16

Installed java packages
➜ _ dnf list installed G java
61:abrt-java-connector.x86_64                        1.1.2-1.fc30                                @updates
643:graphviz-java.x86_64                              2.40.1-46.fc30                              @updates
849:java-1.8.0-openjdk.x86_64                         1:<IP_ADDRESS>.b10-0.fc30                      @updates
850:java-1.8.0-openjdk-devel.x86_64                   1:<IP_ADDRESS>.b10-0.fc30                      @updates
851:java-1.8.0-openjdk-headless.x86_64                1:<IP_ADDRESS>.b10-0.fc30                      @updates
852:java-11-openjdk-headless.x86_64                   1:<IP_ADDRESS>-0.fc30                          @updates
853:java-latest-openjdk-headless.x86_64               1:<IP_ADDRESS>-1.rolling.fc30                   @updates
854:java-openjdk-headless.x86_64                      1:<IP_ADDRESS>-4.rolling.fc30                  @updates
855:javapackages-filesystem.noarch                    5.3.0-4.fc30                                @fedora
856:javapackages-tools.noarch                         5.3.0-4.fc30                                @fedora
2601:tzdata-java.noarch

Using Gradle version ...... :

Is suspicious in not reporting a Gradle version.
Could you add the output of .gradlew -version on your machine?
My first guess would be that you have a Linux distribution packaged version of Gradle which is usually a rebuilt version with selected patches and not something that matches the official Gradle releases.
In addition, when looking at the thrift repo gradle wrapper I see they are still using 5.1.1 which was not Java 12 compatible. You need at least Gradle 5.4.

I agree with Louis, this looks like the version of Gradle distributed with Fedora.
You can get our official releases from https://gradle.org/install/


Variables defined in a submodule should be overridable on the command line

I have following justfile in the same directory:
var.just
compose_provider := 'podman'

test.just
import 'var.just'

show:
  @echo "compose_provider is {{ compose_provider }}"

Justfile
import 'var.just'
mod test 'test.just'

show:
  @echo "compose_provider is {{compose_provider}}"

And when i set the compose_provider from command line, the show recipe in the Justfile is changed as expect
❯ just --unstable compose_provider=nerdctl show
compose_provider is nerdctl

but the show recipe in the test module always show the default value
❯ just --unstable compose_provider=nerdctl test show
compose_provider is podman

The just version is 1.27.0

This is currently not possible. On the CLI, only variables in the root justfile can be overridden, but it would be nice to be able to override submodule variables.

Thanks for the quick reply. And now I workaround by using the environment
compose_provider := env('COMPOSE_PROVIDER', 'podman')


Raftexample tests

Tests and some fixes along the way.

This is good in general.

One nit. LGTM.


Please release the action with Node 20

Node 16 is deprecated.
Please release the new version with Node 20 support. :)
Thanks

@sblantipodi -- that was done and released about a month ago.
https://github.com/benday-inc/set-property-value-in-appsettings/releases/tag/v1.5
Let me know if you're still having problems.
-Ben

@benday I'm using 1.5 but GitHub still complain about NodeJS 16.

@sblantipodi -- just pushed v1.6. Give it a shot and tell me if you're still getting the warning

@benday it works now, thanks!


Plans for a "proper" vscode extension?

Hello! I would like to adopt just for some personal (and some work) projects, so I was taking a look at the recommended just VSCode extension linked in the README and realized the the repository is read-only now, with the last commit being 5 years ago.
Any plans on adding a proper extension for VSCode?

https://marketplace.visualstudio.com/items?itemName=sclu1034.justfile&ssr=false#overview this extension says that it is no longer under active development, but it seems like it has slightly more advanced TextMate grammars (not sure if "advanced" translates to "better" though):

https://github.com/skellock/vscode-just/blob/master/syntaxes/just.tmLanguage.json
vs. https://github.com/sclu1034/vscode-just/blob/master/syntaxes/just.tmLanguage.json

Since I really only care about accurate syntax highlighting, I'm going to try the other one and see if it's any better.

I already kinda like the newer one, as it switches to proper completions/syntax for scripts that are embedded in recipes (as long as it matches a shebang). So I can get Python completions and such if I just add #!/usr/bin/env python3, which is kinda neat. I don't think the skellock one has that.

The VS Code extensions aren't written and maintained by me, so it's not my call! Thanks for updating me on skellock/vscode-just's status. I changed the readme to also link to sclu1034/vscode-just.


argsort incorrectly handles very small floating-point numbers and -0.0 compared to PyTorch

Description
Description:
When using JAX's argsort function on an array containing small floating-point numbers, as well as 0.0 and -0.0, the sorting order is incorrect compared to other libraries like PyTorch.
Specifically, JAX incorrectly places the very small positive number 1.401298464324817e-45 before both 0.0 and -0.0. Expected behavior is that both 0.0 and -0.0 should be treated as equivalent and placed before any positive numbers, including very small values like 1.401298464324817e-45. PyTorch demonstrates the correct behavior in this case.
import numpy as np
import torch
import tensorflow as tf
import jax.numpy as jnp

def test_argsort():
    # Input data, hardcoded as float32
    input_data = np.array([
        -0.0, 1.401298464324817e-45, 1.100000023841858, -0.0,
        5.960464477539063e-08, -2.0000100135803223, 1000000.0,
        722801.375, 0.0, -1.100000023841858
    ], dtype=np.float32)

    # PyTorch argsort
    pytorch_result = torch.argsort(torch.tensor(input_data, dtype=torch.float32)).numpy()
    print(f"PyTorch argsort result: {pytorch_result}")

    # TensorFlow argsort
    tensorflow_result = tf.argsort(input_data).numpy().astype(np.int32)
    print(f"TensorFlow argsort result: {tensorflow_result}")

    # JAX argsort
    jax_result = jnp.argsort(input_data).astype(np.int32)
    print(f"JAX argsort result: {jax_result}")

if __name__ == "__main__":
    test_argsort()

PyTorch argsort result: [5 9 0 3 8 1 4 2 7 6]
TensorFlow argsort result: [5 9 0 1 3 8 4 2 7 6]
JAX argsort result: [5 9 0 1 3 8 4 2 7 6]

System info (python version, jaxlib version, accelerator, etc.)
jax:    0.4.26
jaxlib: 0.4.26
numpy:  1.26.4
python: 3.9.19 | packaged by conda-forge | (main, Mar 20 2024, 12:38:46) [MSC v.1929 64 bit (AMD64)]
jax.devices (1 total, 1 local): [CpuDevice(id=0)]
process_count: 1
platform: uname_result(system='Windows', node='Lily的电脑', release='10', version='10.0.22631', machine='AMD64')

JAX arrays on CPU use FTZ mode, that is, subnormal numbers (like 1e-45) are flushed to zeros:
>>> with jax.default_device(jax.devices('cpu')[0]):
...   jax.numpy.array(numpy.array([-0.0, 1.401298464324817e-45, -0.0], numpy.float32)) == 0
...
Array([ True,  True,  True], dtype=bool)
>>> with jax.default_device(jax.devices('cuda')[0]):
...   jax.numpy.array(numpy.array([-0.0, 1.401298464324817e-45, -0.0], numpy.float32)) == 0
...
Array([ True, False,  True], dtype=bool)

So, the issue is not in argsort but in using FTZ mode in general on CPU.

JAX arrays on CPU use FTZ mode, that is, subnormal numbers (like 1e-45) are flushed to zeros:
>>> with jax.default_device(jax.devices('cpu')[0]):
...   jax.numpy.array(numpy.array([-0.0, 1.401298464324817e-45, -0.0], numpy.float32)) == 0
...
Array([ True,  True,  True], dtype=bool)
>>> with jax.default_device(jax.devices('cuda')[0]):
...   jax.numpy.array(numpy.array([-0.0, 1.401298464324817e-45, -0.0], numpy.float32)) == 0
...
Array([ True, False,  True], dtype=bool)

So, the issue is not in argsort but in using FTZ mode in general on CPU.
Thank you for your response, but I'd like to emphasize that the main issue is with how JAX handles -0.0 in argsort. 1. Handling of -0.0 in argsort: According to the IEEE 754 standard, -0.0 and 0.0 should be treated as equal. However, in JAX's argsort, it seems that -0.0 is treated differently from 0.0, leading to an incorrect sorting order. In my test case, JAX's argsort returns an index for -0.0 that suggests it's not equal to 0.0, which is not the expected behavior. In contrast, PyTorch correctly handles this case by treating -0.0 and 0.0 as equal, resulting in the expected sorting order. 2. FTZ (Flush to Zero) mode on CPU: While the FTZ mode may explain the handling of subnormal numbers like 1.401298464324817e-45, the core issue in this particular case is the treatment of -0.0. PyTorch, also running on the same CPU, does not exhibit this issue, suggesting that the problem is not inherent to the CPU but rather how JAX is handling -0.0 in its sorting operations. The incorrect handling of -0.0 is the root cause of the inconsistent argsort results. Would it be possible to review how JAX is dealing with -0.0 in argsort and ensure it conforms to the IEEE standard where -0.0 and 0.0 are considered equal?

In processors that support the FTZ flag, enabling FTZ is optional. PyTorch obviously does not enable FTZ mode while JAX (read: some of its underlying component) does on CPU.

in JAX's argsort, it seems that -0.0 is treated differently from 0.0

Looking at your test output, I would conclude that -0.0, 1e-45, 0.0 are all treated as equal because in argsort output, their order is unchanged (as per its stable=True option).

在支持 FTZ 标志的处理器中，启用 FTZ 是可选的。PyTorch 显然不会启用 FTZ 模式，而 JAX（阅读：其某些底层组件）在 CPU 上启用了 FTZ 模式。

在 JAX 的 argsort 中，-0.0 似乎与 0.0 的处理方式不同

查看您的测试输出，我得出结论-0.0，，，都被视为相等，因为在1e-45输出中，它们的相对顺序保持不变（根据其选项）。0.0``argsort``stable=True

CPU and GPU output should be consistent:
According to the IEEE 754 standard, subnormal numbers (such as 1e-45) should not produce different results on the CPU and GPU. JAX uses the FTZ (Flush to Zero) mode on the CPU to flush these very small values to zero, but this mode is not enabled on the GPU, resulting in differences in sorting and comparison results.

However, users expect consistent results on all hardware platforms, especially in basic operations such as argsort. PyTorch is able to maintain consistent behavior on the CPU and GPU, indicating that this is a problem in the JAX implementation rather than a limitation of the hardware itself. Consistency on different hardware platforms is an important principle that numerical computing frameworks should follow.

PyTorch handles it correctly:
In PyTorch, the results of subnormal number processing are consistent regardless of CPU or GPU. In particular, in this case, PyTorch returns the correct sort result because it does not change the processing of these small numbers due to different platforms.

In contrast, JAX's inconsistent behavior indicates that its handling of FTZ mode is not in compliance with the standard, especially when performing basic operations like argsort. This behavior leads to inconsistent results between CPU and GPU, which introduces potential bugs. JAX should behave consistently across all platforms, just like PyTorch does.

In processors that support the FTZ flag, enabling FTZ is optional. PyTorch obviously does not enable FTZ mode while JAX (read: some of its underlying component) does on CPU.

in JAX's argsort, it seems that -0.0 is treated differently from 0.0

Looking at your test output, I would conclude that -0.0, 1e-45, 0.0 are all treated as equal because in argsort output, their relative order is unchanged (as per its stable=True option).

CPU and GPU output should be consistent:
According to the IEEE 754 standard, subnormal numbers (such as 1e-45) should not produce different results on the CPU and GPU. JAX uses the FTZ (Flush to Zero) mode on the CPU to flush these very small values to zero, but this mode is not enabled on the GPU, resulting in differences in sorting and comparison results.

However, users expect consistent results on all hardware platforms, especially in basic operations such as argsort. PyTorch is able to maintain consistent behavior on the CPU and GPU, indicating that this is a problem in the JAX implementation rather than a limitation of the hardware itself. Consistency on different hardware platforms is an important principle that numerical computing frameworks should follow.

PyTorch handles it correctly:
In PyTorch, the results of subnormal number processing are consistent regardless of CPU or GPU. In particular, in this case, PyTorch returns the correct sort result because it does not change the processing of these small numbers due to different platforms.

In contrast, JAX's inconsistent behavior indicates that its handling of FTZ mode is not in compliance with the standard, especially when performing basic operations like argsort. This behavior leads to inconsistent results between CPU and GPU, which introduces potential bugs. JAX should behave consistently across all platforms, just like PyTorch does.

We confirmed in related issue (#24281) that JAX handles signed zeros consistently in operations like argsort and argmax.
With that out of the way, it seems your main concern is that JAX treats subnormal numbers differently depending on the backend. Is that correct?
Yes, because I am currently testing deep learning libraries, I may submit some bugs to you in a short period of time. For our evaluation criteria, the output results of different deep learning libraries under the same conditions should be consistent if there is no problem. Secondly, when it comes to calculation accuracy issues, we believe that special cases need to be clearly noted and marked. For these cases, for example, pytorch can handle this problem well, so we believe that jax's performance should also be consistent and correct if there are no other conditions. Secondly, according to the CPU and GPU examples you provided, it is obvious that the output for the same set of data inputs shows differences, which I think meets the requirements of bugs.

I edited your response to what would have been the most helpful.

FWIW, handling subnormals in a device-dependent way complicates testing on samples with subnormals. Here's another example of the issue reported here: https://github.com/pearu/functional_algorithms/issues/38#issuecomment-2366843504 where the results of evaluating math functions near the branch cuts depends if subnormals are flushed or not.
Enabling FTZ is an optimization method and, imho, there should exist a method (jax.config/environment variable/...) that allows controlling the state of the FTZ flag by user programs or testing scripts.

cc/ @hawkinsp do you know whether it would be feasible to allow user-controllable FTZ semantics?


[bug report]unreal editor log  window processive on top [UE5 ea]

5.0.0-16682836+++UE5+Release-5.0-EarlyAccess
Rider for Unreal Engine 2021.1.3
Build #RDCPPP-211.7442.67, built on June 25, 2021
Unreallink 2021.1.12
when unreallink connected to riderlink
the window "unreal editor log" processive eject on top
it prevent me do any input in other window
can i disable the "unreal editor log"window?

I have the same problem

if I disable the riderlink, this problem disappeared


Restore .NET workloads before updating NuGet packages

Fix NuGet package updates failing if the project contains projects that require any .NET workloads, such as .NET Aspire (example), due to NETSDK1147 errors.

Verified by this workflow run that generated this PR.


add BulkGetResponse comments

Description
add BulkGetResponse comments
Issue reference
just add comments, no issue.
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[x] Created/updated tests
[x] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

/cc: @artursouza


⚠ Bofrost.at has degraded performance

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

HTTP code: 200
Response time: 1118 ms

Resolved: Bofrost.at performance has improved in 6a05b37 after 8 minutes.


Certificate Expiry Notification is broken after upgrade to 1.20

My notify_expiry.yaml does not found any certificates after upgrade from 1.19 to 1.20.
If server started with debug: "openxpkictl start --debug OpenXPKI::Server::Workflow::Activity::Tools::SearchCertificates:64" I see:

2018-03-28 15:53:16.681858 DEBUG:32 PID:4112 OpenXPKI::Server::Workflow::Activity::Tools::SearchCertificates::execute (line 159): Full query $VAR1 = {
'CERT_ATTRIBUTES' => [],
'ENTITY_ONLY' => 1,
'NOTAFTER' => {
'OPERATOR' => 'BETWEEN',
'VALUE' => [
1522227196,
1523436796
]
},
'NOTBEFORE' => {
'OPERATOR' => 'LESS_THAN',
'VALUE' =><PHONE_NUMBER>
},
'STATUS' => 'ISSUED'
};
2018-03-28 15:53:17.261367 DEBUG:64 PID:4112 OpenXPKI::Server::Workflow::Activity::Tools::SearchCertificates::execute (line 162): Search returned $VAR1 = [];

But "openxpkiadm certificate list --realm ca-NPK -all -v -v -v" show certificate expired soon:

Identifier: G4EGUuv1CujY6zysB9K0uW7C0B0
Subject:      UID=planshet+CN=fda,DC=npk,DC=ru
Issuer DN:      emailAddress=hostmaster@npk.ru,CN=NPK CONTACT Registration Authority,OU=IT,O=NPK CONTACT,L=Novosibirsk,ST=Novosibirskaya Oblast,C=RU
Chain:      G4EGUuv1CujY6zysB9K0uW7C0B0 -> YpTRZvamM-NMJNlIt_FVeGBAEH0 -> JPUHlj0bqlqReF2O0lcRgB6TnWE(complete)
subject key identifier:      F1:B7:75:53:F1:F5:F6:B6:54:66:8B:DB:F7:36:F0:12:B5:93:5B:31
authority key identifier:      63:AA:EB:CF:6D:09:78:7D:29:CD:9E:1E:66:0D:A2:1E:CD:DF:9A:DE
cert key:<PHONE_NUMBER>78824652630783
issuer identifier:      YpTRZvamM-NMJNlIt_FVeGBAEH0
status:      ISSUED
notafter:<PHONE_NUMBER>
notbefore:<PHONE_NUMBER>
req key:      22527

I think the error somewhere in the API ;(
'NOTAFTER' in JSON query converted to "certificate.notbefore" in SQL ;(((
Details:

notify_expiry.yaml:

        class: OpenXPKI::Server::Workflow::Activity::Tools::SearchCertificates
        param:
          entity_only: 1
          target_key: tmp_queue
          cutoff_notafter: +000030

Full query $VAR1 = {

          'ENTITY_ONLY' => 1,
          'NOTAFTER' => {
                          'OPERATOR' => 'BETWEEN',
                          'VALUE' => [
<PHONE_NUMBER>,
<PHONE_NUMBER>
                                     ]
                        },
          'NOTBEFORE' => {
                           'OPERATOR' => 'LESS_THAN',
                           'VALUE' =><PHONE_NUMBER>
                         },
          'STATUS' => 'ISSUED'
        };

Generated MySQL query:
SELECT certificate.* FROM certificate WHERE ( ( ( certificate.notbefore BETWEEN '1522419581' AND '1525011583' ) AND certificate.pki_realm = 'ca-NPK' AND certificate.req_key IS NOT NULL AND certificate.status = 'ISSUED' ) ) ORDER BY certificate.cert_key DESC

Hi StaceZ, I will try to reproduce your problem. But the timestamps in your full query output do not match the ones in the DB query. Could you please double check you got the right query (or is it fron two different runs)?

Yes data from different runs. Sorry.
Data from single new run:
Full query $VAR1 = {
          'CERT_ATTRIBUTES' => [],
          'ENTITY_ONLY' => 1,
          'NOTAFTER' => {
                          'OPERATOR' => 'BETWEEN',
                          'VALUE' => [
<PHONE_NUMBER>,
<PHONE_NUMBER>
                                     ]
                        },
          'NOTBEFORE' => {
                           'OPERATOR' => 'LESS_THAN',
                           'VALUE' =><PHONE_NUMBER>
                         },
          'STATUS' => 'ISSUED'
        };

SELECT certificate.* FROM certificate WHERE ( ( ( certificate.notbefore BETWEEN '1522646655' AND '1525238657' ) AND certificate.pki_realm = 'ca-NPK' AND certificate.req_key IS NOT NULL AND certificate.status = 'ISSUED' ) ) ORDER BY certificate.cert_key DESC

Hi! Have you tried it? Have any results?
If not, then, apparently, I had to go back to the previous version.
Where can I download 1.19 for Ubintu?
In the repository of this version is no longer, and I did not guess to save the distribution; (

Hi and sorry for the delay. We have backported some fixes from the 2.x version branch.
This should also fix your problems.
A new release 1.20.2 is in preparation.

Thank you! I'll wait. Can you name the approximate date of occurrence 1.20.2 on Ubuntu 14.04?

I put 1.20.2 packages on the server but did not test it - please give it a try.

Unfortunately, I do not see any new packages for Ubuntu. Only packages for Debian are updated ;(

Sorry - I have created and uploaded ubuntu packages now, please try them

Certificate expiration notifications now work!
Thank you!
In addition, now loading a username into the UTF8 from LDAP does not cause the web interface to crash when viewing workflows.
Thanks again!
A couple of small comments:

I have HTML files already in Unicode, so I had to edit the file /usr/lib/perl5/OpenXPKI/Server/Notification / SMTP.pm by removing "Encode :: encode_utf8 (...)" from it to avoid excessive transcoding.

I think it would be better to make a configuration parameter indicating the need for such a recoding.

the logic was inverted:

condition:
    is_renewed:
        class: OpenXPKI :: Server :: Workflow :: Condition :: WFArray
        param:
            array_name: renewed_identifier
            condition: is_empty

Previously, if this array was empty, then is_renewed had a true value, which would spoil its name, but it corresponds to the specified condition.
Therefore, I renamed this variable to is_not_renewed and changed the conditions at the beginning of the file.
Now, if no new certificates are found, then is_renewed has the value of a false, although, as far as I understand, this contradicts the given conditions.


Add Durable Decorators directly to Python library

This PR attempts to provide an implementation of the Durable Functions decorators (for the V2 prog model) within the Python library itself. The trick is to simply expose the right interface but defer the implementation to the Durable Functions SDK.
This PR does just that. In particular, it:

Adds the DF decorator interfaces to the Python library. This will enable us to implement the DF templates for the V2 programming model with ease, as all DF triggers and bindings will now be exposed from the FunctionApp object.
It does not make the durable functions SDK a "prod" dependency of the library. The customer needs to bring the durable functions SDK within their app for this to work. If they do not depend on it, we throw a friendly error asking them to bring the DF SDK.
It makes the DF SDK part of this package's dev-dependencies. This allows us to write unit tests for this behavior.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 93.16%. Comparing base (31f3d42) to head (330cd1d).
 Consider uploading reports for the commit bb81312 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##              dev     #207      +/-   ##
==========================================
+ Coverage   93.10%   93.16%   +0.06%
==========================================
  Files          56       56
  Lines        3247     3277      +30
  Branches      666      667       +1
==========================================
+ Hits         3023     3053      +30
  Misses        137      137
  Partials       87       87

Flag
Coverage Δ

unittests
93.13% <100.00%> (+0.06%)
:arrow_up:

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

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

@gavin-aguiar : are we good to merge this?


Feature Request - Tasks - Match task width to category width

It surprised me a bit to see the tasks side by side with each other. Most other Task systems do not flow that way. (See Trello, JIRA, etc)

I used Azure DevOps as a reference in which the tasks flow like this. I personally like it like this since it uses the space pretty well.
Do you think this is not easily readable?

Ah. I've never used that tool before so the flow felt strange. If it was
intentional this isn't needed. Thanks!
On Fri, May 13, 2022, 2:04 AM Steffen Nörtershäuser <
@.***> wrote:

I used Azure DevOps as a reference in which the tasks flow like this. I
personally like it like this since it uses the space pretty well.
Do you think this is not easily readable?
—
Reply to this email directly, view it on GitHub
https://github.com/steffendx/GoNorth/issues/98#issuecomment-1125687289,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADJ7PVTB776CNRMMJS5L2Z3VJXWILANCNFSM5VZQ4XWQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

Alright. Thanks for reporting this anyways!


Design resource page and navigation

We need to move the resource links to a page that is accessed using the Find Resources button.
This page should categorize and list resources, and allow for a very brief (one or two lines on mobile) explanation of the resource.
A user should also be able to easily navigate back to the homepage. (side question, should COVID SC in the header bar be a link?)

https://app.zeplin.io/project/5e7e4dc925feed6b33480e5d/screen/5e8222bb120af47227babca6/

https://app.zeplin.io/project/5e7e4dc925feed6b33480e5d/screen/5e8222bcf6f7726cf13a8512/

https://app.zeplin.io/project/5e7e4dc925feed6b33480e5d/screen/5e8222be0077f714c16d4b26/


How can I check Buffer.isBuffer()?

Type checks are checking if a Buffer was passed and it is a certain length.
Perhaps I need to implement it in the JS glue code...
#2

JsBuffer is currently dummy type. Import Buffer object.
wasm-bindgen can duck-typing.
https://rustwasm.github.io/docs/wasm-bindgen/reference/working-with-duck-typed-interfaces.html

This also is interesting:
https://rustwasm.github.io/docs/wasm-bindgen/reference/attributes/on-js-imports/js_class.html

I was able to implement Buffer::from but Buffer::is_buffer requires ownership of the value passed in, and that adds a lot of copying.

I wonder if there's a way to create a new type besides JsBuffer that will perform checks when wasm-bindgen passes in the Box<[u8]>...
It feels like something rust would do well. I'll have to look into it.

impl From<Box<[u8]>> for MyType {
  pub fn from(bytes: Box<[u8]>) -> Self {
    // Buffer::is_Buffer(bytes) checks etc...

    // but does the From trait allow returning a Result?
    // checking the values when it is casted into the parameters etc...
  }
}

We would be better to make low-level wrapper.
But I am little worried because recipe without wasm-bindgen is few.

it is impossible to do isBuffer right now, since any Buffers passed in are converted to Uint8Array, so checking is moot.
This can only be fixed by a wrapper added on our end, or if wasm-bindgen adds some new functionality.


feat: removes automatic config transpilation

Description
This PR removes / flattens some complexity with Payload and removes the need to use @swc/register to automatically transpile Payload configs, which will ultimately further improve performance in production start times, and reduce production dependencies needed significantly.
The current problem
Right now, the Payload config can support TS and JSX out of the box without having to run your server through something like ts-node in development mode.
But, to support this, we need to use a package like @swc/register to ensure that any files that are loaded through the Payload config are properly sent through a transpilation process before Node is able to execute the files.
However, a big majority of Payload projects already go through a transpilation step, because all TS projects are started and transpiled with something like ts-node anyway. And those projects, executed with ts-node, will be unnecessarily transpiled twice  - first with ts-node and then with @swc/register. This is duplicative and unnecessary.
To improve this, we have removed our @swc/register reliance and are now leaving it up to Payload developers to transpile their configs themselves, if necessary.
Breaking changes
If your project is already TS, there are no breaking changes.
If your project is JS, and you have TS or JSX in your config files, you will need to start your process in dev using ts-node or similar. We also suggest to install swc so that ts-node runs as fast as possible.
Making these changes is quite simple. Here's a step-by-step guide:
Step 1  - install new dependencies
 `yarn add @swc/core ts-node`

Step 2 - create a tsconfig.json
Place a new file called tsconfig.json at the root of your project, with the following contents:
{
  "compilerOptions": {
    "target": "es2015",
    "module": "commonjs",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "strict": false,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "jsx": "react"
  },
  "include": [
    "src"
  ],
  "exclude": [
    "node_modules",
    "dist",
    "build",
  ],
  "ts-node": {
    "swc": true
  }
}

Step 3 - update your nodemon.json file to execute ts-node instead of just node
{
  "ext": "ts",
  "exec": "ts-node src/server.ts"
}

Step 4 - update your package.json serve script to use ts-node instead of node
    "serve": "NODE_ENV=production ts-node server.js"

From there, you can yarn dev as you normally would.

[x] I have read and understand the CONTRIBUTING.md document in this repository

Type of change

[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

Checklist:

[x] Existing test suite passes locally with my changes
[ ] I have made corresponding changes to the documentation

Is using ts-node --swc src/server.ts not needed in the nodemon.json?

@AlessioGr — you can add swc support directly to your tsconfig.json as shown, which makes it so that you don't need to pass it as an arg at the command line:
  "ts-node": {
    "swc": true
  }


findAndModify with remove: true works incorrectly when the result is not found

Versions
FerretDB: v0.5.4 (or current main - ab452bb84b2bfc8a95bb65db06c9c1a35e27ae4e).
What did you do?
This is the data to reproduce the problem (collection bools, created by task env-data):
db.bools.find()
[
  { _id: 'bool-null', v: null },
  { _id: 'bool-false', v: false },
  { _id: 'bool-true', v: true }
]

I call:
db.bools.findAndModify({query: {_id: "double"}, remove: true});

Important: notice that such _id doesn't exist in this collection.
What did you expect to see?
Proxy response message:
{
  "Checksum": 0,
  "FlagBits": 0,
  "Sections": [
    {
      "Document": {
        "$k": [
          "lastErrorObject",
          "value",
          "ok"
        ],
        "lastErrorObject": {
          "$k": [
            "n"
          ],
          "n": 0
        },
        "value": null,
        "ok": {
          "$f": 1
        }
      },
      "Kind": 0
    }
  ]
}

What did you see instead?
FerretDB response:
Response message:
{
  "Checksum": 0,
  "FlagBits": 0,
  "Sections": [
    {
      "Document": {
        "$k": [
          "lastErrorObject",
          "ok"
        ],
        "lastErrorObject": {
          "$k": [
            "n"
          ],
          "n": 0
        },
        "ok": {
          "$f": 1
        }
      },
      "Kind": 0
    }
  ]
}

In this response, value: null is missing. We should fix it.
TODO
Find the tests where this issue number is mentioned, unskip these tests, fix the problem.
See https://github.com/FerretDB/FerretDB/pull/1241/files for the tests that are skipped.

TODO: check that the fix fixed the problem mentioned in the issue

This is covered by TestFindAndModifyCompatRemove https://github.com/FerretDB/FerretDB/blob/main/integration/findandmodify_compat_test.go#L345 now


Some svgs have white backgrounds

I've discovered that some phylopic svgs have white background layers, e.g.:
https://images.phylopic.org/images/eedde61f-3402-4f7c-9350-49b74f5e1dba/vector.svg
https://images.phylopic.org/images/2de1c95c-7e1f-429b-9c08-17f0a27d176f/vector.svg
This isn't normally an issue for general use, but when you try to programmatically change the color of the silhouette (e.g., in rphylopic), there isn't an easy way to identify which layers are the background and which layers are the foreground, so you end up coloring all of them, which makes a lovely colored rectangle.
In my experience most phylopic svgs seem to have no background layers, so this seems like an abnormality, but I don't know how to programmatically find all of the uuids for phylopics that have svgs with backgrounds. Let me know if there's any way I can help further.

This is essentially the same core problem as https://github.com/keesey/phylopic/issues/15
SVGs files are not modified during submission -- they're just whatever the contributor submitted. I don't have a good solution for this now, but would like to think about it.

This can be handled by the solution for #15.


Use a cross-platform approach to global string replacements

The three argument version of replace is only supported by Firefox.

Thanks!


b1.7.3 Station API port?

Most of the content mods on b1.7.3 Cursed Legacy depend on Station API (Though there aren't many). I wish you can port it to Station API.

Good news. I removed the dependency in the latest release!
https://modrinth.com/mod/inventory-pause-cursed/version/ixSMTmjw


Wither boss can destroy bedrock

Describe the bug
During the fight with one Wither Boss I used the common tactic of spawning him under the end portal to the overworld, mid fight when he makes a hude explosion and summon minions he deleted the End portal blocks and bedrock.
Versions:

Minecraft: 1.18.2
Forge: Fabric
Progressive Bosses: 1.0.6
InsaneLib:

Steps to reproduce

Summon the boss
DPS him until he does that atack
Say goodbay to any block near him including bedrock

Expected behavior
Not breaking Bedrock with the risk of falling to the void on the overworld or  being able to bug me on the nether roof on a server
Screenshots

Logs
No crash so no logs
Can the issue be reproduced with a mininal set of mods? (E.g. Progressive Bosses + InsaneLib + Tinkers' Construct)
IDK

This is not the Fabric version of the mod


Regenerate package-lock.json

Upgrade lock file version from 2 to 3.
Takes package-lock.json from 632KB to 352KB.
I confirm I have read the contributing guidelines and signed the Contributor License Agreement.

It is! 😄


Fix issue 279

Fix #279

Codecov Report

Merging #285 into master will increase coverage by 0.04%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #285      +/-   ##
==========================================
+ Coverage   76.88%   76.92%   +0.04%
==========================================
  Files         116      116
  Lines        7886     7900      +14
==========================================
+ Hits         6063     6077      +14
  Misses       1169     1169
  Partials      654      654

Impacted Files
Coverage Δ

plumbing/object/tree.go
70.61% <ø> (ø)
:white_check_mark:

plumbing/difftree/difftree.go
91.3% <100%> (+13.52%)
:white_check_mark:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b5da4e9...cf4e869. Read the comment docs.


but code generator protoc-gen-dart hasn't been updated to support optional fields in proto3.

when using optional in proto3 file we generated python code but not dart

@iinozemtsev @sigurdm I see that internal fork supports optional. Any plans to bring repos in sync?

Yes, I slowly work on syncing these repos, once I finish with null safety, I'll bring proto3 optional support

@iinozemtsev how do I proceed at the moment if I want to build an API with optional values? I have an UpdateRequest message, and I want most values to be optional so the client can decide which values to update. What is the way to go here?
I've seen that some recommend oneof but that's more of a hack than anything else, and it also doesn't work with repeated values.


Can no longer get into bios

used 1.5.1, saved my custom splash image as 24-bit bitmap (bmp), size of custom splash image is 275x488 395kb, disabled secure boot...
new image appears fine on restart but when screen transitions from the new splash image to the windows lockscreen image there's a bright flash right before the lockscreen image loads, as if the system was expecting the,new splash image to remain on the screen longer.
moreover, i can no longer get into bios when i reboot, none of access keys work, it immediately goes to my custom splash screen then to the windows lockscreen...
i tried option "d=disable, restore the original bootloader" in the setup, but altho i get the windows splash screen back i still get the same odd bright flash behavior as the screen transitions to the lockscreen, and i still can no longer get into the bios.
any help would be greatly appreciated.

Removing HackBGRT with the setup utility removes everything. It seems very unlikely or even impossible that HackBGRT would have any effect on your BIOS setup utility. If it does, it's a bug in your BIOS.


Avoid pulling images for cloud runners

Coverage decreased (-0.5%) to 46.825% when pulling c87a42ed312fa4a75d606b1a7e79a28bf2a1c8b3 on eiriksm-patch-1 into b4c4da1ebacfa9fb4b27c8c0a8ece5a19b015cf6 on main.


C++ errors

In file included from /disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/animator.cpp:92:
In file included from /disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/animator.h:7:
In file included from /disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguifwd.h:7:
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguibase.h:149:3: error: unsupported compiler
        #error unsupported compiler
         ^
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguibase.h:358:16: error: no member named 'move' in namespace 'std'
                *this = std::move (op);
                        ~~~~~^
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguibase.h:426:15: error: no member named 'move' in namespace 'std'
        *this = std::move (mp);
                ~~~~~^
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguibase.h:475:39: error: no member named 'forward' in namespace 'std'
        return SharedPointer<I> (new I (std::forward<Args>(args)...), false);
                                        ~~~~~^
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguibase.h:475:47: error: 'Args' does not refer to a value
        return SharedPointer<I> (new I (std::forward<Args>(args)...), false);
                                                     ^
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../vstguibase.h:472:32: note: declared here
template <class I, typename ...Args>
                               ^
In file included from /disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/animator.cpp:98:
In file included from /disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../platform/platformfactory.h:8:
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../platform/platformfwd.h:34:1: error: static_assert failed "unknown platform"
static_assert (false, "unknown platform");
^              ~~~~~
In file included from /disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/animator.cpp:98:
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/animation/../platform/platformfactory.h:21:20: error: unknown type name 'PlatformInstanceHandle'
void initPlatform (PlatformInstanceHandle instance);
                   ^
7 errors generated.

/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp:209:7: error: use of undeclared identifier 'execvpe'; did you mean 'execve'?
                if (execvpe (argv[0], argv, envp) == -1)
                    ^~~~~~~
                    execve
/usr/include/unistd.h:336:6: note: 'execve' declared here
int      execve(const char *, char * const *, char * const *);
         ^
/disk-samsung/freebsd-ports/audio/sfizz/work/sfizz-1.2.0/plugins/editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp:237:15: warning: private field 'exDialogType' is not used [-Wunused-private-field]
        ExDialogType exDialogType{ExDialogType::none};
                     ^
1 warning and 1 error generated.

The first error unsupported compiler is bogus - it really checks OS, not compiler.
The rest are likely results of missing include statements.
Version: 1.2.0
FreeBSD 13.1

The first move/forward are either a missing #include <utility> or a C++11 flag that's not properly set up for this particular file.
The last error is my own patch, and execvpe has no equivalent in BSD land. I don't really have the spare time to support BSD at the moment but if you want to have a shot at these I'd gladly accept patches !
Note: all of these are problems in VSTGUI; our fork is at https://github.com/sfztools/vstgui if you want to submit tpatches there, or directly upstream even, although for other reasons we're not tracking the latest version right now.

Once unsupported compiler was solved with
-#elif defined(__linux__)
+#elif defined(__linux__) || defined(__FreeBSD__)

the other errors disappeared.
The execvpe problem was patched with #define execvpe(a, b, c) execvp(a, b).
If you could add an option to use an external vstgui this would be the best solution.


Nastya must react on video messages as well

Context
We have a Nastya Mode. This handler detects voice messages and performs the following actions:

extract audio data from the voice message
try to recognize voice message content and convert it into text
remove original message
send recognized text
mute sender for a VOICE_USER_MUTE_DURATION

Nastya for video messages (кружочки)
So, when I wrote it, Telegram didn't support circle video message. But now it does. And we need to support it.
TODO:

[ ] add a new handler to catch all kind of video messages
[ ] somehow try to extract audio track from it
[ ] try to recognize audio data, like in voice messages handler
[ ] remove original message
[ ] send ecognized text
[ ] mute sender for a VOICE_USER_MUTE_DURATION
[ ] set VOICE_USER_MUTE_DURATION to week, I believe 10 minutes is too few

We can test it in LOS.

You could assign this to me 😊

Tell me no more!

Closed by #274


the maximum IOPS for GP is 16,000 instead of 7,000.

[Enter feedback here]
According to https://learn.microsoft.com/en-us/azure/azure-sql/database/service-tiers-sql-database-vcore?view=azuresql#service-tiers, the maximum IOPS for GP is 16,000 instead of 7,000.
Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 113c4717-dc67-96bd-1e09-71c65cafdb21
Version Independent ID: ace58ece-f363-3912-92a6-ebb13f8b690f
Content: What is the Hyperscale service tier? - Azure SQL Database
Content Source: azure-sql/database/service-tier-hyperscale.md
Service: sql-database
Sub-service: service-overview
GitHub Login: @dimitri-furman
Microsoft Alias: dfurman

@crushonme
Thanks for your feedback! We will investigate and update as appropriate.

@crushonme Thanks for the doc suggestion! We've made some recent changes to the content that address this. I'll now proceed to close this issue. Thank you!
#please-close


DxChart Print/Export Menu

Hi,
When the menu is hidden i can still click on the options. (print, export as pdf, gif, etc..)
When class="dx-export-menu-list" visibility="hidden" i can click the buttons.
In Firefox the background of the context menu is transparent until you hover all the buttons.
Thank You!

Hello,
I reproduced this issue in Widgets Gallery without a devextreme-angular2 project and created a question in the DevExpress support center.
You can follow our progress there.

I close this then. Thank you.

Works in 16.1.6


How do you get the hash value of a transaction from a block

I want to get the detailed transaction information of this block through a block and output it on my page, but I don't know how to do it. I tried the API in the document, but didn't get an ideal result
So I've got a block through this, and I want to get Transaction with hash in a block
let block = try! web3.eth.getBlockByNumber(blockNumber)

Hey. Sorry im not at home right now. Will answer you in 20-30 minutes

Thank you, I will wait.

I am really sorry. that it is too late and I am too sleepy. I will reply you as soon as I see your message

Looks like you right. Our previous developer forgot to parse all information from this api.

So how am I going to parse this API now, and I don't know how to do that

Im currently adding all ethereum/btc/xrp api. At this moment you can make your own implementation:
func getBlock(by number: BigUInt, completion: ([String: Any]?, Error?)->()) {
    var data = [String: Any]()
    data["method"] = "eth_getBlockByNumber"
    data["jsonrpc"] = "2.0"
    data["params"] = [number.serialize().hex.withHex, true]

    let url = URL(string: "https://mainnet.infura.io")!
    var request = URLRequest(url: url, cachePolicy: .reloadIgnoringCacheData)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")
    request.httpBody = try JSONSerialization.data(withJSONObject: requestBody(), options: [])
    URLSession.shared.dataTask(with: request) { data, _, error in
        if let data = data {
            do {
                let response = try JSONSerialization.jsonObject(with: data, options: [])
                completion(response as? [String: Any],nil)
            } catch {
                completion(nil,error)
            }
        } else {
            completion(nil,error)
        }
    }
}

I just made a version with parsing for you (those classes also would be added in 2.2):
func getBlock(number: BigUInt, completion: @escaping (BlockInfo?, Error?)->()) {
    var data = [String: Any]()
    data["method"] = "eth_getBlockByNumber"
    data["jsonrpc"] = "2.0"
    data["params"] = [String(number, radix: 16).withHex, true]
    data["id"] = 1

    let url = URL(string: "https://mainnet.infura.io")!
    var request = URLRequest(url: url, cachePolicy: .reloadIgnoringCacheData)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")
    request.httpBody = try! JSONSerialization.data(withJSONObject: data, options: [])

    let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue())
    session.dataTask(with: request) { data, _, error in
        if let data = data {
            do {
                let response = try JSONSerialization.jsonObject(with: data, options: [])
                let reader = DictionaryReader(response)
                let block = try BlockInfo(reader.at("result"))
                completion(block,nil)
            } catch {
                completion(nil,error)
            }
        } else {
            completion(nil,error)
        }
    }.resume()
}

class BlockInfo {
    /// null when its pending block.
    let processed: ProcessedBlockInfo?
    /// parentHash: DATA, 32 Bytes - hash of the parent block.
    let parentHash: Data
    /// sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block.
    let sha3Uncles: Data
    /// transactionsRoot: DATA, 32 Bytes - the root of the transaction trie of the block.
    let transactionsRoot: Data
    /// stateRoot: DATA, 32 Bytes - the root of the final state trie of the block.
    let stateRoot: Data
    /// receiptsRoot: DATA, 32 Bytes - the root of the receipts trie of the block.
    let receiptsRoot: Data
    /// miner: DATA, 20 Bytes - the address of the beneficiary to whom the mining rewards were given.
    let miner: Address
    /// difficulty: QUANTITY - integer of the difficulty for this block.
    let difficulty: BigUInt
    /// totalDifficulty: QUANTITY - integer of the total difficulty of the chain until this block.
    let totalDifficulty: BigUInt
    /// extraData: DATA - the "extra data" field of this block.
    let extraData: Data
    /// size: QUANTITY - integer the size of this block in bytes.
    let size: BigUInt
    /// gasLimit: QUANTITY - the maximum gas allowed in this block.
    let gasLimit: BigUInt
    /// gasUsed: QUANTITY - the total used gas by all transactions in this block.
    let gasUsed: BigUInt
    /// timestamp: QUANTITY - the unix timestamp for when the block was collated.
    let timestamp: BigUInt
    /// transactions: Array - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter.
    let transactions: [TransactionInfo]
    /// uncles: Array - Array of uncle hashes.
    let uncles: [Data]
    init(_ json: AnyReader) throws {
        processed = try? ProcessedBlockInfo(json)
        parentHash = try json.at("parentHash").data()
        sha3Uncles = try json.at("sha3Uncles").data()
        transactionsRoot = try json.at("transactionsRoot").data()
        stateRoot = try json.at("stateRoot").data()
        receiptsRoot = try json.at("receiptsRoot").data()
        miner = try json.at("miner").address()
        difficulty = try json.at("difficulty").uint256()
        totalDifficulty = try json.at("totalDifficulty").uint256()
        extraData = try json.at("extraData").data()
        size = try json.at("size").uint256()
        gasLimit = try json.at("gasLimit").uint256()
        gasUsed = try json.at("gasUsed").uint256()
        timestamp = try json.at("timestamp").uint256()
        transactions = try json.at("transactions").array(TransactionInfo.init)
        uncles = try json.at("uncles").array { try $0.data() }
    }
}
class ProcessedBlockInfo {
    /// number: QUANTITY - the block number. null when its pending block.
    let number: BigUInt
    /// hash: DATA, 32 Bytes - hash of the block. null when its pending block.
    let hash: Data
    /// nonce: DATA, 8 Bytes - hash of the generated proof-of-work. null when its pending block.
    let nonce: UInt64
    /// logsBloom: DATA, 256 Bytes - the bloom filter for the logs of the block. null when its pending block.
    let logsBloom: Data
    init(_ json: AnyReader) throws {
        number = try json.at("number").uint256()
        hash = try json.at("hash").data()
        nonce = try json.at("nonce").uint64()
        logsBloom = try json.at("logsBloom").data()
    }
}
class TransactionInfo {
    /// null when its pending.
    let processed: ProcessedTransactionInfo?
    /// from: DATA, 20 Bytes - address of the sender.
    let from: Address
    /// gas: QUANTITY - gas provided by the sender.
    let gas: BigUInt
    /// gasPrice: QUANTITY - gas price provided by the sender in Wei.
    let gasPrice: BigUInt
    /// hash: DATA, 32 Bytes - hash of the transaction.
    let hash: Data
    /// input: DATA - the data send along with the transaction.
    let input: Data
    /// nonce: QUANTITY - the number of transactions made by the sender prior to this one.
    let nonce: BigUInt
    /// to: DATA, 20 Bytes - address of the receiver. null when its a contract creation transaction.
    let to: Address
    /// value: QUANTITY - value transferred in Wei.
    let value: BigUInt
    /// v: QUANTITY - ECDSA recovery id
    let v: BigUInt
    /// r: DATA, 32 Bytes - ECDSA signature r
    let r: Data
    /// s: DATA, 32 Bytes - ECDSA signature s
    let s: Data
    init(_ json: AnyReader) throws {
        processed = try? ProcessedTransactionInfo(json)
        from = try json.at("from").address()
        gas = try json.at("gas").uint256()
        gasPrice = try json.at("gasPrice").uint256()
        hash = try json.at("hash").data()
        input = try json.at("input").data()
        nonce = try json.at("nonce").uint256()
        to = try json.at("to").address()
        value = try json.at("value").uint256()
        v = try json.at("v").uint256()
        r = try json.at("r").data()
        s = try json.at("s").data()
    }
}
class ProcessedTransactionInfo {
    /// blockHash: DATA, 32 Bytes - hash of the block where this transaction was in. null when its pending.
    let blockHash: Data
    /// blockNumber: QUANTITY - block number where this transaction was in. null when its pending.
    let blockNumber: BigUInt
    /// transactionIndex: QUANTITY - integer of the transaction's index position in the block. null when its pending.
    let transactionIndex: BigUInt
    init(_ json: AnyReader) throws {
        blockHash = try json.at("blockHash").data()
        blockNumber = try json.at("blockNumber").uint256()
        transactionIndex = try json.at("transactionIndex").uint256()
    }
}

and usage:
getBlock(number: 436) { block, error in
    ...
}

Hello, I tried your method yesterday, now another mistake is about "AnyReader".

oh sorry. its DictionaryReader

I'm now linking to the local 8545 interface

I want to get TransactionDetails object through this method, so what do I do

func getBlock(number: BigUInt, completion: @escaping (BlockInfo?, Error?)->()) {
    var data = [String: Any]()
    data["method"] = "eth_getBlockByNumber"
    data["jsonrpc"] = "2.0"
    data["params"] = [String(number, radix: 16).withHex, true]
    data["id"] = 1

    let url = URL(string: "https://mainnet.infura.io")!
    var request = URLRequest(url: url, cachePolicy: .reloadIgnoringCacheData)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")
    request.httpBody = try! JSONSerialization.data(withJSONObject: data, options: [])

    let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue())
    session.dataTask(with: request) { data, _, error in
        if let data = data {
            do {
                let response = try JSONSerialization.jsonObject(with: data, options: [])
                let reader = DictionaryReader(response)
                let block = try BlockInfo(reader.at("result"))
                completion(block,nil)
            } catch {
                completion(nil,error)
            }
        } else {
            completion(nil,error)
        }
    }.resume()
}

class BlockInfo {
    /// null when its pending block.
    let processed: ProcessedBlockInfo?
    /// parentHash: DATA, 32 Bytes - hash of the parent block.
    let parentHash: Data
    /// sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block.
    let sha3Uncles: Data
    /// transactionsRoot: DATA, 32 Bytes - the root of the transaction trie of the block.
    let transactionsRoot: Data
    /// stateRoot: DATA, 32 Bytes - the root of the final state trie of the block.
    let stateRoot: Data
    /// receiptsRoot: DATA, 32 Bytes - the root of the receipts trie of the block.
    let receiptsRoot: Data
    /// miner: DATA, 20 Bytes - the address of the beneficiary to whom the mining rewards were given.
    let miner: Address
    /// difficulty: QUANTITY - integer of the difficulty for this block.
    let difficulty: BigUInt
    /// totalDifficulty: QUANTITY - integer of the total difficulty of the chain until this block.
    let totalDifficulty: BigUInt
    /// extraData: DATA - the "extra data" field of this block.
    let extraData: Data
    /// size: QUANTITY - integer the size of this block in bytes.
    let size: BigUInt
    /// gasLimit: QUANTITY - the maximum gas allowed in this block.
    let gasLimit: BigUInt
    /// gasUsed: QUANTITY - the total used gas by all transactions in this block.
    let gasUsed: BigUInt
    /// timestamp: QUANTITY - the unix timestamp for when the block was collated.
    let timestamp: BigUInt
    /// transactions: Array - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter.
    let transactions: [TransactionDetails]
    /// uncles: Array - Array of uncle hashes.
    let uncles: [Data]
    init(_ json: DictionaryReader) throws {
        processed = try? ProcessedBlockInfo(json)
        parentHash = try json.at("parentHash").data()
        sha3Uncles = try json.at("sha3Uncles").data()
        transactionsRoot = try json.at("transactionsRoot").data()
        stateRoot = try json.at("stateRoot").data()
        receiptsRoot = try json.at("receiptsRoot").data()
        miner = try json.at("miner").address()
        difficulty = try json.at("difficulty").uint256()
        totalDifficulty = try json.at("totalDifficulty").uint256()
        extraData = try json.at("extraData").data()
        size = try json.at("size").uint256()
        gasLimit = try json.at("gasLimit").uint256()
        gasUsed = try json.at("gasUsed").uint256()
        timestamp = try json.at("timestamp").uint256()

        transactions = try json.at("transactions").array { (a) in
            return try TransactionDetails(a.raw as! [String: Any])
        }
        uncles = try json.at("uncles").array { try $0.data() }
    }
}
class ProcessedBlockInfo {
    /// number: QUANTITY - the block number. null when its pending block.
    let number: BigUInt
    /// hash: DATA, 32 Bytes - hash of the block. null when its pending block.
    let hash: Data
    /// nonce: DATA, 8 Bytes - hash of the generated proof-of-work. null when its pending block.
    let nonce: UInt64
    /// logsBloom: DATA, 256 Bytes - the bloom filter for the logs of the block. null when its pending block.
    let logsBloom: Data
    init(_ json: DictionaryReader) throws {
        number = try json.at("number").uint256()
        hash = try json.at("hash").data()
        nonce = try json.at("nonce").uint64()
        logsBloom = try json.at("logsBloom").data()
    }
}

There is a mistake

Sorry. Add this extension
extension DictionaryReader {
    func array<T>(_ convert: (DictionaryReader) throws -> (T)) throws -> [T] {
        guard let data = raw as? [Any] else {
            throw DictionaryReader.Error.unconvertible(value: raw, expected: "[Any]")
        }
        return try data.map { try convert(DictionaryReader($0)) }
    }
}

Very good. I got what I wanted.


1 Million Tokens for Paid Account

Token Consumption + Buy More Tokens + Add own API Key to continue

Please add profile page that shows token consumption

ChatGPTEngineer.app / Cursor / Claude Dev / Aider:

Additional Thoughts/Feature Requeusts

Totally agree!!
I signed up for the Pro subscription this afternoon and have already creeped up on the max for the 10 million month!!  LOL I'm curious how i can add more tokens to my account ? ( I've spent 3/4 of them in the last 5 hours debugging the gen ai process overwriting files and breaking stuff - don't get me wrong i love the tool , but with how verbose it is i can imagine that you can burn through tokens really quick. We will most certainly need a way to add more tokens and control how verbose the prompts are.
Thoughts ?

How did you know where they are?
I'm downloading local going back to Claude dev, Continke and Aider, it's
got to point where adding one change breaks existing functionality.
I feel like I've no control now. Even with forking I can't add them to the
bolt collection. So it's kinda pointless.
Unless I'm (and I probably am) missing something
There is no memory. Even with Claude's cache.
 Then the bolt one does
it's thing and drips functionality out of it. Think I'll stop using that!
On Sun, 6 Oct 2024, 15:59 Eric, @.***> wrote:

Totally agree!!
I signed up for the Pro subscription this afternoon and have already
creeped up on the max for the 10 million month!! LOL I'm curious how i can
add more tokens to my account ? ( I've spent 3/4 of them in the last 5
hours debugging the gen ai process overwriting files and breaking stuff -
don't get me wrong i love the tool , but with how verbose it is i can
imagine that you can burn through tokens really quick. We will most
certainly need a way to add more tokens and control how verbose the prompts
are.
Thoughts ?
—
Reply to this email directly, view it on GitHub
https://github.com/stackblitz/bolt.new/issues/85#issuecomment-2395355919,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BI6U3NFJ5DZESNZUN7BDEA3Z2D3VRAVCNFSM6AAAAABPOC62PGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJVGM2TKOJRHE
.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi! 👋 Thanks for the comments!
We're working on ways to buy more tokens and see your usage. We'll keep you posted ✨

Legesnss6
On Mon, 7 Oct 2024, 21:28 Kirjava, @.***> wrote:

Hi! 👋 Thanks for the comments!
We're working on ways to buy more tokens and see your usage. We'll keep
you posted ✨
—
Reply to this email directly, view it on GitHub
https://github.com/stackblitz/bolt.new/issues/85#issuecomment-2397091269,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BI6U3NAQA23RO7T2V5NXQKLZ2KK7NAVCNFSM6AAAAABPOC62PGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJXGA4TCMRWHE
.
You are receiving this because you authored the thread.Message ID:
@.***>

@cosmicwork, I agree, @kirjavascript I think with cursor, fragments, chatgptengineer.app, claude dev, aider, etc... you guys need to be seen as generous to your early adopting paid users...
I'm having issue/frustrations, but because you're in your early stages, I'm holding back to an extent, giving you the benefit of the doubt, that you'll look after the problems and you new customers... Instead of being rug pulled!!
you got this!

Hey @brovio & @ericwelshdev appreciate your feedback and understanding as we navigate this busy initial launch and work rapidly towards addressing all the great feedback! We are very excited to have you both as new users.
Updates:

We have shipped updates that we believe will make token usage much more efficient going forward (less tokens per prompt)
You can now see your Token usage in your settings pane (lower left hand corner of Bolt.new)
You can now buy more tokens (instructions here)
I have reset both of your Token usage back to zero so you can keep cooking and providing more great feedback!

Closing this issue as resolved, but please open more if additional issues occur/more feature requests come to mind!


I would like to have renaming template file feature

I would like to have renaming template file feature.
When I uploaded a file, it set default template name. Now, can't rename it

you can name a template whatever you like when creating it:
subutai promote my-awesome-template -s my-awesome-container

You can not rename existing template because the name is contained within the template itself.

@zubaidullo with the information posted by @Dilshat  do you still need this feature?

Didn't try subutai promote command, so if we can give the proper name to the container and create a template, then it's OK. We can close an issue.

noesubutai promote command was removed, but new subutai export command has a flag that allows to pass a new name
https://github.com/subutai-io/agent/wiki/export


Adding profile options for aws login

Fixes #16
Adds two new parameters to the stim aws login command:
-p tells stim to use profiles which will save credentials as a new aws profile in ~/.aws/credentials.  The profile name will be / to allow the profile to be reused in the future.
-d tells stim to also set the aws default profile to the newly created creds
In addition I've also moved some of the aws web login stuff to the aws package as it was generic

Need to add notes to changelog/readme


StorageProfile unit tests

Unit tests covering StorageProfile API

[x]  CephFS tests ✔
[x]  StorageClassRequest tests ✔
Related PRs: #2204 #2231 #2274

/retest-required

/test ocs-operator-bundle-e2e-aws

/unassign @nb-ohad @leelavg

/cc @nb-ohad

/test ocs-operator-bundle-e2e-aws


About the index of joints of Skeletics 152

Hi,
In the Scripts/parse_vibe_data.py,  the reqd_joints are set as [38, 43, 44, 45, 46, 47, 48, 40, 37, 33,32,31, 34,35,36, 41, 39, 27,26,25, 28,29,30, 22, 19].  What are these joints? Are they are still the joints of openpose?
Best.

Sorry for the late response.
VIBE gives SMPL style 3d joint information for the estimated pose, but for our experiments we use only the joints corresponding/similar to NTU Kinect skeleton representation. This https://github.com/mkocabas/VIBE/blob/c0c3f77d587351c806e901221a9dc05d1ffade4b/lib/data_utils/kp_utils.py#L212 provides the order of joints that are given by VIBE, from this we select the joints corresponding to the NTU kinect skeleton.
I hope this clarifies your doubt.

@neel1998 Thanks for your kind reply! So there are some differences between the codes and the discriptions of 'VIBE pose estimate gives 49 joints in total out of which we are choosing the first 25 body joints common with Openpose. The joint ordering for Openpose is here. ' ? I am asking the problem since I am using the dataset. Hope to your reply soon.

Hi @canbaoburen, you are right, the joints mentioned in the script are not from openpose. From the 49 joints listed in [https://github.com/mkocabas/VIBE/blob/c0c3f77d587351c806e901221a9dc05d1ffade4b/lib/data_utils/kp_utils.py#L212 ](this function), the first 25 are openpose joints, we take 23(removed the jaw) out of the remaining 24, and take big toe and small toe from openpose to obtain the 25 joints in skeletics.
Thanks for pointing it out, we will correct the description.


Remove deprecated methods

Now that we have branched for Swift 5.8, we can remove all deprecated methods on main.

@swift-ci Please test

@swift-ci Please test

Holding this back to make cherry-picking changes from main to release/5.8 easier.

@swift-ci Please test

@swift-ci Please test

−9,559

That's the kind of number I like to see :). Thanks Alex!

https://github.com/apple/swift/pull/63387
@swift-ci Please test

https://github.com/apple/swift/pull/63387
@swift-ci Please test

https://github.com/apple/swift/pull/63387
@swift-ci Please test


Documentation not clear about how to stop periodical updater after specification

Hello
Please how exactly to stop the periodical updater if the frequency reaches a certain number because of the decay ? I have read the documentation but could not figure it out.

Thanks a lot. Now what i really want is that as the next request reaches 20 for example i want it to stop and restart from the initial as in 5 for frequency and 2 for decay. How can i achieve that ?

Try:
function mettreajour_periodique(span_id, url_traitement, nos_parametres, our_frequency, our_decay)
    {

    var ajax = new Ajax.PeriodicalUpdater ({success: span_id}, url_traitement, {method:'get', frequency: our_frequency, decay: our_decay,  parameters: nos_parametres, evalScripts: true,  onSuccess: function(r) { //or onComplete
        if (ajax.decay > 8) {
            alert('Yes');
            ajax.stop();
            //call again
            mettreajour_periodique('nombre_nouveaux_messages', 'barre_du_haut_actualise.php', '&membre=<?php echo $membre; ?>', 5, 2);
          }
        }

        });

    }

//We apply the function here

mettreajour_periodique('nombre_nouveaux_messages', 'barre_du_haut_actualise.php', '&membre=<?php echo $membre; ?>', 5, 2);

Thanks a lot


The carousel don't detect the mouse for scrolling on the web

Hello,
I'm trying to use this package for a web page. The carousel doesn't scroll on the desktop browser but it do it right in the cellphone browser.
I experienced this issue in other scrolls (like the page view) and the problem was that the scroll was not recognizing the mouse.
The solution in that case was to set the scroll behavior like follows (but I couldn't find a parameter to set it on this widget):
scrollBehavior: ScrollConfiguration.of(context).copyWith(
            dragDevices: {
              // Allows to swipe in web browsers
              PointerDeviceKind.touch,
              PointerDeviceKind.mouse
            },
          ),

The code I have right now is the following:
return Container(
     height: _cardHeight * 1.5,
     child: InfiniteCarousel.builder(
       itemCount: widget.assetsList.length,
       itemExtent: _cardWidth,
       center: true,
       anchor: 0.0,
       velocityFactor: 0.2,
       onIndexChanged: (index) {},

       // controller: controller,
       axisDirection: Axis.horizontal,
       loop: true,
       itemBuilder: (context, itemIndex, realIndex) {
         return Container(
           alignment: Alignment.center,
           child: GestureDetector(
             behavior: HitTestBehavior.opaque,
             child: Image.asset(
               '${LandingConstants.carouselImagesPath}${widget.assetsList[itemIndex]}',
               width: _cardWidth,
             ),
           ),
         );
       },
     ),
   );

Hi @andreskiu, Just published the new version of package now to set scrollBehavior. It will be available in 1.0.2. Thanks for letting me know of this.
https://pub.dev/packages/infinite_carousel/versions/1.0.2

Hi @andreskiu, Just published the new version of package now to set scrollBehavior. It will be available in 1.0.2. Thanks for letting me know of this.
https://pub.dev/packages/infinite_carousel/versions/1.0.2


Add antitrust statement

Add collaborative community antitrust statement and disclaimer... not sure where it fits yet

Done
Disclaimer page added: https://github.com/DIDSR/HTT.home/commit/0a2e21012c17522591d838f4b715cd39adaf504c
Key Pages list on homepage updated: https://github.com/DIDSR/HTT.home/commit/e83841da799332d3dcb8a4f8219384ac4df75408


Update of sep-005 to clarify the use of timeseries for multiple channels

I've prepared this PR to update the SEP-005 draft according to our discussion.

I have merged this to the main branch, so we can continue working on it.


Device memory is insufficient to use tactic for jetson NANO

Hey,
I was trying to execute the encoder engine using the trtrexec and got this error:
Tactic Device request: 4248MB Available: 2507MB. Device memory is insufficient to use tactic.
I guess the model is too big for the jetson Nano GPU.
anyone else had this error? is there any solution?
thank you

this work should run on jetson orin device such as jetson orin nano(not jetson nano).
i suppose your device is jetson nano 2g version？

will this work on nano 4gb?


Use OTLP exporter instead of Jaeger specific

This allows much greater flexibility as Jaeger already supports OTLP, but so do other systems.
I also simplified the process to not require Coursier.  Instead I use the included maven wrapper to download the exporter's transitive dependencies.
Hope this is helpful.

@manoj9788 is this something you'd consider merging?  I realize I didn't talk to you about it before hand, so if not let me know and I can close the PR.

@tylerbenson thank you for your PR, this is surely missed during the holiday season. I'll take a look at it this week!

Thank you @krmahadevan and @tylerbenson


⚠ SkipTheCommericals has degraded performance

In 874bd2f, SkipTheCommericals ($STC) experienced degraded performance:

HTTP code: 200
Response time: 4022 ms

Resolved: SkipTheCommericals performance has improved in 46deeef.


chore(Data/Real/ENNReal): rename some to ofNNReal

The some name feels like an implementation detail.

bors r+


AttributeError: '_Environ' object has no attribute 'Path'

It might be my fault but seems like there are some errors on setting files. I'm really new to cookiecutter and I'm trying to run server on local anyway but there are some errors.
First I saw this error so I changed it to from os import environ

ModuleNotFoundError: No module named 'environ'

and then there is still an error.

ROOT_DIR = environ.Path(file) - 3  # (project/config/settings/base.py - 3 = project/)
AttributeError: '_Environ' object has no attribute 'Path'

How can I fix this?
I'm using python3.6, Django2.1 and WSL.

environ is from django-environ, not a built-in module from os.
Please use the following instructions to set up, depending on whether you use docker:
https://cookiecutter-django.readthedocs.io/en/latest/developing-locally.html
https://cookiecutter-django.readthedocs.io/en/latest/developing-locally-docker.html

Closing as it doesn't look like an issue with the project. Happy to re-open if more info is provided showing otherwise.


Efficiency params on entries endpoints

/v1/entries?since_entry=$LAST_KNOWN_ENTRY_ID or /v1/entries?since=$UNIX_TIME would be an excellent tool for making efficient use of the API. offset and limit would have to be based on the since parameter when present to avoid accidentally pulling down potentially thousands of entries or, arguably worse, using limit and receiving entries at the top of the list first rather than the ones right after your referenced time/entry in the since parameter.
In the same vein, a parameter along the lines of /v1/entries?feeddata=full and /v1/entries?feeddata=min to toggle whether or not the entry objects returned contain the full feed object under the feed field or only the feed's id under feed_id would be well suited for mobile applications and other low bandwidth applications. I applied this suggestion to the JSON returned by a GET to /v1/entries?limit=500 against my Miniflux instance to a 21% reduction in size.
As I am making so many suggestions, I will take a look at learning some Go and implementing them myself in the next few days.

PR #126 provides a since parameter. Something like since_entry would require a second database query, so I think since is the better choice.
A feeddata type parameter might take a little more finicking due to the way query templates are stored, but I'll take a look at it in a bit.

Since commit 36dab8b5182215d53512525991cc23523bdf23dc, you have new parameters available for the API:

before (unix timestamp)
before_entry_id
after
after_entry_id
starred (boolean)


CS/QA: get rid of (most) warnings

Though it is by the looks of it only a "beta" feature for the moment, I noticed in PR #1997 that warnings are now being shown for files unrelated to the current PR. To me this is just plain annoying as it is noise which distracts from the actual changes which need reviewing and can be confusing for contributors (should I fix these ? will be accepted even though these warnings are there?).

With that in mind, I figured I might as well try to reduce this noise some more as well as fix up some other small issues.
Commit details
CS: get rid of "commented out code" warnings
... which show through in PRs, even when the code in those files has not been adjusted in the PR.
There's only one such warning remaining now, which is actual commented out code.
QA: remove unnecessary assignment
QA: use fully qualified global constant references
QA: import all used classes

The GH Actions warnings are just warnings, so I think they can be fixed later on (I usually ignore those if they don't have anything to do with the PR I'm working on and fix those later on).


Implementaion of #1598 Cold/Flu: Admin would like to be able to edit a submission once it has been submitted.

User Story
Unfortunately we were not able to edit submissions (ie. For address changes) when a worksite moved locations. For edits we often had to delete the whole submission and create a new one.
Tasks
Please consult Mike Shi.
Acceptance Criteria
Admin would like to be able to edit a submission once it has been submitted.
1/ Assign all forms to Heather allow her to update or submit in review task - ask heather if this is more work that currently - risky bottle neck
2/ Manual code changes - add condition specific group edit form, changes in multiple place If/else not applicable to all users on all forms on list and update submission file
We choose option 2 as option 1 may have bottle neck.

Ok, will check

@jerry-ey
This is current endpoint for updating a submission with existing worksite:
https://analytics-testapi.psa.gov.bc.ca/apiserver/api.rsc/ods_datamart_influenza_update_registration_existing_worksite/
And below is the sample post data:
var postdata = { "application_id": 1, "closed_reason": "closed_reason_2", "date_submitted": "2024-03-04T08:40:29-08:00", "is_closed": "is_closed_4", "is_relocating": "is_relocating_5", "ministry_id": 6, "number_of_employees": 7, "primary_email": "primary_email_8", "primary_first_name": "primary_first_name_9", "primary_last_name": "primary_last_name_10", "primary_phone": "primary_phone_11", "secondary_email": "secondary_email_12", "secondary_first_name": "secondary_first_name_13", "secondary_last_name": "secondary_last_name_14", "secondary_phone": "secondary_phone_15", "special_instructions": "special_instructions_16", "worksite_id": 17, "year": 18, "date_updated": "2024-03-04T08:40:29-08:00"};
Below are fields in table WorkSite can be updated:
unit_or_suite,
street_number,
street_name,
city,
province,
postal_code,
country
Which fields would you like to include in the post?

@jerry-ey
Anyways, those fields have been introduced to the endpoint for update.
<<
unit_or_suite  varchar(128),
street_number varchar(128),
street_name varchar(128) ,
city varchar(128),
province varchar(128),
postal_code varchar(50),
country varchar(128)

Please test endpoint:
https://analytics-testapi.psa.gov.bc.ca/apiserver/api.rsc/ods_datamart_influenza_update_registration_existing_worksite/
By the way, you can call below the endpoint to edit any worksites you want:
https://analytics-testapi.psa.gov.bc.ca/apiserver/api.rsc/ods_datamart_influenza_worksites(worksite_id)

As an Admin, I was now able to make changes to the submission! Thanks Jerry!

@ayushdamani - Were you able to change the worksite or update the address on the form that was submitted by others?

I was able to update the worksite address on the form I've submitted.
I was NOT able to update the worksite address on the form someone else submitted. The address fields are greyed out.
In this scenario, are we looking at reselecting a worksite or updating the selected worksite's address?

@Augusteen-myeong
I discussed with @bhumin-fw , we are only allowed to edit the worksite created by the user (Click the button "Don't see your worksite?") instead of the one selected from the dropdown.

@Augusteen-myeong to edit a worksite a user has entered you (Admin) need to:
1/ Go to the "Submitted Forms" tab
2/ Search and find the form/person whos worksite needs editing and hit "edit'
you can not edit from the drop down because that is just a field with data populating from the database in ODS

@jerry-ey @Stella-Archer  - Thanks for the clarification. That makes more sense!

Tested again with Jerry's submitted form worked fantastic. Ready for deployment, PO Approved and closing tickets

Tested on PRD, working fine. Edit unit#.

Admin edit in PROD is working fine!

PO approved and closing :)