First interesting tutorial: Bayesian Inference with Transport score climbing

Motivation
A new tutorial based on Transport Score Climbing (https://arxiv.org/pdf/2202.01841.pdf). TSC is a recently developed method for Bayesian inference that combines MCMC and VI ideas, making use of normalizing flows.
Changes proposed
Adding /tutorials/transport_score_climbing.ipynb and flowtorch.distributions.Banana
Test Plan
Ensure notebook runs without any errors.

Codecov Report

Merging #95 (c291940) into main (45e91ca) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #95   +/-   ##
=======================================
  Coverage   98.23%   98.23%
=======================================
  Files           6        6
  Lines         227      227
=======================================
  Hits          223      223
  Misses          4        4

Flag
Coverage Δ

unittests
98.23% <ø> (ø)

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

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 45e91ca...c291940. Read the comment docs.

Currently blocked by having to implement a few steps of HMC in the training loop... I am going to implement this from scratch and see how I can abstract MCMC transition kernels etc. in a future extension to the API


Replace baseFixtures local file with playwright-test-coverage package

This pull request replaces the tests/baseFixtures.ts local file by the playwright-test-coverage which contains the same code.

coverage: 100.0%. remained the same
when pulling df704b58a02f37954d2cac893ba0b38a6affb620 on replace_base_fixtures_with_playwright_test_coverage
into d9beb585e83f600bdd8a60d5ebd918b1c7a3dde6 on master.


[2/3] Add Models & Controllers for Survey Conditions

Changes for this feature will be pushed as a stack of PRs, i.e. master <- part-1 <- part-2 <- part-3. You can find the other two PRs here:

https://github.com/Coursemology/coursemology2/pull/4029
https://github.com/zhuhanming/coursemology2/pull/2

The next PR will be rebased onto upstream master once this PR is merged.
Summary
This summary covers the context for all 3 PRs, so it's a bit on the longer side.
Context
We want to add a new type of condition - surveys, so that achievements can be given when students complete surveys.
Currently, Coursemology uses a condition-conditional framework.

Conditionals are objects that can possess conditions, i.e. they will be "unlocked" upon having all their conditions met. There are two conditionals as of right now - achievements and assessments.
Conditions are objects that represent some requirement to meet. This need not necessarily be an "object" like an assessment or achievement - it can be a level requirement as well, which has no dependent_object.

Thus, by adding a new survey condition, we can also make surveys a condition for assessments to unlock as well, not just for unlocking achievements.
What is in this PR
This PR contains:

DB migration - a new table, course_condition_surveys, is created to store the id of the condition actable and the id of the survey that it's depending on.
Models - a new condition actable model and changes to the existing survey model (mostly an association + duplication logic of conditions that depend on it)
Controllers - One main controller for the condition, and two for the two existing conditionals (achievement and assessment).
Other assets, e.g. static YAML files that contain internationalised text.
Test cases - mainly to test the modified models. The tests for the controllers are in the next PR, due to coupling between the controllers and the views (which have not been added yet).

Test Plan
Run the test cases defined - there should be no failures or regression.
bundle exec rspec

Otherwise, the more visual/manual testing can only be done in the next PR, when the views have been added.

Closed as superseded by https://github.com/Coursemology/coursemology2/pull/4031


Dont read default config in tests

The tests were failing depending on whether the config file existed in the usual location.

Better approach: https://github.com/instructlab/instructlab/pull/1887


Inverted XTerm through XIWI

chronos@localhost / $ sudo edit-chroot -all
name: xiwi
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xiwi...
crouton: version 1-20170619181610~master:980f090f
release: xenial
architecture: amd64
xmethod: xiwi
targets: xiwi
host: version 9765.31.0 (Official Build) dev-channel cyan
kernel: Linux localhost 3.18.0-15945-g3e5ac8a02327 #1 SMP PREEMPT Wed Aug 16 22:09:39 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/xiwi...

Please describe your issue:
when I start xterm through xiwi, the colors are inverted. anyone know why? it just upsets the whole "terminal" feel for me. ^_^
If known, describe the steps to reproduce the issue:
sudo startxiwi -n xiwi xterm

#3257 may be related...

That is the default behaviour for xterm.
You can change the colour either from the command line with something like this:
sudo startxiwi -n xiwi xterm -bg black -fg white
To permanently change the colour, run these commands from xterm:
echo XTerm*Background: black >> .Xdefaults
echo XTerm*Foreground: white >> .Xdefaults

Restart xterm and the colours should be how you want them.

Even quicker:
sudo startxiwi -b xterm -rv

Oh wow, this is so old! I've since migrated from Crouton to Chromebrew, and figured out on my own how to fix that when using xterm through Sommelier.
Thanks anyways! 😆


Allow running tests against a custom Engine.IO server

I'm trying to write a custom Engine.IO implementation in Haskell, but it seems that all of the tests want the JavaScript implementation. Is there a way to run the tests against a custom HTTP endpoint, rather than firing up a new JavaScript Engine.IO server?

Testing against the javascript server is what is currently available. In the future, I think these issues should be opened and handled by the engine.io-protocol repo.


Log exceptions occuring on server

@Arne-He I just stumbled upon an exception which might explain, why sentry isn't working:
[pid: 11|app: 0|req: 4/14] <IP_ADDRESS> () {52 vars in 1334 bytes} [Thu Mar 29 12:55:38 2018] GET /api/analysis_system_instance/53fdca91-0f6b-4756-96e4-93e46ec95b26/scheduled_analyses/ => generated 291 bytes in 403 msecs (HTTP/1.1 500) 2 headers in 84 bytes (1 switches on core 0)
Sentry responded with an error: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)> (url: https://sentry.hive.cs.uni-bonn.de/api/2/store/)
Traceback (most recent call last):
  File "/usr/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/usr/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py", line 964, in send
    self.connect()
  File "/usr/lib/python3.6/site-packages/raven/utils/http.py", line 38, in connect
    sock, ca_certs=ca_certs, cert_reqs=ssl.CERT_REQUIRED)
  File "/usr/lib/python3.6/ssl.py", line 1149, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib/python3.6/ssl.py", line 814, in __init__
    self.do_handshake()
  File "/usr/lib/python3.6/ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/raven/transport/threaded.py", line 165, in send_sync
    super(ThreadedHTTPTransport, self).send(url, data, headers)
  File "/usr/lib/python3.6/site-packages/raven/transport/http.py", line 43, in send
    ca_certs=self.ca_certs,
  File "/usr/lib/python3.6/site-packages/raven/utils/http.py", line 66, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/usr/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/site-packages/raven/utils/http.py", line 46, in https_open
    return self.do_open(ValidHTTPSConnection, req)
  File "/usr/lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
["BuildError: Could not build url for endpoint 'api.analysis_system_instance_namespace_element_analyses' with values ['page']. Did you forget to specify values ['uuid']?", '  File "flask/app.py", line 1982, in wsgi_app', '  File "flask/app.py", line 1614, in full_dispatch_request', '  File "flask/app.py", line 1517, in handle_user_exception', '  File "flask/_compat.py", line 33, in reraise', '  File "flask/app.py", line 1612, in full_dispatch_request', '  File "flask/app.py", line 1598, in dispatch_request', '  File "flask_modular_auth/utils.py", line 33, in wrapped', '  File "flask_slimrest/decorators.py", line 219, in wrapper', '  File "flask_slimrest/decorators.py", line 150, in wrapper', '  File "flask_slimrest/decorators.py", line 90, in wrapper', '  File "flask_slimrest/decorators.py", line 175, in wrapper', '  File "mass_server/api/utils.py", line 30, in pagination_helper', '  File "mass_server/api/utils.py", line 9, in _get_page_link', '  File "flask/helpers.py", line 333, in url_for', '  File "flask/app.py", line 1805, in handle_url_build_error', '  File "flask/_compat.py", line 33, in reraise', '  File "flask/helpers.py", line 323, in url_for', '  File "werkzeug/routing.py", line 1768, in build']

Looks like it might be related to getsentry/raven-python#523 and this: https://community.letsencrypt.org/t/problems-with-sentry-and-letsencrypt/19948/2

Thanks! This was the issue, now it seems to work.


Bundle Test Content in a ZIP file

This enables the test runner to easily download test content. Example ZIP files are available in this folder.

FYI this issue arises from discussions in the December 15th meeting arising from https://github.com/cta-wave/dpctf-tests/issues/7 and https://github.com/cta-wave/dpctf-tests/issues/9 .

Any update on this issue?

Any update on this issue?

What is the granularity of the zip files? Would one zip file per switching set (i.e. per subfolder) be ok?

What is the granularity of the zip files? Would one zip file per switching set (i.e. per subfolder) be ok?

@louaybassbouss ?

What is the granularity of the zip files? Would one zip file per switching set (i.e. per subfolder) be ok?

@louaybassbouss ?

@jpiesing the Zip should contain the manifest and all related audio/video files/segments (of course keep the file structure as it is). Basically, each item in database.json should have a reference to the corresponding zip file. This download script parses database.json and checks if the zipPath property for each item exists. If it is available, it downloads and extracts the zip from the location in zipPath.

@jpiesing the Zip should contain the manifest and all related audio/video files/segments (of course keep the file structure as it is). Basically, each item in database.json should have a reference to the corresponding zip file. This download script parses database.json and checks if the zipPath property for each item exists. If it is available, it downloads and extracts the zip from the location in zipPath.

@rbouqueau Is this clear enough for you?

That's clear. For each subfolder (#22) I will create a zip file.

Content was uploaded e.g. https://dash.akamaized.net/WAVE/vectors/avc_sets/t1.zip (t1 to t34) or https://dash.akamaized.net/WAVE/vectors/avc_sets/ss1.zip

Content was uploaded e.g. https://dash.akamaized.net/WAVE/vectors/avc_sets/t1.zip (t1 to t34) or https://dash.akamaized.net/WAVE/vectors/avc_sets/ss1.zip

@rbouqueau  thanks a lot I just downloaded t1.zip LGTM :).  One minor thing is there a reason to have the output folder in the zip file?  Do you know when database.json will be updated to include the zipPath.

One minor thing is there a reason to have the output folder

I'll fix it.

Do you know when database.json will be updated to include the zipPath.

The database.json is actually updated (though not with the zipPath). But the cache policy on this server makes it unusable for me. It drives me crazy. Will do soon.

One minor thing is there a reason to have the output folder

I'll fix it.

Do you know when database.json will be updated to include the zipPath.

The database.json is actually updated (though not with the zipPath). But the cache policy on this server makes it unusable for me. It drives me crazy. Will do soon.

Thanks @rbouqueau we will test beginning of next week is not urgent for today.

zipPath implemented.

@louaybassbouss  Can this be closed now?

@louaybassbouss Can this be closed now?

@jpiesing LGTM issue can closed

@rbouqueau Please either close this issue if you think that's OK or be clear what still needs to be done.


Could not identify a smart meter on your account with gateway access

I'm receiving this message in the logs:
Could not identify a smart meter on your account with gateway access
Any idea on how to address this one? Version 0.0.6. Details from log:
_This error originated from a custom integration.

I would guess there is some difference in your API responses from mine that is causing it to get filtered out. The code tries to filter down to supported meters but the logic could be bad
https://github.com/mjmeli/ha-duke-energy-gateway/blob/e19239f2532217170b5da6bed3ed8a017ec84b26/custom_components/duke_energy_gateway/__init__.py#L53-L74
A couple of ideas to help track it down

Enable debug logging for the integration by adding below to your configuration.yaml. Then in your full home-assistant.log file you will see some logs tagged custom_components.duke_energy_gateway. Unfortunately it might not give much insight because it only logs happy path right now.

logger:
  default: info
  logs:
    custom_components.duke_energy_gateway: debug

If you are able to, you could run the example.py script in the API library (https://github.com/mjmeli/pyduke-energy/blob/main/example.py). This will dump out the API payloads so it might be more straightforward and insightful.

Thanks for the quick reply! Also, I forgot to say earlier- thanks for developing this!
I turned on the logging and I see this:
2021-08-23 14:15:22 DEBUG (MainThread) [custom_components.duke_energy_gateway] Setup Duke Energy API client
2021-08-23 14:15:23 DEBUG (MainThread) [custom_components.duke_energy_gateway] Checking account 9100xxxxxx for gateway
2021-08-23 14:15:27 DEBUG (MainThread) [custom_components.duke_energy_gateway] Failed to find meter on account<PHONE_NUMBER>13: Request failed with unexpected error [https://cust-api.duke-energy.com/gep/v2/auth/account-details]: 500, message='Internal Server Error'<EMAIL_ADDRESS>2021-08-23 14:15:27 ERROR (MainThread) [custom_components.duke_energy_gateway] Could not identify a smart meter on your account with gateway access.
My Python install is borked (or I'm not running something right). Either way- I can't get example.py to run. I tried to use the URI from the logs and run it via Postman but I'm getting an authentication error. Is there a way to do that? If yes, what auth method would I use that would allow me to plug in my email address/password?

At first glance the only difference I notice is that your srcSysCd value is different. I'm not sure what that actually is but mine is "CIM" and yours is "ISU".
And just to make sure, that account number matches the account number on the account with the gateway?
You can definitely query these via Postman.
To do authentication, you need to POST to https://cust-api.duke-energy.com/gep/v2/auth/oauth2/token with header Authorization: Basic UzdmNXFQR2MwcnpVZkJmcVNPak9ycGczZWtSZ3ZHSng6bW1nS2pyY1RQRHptOERtVw== (this is a hard-coded value in the app) and a request body as x-www-form-encoded of grant_type=password, username={email}, and password={password}.
That will return an access_token which you use for the other call with as a Bearer token. You might also save the cdp_internal_user_id value.
To get your sysSysCd value, you can GET to https://cust-api.duke-energy.com/gep/v2/auth/account-list using that access_token and parameters email={email} and internalUserId={cdp_internal_user_id}
Maybe there is something in your responses that gives insight into what is different between us.

Thanks for the integration; mine is giving error "failed to set up"
This error originated from a custom integration.
Logger: custom_components.duke_energy_gateway
Source: custom_components/duke_energy_gateway/init.py:82
Integration: Duke Energy Gateway (documentation, issues)
First occurred: 5:07:43 PM (1 occurrences)
Last logged: 5:07:43 PM
Could not identify a smart meter on your account with gateway access.

I believe this is fixed in the newest release 0.0.7. I've also added some more logging in the event we need to debug this again in the future.
Try updating in HACS and let me know if there are still issues

Seems to be working great after updating to 0.0.7. Thanks again!


Build Hangs Recursive Struct

I've been using this crate extensively for a no-std language vm. Part of my interface is as follows (minimized):
#[derive(Collect)]
#[collect(no_drop)]
pub enum Value<'gc> {
    List(Gc<'gc, Vec<Value<'gc>>>),
    Closure(Gc<'gc, Closure<'gc>>),
}

#[derive(Collect)]
#[collect(no_drop)]
pub struct Closure<'gc> {
    pub vars: Vec<Value<'gc>>,
}

This has worked perfectly fine for months. However, I recently made one little change to add a custom user type S, and suddenly cargo build and cargo check hang and eat up memory until it runs out and crashes. I've managed to track down the issue to this dependency and have a minimal example:
#[derive(Collect)]
#[collect(no_drop)]
pub enum Value<'gc, S> { // note the param S, which seems to cause the problem
    List(Gc<'gc, Vec<Value<'gc, S>>>),
    Closure(Gc<'gc, Closure<'gc, S>>),
}

#[derive(Collect)]
#[collect(no_drop)]
pub struct Closure<'gc, S> {
    pub vars: Vec<Value<'gc, S>>,
}

Worse, there is no error message whatsoever, so it was hard to track down. But I saw #4 and decided to try it. In my minimal example, this now gives a recursion depth error (better), but it doesn't solve my actual code base issues, which are more like the following again hanging example:
use gc_arena::{Collect, Gc};

#[derive(Collect)]
#[collect(no_drop)]
pub enum Value<'gc, S> {
    List(Gc<'gc, Vec<Self>>),
    Closure(Gc<'gc, Closure<'gc, S>>),
    Closure2(Gc<'gc, Closure2<'gc, S>>),
}

#[derive(Collect)]
#[collect(no_drop)]
pub struct Closure<'gc, S> {
    pub vars: Vec<Value<'gc, S>>,
}

#[derive(Collect)]
#[collect(no_drop)]
pub struct Closure2<'gc, S> {
    pub vars: Vec<Value<'gc, S>>,
}

Because adding a second non-self branch to the enum reintroduces the problem, I'm assuming this crate does some kind of breadth-first search for checking that a type's fields/variants satisfy Collect requirements (with a special case for Self), but which doesn't protect from cycles? Is there not a better way to check for cycles than a special case for (only) Self?
I need to be able to expose Closure instances to the library user, but I could possibly fix this trivial example by inlining the fields of Closure in Value::Closure, replacing Value<'gc, S> with Self, and reconstructing the actual Closure instance from the fields when requested by the user. However this would not solve my actual issues because the real (full) definition of Closure has several layers of indirect typing, all of which need to be exposed to users.
So my main questions are: why does the code without S not cause a problem, and is there some workaround to make this work?

This isn't a good solution, but just as a temporary measure you can always unsafely implement Collect manually.
I don't know what's causing this error, but IF you have time and want to look into it, the first question I would want answered is whether it's breaking during the proc macro or during compilation. I assume like #4 it's happening during compilation? If so, if you can output whatever the proc macro is generating that would be helpful.
This crate is using synstructure to do pretty much everything complicated in its proc macro Collect derive, and there's not really much going on outside of that. I suspect that the where bounds on fields (which we tell syntstructure to generate here) are very weird and its the compiler that is hanging? It's gross but would it work to just not have bounds on the field types and just let the compilation fail later? Does this derive work if you change AddBounds::Fields in that line to AddBounds::None?

Right, it looks like it's breaking at compilation, cause cargo expand terminates even when cargo check doesn't. I think I've found a fix in the gc-arena crate: just changing the T: 'gc + Collect trait bound to T: 'gc in the definition of the Gc and GcCell structs fixes the problem, and I can make a PR for this. I think this would be safe to allow, because all instances of Gc and GcCell are created by functions that require the full T: 'gc + Collect bound, so removing the Collect requirement from the struct definitions doesn't (I don't think) introduce any unsoundness. And with only that change, the trait bound resolution succeeds and fixes my problem.

That's a neat way to solve that problem! I was just coming here actually to also suggest that we might need something like this to cover all cases: https://serde.rs/container-attrs.html#bound
I'm pretty sure your PR is correct independent of this, but I still think you can probably tie the compiler in knots somehow. I think a more complete solution to this problem might be to copy what serde does, so add bounds based on the generics not the fields, and provide a #[collect(bound = "")] escape hatch... if I'm understanding all this correctly which I'm not super confident about still.


[master] clean multipath leftover before refresh_bootmap

multipath leftover will cause multiple linux command hang,
ex: blkid, sync, etc.
resulting refresh_bootmap failure
Fix includes below items:

clean multipath leftover if any before refresh_bootmap
use kpartx to manually load partition in case of 'skip_kpartx yes' in multipath.conf
replace 'multipath -ll' with 'multipath -l', which takes less time

Signed-off-by: Da Long Wang<EMAIL_ADDRESS>

@bjhuangr @jichenjc @dongyanyang @SeanHQF @SharpRazor @wgxoyun @haolp


add support for sharing host devices with docker containers

This commit exposes support for hosts sharing devices with their containers.
e.g. adding support for --device
docker run -d -P --device=/dev/video1 --device=/dev/snd -p 4444:4444 -p 5900:5900 --name chrome-stable acme.com/chrome-stable hw:0,1,1
Our particular use case is wanting the host to set up some dummy audio and video loopback devices that pretend to be web cams/audio.  The audio and video is set up and piped to /dev/video and alsa using a gstreamer pipeline.  When the containers (running selenium) start chrome or firefox they can make use of a webcam with 'canned video'.
We found that setting up the device in the host and sharing it was more stable than setting it up in the container, and we want to continue using the spotify docker client.  Thanks!

Current coverage is 37.24%

Merging #370 into master will decrease coverage by -0.47% as of 1f93c2a

@@            master    #370   diff @@
======================================
  Files           71      72     +1
  Stmts         3346    3386    +40
  Branches       797     809    +12
  Methods          0       0
======================================
- Hit           1262    1261     -1
- Partial        116     117     +1
- Missed        1968    2008    +40

Review entire Coverage Diff as of 1f93c2a

Powered by Codecov. Updated on successful CI builds.

@mattnworb could you also accept this pull request.  It will simplify our build process if this commit was in master

@owennewo LGTM.
I am going to try and close and re-open the PR to see if that triggers a build on our new Travis-CI setup, but don't worry it has nothing to do with the contents of this PR itself.

this is in docker-client:3.6.6 now

@mattnworb - thank you for the merge. I'm a happy man.

Hi,
Can I get a usage exemple of this? I'm trying to share the device /dev/isgx but I'm getting an error from docker daemon.
Code:
`...
Device device = Device.builder()
.pathOnHost("/dev/isgx")
.pathInContainer("/dev/isgx")
.build();
return hostConfigBuilder.devices(device).build();
`
Error stacktrace:
`com.spotify.docker.client.exceptions.DockerRequestException: Request error: POST unix://localhost:80/containers/07d07533ff582dea16c5c7bf7a0787b1df2c51da50773976a42f125b982a9b60/start: 500, body: {"message":"OCI runtime create failed: device access at 8 field cannot be empty: unknown"}
at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2820)
at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2714)
at com.spotify.docker.client.DefaultDockerClient.containerAction(DefaultDockerClient.java:763)
at com.spotify.docker.client.DefaultDockerClient.containerAction(DefaultDockerClient.java:748)
at com.spotify.docker.client.DefaultDockerClient.startContainer(DefaultDockerClient.java:743)
at com.iexec.worker.docker.CustomDockerClient.startContainer(CustomDockerClient.java:137)
at com.iexec.worker.docker.DockerComputationService.startComputationAndGetLogs(DockerComputationService.java:77)
at com.iexec.worker.docker.DockerComputationService.dockerRunAndGetLogs(DockerComputationService.java:70)
at com.iexec.worker.executor.ComputationService.runTeeComputation(ComputationService.java:57)
at com.iexec.worker.executor.TaskExecutorService.compute(TaskExecutorService.java:158)
at com.iexec.worker.executor.TaskExecutorService.lambda$addReplicate$0(TaskExecutorService.java:108)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Caused by: javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1098)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:883)
at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:99)
at org.glassfish.jersey.client.JerseyInvocation$2.completed(JerseyInvocation.java:840)
at org.glassfish.jersey.client.ClientRuntime.processResponse(ClientRuntime.java:227)
at org.glassfish.jersey.client.ClientRuntime.access$200(ClientRuntime.java:85)
at org.glassfish.jersey.client.ClientRuntime$2.lambda$response$0(ClientRuntime.java:178)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:312)
at org.glassfish.jersey.client.ClientRuntime$2.response(ClientRuntime.java:178)
at org.glassfish.jersey.apache.connector.ApacheConnector$1.run(ApacheConnector.java:491)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at jersey.repackaged.com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:299)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:50)
at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:37)
at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:487)
at org.glassfish.jersey.client.ClientRuntime.lambda$null$3(ClientRuntime.java:187)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:312)
at org.glassfish.jersey.client.ClientRuntime.lambda$createRunnableForAsyncProcessing$4(ClientRuntime.java:163)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 more`


Add rollup

Please read and adhere to the contributing guidelines.

You don't have to close this, just fix the issue and commit. The PR will pick up the changes automatically.


Added support for multilingual-e5-small: Fixes#123

canonical vector values: https://colab.research.google.com/drive/1GEGTzXB7ccakTOTQcRYL3JmInf-E3Q54#scrollTo=spJiCcNWs6-O.
onnx model: https://huggingface.co/intfloat/multilingual-e5-small/tree/main/onnx

@Anush008 could you please review this ?

why  fastembed/tests/test_text_onnx_embeddings.py is demanding different canonical vectors values ? I think we need to modify that test , as previously also on e5-large-instruct model the same error occurred so when I modified those values all tests were passed. Here's that logged error:
E           AssertionError: intfloat/multilingual-e5-small
E           assert False
E            +  where False = <function allclose at 0x101d59d30>(array([ 0.04931236,  0.02415175, -0.0384715 , -0.08884481,  0.08710264],\n    dtype=float32), array([ 0.03131689,  0.03093922, -0.03511665, -0.06727391,  0.08508426]), atol=0.001) E            +    where <function allclose at 0x101d59d30> = np.allclose`

The CI logs a different issue though.
https://github.com/qdrant/fastembed/actions/runs/8590817987/job/23538844967#step:5:2066
Due to
https://github.com/qdrant/fastembed/blob/f340a73a3e19845fd5d0ecc5200b8990003e9db7/fastembed/text/e5_onnx_embedding.py#L45-L50

The CI logs a different issue though. https://github.com/qdrant/fastembed/actions/runs/8590817987/job/23538844967#step:5:2066
Due to
https://github.com/qdrant/fastembed/blob/f340a73a3e19845fd5d0ecc5200b8990003e9db7/fastembed/text/e5_onnx_embedding.py#L45-L50

Yeah I agree with you but just after changing my values to the logged one , all tests were cleared:`platform darwin -- Python 3.10.10, pytest-8.1.1, pluggy-1.4.0
rootdir: /Users/yash/PycharmProjects/e5-instruct
plugins: anyio-4.3.0, asyncio-0.23.6
asyncio: mode=strict
collected 8 items
fastembed/tests/test_sparse_embeddings.py ...                                                                                [ 37%]
fastembed/tests/test_text_onnx_embeddings.py .....                                                                                [100%]`

Yeah I agree with you but just after changing my values to the logged one , all tests were cleared:platform darwin Python 3.10.10, pytest-8.1.1, pluggy-1.4.0
rootdir: /Users/yash/PycharmProjects/e5-instruct`` plugins: anyio-4.3.0, asyncio-0.23.6 asyncio: mode=strict collected 8 items   `
fastembed/tests/test_sparse_embeddings.py ...                                                                                [ 37%]
fastembed/tests/test_text_onnx_embeddings.py .....                                                                                [100%]

You could also test it by again running the checks. I think the issue maybe because  of  atol  values in the test

I think the issue might be due to the atol values in the test.

now you could run the checks , I have modified the atol values in the test. Also all tests were passed


Use check_process_status from Ambari resource_management

This is less error-prone than using an Execute function.

Closing in favor or a single PR...


Added Wait.untilSupplied(supplier) implementation

This is done in order to support calls like this:
Wait.untilSupplied(() -> streamOfObjects()).has(stream -> stream.count() > 0)

This change is

Current coverage is 93.27% (diff: 100%)

Merging #40 into master will increase coverage by 0.04%

@@             master        #40   diff @@
==========================================
  Files           271        271
  Lines          3248       3255     +7
  Methods           0          0
  Messages          0          0
  Branches        201        200     -1
==========================================
+ Hits           3028       3036     +8
  Misses          158        158
+ Partials         62         61     -1

Powered by Codecov. Last update ff39e04...13ec902

LGTM

Reviewed 4 of 4 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


CRASH on Startup

Issue Description:
-This shouldn't have effected anything but I will state these events as they may help to pin down the cause of the crash.
-Downloaded latest version of Chisel-MC1.10.2-<IP_ADDRESS>
-Downloaded latest version of CoFHcore1.10.2-<IP_ADDRESS>
-Downloaded latest version of Thermal Dynamics-1.10.2-<IP_ADDRESS>
-Downloaded latest version of Thermal Expansion-1.10.2-<IP_ADDRESS>
-Downloaded latest version of Thermal Foundation-1.10.2-<IP_ADDRESS>
I did nothing to EnderIO, but if you read through the crash log you'll see it has something to do with EnderIO and Chisel.
Attempted to load.  Game Crashed.  Undid all updates.  Attempted to load.  Game crashed AT LAUNCH.
Here is the paste pin for the crash:
https://pastebin.com/V7Ytfjbm
The game will not attempt to load anymore.  Once "Play" is clicked the launcher begins and then immediately crashes.
What happens:
-Click "PLAY" button at launcher.  Game attempts to start to load and then crashes.
What you expected to happen:
-Click "Play" and Game Loads
Steps to reproduce:

...

Affected Versions (Do not use "latest"):

EnderIO:  1.10.2-<IP_ADDRESS>
EnderCore: 1.10.2-<IP_ADDRESS>
Minecraft: 1.10.2
Forge:  <IP_ADDRESS>4

Your most recent log file where the issue was present:
https://pastebin.com/V7Ytfjbm

see #4258


Help wanted: call for collaborators

Let's find more people to help with awesome-ios
Do you have any suggestions? Please leave a comment and use the reactions, thanks
@vsouza @lfarah

I nominate @arasu01 https://github.com/vsouza/awesome-ios/pulls?q=is%3Apr+author%3Aarasu01

I wanna collaborator for awesome-ios.

I am interested in awesome-ios collaborator. Let me know how can I help?

@dkhamsing: Thanks for nominating me. I'm really interested in it.

Sorry guys, been busy in the past weeks but I should be able to organize myself to contributing more in the next 2 weeks. But definitely agree that we need more people

No problem man, it’s all good

HI @dkhamsing! I'm interested in collaboration. Can I help somehow?

@serhii-londar hi, if you have time to contribute, please leave open pull requests to close issues we have, comment on pull requests to approve or make suggestions! that would be a great way to start
thanks

I am interested in becoming a collaborator. Happy to help in any way I can.

I am interested in becoming a collaborator. I can help in any way necessary

@aaronjsutton @lukecrum
hi, if you have time to contribute, please open pull requests to close issues we have, comment on pull requests to approve or make suggestions! that would be a great way to start
thanks


docs: add submitting_block_process.md

Preview: https://github.com/keroro520/godwoken/blob/docs-submitting-block-process/docs/submitting_block_process.md

@sopium @zeroqn is this PR ok to merge?
I will take @zeroqn 's advice to update the doc in another PR.


Bug: pg_affected_rows(): Argument #1 ($result) must be of type PgSql\Result, bool given

PHP Version
8.1
CodeIgniter4 Version
4.3.3
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
Windows
Which server did you use?
apache
Database
PostgeSQL 15
What happened?
Error after run $this->modelName->updateBatch($updatedData, 'id');
{
    "title": "TypeError",
    "type": "TypeError",
    "code": 500,
    "message": "pg_affected_rows(): Argument #1 ($result) must be of type PgSql\\Result, bool given",
    "file": "D:\\onero\\onero-crm-ci4-api\\vendor\\codeigniter4\\framework\\system\\Database\\Postgre\\Connection.php",
    "line": 172,
    "trace": [
        {
            "file": "D:\\onero\\onero-crm-ci4-api\\vendor\\codeigniter4\\framework\\system\\Database\\Postgre\\Connection.php",
            "line": 172,
            "function": "pg_affected_rows",
            "args": [
                false
            ]
        },
        {
            "file": "D:\\onero\\onero-crm-ci4-api\\vendor\\codeigniter4\\framework\\system\\Database\\BaseBuilder.php",
            "line": 1802,
            "function": "affectedRows",
            "class": "CodeIgniter\\Database\\Postgre\\Connection",
            "type": "->",
            "args": []
        },
        {
            "file": "D:\\onero\\onero-crm-ci4-api\\vendor\\codeigniter4\\framework\\system\\Database\\BaseBuilder.php",
            "line": 2562,
            "function": "batchExecute",
            "class": "CodeIgniter\\Database\\BaseBuilder",
            "type": "->",
            "args": [
                "_updateBatch",
                100
            ]
        },
        {
            "file": "D:\\onero\\onero-crm-ci4-api\\vendor\\codeigniter4\\framework\\system\\Model.php",
            "line": 414,
            "function": "updateBatch",
            "class": "CodeIgniter\\Database\\BaseBuilder",
            "type": "->",
            "args": [
                [
                    {
                        "package_plan_id": "PP63aa9a4a1f221",
                        "package_plan_name": "Basic",
                        "package_plan_description": "The ideal solution for small businesses with an affordable price, easy to use, even for beginners.",
                        "updated_at": "2023-03-27 05:08:21"
                    },
                    {
                        "package_plan_id": "PP63aa9a4a1f252",
                        "package_plan_name": "Business",
                        "package_plan_description": "The perfect package for mid-size companies, various additional features to market, sell & support your business.",
                        "updated_at": "2023-03-27 05:08:21"
                    },
                    {
                        "package_plan_id": "PP63aa9a4a1f26d",
                        "package_plan_name": "Professional",
                        "package_plan_description": "Complete features for complex needs, bring value to customers and create the best user experience.",
                        "updated_at": "2023-03-27 05:08:21"
                    }
                ],
                "package_plan_id",
                100
            ]
        },

Steps to Reproduce
Run updateBatch method
$this->modelName->updateBatch($updatedData, 'id');
Expected Output
No error.
Anything else?
No response

It seems there is no id in $updatedData.

This test passes: https://github.com/codeigniter4/CodeIgniter4/blob/10e3300cce54ea8be06d560c1105dffa0a7c677a/tests/system/Models/EventsModelTest.php#L198
Can you show the failed test case?

package_plan_id

i mean $this->packagePlanModel->updateBatch($updatedData, 'package_plan_id');
id is using package_plan_id

Same issue when im run insertBatch:
// module_ms
            $modules = [
                [
                    'module_uuid' => $uuidGenerator::uuid4()->toString(),
                    'module_name' => 'Contact',
                    'module_description' => 'Module for contact',
                    'created_at' => date('Y-m-d H:i:s'),
                ],
                [
                    'module_uuid' => $uuidGenerator::uuid4()->toString(),
                    'module_name' => 'Deal',
                    'module_description' => 'Module for Sales Funnel',
                    'created_at' => date('Y-m-d H:i:s'),
                ],
                [
                    'module_uuid' => $uuidGenerator::uuid4()->toString(),
                    'module_name' => 'Product',
                    'module_description' => 'Module for Product',
                    'created_at' => date('Y-m-d H:i:s'),
                ]
            ];

            $moduleModel->insertBatch($modules);

We cannot reproduce.
Please show us minimum working code that reproduces the error.

As I can see from the code, such an error can be caused by a broken SQL query.
Therefore, as @kenjis wrote, we need more information.
I'm not sure, but try wrapping your code in a try...catch
try {
    $moduleModel->insertBatch($modules);
} catch (Exception $e) {
    dd($moduleModel->error());
}

@Onerosolutions Can you provide minimum code that reproduces the error?
Or we will close this because we cannot reproduce it.

Hello, sorry for the late reply.
The possible cause of the error may be that I added updated_at to the $allowedFields attribute as shown below:
class PackagePlanModel extends BaseModel
{
  protected $table = 'package_plan_ms';
  protected $primaryKey = 'package_plan_id';
  protected $returnType = 'App\Entities\PackageBuilder\PackagePlan';
  protected $useSoftDeletes = true;

  protected $allowedFields = [
    'package_plan_id',
    'package_id',
    'package_plan_name',
    'package_plan_description',
    'created_at',
    'updated_at',
  ];

....

Then, I tried to run updateBatch with the returnSQL parameter set to true to get the raw SQL, and the result is as follows. I tried running it manually in PostgreSQL using DBbeaver:
 $packagePlanModel = new PackagePlanModel();
    try {
      $sql = $packagePlanModel->updateBatch($packagePlanUpdateBatchData, 'package_plan_id', 100, true);
      print_r($sql); die;

....

Array
(
[0] => UPDATE "package_plan_ms"
SET
"package_plan_description" = _u."package_plan_description",
"package_plan_name" = _u."package_plan_name",
"updated_at" = _u."updated_at"
FROM (
SELECT 'The ideal solution for small businesses with an affordable price, easy to use, even for beginners.' "package_plan_description", 'PP63aa9a4a1f221' "package_plan_id", 'Basic' "package_plan_name", '2023-06-13 04:11:37' "updated_at" UNION ALL
SELECT 'The perfect package for mid-size companies, various additional features to market, sell & support your business.' "package_plan_description", 'PP63aa9a4a1f252' "package_plan_id", 'Business' "package_plan_name", '2023-06-13 04:11:37' "updated_at" UNION ALL
SELECT 'Complete features for complex needs, bring value to customers and create the best user experience.' "package_plan_description", 'PP63aa9a4a1f26d' "package_plan_id", 'Professional' "package_plan_name", '2023-06-13 04:11:37' "updated_at"
) _u
WHERE "package_plan_ms"."package_plan_id" = _u."package_plan_id"
)
but it resulted in an error like this:
"SQL Error [42804]: ERROR: column "updated_at" is of type timestamp without time zone but expression is of type text
Hint: You will need to rewrite or cast the expression.
Position: 155"

My question is, how can I cast the updated_at column when running updateBatch to become:
SET
"package_plan_description" = _u."package_plan_description",
"package_plan_name" = _u."package_plan_name",
"updated_at" = CAST(_u."updated_at" AS timestamp without time zone)
FROM (
SELECT 'The ideal solution for small businesses with an affordable price, easy to use, even for beginners.' "package_plan_description", 'PP63aa9a4a1f221' "package_plan_id", 'Basic' "package_plan_name", '2023-06-13 04:00:57'::timestamp without time zone "updated_at" UNION ALL
SELECT 'The perfect package for mid-size companies, various additional features to market, sell & support your business.' "package_plan_description", 'PP63aa9a4a1f252' "package_plan_id", 'Business' "package_plan_name", '2023-06-13 04:00:57'::timestamp without time zone "updated_at" UNION ALL
SELECT 'Complete features for complex needs, bring value to customers and create the best user experience.' "package_plan_description", 'PP63aa9a4a1f26d' "package_plan_id", 'Professional' "package_plan_name", '2023-06-13 04:00:57'::timestamp without time zone "updated_at"
) _u
WHERE "package_plan_ms"."package_plan_id" = _u."package_plan_id";```

PHP Version
8.1
CodeIgniter4 Version
4.4.3
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
Windows
Which server did you use?
php spark
Database
PostgeSQL 13
What happened?
Error after $db->table('pr_ordens')->updateBatch($op_ins, 'id_pr_ordens');
Data
op_ins =
	Array
	(
		[0] => Array
			(
				[id_pr_ordens] => 1
				[id_pr_programas] => 11
				[posicao] => 1
				[updated_at] => 2023-12-02 18:47:52
			)

		[1] => Array
			(
				[id_pr_ordens] => 2
				[id_pr_programas] => 11
				[posicao] => 1
				[updated_at] => 2023-12-02 18:47:52
			)

)

Code
$db = \Config\Database::connect();
$db->table('pr_ordens')->updateBatch($op_ins, 'id_pr_ordens');

Error message when in database trasaction:

pg_affected_rows(): Argument #1 ($result) must be of type PgSql\Result, bool given

Error message when not in trasaction:

pg_query(): Query failed: ERROR: operator does not exist: integer = text
LINE 10: WHERE "pr_ordens"."id_pr_ordens" = _u."id_pr_ordens"
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.

The same issue as this?
https://forum.codeigniter.com/showthread.php?tid=88871

My question is, how can I cast the updated_at column when running updateBatch to become:

There is no way to do that now.
So we need to add a way to specify column types.

I sent a PR: #8426

Please try #8439


Please Can I Join This Organisation? 🙏

Name:
Hemant
GitHub Username:
hemantwasthere
Why do you want to join this organization?
I want to contribute to this organization : )

Our Website 🌐 | Repositories 📚 | LinkFree Profile 🔗
You have received an email to join, or press this link - https://github.com/App-Choreography - , and you'll see a banner, for you to join the organisation! 🎉
You can also show that you are part of this org, by making yourself public. This will show our profile org on your profile:
Follow This:

After you join the organisation, search your name in the list of people. 🔍
Follow this below: ⬇

When you join our org, you will be automatically be part of our community team, where you will get updates, and news about our org!
We are so happy you have joined!  Here is a few things you can do in this org:

App-Choreo's Community team chat = Here you see the latest updates, can share your ideas and collaborate!
GitHub Profile League = submit your GitHub profile readme, to be in the chance of winning! 2 entries left to fill!
Hacktoberfest Practice = practice your Hacktoberfest.
Best App Tutorials = see the latest app tutorials you can either add or take a look at.
Fix our Readme = Here you can polish your code debugging/review and GitHub skills.
Best GitHub Open Source = See the best GitHub opensource repos!

For any help or support, feel free to ask.
Thank you.


initializing fastlane structures

Fastlane somehow got the standard for metadata of Android and iOS apps. It's used a.o. by F-Droid, by my repo – but also to deploy to Google Play. Thought to get you started with it, and hope you find this "minimal kit" useful.
You might wish to move other metadata into this structure as well, e.g. your screenshots from the art directory. For a quick guide, be welcome to use my cheat sheet.

Thanks for merging! Should you move the screenshots in or add e.g. changelogs, please let me know so I tell my updater to fetch them as well.

Randomly noticed while checking language code for Norwegian;
Shouldn't the German language code be de-DE instead, or doesn't it matter? Saw the code here. I know nothing about fastlane, just happen to notice the difference in language code.

Shouldn't the German language code be de-DE instead

If it's specific to the German as spoken in Germany (as opposed to e.g. de-AT spoken in Austria), yes. But that would mean our Austrian fellows would fall back to en-US unless they explicitly specified they wanted to have de-DE. Usual browser setups for a German speaking user in Austria are rather "de-AT, de, en". Hence, as no language specific to any given region was used, only "de" is fine – and our Austrian friends could supply de-AT in addition if they feel like (similar to other de-*).
TL;DR: just using "de" makes it eligible for all German speaking countries.

Saw the code here

which is totally incomplete, if I might say so, and thus rather gives examples. What stands behind those codes is ISO-639 and ISO-3166-1 (see the alpha-2 code column there), also consult Language code (the second row in that table, "IETF language tag", sums it up). So basically, it's <language>[-<region>], with the region being optional.


ARTEMIS-2110 allow a lease renew without update to the expiry timesta…

…mp. Fix intermittent failure of org.apache.activemq.artemis.core.server.impl.jdbc.JdbcLeaseLockTest#shouldRenewAcquiredLock

The ci build failure seems may be related to the doc generation...
there is no output for 10 mins and a termination after 42 mins:

T E S T S
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
Running org.apache.activemq.cli.test.WebServerComponentTest
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[main] 15:57:20,526 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://localhost:0
[main] 15:57:21,519 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at https://localhost:0
[main] 15:57:21,967 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://localhost:0
[main] 15:57:22,496 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at https://localhost:0
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.288 sec - in org.apache.activemq.cli.test.WebServerComponentTest
Results :
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received
The build has been terminated
--
on a local build that runs to completion I see: [ERROR] Error fetching link: but it does not block for any more than one minute.
Something needs to be tweaked, any ideas?

T E S T S
Running org.apache.activemq.cli.test.WebServerComponentTest
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[main] 14:35:40,755 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://localhost:0
[main] 14:35:41,098 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at https://localhost:0
[main] 14:35:41,264 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://localhost:0
[main] 14:35:41,524 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at https://localhost:0
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.22 sec - in org.apache.activemq.cli.test.WebServerComponentTest
Results :
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
[ERROR] Error fetching link: /Users/gtully/code/activemq-artemis-two/artemis-core-client/target/apidocs/package-list. Ignored it.
[ERROR] Error fetching link: /Users/gtully/code/activemq-artemis-two/artemis-selector/target/apidocs/package-list. Ignored it.
[ERROR] Error fetching link: /Users/gtully/code/activemq-artemis-two/artemis-jms-client/target/apidocs/package-list. Ignored it.
[ERROR] Error fetching link: /Users/gtully/code/activemq-artemis-two/artemis-journal/target/apidocs/package-list. Ignored it.
[ERROR] Error fetching link: /Users/gtully/code/activemq-artemis-two/artemis-server/target/apidocs/package-list. Ignored it.
[ERROR] Error fetching link: /Users/gtully/code/activemq-artemis-two/artemis-jms-server/target/apidocs/package-list. Ignored it.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
There may be some insight in that diff as to why the build fails.

seems building the web site is the crux.
it can be disabled with:
mvn -Pfast-tests -Pextra-tests -B install -q -pl '!artemis-web'


Logging in with a different GitHub account

I have multiple GitHub accounts. How can I sign out with one and sign in with another?

I logged in but see only my repositories, not repositories from other accounts to which I have access - and cannot log out as well.

Remote Repositories uses the built-in VS Code authentication providers/mechanisms. You can manage your logged in accounts in the Accounts icon in the activity bar. You could be able to sign in/out through there.

The status bar onthe bottom shows me as logged into BitBucket, but the Remote Repositories extension has me logged in with my personal GitHub account.

@afreed1377 Check the Accounts icon on the activity bar -- that will have the VS Code accounts you are logged into -- which is what Remote Repositories uses.


use Unicode glyphs or SVG data URLs instead of bitmaps

I put this up for review in case I missed some page that used the removed icons.

I changed back the version of asciidoctor-ant to 1.5.4 and added a stab at IVY-450. The current description does not indicate what should happen when the parent is collapsed, so I assume that one may as well use breadcrumbs rather than visual cues from the menu.

Looks like I've beaten time to first response record again: 90000+ hours 😃


feat(ui): Save cursor position when toggling plugin details

Problem
When looking through the plugin's details the cursor jumps to other plugins when toggling the details.
Proposal
Save the cursor position.
Before

After

Let me know if there is something that I should change!
P.S: I don't know if this should be a feat or a fix

Doesn't handle multiple selections open.


Switched from qtarget to ox_target

so i switched from qtarget to ox_target and now my GoodLife-Pets script will not work its saying "no such exports AddEntityZone in resource qtarget

👍


Fix backward fn for < and ==

Running the below code fails as the mlops Less has no backward method:
tt = Tensor.randn(4, requires_grad=True)
(tt*(tt < 0)).sum().backward()

However, the equivalent Torch code is valid.
Similarly for mlops Eq.
I made the simple changes of adding those backward methods which just propagate None gradients.
Also added the corresponding tests.

Hmm, very interesting.

@geohot good point, thank you. Using autograd's variable to attach gradient has not been needed for a while in PyTorch. I have removed it in the latest commit.
Can you give me a pointer as to what you mean about the automatic stuff, please? I don't know what you're referring to. Thanks

Eh, I meant the test actually testing the backward. But I'm fine with this


Do not mention contributors

Everyone writing code that makes it into a release is mentioned in PRs like https://github.com/jenkins-infra/charts/pull/882, and mentions create notifications. It seems for no real reason other than maybe credit?
Could you remove author mentions, or at least code-format them (e.g. @daniel-beck)?

Thanks for the suggestion and I'll try to find a solution. I am thinking out loud but since that changelog is automatically retrieved maybe one of the solutions would be to not be listed in the changelog. But for now, the easier solution seems to escape changelogs

If you can find the changelog, you can link there, like Dependabot does, instead of inlining it.


Event Listener / Click Listener didn't work

Hello, thanks for this beautiful button.
By the way, i intended to make this button when clicked, it move to another layout.
i tried to use your guidance as:
###Event Listener
sparkButton.setEventListener(new SparkEventListener(){
		@Override
		void onEvent(ImageView button, boolean buttonState) {
			if (buttonState) {
				// Button is active
			} else {
				// Button is inactive
			}
		}
});

It didn't work, instead showing error that says:
error: <anonymous com.example.android.myapplication.MainActivity$1> is not abstract and does not override abstract method onEventAnimationStart(ImageView,boolean) in SparkEventListener
error: onEvent(ImageView,boolean) in <anonymous com.example.android.myapplication.MainActivity$1> cannot implement onEvent(ImageView,boolean) in SparkEventListener attempting to assign weaker access privileges; was public

use this and then the methods will work
sparkbutton=(SparkButton) findViewById(R.id.spark_button);

Well thanks a lot @hammadshah1995 it does work.
But actually, the animation didn't work as expected, because of intent made quick move of activities.
i tried to apply delay on it but it only delay the moves of activities but the animation wasn't played, it paused.
So then i think to find other way to play the animation by put it first, before we click the button.
Do you have another solution?

Hi @MuhammadFaisalIchal how do you sesolve this? I have the same problem.


Capture cryptographic test vectors for JSON or event signing from source

These values all obtained from various unit tests; namely:
https://github.com/matrix-org/python-signedjson/blob/master/tests/test_known_key.py
https://github.com/matrix-org/synapse/blob/develop/tests/crypto/test_event_signing.py

When this is merged into the spec, I'll add comments to the unit test files to point them at the spec, in case of later edits. It would be useful to keep them all in sync.

LGTM


Support for dashed line

Steps to Reproduce
There's no API for setting path effect for dashed lines for drawing.

@Hixie I recall you saying once that this was an intentional omission because dashed lines are slow?  But then also that flutter/game had an implementation (or some example did?).  Am I remembering correctly?  Could you point me to that example?  FYI @mit-mit

I implemented it on a circle for one of our demos (now the drag and drop manual test). We don't have generic path dashing because as you say, it's expensive to compute such paths. You can manually implement this by writing the code to manually draw the path dashed, but that'll be a lot of work, and thus feel expensive. Expensive things should look and feel expensive, so that people don't do them as much.

This is probably obvious question, as I do not see anything like that in the Flutter API,  but let me ask to confirm: In Flutter, there is no classes for Android equivalent (or Android similar) role of PathEffect or it's extensions ComposePathEffect, CornerPathEffect, DashPathEffect, DiscretePathEffect, PathDashPathEffect, SumPathEffect, is that correct (at timepoint August 2017)? Thanks

@mzimmerm thanks for the questions!

That is correct at the moment. In due course we'll probably expose more and more such APIs, especially the fast ones.

@Hixie, Skia already has these effects implemented.  Is the implementation less performant ?

It's actually very intentional. We are being very careful in what we expose, so that using the API in the intuitive way will result in fast code where possible. We are being careful to make expensive APIs feel expensive.

Removing an API, doesn't make it feel expensive, it makes it feel non-existant and it is a hidiculous argument to me because instead of using an optimized API designed by graphics experts and tested to work on all scenarios, you now put that responsibility on general developers that couldn't care less about performance or general correctness. Not to mention that proper dashing code is non trivial and pretty hard to get it right when you consider thickness, gaps, offsets, general path, conics, beziers, etc.
If you want to bring the 'performance' argument, show numbers but even with numbers it is nonsensical; Vector Graphics engines have a certain minimum feature list and dashing is part of it. The original Mac from the mid-80's had rounded rects, dashes and regions. The original iPhone from 11 years ago was able to have a performant and powerful graphics engine without bastardizing the API.
Imagine if you removed the 'Q' letter from the fonts with the argument that it took too long to render it and devs could just use an 'O' and an comma. Is it really the case where "less is more"...

https://github.com/mono/SkiaSharp/issues/47
They didn't even talk about performance, regarding this same issue in SkiaSharp !!

We have made that kind of choice. For example, we made the explicit choice not to support vertical text layout (as used in traditional Japanese typography, for instance) because we believe that supporting vertical text layout would dramatically increase the complexity of our framework (which would affect performance and usability).
Having said that, I have some good news for you if what you want is dashed lines. @dnfield has been working on a patch which will make it possible to implement dashed lines as a platform feature relatively easily. When that lands, you'll be able to write a little utility method that turns any Path into its equivalent dashed Path.

OK, so you are adding the path operation stuff and I assume you are thinking of using 'extractPath' and operations (intersect, union, etc) to create dashes. Let's consider animating a dash; how is your proposed 'new' method more performant than what Skia has natively implemented?
How will the API look compared to normal Skia ? Looks hacky (and heavy) to me since to draw dashes on a rectangle I would first need to convert to a path (same for all the other canvas primitives aside from Path).
My money is on Skia for performance and intuitive APIs.
You should modify the architecture diagram: https://flutter.io/technical-overview/
so that instead of 'Skia' it says 'Quasi-Skia', 'Semi-Skia', 'The-margarine-of-Skia' or 'The-diet-coke-of-Skia', anything else seems like false advertising.

@cbazza I'm glad that you're expression passion on this topic.  :)  However I would ask that we keep the discussion as technically (and positively) focused as possible.  I don't read the 4th paragraph in your previous comment as really aiding bringing this discussion to a helpful resolution.  Patches are certainly welcome to flutter.io/faq to answer if Flutter exposes all of Skia's APIs if you believe that's a common concern. :)
As Ian noted, Flutter was founded with a bias towards trying to make it easy to go fast, in part by only providing the "fast" apis.  Obviously that may not always sufficient, and we may have erred here in by not (yet) providing a line dashing API!  But the only way to correct that is going to be through reasoned discussion of the user benefits of doing such and the tradeoffs those entail.  I suspect it may be too early to make this call as we have so many other missing holes to fill in yet. :(  This specific bug is relatively low on our user voted list of issues:
https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc
We review those regularly as part of planning engineering work.
This bug (as others have noted) also has a known (albeit possibly ugly) workarounds, as demonstrated by charts_flutter having dashes without an official Flutter Skia API:
https://github.com/google/charts/blob/master/charts_flutter/lib/src/canvas/line_painter.dart#L81
In any case, I have no strong opinion as to whether Flutter exposes Skia line dashing APIs.  I leave that to @Hixie and other senior engineers to drive.  I do expect us all to work together to resolve these things and follow our code of conduct.
https://flutter.io/design-principles/#code-of-conduct
Thanks all.

That 4th paragraph was an attempt at humour :)
Anyways, please send your alternatives to the Skia team and ask them if they think this is a good idea.
Your current workaround is extremely limiting (as commented in the code):
https://github.com/google/charts/blob/master/charts_flutter/lib/src/canvas/line_painter.dart#L81
and I'll repeat here:
Dash patterns are currently only supported between vertical or horizontal line segments at this time.
Regarding the new path ops stuff, I don't think the API will be nice and I don't think it will perform anywhere near Skia.
Get Skia people involved here and listener to what they have to say.

But the only way to correct that is going to be through reasoned discussion of the user benefits of doing such and the tradeoffs those entail.

Skia is a nice and feature rich 2D vector engine. When they designed it, they provided stuff people needed and that other such engines have it. This is obvious stuff like lowest common denominator for Vector Graphics engine, and you want us to 'show user benefit, etc, etc' before you do something about it?
https://github.com/flutter/flutter/issues/9641
Provided great specs :)
https://skia.org/user/api/skpaint_overview
Has basic functionality that every Vector Graphics developer would find needed.

We work very closely with the Skia team.
If you think there is a performance issue with a particular API, please write a benchmark demonstrating the problem. We carefully investigate performance issues and they directly inform our API design. If you think there is a faster way to implement a particular feature, please don't hesitate to implement that faster way and compare the benchmarks. You may find you are surprised as to what is slow and what is fast. For example, we recently discovered that it's just as fast to parse SVG path descriptions in Dart and construct the paths manually in Dart, than it is to have the entire operation done in C++. We discovered this by benchmarking the two options and comparing the results, before deciding on the implementation strategy.

We work very closely with the Skia team.

Excellent, so could you please include one of their senior devs in this discussion to move it forward so that I can have some answers to my concerns that require Vector Graphics Engine expertise?

I think a reasonable approach here would be to try to get some tests of doing dashed paths as a dart library and test it against the native Skia calls.  I can try to get to that at some point, but have a few other things I'm trying to wrap up that are higher on my personal list at the moment.

Hi @dnfield,
As before, don't let what I say stop you... but having said that the race here is not even close, it's orders of magnitude apart.
Thing is, the drawing operations are performed in the GPU (hardware accelerated) whereas the 'path ops' are executed in the CPU (C++ code) and the computations are heavy (specially considering splitting conics, beziers, circles, rounded rects, etc).
So you can just let the GPU do it's thing at drawing time, or use lots of CPU cycles followed by GPU rendering.  It's like clocking 'Usain Bolt' vs 'Usain Bolt carrying a desktop computer' :)
As always I could be wrong here and once again I am asking for the professional opinion/input of the experts in the field. Can someone from the Skia team shred some light here?
@reed-at-google @bsalomon @HalCanary @mattsarett @egdaniel
@fmalita @brianosman @jvanverth @LeonScroggins

The PR that I have made that @Hixie was referring to would allow for a fair amount of this work to be done on the GPU thread, AFAICT - something like measure the path, get subsegments of the path, and draw those; only a few calculations would actually be done in Dart land.

I read every line of your PR and my comments above reflected that.
https://github.com/flutter/engine/pull/4799/files
Let me give it another shot at explaining the situation. Plain C++/Dart code are relatively comparable speedwise. When Plain C++ code is not fast enough, Vector Graphics engineers embed assembly language into their C++ code. These instructions take advantage of the parallel arithmetic vector hardware inside the CPU. Google around for 'SIMD' and you will see what I am talking about.
When a graphics engine says that they use SIMD to speed up their code, they have done benchmarks, etc and there is no way for plain C++ to beat that. When SIMD code is not fast enough, Vector Graphics engineers use the hundreds of smaller CPUs inside the GPU to obtain another other of magnitude speed improvement. GPU code looks like C code written in GLSL (the OpenGL Shading Language). Again, when a graphics engine says that they are GPU accelerated, they have benchmarked their GPU code against SIMD & CPU (just to quantify how much faster it is) and there is no way for SIMD & CPU to beat it. Also GPU code is a lot more energy efficient than CPU code, and that's why you can watch video on your mobile for hours without killing the battery.
So you can implement dashes in 2 ways:
(A)

(step 1) Let the GPU draw the shape with the given paint ('Usain Bolt').

or
(B)

(step 1) Use the CPU (with Plain C++/Dart code) to break the path into a whole bunch of smaller pieces. This unfortunately is very CPU intensive because of the math involved breaking conics, beziers (quadratic & cubic), circles, arcs, etc ('desktop computer')
(step 2) Let the GPU draw the shapes with the given paint ('Usain Bolt')

Mathematically speaking:
'A-step-1' same speed as 'B-step-2'
'B-step-1' extra computation that happens to be heavy
therefore
'A' always faster than 'B'
If you are just comparing C++ against Dart code with similar algorithms then yeah no point in discussing performance, just instrument/measure it and now we have something to talk about it.
With Graphics, architecture has a big impact because depending where code is it is using more powerful hardware.
The best way to deal with Graphics API is to assume the Skia API is super fast because you won't be able to make anything faster with plain C++ or Dart code. The pathOps code (path manipulation, union, intersection, difference) is just plain C++ code.
I think it would be way better to just take what Skia provides instead of wasting time (tying to make something fast go slow), frustrating app developers and insulting Skia developers (their silence is speaking volumes).

So on my analysis of the Skia Dash effects code, I don't see any direct use of SIMD - and as far as I can tell any indirect use of it is already exposed in the Dart code.  Can you point me to anything I might be missing here in the Skia codebase?  I'd be interested to see it.
I think there are some valid questions about how well this code will perform in the "GPU" thread in the Flutter architecture vs. the Dart thread, but that's a little bit different than what you seem to be getting at.
At any rate, it doesn't really seem like Skia is working the way you think it is in this case.  But without any real tests, we're both pointing at code and diagrams and mental models that we disagree on, and I'm not sure we'll make much progress.

I never opposed your measurements; do them but I would wait to first hear back from the experts which is the Skia people.

Just spent some time looking at Skia code... lots of code my head is spinning... but it looks like the Dash effects are not GPU accelerated so it is going to be a close race to call, might as well just do the measurements.

Android AOSP also delegates rendering of dash path to SkDashPathEffect. They have been using it since 2008 in their first commit! They still use it because it performs better than implementing it in Java. But in our case, implementing it in Dart may be as powerful as the C++ implementation in Skia.

So you can implement dashes in 2 ways:
(A)
(step 1) Let the GPU draw the shape with the given paint ('Usain Bolt').
or
(B)
(step 1) Use the CPU (with Plain C++/Dart code) to break the path into a whole bunch of smaller pieces. This unfortunately is very CPU intensive because of the math involved breaking conics, beziers (quadratic & cubic), circles, arcs, etc ('desktop computer')
(step 2) Let the GPU draw the shapes with the given paint ('Usain Bolt')

Skia seems to be following case B, may be because it is not easy to implement it using GLSL.

OpenGL has a function called glLineStipple.
It can be used to create dashed line. I am not sure if it can be used for creating paths others than lines.
Below is a screenshot from http://cse.csusb.edu/tongyu/courses/cs420/notes/drawing.php

Shader-Based Antialiased, Dashed, Stroked Polylines
http://jcgt.org/published/0002/02/08/paper.pdf

Initial implementation here: https://github.com/dnfield/flutter_path_drawing/blob/master/lib/src/dash_path.dart
Requires 0.3.6
Potential enhancement that I don't think is possible right now: only dash visible portion of path.

Just my +1 of this issue, I accidentally commented on a closed dup: https://github.com/flutter/flutter/issues/9641
But tl;dr: While I understand that one of flutters goals is to be performant and speedy on a range of devices, I'm pretty sure flutter also very highly values being easy to use and speeding up development time.  Regardless of the performance of dashes people are going to want dashes in their apps in certain cases.  And I think this should be as easy as changing a BorderStyle.  If you're worried about "performance" then put in the documentation of BorderStyle.dashed "WARNING: dashed borders can affect drawing performance on some devices".
Making something so commonly used difficult to implement seems to go against many of flutters values especially where it's easy to implement on not just the native platforms but really any platform.  As part of google it seems to me like your guys' job to figure out how to make it fast, but we (developers using flutter) need this to be easy.  And when we see dashed isn't in the BorderStyle's enum we go "Flutter doesn't support dashes?"
Since things have perhaps been heated, I will add that I love flutter!  And I think the flutter team has done a fantastic job of considering how to make things easy for developers and allow creating quality applications!  And my liking of flutter is why I kinks like this need to be worked out.

I must agree with @csga5000 that it's enough that the documentation of BorderStyle.dashed contains a "WARNING: dashed borders can affect drawing performance on some devices"; The alternative of simply not providing basic functionality, like dashed lines, tarnishes the reputation of Flutter. I once was going to use a BackdropFilter but read this: "This effect is relatively expensive, especially if the filter is non-local, such as a blur." That's good! Give us the option, and let us decide. We're all adults here. Otherwise, that's just a bad case of "premature optimization". It's very easy for devs to experiment with dashed lines and see if it made their code slow in practice, for their use cases.

Given the availability of Path.computeMetrics and PathMetric.extractPath, this is now a relatively straight-forward problem to solve in Dart, as Dan showed above. Given this, is this still something you think we need to see in Flutter itself?

I think people would prefer to have a borderStyle of dashed and a way to pass the dash array and dash offset.
By the way, dash array & offset are the corner stone of creating handwriting-like reveal animations:
https://css-tricks.com/svg-line-animation-works/

@Hixie Flutter prides itself in being easy and having a small learning curve.  While we still maintain that it seems sensible to provide dashed path as a simple configuration on a border like everything else does, any option that a new developer could pick up and do in a few minutes would probably be ok.  (Even if it warns them that dashed lines have poor performance).
Correct me if I'm wrong, but at the moment it doesn't seem well documented or super easy and therefore it's a typically trivial task that here has quite a high learning curve considering.  Please point me to where the documentation is, if it exists, but googling around I don't see much.  And even @dnfield's library doesn't appear to be documented which seems to suggest you have to rely on digging into the code, or maybe try going off of intellisense?  And either way it means someone has to install an extra package just for a dashed line.  It seems excessive to make the average dart programmer write logic to draw their own path just to give something a certain kind of common appearance.
Though, @dnfield seems to have a good point, the svg line animation in CSS seems like it is a manipulation of CSS, and I can see value in writing that using more appropriate code. (Even if it takes more effort/lines of code)  That's a task you'd expect to take some effort anyway.

Sounds like what's left to do here then is to make sure that we have a library that's well-documented available in pub.

@cbazza that works in HTML/CSS (I guess because there's no other good API for it exposed), but I don't believe that's the way it should be done for Flutter, where you could directly compute the path length, get the appropriate subpath, and draw that.

@dnfield there are other APIs in JS to do this imperatively just like you describe but the key here is that if Flutter supports borderStyle of dashed with dash array & offset, I can write animation code that is totally declarative and need no procedural manipulation as you recommend.
I have mentioned this before but Flutter needs to use more declarative techniques than just imperative ones.

Just weighing in here as I've had someone ask me how to make a dashed border in flutter before and I ended up writing something somewhat similar to the above to make the path segments.
I agree with a few others that it needs to be simple, and think that ideally an option of 'dashed' or 'custom' for BorderStyle (with performance caveat in documentation) would be great as 1) a new user won't have to dig to find it, and 2) all of the existing shapes would theoretically be compatible i.e. TableBorder, InputBorder, RoundedRectangleBorder, StadiumBorder etc...., and 3) it would make it simple to have a shape with some borders dashed and some not.
That being said, I have no idea how I'd go about implementing that, given that dart's enum don't allow for much flexibility. Maybe something like BorderStyle.custom and an optional CustomBorderStyle interface would do? Or making BorderStyle no longer be an enum? With a solution like that, it would then be simple enough to provide DashedBorderStyle in a library (which could be mentioned in the docs for CustomBorderStyle). And I think the existing implementation wouldn't have to be changed all that much, it would just mean that if any/all of the sides were Custom, then it would have to do the less efficient non-uniform painting process.
I could see each of the Borders listed above potentially having use for at least one dashed border, and it would be unfortunate if each of them had to be replicated with minor changes other than support for dashed lines.

Making BorderStyle extensible somehow would be interesting.

Filed that as https://github.com/flutter/flutter/issues/23801

I've made some minor improvements to the documentation of path_drawing, and implemented a path trimming routine.  I haven't published it to pub just yet because I'd like to get some tests, and I'd also appreciate any feedback on the API interface.

Hi everyone, just wanted to say that I am looking to implement a dashed/dotted line in CustomPainter. I would like to remind the Flutter team that what is trivial for you is not trivial for the average developers. Having to implement your own dotting/dashing algorithm for a path is a quantum leap from "2px dashed black"

@dnfield I came across this as I was searching for how to render a dashed border on a Container.  Would you mind posting here with a link to where an outside developer should start learning about your solution?  Also, can you post a code snippet here that demonstrates an example use-case of your solution?

@matthew-carroll  until we fix #23801 it won't be trivial to do this.  Here's a quick example that works for uniform borders, based on Border:
import 'package:flutter/material.dart';
import 'package:path_drawing/path_drawing.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              decoration: BoxDecoration(
                border: DashPathBorder.all(
                  dashArray: CircularIntervalList<double>(<double>[5.0, 2.5]),
                ),
              ),
              padding: const EdgeInsets.all(20.0),
              child: const Text('You have pushed the button this many times:'),
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

class DashPathBorder extends Border {
  DashPathBorder({
    @required this.dashArray,
    BorderSide top = BorderSide.none,
    BorderSide left = BorderSide.none,
    BorderSide right = BorderSide.none,
    BorderSide bottom = BorderSide.none,
  }) : super(
          top: top,
          left: left,
          right: right,
          bottom: bottom,
        );

  factory DashPathBorder.all({
    BorderSide borderSide = const BorderSide(),
    @required CircularIntervalList<double> dashArray,
  }) {
    return DashPathBorder(
      dashArray: dashArray,
      top: borderSide,
      right: borderSide,
      left: borderSide,
      bottom: borderSide,
    );
  }
  final CircularIntervalList<double> dashArray;

  @override
  void paint(
    Canvas canvas,
    Rect rect, {
    TextDirection textDirection,
    BoxShape shape = BoxShape.rectangle,
    BorderRadius borderRadius,
  }) {
    if (isUniform) {
      switch (top.style) {
        case BorderStyle.none:
          return;
        case BorderStyle.solid:
          switch (shape) {
            case BoxShape.circle:
              assert(borderRadius == null,
                  'A borderRadius can only be given for rectangular boxes.');
              canvas.drawPath(
                dashPath(Path()..addOval(rect), dashArray: dashArray),
                top.toPaint(),
              );
              break;
            case BoxShape.rectangle:
              if (borderRadius != null) {
                final RRect rrect =
                    RRect.fromRectAndRadius(rect, borderRadius.topLeft);
                canvas.drawPath(
                  dashPath(Path()..addRRect(rrect), dashArray: dashArray),
                  top.toPaint(),
                );
                return;
              }
              canvas.drawPath(
                dashPath(Path()..addRect(rect), dashArray: dashArray),
                top.toPaint(),
              );

              break;
          }
          return;
      }
    }

    assert(borderRadius == null,
        'A borderRadius can only be given for uniform borders.');
    assert(shape == BoxShape.rectangle,
        'A border can only be drawn as a circle if it is uniform.');

    // TODO(dnfield): implement when borders are not uniform.
  }
}

If we changed that DashPathBorder to just a PathBorder, we could probably add it to the framework and let someone pass in the path they want,which should probably resolve the linked issue as well.

Also, that dashPath method comes from path_drawing: ^0.4.0.

I've opened a PR to make it a bit easier to draw a border with an arbitrary path.  I think if we can get something like that in, we should probably just close this issue - I don't know that the framework will be adopting any additional logic to dash paths.

thanks bro @dnfield  👍

That's unbelivable there's no basic path operations in Flutter:

Enumerate path (PathMetrics is good but for simpler operations why we should take those expensive)
Create stroke outline from unclosed path
Dash path
Unclosed path intersecting

Could you please consider support those features.

Adapted @dnfield's example to a StadiumBorder, with an inset option (for my dashed-chip usecase)
import 'package:flutter/material.dart';
import 'package:path_drawing/path_drawing.dart';

class DashedStadiumBorder extends StadiumBorder {
  DashedStadiumBorder({
    this.inset = false,
    CircularIntervalList<double> dashArray,
    BorderSide side,
  })  : this.dashArray = dashArray ??
            CircularIntervalList<double>(
                <double>[4 * side.width, 2 * side.width]),
        super(side: side);

  DashedStadiumBorder.inset({
    this.dashArray,
    BorderSide side,
  })  : inset = true,
        super(side: side);

  final CircularIntervalList<double> dashArray;

  final bool inset;

  @override
  EdgeInsetsGeometry get dimensions {
    return EdgeInsets.all(inset ? 0.0 : side.width);
  }

  @override
  void paint(Canvas canvas, Rect rect, {TextDirection textDirection}) {
    switch (side.style) {
      case BorderStyle.none:
        break;
      case BorderStyle.solid:
        if (inset) {
          rect = rect.deflate(side.width);
        }
        final Radius radius = Radius.circular(rect.shortestSide / 2.0);
        final rrect = RRect.fromRectAndRadius(rect, radius);
        canvas.drawPath(
          dashPath(Path()..addRRect(rrect), dashArray: dashArray),
          side.toPaint(),
        );
    }
  }
}

I understand dashed lines as slow, but what are the options we have then? Not drawing a dashed line at all? Doesn't this goes against Flutter's own principle of:

Flutter helps deliver the original design vision, without loss of fidelity or compromises

If I go to my designer and say "Can you remake it without dashed lines? Our code doesn't support it", this just takes me back to native development where design compromises where a daily routine.
I honestly think flutter should support dashed lines, with big warnings on the docs. This is something very basic to any UI and shouldn't be a decision on the Framework level not to provide it, but our decision as devs to know when to avoid it. I have seen such warnings on the docs before.
In my particular case, I just need a straight dashed line to be shown once, dividing a Card in half. No animations, no nothing. I am pretty confident that it won't take any visible performance impacts, so I feel this decision should be mine, as I know my use case, and not from the Flutter team.
Thanks for listening.

@feinstein - is there some reason that you can't just use flutter_path_drawing?
The framework enables all you need to draw dashed lines at a pretty low level - in fact, flutter_path_drawing's code to do this is really only a few dozen lines of code wrapping that functionality.
The reason to not put the code in the framework itself is because it's something that is fairly expensive, and thus should be hard to do.  For example, in the case of a straight dashed line shown once, you could create the path you want and get subsegments of it - or you could just pre-calculate it and draw only the paths you actually want on a canvas - or you could pre-calculate it using ColoredBoxes or Containers in a Row or Column or Stack or what-have-you.
I'm going to close this bug - I don't believe the framework will ever make it any easier to draw dashed lines (for reasons outlined in this bug).  There is also a package available that helps you do it, which is maintained by a framework maintainer (which happens to be me! :)).

@dnfield you mean this package right? I am going to use it, it just felt weird that Flutter wouldn't support dashed lines natively as this is something pretty basic nowadays and I wanted to share my thoughts on this.

@feinstein  Once in a while you find these strange things that all other languages/frameworks provide, but Dart and Flutter don't because they think developers shouldn't do it. It's an ideological barrier, so it's useless complaining. Dashed lines is one example. Another is to check if a Future is completed. You can't. Another is to be able to format your code with your own formatter. You also can't because they think you shouldn't. It's OK, Flutter is good, nothing is perfect.

@marcglasberg I feel like Apple telling me I am "holding it wrong" lol, but fortunately path_drawing makes this possible (although its a bit cumbersome/low level to use), but as long as it works its fine by me.
I agree with you that things can be frustrating sometimes, but then I remember how much more frustration I had in Java, so I start to feel better again.
BTW, dart provides an additional async  library (2 parts blog post here explaining it) that many don't know about and there you can use ResultFuture which lets you ask if the Future already completed and get its value synchronously.

@feinstein I know that lib, but async/await returns a regular Future. Anyways.

This issue is about dashed lines, which is now possible (using Path.computeMetrics et al).
For other topics, please file separate issues. I'm not aware of anything preventing you from using your own formatter (indeed, the Flutter framework itself doesn't use dartfmt), but if there's something that would prevent it, we would want that filed as a bug so it could be fixed. Regarding Futures, if there's something you can't do because of the Future API, then again please file an issue so that we can make sure your use case is handled.
Commenting on this issue is unlikely to result in any changes since it is closed.


[Snyk] Upgrade express-oauth2-jwt-bearer from 1.5.0 to 1.6.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade express-oauth2-jwt-bearer from 1.5.0 to 1.6.0.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 1 version ahead of your current version.
The recommended version was released 25 days ago, on 2023-10-09.

Release notes

Package name: express-oauth2-jwt-bearer

1.6.0 - 2023-10-09Added

nbf claim validation should include clockTolerance #115 (adamjmcgrath)

1.5.0 - 2023-05-24Added

Add support for Node version 20 #108 (EdenGottlieb)

    from express-oauth2-jwt-bearer GitHub release notes

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Fixed on release/0.0.18 branch.


Post-usability testing fixes: update help pages; add images/animated gifs

e.g. images showing what information to include in the marked rectangle, when to add a note, overview of the mark / transcribe / verify process

Duplicate of #183


Black holes do not scale properly for non-default virtual resolutions

Virtual resolutions other than the default (edited through magic numbers) are apparently causing scaling issues. Investigation needed

Fixedin v1.0.2


chore(refactor): remove common module

moves previously common model code into flipt module that is pub
this will be useful for implementing #83

Codecov Report
Attention: Patch coverage is 94.68599% with 11 lines in your changes missing coverage. Please review.

Project coverage is 88.34%. Comparing base (1942035) to head (0d3418a).

Files with missing lines
Patch %
Lines

flipt-evaluation/src/lib.rs
96.17%
7 Missing :warning:

flipt-evaluation/src/models/flipt.rs
50.00%
4 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #357      +/-   ##
==========================================
- Coverage   88.35%   88.34%   -0.01%
==========================================
  Files          10       10
  Lines        3702     3699       -3
==========================================
- Hits         3271     3268       -3
  Misses        431      431

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


chore(deps): bump alloy

Closes https://github.com/foundry-rs/foundry/issues/7972

looks like something broke


License

Hi, I'd like to know what's the license for this project.

Hi, thank you for informing. I just added. It's MIT license.

Thank you very much!


remove support for python 3.6 (EOL)

according to here, python 3.6 is now EOL and no longer receiving updates. we should consider bumping the minimum supported version of python to 3.7. this optionally enables us to start using py 3.7+ features, such as data classes and type annotations in core.

we will make this change in master soon for the v4.0 release


Add universal prefix removal (Issue #25)

This PR adds universal removal to the API. A caller can specify which prefixes to remove in a similar matter to other Config members. Automatic detection is not yet implemented, but shouldn't be hard to add.
I tried to match the style and semantics of existing code. Hope this helps!

Thank you for your contribution! Sorry for the lack of reply - there was a pause in the project's development. We're now trying to implement a more advanced Rust name generation that will also solve the platform compatibility issues we've encountered in the first alpha version. One of the key differences is that the assigning Rust identifiers is now incremental: the generator remembers which identifiers have already been taken and chooses a new identifier for each new item individually.
It's not decided yet how we want to configure prefix removal. Ideally, there should be some API that allows a wide range of transformations, and possibly some support for arbitrary hooks that can override the naming logic entirely. Next, as mentioned in #25, we're thinking about implementing automatic prefix removal that will detect that all generated identifiers in a module share a common prefix and thus can be renamed. However, it's unclear what happens when a new identifier is introduced in the module after that, especially if the new identifier doesn't share the common prefix.


Create an ML pipeline to predict resource usage of Presto queries

This PR creates an ML pipeline to predict resource usage of Presto queries, with the help of ML models learned from historical Presto queries. It contains data loading, feature extraction/engineering, model training, and a simple model serving.

The general architectural design is at docs/img/architecture.png

Hi @zhenxiao and @beinan, would you mind taking a look at this initial PR for the presto query predictor project? Thanks!


Simple and extreme high-speed alternative to universal markdown lib

https://www.nuget.org/packages/Ipatov.MarkupRender/
Markup rendering engine based on Direct2D instead of XAML tree manipulations.
First public release is very simplistic and not feature rich, but most important feature of this library is very high performance.

IpatovUWP project updated with your information in UWP Libs section


[Scope Change] Page - "Check Credit Limit" 343

Describe the request
Please remove the scope OnPrem for procedure SalesHeaderShowWarningAndGetCause in Check Credit Limit Page. This does not make any sense because the function can be used also in the BC Online version.
Thanks in advance,
Simone Laboranti
Additional context
I need to use this function in a extension.
Internal work item: AB#559834

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


Added parentheses to an expression that needed it

Resolves #3

Thank you! I have no idea why I wasn't watching this repository and hence got no notification, sorry for making you wait


Add a recipe for connecting to Netlify log drains with tremor

Netlify supports configuring log drains with json payloads to distribute log events.
Adding a recipe on how to configure log drains and process the events with tremor would be a great contribution.

We moved away from recipies in 0.12


refactor merge BE function code of array_popback() and array_popfront()

Proposed changes
Issue Number: close #xxx

Since the code of array_popback() and array_popfront() is almost the same, we extracted the common logic into a class FunctionArrayPop() and made FunctionArrayPopback() and FunctionArrayPopfront() derive from it.
As a result, these two parts of the BE function code are simplified, while their implementation remains unchanged.

run buildall


chore: try to debug flaky pipeline tests

Signed-off-by: ankitm123<EMAIL_ADDRESS>No pipelines are passing, I am not sure how this PR passed the tests: https://github.com/jenkins-x/jx3-versions/pull/3385

/hold
this should not get merged!

/retest

So test passes with build controller 0.4.0. So the issue is with 0.4.3.

/retest

/retest

/retest


feat: Use Option when type is ["SomeType", "null"]

Partially addresses #10, but does not handle the any_of case. If you'd prefer I address both cases in this PR I can.

Does that test look reasonable?

Yup, looks good. I will make a release tonight.

Thanks!