FOSS flavor

Hey there,
We've seen several Android apps include this library lately, only for developers to be surprised their apps can't be included in F-Droid as MapLibre has proprietary dependencies (com.google.android.gms:play-services-location).
Could it be possible to offer a completely libre flavor of MapLibre for Android (that is: a flavor with no proprietary dependencies) for developers who want to offer a 100% open source version of their apps?
Common names for such a flavour would be foss or floss.
Thanks for considering :)

Thanks for noting this @TheLastProject. Would you have time to work on this and change the dependencies? By the way, I believe @maxammann has a MapLibre-based app in the F-Droid store, right Max?

Would you have time to work on this and change the dependencies?

I have no experience with Android build flavours myself (the apps I write only have a 100% libre version) so I don't think I will be much help there. However, from discussions with the Element team it seems like MapLibre already does check if Google Play Services is actually available so this could be fairly simple, see these excludes which have been confirmed to have removed GMS completely.

By the way, I believe @maxammann has a MapLibre-based app in the F-Droid store, right Max?

I asked the team about this and apparently Ehrenamtskarte Bayern is actually not compliant but it also managed to bypass our scanners until recently. Reading the topic more it seems the developer has been notified of this so I have disabled the app for F-Droid: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/11114 (sidenote: I would love to be able to restore this app, it's a very cool concept even though I don't live in Bayern)

We are currently discussing how we proceed with the Bavarian Volunteering Card on FDroid internally.
Im not sure in which way the maplibre android library depends on properiatry libraries right now. But I think it would be interesting to evaluate this. Maybe we somehow can also elimintate such issues for all one and for all.

Im not sure in which way the maplibre android library depends on properiatry libraries right now. But I think it would be interesting to evaluate this.

See https://github.com/vector-im/element-android/issues/6100

Case MapLibre: Depending just on MapLibre
I think the runtime dependency of maplibre for com.google.android.gms:play-services-location is not an actual problem. The hosted library is already compiled. Therefore, the gms dependency is not required for building. You can just exclude them for the final application by doing:
    applicationVariants.all { variant ->
        // If we create a FLOSS build, then we want to exclude GMS
        if (dartEnvironmentVariables.ANDROID_FLOSS) {
            variant.getCompileConfiguration().exclude group: 'com.google.android.gms', module: 'play-services-location'
            variant.getRuntimeConfiguration().exclude group: 'com.google.android.gms', module: 'play-services-location'
        }
    }

I would hope that Gradle doesn't even download the gms dependency in this case.
Case flutter-geolocator
I like to include this case even though its unrelated, to give an example where the GMS dependency is problematic.
When depending on flutter-geolocator in a flutter project you are not depending on a pre-compiled library, but on a Gradle project which includes sources. In order to compile the source files of flutter-geolocator  you need to download gms and use it during the compilation. Afterwards you can exclude it.
Conclusion
Users of maplibre should be able to convince Gradle that it does not need the gms dependency. It should be possible to make Gradle not download gms. Therefore, we should not modiy maplibre in my opinion. Users can opt out of gms already becaues it is a runtime dependency.

Thanks for the clarification. In this case I think it is OK to close this issue.


Make label prop required for VIconButton

Fixes

Fixes #618 by @sarayourfriend
Description

This PR adds a required prop named label to VIconButton to make sure that a button always has an accessible name. It uses a label prop instead of aria-label attr to make the validation easier, especially for elements that wrap around VIconButton.
Testing Instructions

Try removing the label prop for one of the VIconButtons. You should see a warning in the console.
Checklist

[x] My pull request has a descriptive title (not a vague title like
Update index.md).
[x] My pull request targets the default branch of the repository (main) or
a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible
errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@obulat I think you're missing an import type in these commits^.

@obulat I think you're missing an import type in these commits^.

Updated locally. It's so much cleaner now, thank you for this improvement, @dhruvkb !


enhance(drp-community-content): Add 'network-data' parser

Adds template to parse the network-data structure and returns an execution environment specific set of Variables and complex data structures.  The environments supported are Shell (bash, sh, zsh, busybox shell, etc.).
The network-data structure is parsed with the following rules / order of precedence:

values from all tag
values from prov (provisioning) tag
values from prod (production) tag
values from the tag defined by the Param network-data-tag

In each environment, a variable will be created in the format of _nd_<KEY>; where "<KEY>" is the original key name found in the network-data structure.  For example for an IP address, the variable _nd_address would be created with a value.
For each executing environment, a more complex single data structure will be created as follows:

shell type environments (except VMware) - an Associative Array
Python - a Dict structure
Powershell - a Hash Table structure

A simple shell function (fetch_nd_var()) will return the value from the _nd_data array if it exists, otherwise will parse the environment variable and return the value for the bare variable.  This is to support VMware ESXi's lack of array type variables in the shell.  The function is rendered and works for any shell type, regardless of array support.
By setting the network-data-parser-debug Param to true, both the bare Variables and complex data structure will be dumped to standard output via appropriate echo/print statements.  This helps with debugging parsing and output of the final values derived from the network-data structure.
Output has been successfully determined to produce valid Shell and Python values.  Powershell "looks" right, but has not been tested.

Merged with @galthaus blessing.


I can not use VSDiagnostics.exe for profiling on Windows 11

I had Windows 10 and VS2022 Enterprise version installed on my workstation, I could successfully start and stop a diagnostic session using VSDiagnostics.exe following the steps at https://learn.microsoft.com/en-us/visualstudio/profiling/profile-apps-from-command-line?view=vs-2022.  I was using the VSDiagnostics comes with visual studio.
When I moved to a new workstation running latest Windwos 11 and VS2022 Enterprise with latest update, I get error as stop the sessions:
E:\temp\test>VSDiagnostics.exe stop 11 /output:12345
Microsoft (R) VS Standard Collector
The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
at DiagnosticsHub.StandardCollector.Host.Interop.ICollectionSession.Stop()
at Microsoft.DiagnosticsHub.StandardCollector.CollectorActions.Stop(RuntimeOptions options)
at Microsoft.DiagnosticsHub.StandardCollector.Program.Main(String[] args)
I had tried Visual Studio Remote tool for VS2022, got same error message as running this tool. Could this be an issue with tool or missing dependence?

@1Upper -- thank you for your detailed feedback.  This repo is solely for documentation issues, and this appears to be product- or implementation-related.  Please consider these resources:

Ask a question or find an answer on the Microsoft Q&A page for Visual Studio.
Check the Visual Studio MSDN Forum.
Stack Overflow
Reddit

If you feel this is a product issue, please add it here:

Report product issues to us via the Report a Problem tool that appears both in the Visual Studio Installer and in the Visual Studio IDE.
Use the new Suggest a feature for Visual Studio IDE menu item.
Suggest a feature, track product issues, and find answers in the Visual Studio Developer Community.

I am closing this issue now.  You are welcome to @ mention me for any followup.  We hope to hear from you again.


Private this repository?

Hey could you private this repository? Idk how else to reach you, but if you see this shoot me an email at<EMAIL_ADDRESS>

Hey man, please private this repository. 😭


Chat input field is hidden by keyboard

Existing Issues

[X] I have searched for existing issues, this is not a duplicate.

Unmodded Twitch

[X] I have checked and this issue only occurs using bttv-android and not with the unmodded Twitch App

What happened?
The chat input field used to be avove the keyboard. Since this update, it's hidden behind it so you can't see what you are typing. Only happens in landscape orientation of the tablet, it's fine in portrait orientation.

bttv-android version
0.41.0-beta
android version
10
device
Galaxy Tab A (2018, 10.5)
Anything else?
No response

Could you check if the same also happens in the stock Twitch app ? You can get the specific version we currently use as a base from here . If it happens there too, then a future rebase should probably fix that.

I installed that version 16.9.1 and it also happens there. It doesn't happen in the current 20.8.0.
As a workaround, I'll install the previous version of bttv for now and watch for a newer version with a rebase.
Thanks for the help and for the great app in general!


Tutanota Desktop not saving credentials (better-sqlite3.node different Node.js version error)

Describe the bug
When I open tutanota-desktop I am asked for my credentials every time despite ticking "Store Password"
After signing in with my details I get an error prompt (which I can dismiss) containing the following details:
Feedback v3.119.3 - Error - UNKNOWN - linux

 Client: linux
 Type: UNKNOWN
 Tutanota version: 3.119.3
 Timestamp (UTC): Mon, 01 Jan 2024 14:21:32 GMT
 User agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) tutanota-desktop/3.119.3 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36
Error
 Error message: The module '/nix/store/8b7azpr9zc9nhyx92qaampdp55p04dww-tutanota-desktop-3.119.3/share/tutanota-desktop/resources/app.asar.unpacked/desktop/better-sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 116. This version of Node.js requires
NODE_MODULE_VERSION 119. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
Stacktrace:
Error: The module '/nix/store/8b7azpr9zc9nhyx92qaampdp55p04dww-tutanota-desktop-3.119.3/share/tutanota-desktop/resources/app.asar.unpacked/desktop/better-sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 116. This version of Node.js requires
NODE_MODULE_VERSION 119. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at process.func [as dlopen] (node:electron/js2c/asar_bundle:2:2238)
    at Module._extensions..node (node:internal/modules/cjs/loader:1356:18)
    at Object.func [as .node] (node:electron/js2c/asar_bundle:2:2465)
    at Module.load (node:internal/modules/cjs/loader:1126:32)
    at Module._load (node:internal/modules/cjs/loader:967:12)
    at l._load (node:electron/js2c/asar_bundle:2:13642)
    at Module.require (node:internal/modules/cjs/loader:1150:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at new V (/nix/store/8b7azpr9zc9nhyx92qaampdp55p04dww-tutanota-desktop-3.119.3/share/tutanota-desktop/resources/app.asar/desktop/sqlworker.js:1:10680)
    at H.openDb (/nix/store/8b7azpr9zc9nhyx92qaampdp55p04dww-tutanota-desktop-3.119.3/share/tutanota-desktop/resources/app.asar/desktop/sqlworker.js:1:22632)

I am assuming this means that Tutanota store any data, including my login details, because the database is broken
Steps To Reproduce
Steps to reproduce the behavior:

Open Tutanota
Login, store password
See error dialog
Close Tutanota
Reopen Tutanota, and you will need to sign in again

Expected behavior
No errors, and I don't need to sign in every time
Notify maintainers
@WolfangAukang

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.6.8, NixOS, 23.11 (Tapir), 23.11.2413.32f63574c85f`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.1`
 - channels(root): `"nixos-23.11"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Add a :+1: reaction to issues you find important.

The main problem here is that we use the binaries offered by Tuta to package this, so we are not compiling anything. According to what I've checked, there could be two reasons:

As we wrap the app.asar with Electron, the NODE_MODULE_VERSION from Electron might collide with the one expected by the application. Problem here is that we use the latest Electron version on nixpkgs for packaging Tutanota. You could try it from unstable to see if it works, but it is just a shot in the dark.
Improbable, but this could be a packaging issue from Tutanota.

Testing with what I currently have (building from nixpkgs-unstable, Tutanota 3.119.3), I get another issue, also about better-sqlite, but is related with self-registering:
Feedback v3.119.10 - Error - UNKNOWN - linux

 Client: linux
 Type: UNKNOWN
 Tutanota version: 3.119.10
 Timestamp (UTC): Fri, 05 Jan 2024 16:07:24 GMT
 User agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) tutanota-desktop/3.119.10 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36
Error
 Error message: Module did not self-register: '/nix/store/cq47p45445fd39i21m23vj5jmhf6nppb-tutanota-desktop-3.119.10/share/tutanota-desktop/resources/app.asar.unpacked/desktop/better-sqlite3.node'.
Stacktrace:
Error: Module did not self-register: '/nix/store/cq47p45445fd39i21m23vj5jmhf6nppb-tutanota-desktop-3.119.10/share/tutanota-desktop/resources/app.asar.unpacked/desktop/better-sqlite3.node'.
    at process.func [as dlopen] (node:electron/js2c/asar_bundle:2:2238)
    at Module._extensions..node (node:internal/modules/cjs/loader:1356:18)
    at Object.func [as .node] (node:electron/js2c/asar_bundle:2:2465)
    at Module.load (node:internal/modules/cjs/loader:1126:32)
    at Module._load (node:internal/modules/cjs/loader:967:12)
    at l._load (node:electron/js2c/asar_bundle:2:13642)
    at Module.require (node:internal/modules/cjs/loader:1150:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at new V (/nix/store/cq47p45445fd39i21m23vj5jmhf6nppb-tutanota-desktop-3.119.10/share/tutanota-desktop/resources/app.asar/desktop/sqlworker.js:1:10681)
    at H.openDb (/nix/store/cq47p45445fd39i21m23vj5jmhf6nppb-tutanota-desktop-3.119.10/share/tutanota-desktop/resources/app.asar/desktop/sqlworker.js:1:22587)

Password get stored though.


[SPARK-32224][CORE] Support pass 'spark.yarn.priority' through the SparkSubmit

What changes were proposed in this pull request?
After #26255 we support configure 'spark.yarn.priority' on Yarn deploy modes, this pr support pass this configuration through the SparkSubmit command line
Why are the changes needed?
User can specify a different priority value for different SparkApp without modify the spark-default.conf file
Does this PR introduce any user-facing change?
No
How was this patch tested?
Enhance handles YARN cluster mode and handles YARN client mode in SparkSubmitSuite

Can one of the admins verify this patch?

Can one of the admins verify this patch?

ping @dongjoon-hyun @xuanyuanking

@dongjoon-hyun
test_binaryFile.R:34: error: saveAsObjectFile()/objectFile() following textFile() works
java.lang.UnsatisfiedLinkorg.apache.hadoop.io.nativeio.NativeIO$POSIX.stat(Ljava/lang/String;)Lorg/apache/hadoop/io/nativeio/NativeIO$POSIX$Stat;
	at org.apache.hadoop.io.nativeio.NativeIO$POSIX.stat(Native Method)
	at org.apache.hadoop.io.nativeio.NativeIO$POSIX.getStat(NativeIO.java:460)
	at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfoByNativeIO(RawLocalFileSystem.java:821)
	at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:735)
	at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.getPermission(RawLocalFileSystem.java:703)
	at org.apache.hadoop.fs.LocatedFileStatus.<init>(LocatedFileStatus.java:52)
	at org.apache.hadoop.fs.FileSystem$4.next(FileSystem.java:2091)
	at org.apache.hadoop.fs.FileSystem$4.next(FileSystem.java:2071)

Is there  some problems with the CI environment?

Thank you for pinging me, @LuciferYang .

ok to test

Test build #125381 has started for PR 29037 at commit d77910b.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/29993/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/125381/
Test FAILed.

@dongjoon-hyun, Got it ~, -- priority is very popular with users like --queue in our production environment,
although use '-- conf spark.yarn.priority` can achieve the same goal, but our users are lazy :).
I'm not sure if other users like it :)

Thank you for your understanding, @LuciferYang .


issue-111

На проверку, connect to #111

@TestExecutionListeners для чего тут?

applicationContextTestAddon.xml и webApplicationContextTestAddon.xml почти одинаковы, нарушение принципа DRY

ок, что ты можешь предложить, чтобы не нарушать его?
мне надо запустить тесты без dbUnitDatabaseConnection.
предлагаю разнести по нескольким файлам и переделать остальные тесты.

GlobalExceptionHandler, EventNotFoundException are redundant
Misprint in validUnassignReaon
Why absence of reason is invalid case?
shouldNotUnassignAssignUserFromEventIfParamLengthIsNotValid should be divided in two test cases

@vaa25

where you see GlobalExceptionHandler ?
are you updated branch?
why not? we need it so it should not be null
ok

@vkuchyn does unassign reason is necessary for us?

@vaa25 I think it's not neccessary

@IgorMaksymov can you add test with empty unassign reason&?

PASSED

@vkuchyn if it not necessary, how shall we receive its absence in controller and other layers? As null or as empty string?

@vkuchyn my vision of feature: user just click OK at Controller receives empty string "", but not null.

PASSED

@vaa25 this branch has conflicts - need to resolve

@vkuchyn really they are, but earlier they weren't

@vaa25 I see, that could happens - just kindly ask commiter to fix them. Someone have to do them. Less changes in PR - less probability of conflicts.
The quicker  author make fixes - less probability of conflicts

@IgorMaksymov please resolve conflicts

@vaa25 fixed
@romach review pls

@vaa25  @romach  all problems fixed, review pls

Return previous PASSED, because of its illegal removing. Merge quality not reviewed.

PASSED

PASSED

@romach after merge, please inform PM to close ticket

@vkuchyn who shall assign you to task, after finish?

@vkuchyn I accidentally close it. Have I to reopen it or I can only inform PM?

@IgorMaksymov noone. Need to inform PM to close the task.

@romach just inform

@vkuchyn we dont have such rules in workflow, we need to add them
alse REVIEWER assigns you to the task, rule <IP_ADDRESS>

@AndriyBaibak time spent: 30m
@AndriyBaibak issue is done

@IgorMaksymov ok, thanks - will fix the rules

github automaticly wired my <IP_ADDRESS> to workflow! cool!

@IgorMaksymov no, I did it.


Add support for enums schema in Postgresql

Hi!
As far as I can tell, right now it's impossible to use enums in schema other then public.
It would be very helpful if one could specify schema as well, perhaps like this:
#[derive(sqlx::Type)]
#[sqlx(type_name = "scope", schema = "olives")]
pub enum Scope {
    Flowering,
    OilSampling,
    Harvest,
    Structure
}

Please implement this

A query that may work could look like this:
SELECT pg_type.oid
FROM pg_catalog.pg_type
JOIN pg_catalog.pg_namespace
ON pg_namespace.oid = pg_type.typnamespace
WHERE typname ILIKE $1 AND nspname ILIKE $2;

Where $1 is the name of the type, as it was before, and $2 is the schema name.
If we annotate every type with a schema, set it to public if not specified and then fetch the oid by those two things it would work imo :)
I can see if i can implement it

how is it going？

Any updates?

It looks like this was fixed in https://github.com/launchbadge/sqlx/pull/3252 ?


Custom Category: Adding a Phrase - Alert When Duplicating Existing Phrase

Story: As a user, I want to be notified when I am adding a custom phrase that matches a pre-existing phrase. This includes any of my other custom phrase.
Acceptance Criteria:

If a user adds a phrase that's already been added before, we should present an alert notifying them: "This phrase already exists. Continue to add the phrase?" with the option of "Continue" and "Cancel".

Design:
Discussed in meeting but need to follow up with Steve

@SashankPatel
@CananArikan and I tested this issue's implementation on @jsmorgan42 's PR #530
The alert is functional and matches designs, but some of the flows in which we expect to get the alert, or not, have some issues. We are going to mark this issue as "Test requesting changes" and I have left a comment on the PR conversation thread to specify what the issues are that we're seeing.

This feature has been tested and verified to be working as expected.
The alert appears and behaves as expected and matches designs.


Option to preserve explicit null values when deserializing

This is in some sense a companion to #100.
When decoding a JSON object which contains an explicit null value for a particular key, this key is completely omitted from the parsed object, just as if the key had not been present at all on the original object.
This is not ideal in some circumstances. For instance, in my case, we receive differential updates in JSON format. If a key is missing, this means "keep the previous value", but if it is present and explicitly null, that means "change the value to null"
This is actually a huge headache to represent in other languages, but given that JavaScript has given us the distinction of null vs undefined, it seems like it would make sense for the library to honor that distinction.
Looking at the source code, it seems this behavior is caused by this line in deserializer.js:
if (isValueDefined(revivedValue))
{
    sourceObjectWithDeserializedProperties[memberMetadata.key] = revivedValue;
}
else if (memberMetadata.isRequired)
{
    this._errorHandler(new TypeError(`Missing required member '${memberNameForDebug}'.`));
}

because isValueDefined() checks for both null OR undefined.
It would be pretty easy to change this to check for undefined only; I would be happy to submit a pull request. If on the other hand this is desired by default, perhaps a configuration option could be added? I could take a crack at that too.

This is something we'd love in our project too! I had to write a pretty messy workaround to re-iterate over the typedJsonJsonObjectMetadataInformation datamembers and populate any undefined properties (including sub-objects!)

Hey, good news (hopefully). I have finished the implementation, I want to double check it though so it should be out tomorrow. In the mean time, you can check out the candidate branch below. It works by specifying preserveNull option as true almost anywhere you want. With, hopefully, intuitive cascading (so a @jsonMember will overwrite a global setting).
https://github.com/JohnWeisz/TypedJSON/tree/candidate-1.4.0

Wow, this looks excellent, not only fixing the issue but also adding a framework for future cascading options!
One question/quibble - the docstring says "Whether to preserve null in the JSON output..." Does this option affect both parsing AND serializing? As it stands, the docstring makes me think serializing only. If so, that would solve #100 but not this issue.

Both actually. I will update the docs to make more clear. If you look at the added specs I test it both ways

1.4.0 was just release, to include this feature. Please, let me know, what you think.

@Neos3452 updated, implemented and works like a charm!
@jsonMember({preserveNull: true})
limitNum: number|null;

Thank you!

Same here, we replaced some kludge I had written with this new feature. Very clean!
Thanks for the quick turnaround!
Closing the issue.


the version problem (not std version)

the browser extension version will be change like: yyyy.mm.dd-v format on after stable

version format use like : 1.0.0


Release v1.5.2

Checked e2e tests on latest Chrome, Firefox, and Safari, as well as IE8, IE9, and IE10.


[BUG] Updating Backup export option

Describe the bug
Checking the option to add a completion handler for ShareSheet dismiss.
Comment
I just saw a user go to backup and then they “X”’d the backup screen and then the backup screen disappeared.
They thought they had back-ed up but did not.
Screen recording
https://github.com/user-attachments/assets/93896932-8892-46d5-80c9-06ecca568d14

It still happens when opening and closing without saving, the banner vanishes. @Rockindash


The cmdlet 'Invoke-WriteLog' returns an object of type 'System.String' but this type is not declared

Declare Null as return Object
Tracking issue for:

[x] https://github.com/EliorMachlev/JenkinsAsService/security/code-scanning/12

Changed to Output string to continue support for write-output instead of write-host


TextView CursorLeft/CursorRight change focus when at start/end

This PR makes CursorLeft / CursorRight (without modifier keys) change the focus out of TextView.  It does this by returning false from ProcessKey (i.e. no longer claim to handle CursorLeft when cursor is at 0,0).  If you test it out I think it feels quite natural and improves the usability of the control for both Windows and Linux users without changing any existing functionality (Ctrl+Tab taking you out of control)
This PR relates to #1266 where it is difficult to get focus out of TextView without reaching for the mouse on old/linux terminals (due to control keys not playing nicely with Tab key).

Interacting with TextView using only the cursor keys (and typing)

Great. How about also using the CursorUp (if at 0) and CursorDown (if at bottom), only for TextView and Window?

That sounds sensible (consistency is good).  I have looked at Toplevel.ProcessKey but feel a bit out of my depth there.  Are you able to make a PR for that? or copy the code from this one and make both the changes (and I can close this PR)?

No problem, I thought better and cursor up/down could lead to the previous and next view without the user need. Your PR is very good as is and I will try a fix for the windows navigation for Linux, later. Thanks.


Missing math notations

Steps to reproduce the problem

Go to the Data Encoding page
Scroll down the page and hover over various math notations (light-purple underlined elements in math equations)
Compare with the right side utility panel > Math notations

What is the current behavior?
Some of the math notations with tooltips aren't represented in the utility panel > Math notations table
What is the expected behavior?
I believe that all highlighted math tooltip/definitions should be shown in the the Math notations table
Screenshots (optional but very helpful)

Environment (optional but very helpful)

Device: Macbook pro
OS: MacOS
Browser: Chrome

@frankharkins - can you please confirm if this is really a bug, or if this is intended (some formula tooltips not being included in the right side table)
If this is intended, we can close this issue.
Thank you

I don't think it is intended, there should be some more Math notations with their definitions.

Yes this is intentional! Some variables / symbols have different definitions in different equations, so we only want to display them on the right sidebar if it's true throughout the entire page. E.g. we might have an equation where "x" is "A binary string", but this isn't true for all "x"s in general, so we don't want to display that description on the right sidebar, out of context.
This is actually a feature I requested, if a variable id starts with an underscore, it won't show on the right sidebar.

Nice, thanks for responding here @frankharkins and thanks for closing the issue 🙏🏽


Adjustable footer with respect to the sidebar

made the footer adjustable with respective to the sidebar. That is, the sidebar does not cover the content of the footer when expanded

Glad you fixed this!


Automatically remove stale pending transactions

During a recent support issue it became evident that it is possible for a pending transaction to become stale (eg if orphaned) and thus never removed from the PendingMap.  This causes the balance provided at the RPC layer to be incorrect until the issue is discovered and the node restarted (the PendingMap is not persisted).
This PR adds an automatic check which removes transactions from the PendingMap if they have been removed from the mempool.
The change can be demonstrated using regtest.  First we'll send a transaction to create a pending entry:
$ omni_send mpGRoxX1pQwGWfxEzMDjZ9ihx6kh3eErju mpv4tJcAcSFodJJfM5DkWxNAKgNRdrdtH8 1 10
602f381ff5fb0a9fde3624fcabe7c53b058911234509480ac3f06285777720c4

2017-03-14 06:49:42 PendingAdd(602f381ff5fb0a9fde3624fcabe7c53b058911234509480ac3f06285777720c4,mpGRoxX1pQwGWfxEzMDjZ9ihx6kh3eErju,0,1,1000000000,true)
2017-03-14 06:49:42 update_tally_map(mpGRoxX1pQwGWfxEzMDjZ9ihx6kh3eErju, 1=0x1, -1000000000, ttype=3): before=0, after=-1000000000

We can check that the transaction is now pending:
$ omni_listpendingtransactions
[
  {
    "txid": "602f381ff5fb0a9fde3624fcabe7c53b058911234509480ac3f06285777720c4",
    "fee": "0.00008100",
    "sendingaddress": "mpGRoxX1pQwGWfxEzMDjZ9ihx6kh3eErju",
    "referenceaddress": "mpv4tJcAcSFodJJfM5DkWxNAKgNRdrdtH8",
    "ismine": true,
    "version": 0,
    "type_int": 0,
    "type": "Simple Send",
    "propertyid": 1,
    "divisible": true,
    "amount": "10.00000000",
    "confirmations": 0
  }
]

Now let's empty the mempool:
clearmempool
[
  "602f381ff5fb0a9fde3624fcabe7c53b058911234509480ac3f06285777720c4"
]

We can then check that the transaction is no longer pending:
omni_listpendingtransactions
[
]

Finally we can mine a block, and confirm that the missing pending transaction has been detected, deleted and the amount credited back to the tally:
generate 1
[
  "4e12052669793f3f06b6bd618516c3f739295ca2933f67440296ee7462ca9095"
]

2017-03-14 06:52:24 WARNING: Pending transaction 602f381ff5fb0a9fde3624fcabe7c53b058911234509480ac3f06285777720c4 is no longer in this nodes mempool and will be discarded
2017-03-14 06:52:24 PendingDelete(602f381ff5fb0a9fde3624fcabe7c53b058911234509480ac3f06285777720c4): amount=-1000000000
2017-03-14 06:52:24 update_tally_map(mpGRoxX1pQwGWfxEzMDjZ9ihx6kh3eErju, 1=0x1, +1000000000, ttype=3): before=-1000000000, after=0

Thanks
Z

Looks good to me! Ready to go? :)

The mempool changes all the time, so I'm not sure, if it's sufficient, if we only check, whether the transactions are still in the pool, when a new block is mined?

Since it only affects the node that sent the transaction in the first place I figured it would be sufficient - the aim was to avoid a pending subtraction becoming "semi-permanent" until a node restart.
We need some kind of trigger to make the check - it's possible to hook into the Bitcoin Core side of things and do the PendingMap deletion when the underlying Bitcoin code removes a transaction from the mempool but I thought that approach would be a bit more intrusive.

We need some kind of trigger to make the check - it's possible to hook into the Bitcoin Core side of things

Yeah, at some point in the future we could hook the wallet/transaction signals.


added new module #1

The logic for getting links from the sheet is written, checking content of the link, adding a tag before the link, requesting the server for each link, creating a collection for broken links, marking broken links on the sheet

@mixev please fix a name from mNewLinkChecker to mLinkChecker as all parts of name should make sense, but word "new" hasn't.


Can't get values for existing custom attributes

When using the Okta User API (/api/v1/users/${userId}) with requests or Postman, I'm able to retrieve all attributes, including existing custom attributes.
When using the SDK I only get a predefined list of attributes from the UserProfile class. The README mentions how to modify UserProfile and set new values for a custom attribute. However, I can't figure out a way to retrieve existing values for custom attributes.

@DREW1990 Thanks for your question! Our Python SDK team will follow-up on this after the holidays.

@DREW1990 Could you please, provide more details? (i.e. some code, sample output, etc.)
Full example under this section https://github.com/okta/okta-sdk-python#get-and-set-custom-attributes shows how to get custom attribute. It should be accessible via <user_obj>.profile.<custom_attribute_name>.

Here's an example using requests to get an existing custom attribute (badgeNumber) from a user:
def get_badge_number(user):
    url = f'{okta_url}/api/v1/users/{user}'
    headers = {
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"SSWS {okta_token}",
    }

    response = requests.get(url, headers=headers)
    print(response.json()['profile']['badgeNumber'])

Which returns a string of numbers.
However, when using the Okta SDK, I'm unable to retrieve the value for badgeNumber:
async def get_badge_number(user):
    user_info, response, error = await client.get_user(user)
    print(user_info.profile.badgeNumber)

This results into an error: AttributeError: 'UserProfile' object has no attribute 'badgeNumber'
The example in the README  shows how to assign and create a custom attributes. However, I couldn't find a way to get any existing custom attributes. Maybe I just need more guidance on how to pull the information with the SDK?

@DREW1990 Thank you for detailed response.
Currently, for variables set via config we use lowerCamelCase, but for object attributes (i.e. pythonic-way) snake_case.
Could you please, try access that value in the following way:
user_info.profile.badge_number

?
I believe, that's the way how it worked previously with regular attributes, i.e. described in model, like firstName and first_name.

Thanks for the quick response! Unfortunately that didn't work either:
async def okta_employee(user):
    user_info, response, error = await client.get_user(user)
    print(user_info.profile.badge_number)

AttributeError: 'UserProfile' object has no attribute 'badge_number'

Hmm, could you please, show the output of print(user_info.profile)? Maybe, some clue is inside

For privacy reasons I can't show the full output. But I did extract all of the keys.
Here are the list of profile keys that get returned when using the SDK:
city
cost_center
country_code
department
display_name
division
email
employee_number
first_name
honorific_prefix
honorific_suffix
last_name
locale
login
manager
manager_id
middle_name
mobile_phone
nick_name
organization
postal_address
preferred_language
primary_phone
profile_url
second_email
state
street_address
timezone
title
user_type
zip_code

When using the Okta API directly with requests, it will only show the attributes that are not None. I get the following keys:
lastName
city
displayName
badgeNumber
subDepartment
title
login
employeeNumber
division
officeLocation
mobilePhoneCountryCode
company
state
department
email
hireDate
manager
costCenter
secondEmail
managerId
team
firstName
employeeType
mobilePhone
userType

Here are the custom attributes that we set in Okta:

Thank you for all the details. Very interesting, looks like a bug. Let me investigate it. Are you unblocked using requests?

Awesome, thanks for the help! And nope, I can use requests for now. My team is just looking forward to using the Okta SDK for our projects going forward so we have some sort of consistency in our projects.

Glad to hear that! But we will be able to release new version with fix only after all holidays. Feel free to add anything to this issue you find might be useful.

@DREW1990 I can't reproduce the error.
I've added attribute and it works for me:

Could you please try run the following script with your config?
from okta.client import Client as OktaClient
import asyncio

async def main():
    client = OktaClient()
    users, resp, err = await client.list_users()
    for user in users:
        try:
            print(f'{user.profile.first_name} has Badge Number: {user.profile.badge_number}')
        except:
            print(f'{user.profile.first_name} has no Badge Number.')

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

my output:
John has Badge Number: 123
Serhii has no Badge Number.

@DREW1990 I can't reproduce the error.
I've added attribute and it works for me:

Could you please try run the following script with your config?
from okta.client import Client as OktaClient
import asyncio

async def main():
    client = OktaClient()
    users, resp, err = await client.list_users()
    for user in users:
        try:
            print(f'{user.profile.first_name} has Badge Number: {user.profile.badge_number}')
        except:
            print(f'{user.profile.first_name} has no Badge Number.')

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

my output:
John has Badge Number: 123
Serhii has no Badge Number.

@DREW1990 I am going to close this issue as resolved, because I can't reproduce the issue: it works for me with client.get_user, client.list_users, etc. But please reach out to us if you find that your issue still exists.

@DREW1990 I am going to close this issue as resolved, because I can't reproduce the issue: it works for me with client.get_user, client.list_users, etc. But please reach out to us if you find that your issue still exists.


difference between test (staging) and prod api

While trying to fix a bug on my server (or so I think), I tried several times to get certs with the test api.
I finally chose a solution, and run on the prod' api, while changing nothing on the server (I just erased the files created with the test api and suppress the "-s" from my command line).
The certs could not be created anymore.
letskencrypt: transfer buffer: [{ "type": "http-01", "status": "pending", "uri": "https://acme-v01.api.letsencrypt.org/acme/challenge/qk30yIQMeQ6m-vrDqbsPYF7kS_qvlxjGeWZin7rxpvs/200241337", "token": "8Qk0RMRSHnW7nLzgjSQCi1OUYq3ATqAQ_cpSUpd3_cA", "keyAuthorization": "8Qk0RMRSHnW7nLzgjSQCi1OUYq3ATqAQ_cpSUpd3_cA.L4TPRmCy6xGjPSjU2Xzk1Yq6IDS9Z3hiv2ASxM1z42s" }] (335 bytes) letskencrypt: https://acme-v01.api.letsencrypt.org/acme/challenge/E4c3aP9ie4NCyIXYBg3LomYaNlFF1ycX6c6MJPZnPgQ/200241262: status letskencrypt: acme-v01.api.letsencrypt.org: cached letskencrypt: https://acme-v01.api.letsencrypt.org/acme/challenge/E4c3aP9ie4NCyIXYBg3LomYaNlFF1ycX6c6MJPZnPgQ/200241262: bad response letskencrypt: transfer buffer: [{ "type": "http-01", "status": "invalid", "error": { "type": "urn:acme:error:unauthorized", "detail": "Invalid response from http://www.22decembre.eu/.well-known/acme-challenge/WscTza4K92kl6v_Ikk87h4KrQ7NCjLltNklx1jPAGvU: \"\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\u003chead\u003e\n\u003cmeta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/\u003e\n\u003ctitle\u003e404 Not Found\u003c/title\u003e\n\"", "status": 403 }, "uri": "https://acme-v01.api.letsencrypt.org/acme/challenge/E4c3aP9ie4NCyIXYBg3LomYaNlFF1ycX6c6MJPZnPgQ/200241262", "token": "WscTza4K92kl6v_Ikk87h4KrQ7NCjLltNklx1jPAGvU", "keyAuthorization": "WscTza4K92kl6v_Ikk87h4KrQ7NCjLltNklx1jPAGvU.L4TPRmCy6xGjPSjU2Xzk1Yq6IDS9Z3hiv2ASxM1z42s", "validationRecord": [ { "url": "http://www.22decembre.eu/.well-known/acme-challenge/WscTza4K92kl6v_Ikk87h4KrQ7NCjLltNklx1jPAGvU", "hostname": "www.22decembre.eu", "port": "80", "addressesResolved": [ "<IP_ADDRESS>", "2001:470:2099:e2::2" ], "addressUsed": "<IP_ADDRESS>" }, { "url": "https://www.22decembre.eu/.well-known/acme-challenge/WscTza4K92kl6v_Ikk87h4KrQ7NCjLltNklx1jPAGvU", "hostname": "www.22decembre.eu", "port": "443", "addressesResolved": [ "<IP_ADDRESS>", "2001:470:2099:e2::2" ], "addressUsed": "<IP_ADDRESS>" } ] }] (1406 bytes) letskencrypt: bad exit code: netproc(81652)
All my virtual hosts got their requests pending and the certs were not issued.
I tried once again with the test api. The hosts got their requests successfully valid and the cert was created.

I can't help much here.  The error message is saying that the file can't be reached on your server---that's all I can tell you.  Sorry!  I haven't noticed that the "Let's Encrypt" callback sometimes bugs out (with other clients, before writing letskencrypt), but not enough to actually track down a problem.


rssguard: 3.7.0 -> 3.7.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/martinrotter/rssguard/releases.
meta.description for rssguard is: "Simple RSS/Atom feed reader with online synchronization"
meta.homepage for rssguard is: "https://github.com/martinrotter/rssguard"
meta.changelog for rssguard is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 3.7.2 with grep in /nix/store/b1fk99ax84whnav0426wngc8j1a7vfbf-rssguard-3.7.2

directory tree listing: https://gist.github.com/49ab664f282d61df843f36a5d2a66f64

du listing: https://gist.github.com/de62d5bd171c3d27cdc1f7bf92cbf07d

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
rssguard

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/b1fk99ax84whnav0426wngc8j1a7vfbf-rssguard-3.7.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A rssguard https://github.com/r-ryantm/nixpkgs/archive/bfa4aa15a2115f2a1771988c6ac1df65c1c23f69.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/b1fk99ax84whnav0426wngc8j1a7vfbf-rssguard-3.7.2
ls -la /nix/store/b1fk99ax84whnav0426wngc8j1a7vfbf-rssguard-3.7.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review 1

1 package built:

rssguard

Maintainer pings
cc @jluttine for testing.

Result of nixpkgs-review pr 97244 1

1 package built:
- rssguard


Implement Footer From Designs

Closes #1875

The footer is now inside of the content container. It took a surprising amount of effort.

The footer appears to be gone in the screenshot? Also "Update Footer" is not an acceptable title for a PR. Remember these PR titles get converted into release notes.

Footer is now inside content container at the bottom as per https://app.zenhub.com/workspaces/mauvelous-team-620d1a3e7981e80013070165/issues/weaveworks/weave-gitops/1875

It sounds like the story wasn't ready to be picked up reading the comments in the issue.  @bia and @jpellizzari can you please catch up and decide about what information belongs in the footer before @joshri does anymore work.

Revised design:


Add revive to golanci

This PR replace deprecated go-linter using
revive (https://golangci-lint.run/usage/linters/#revive).
We will add "ginkgolinter" in follow up patch once we merged add pre-commit job in openshift/releases.
If we add "ginkgolinter" in this patch then it's causes below issue 1
level=info msg="[config_reader] Config search paths: [./ /home/prow/go/src/github.com/openstack-k8s-operators/dataplane-operator /home/prow/go/src/github.com/openstack-k8s-operators /home/prow/go/src/github.com /home/prow/go/src /home/prow/go /home/prow /home /]"
level=info msg="[config_reader] Used config file .golangci.yaml"
level=error msg="Running error: unknown linters: 'ginkgolinter', run 'golangci-lint help linters' to see the list of supported linters"

This patch also Remove fmt dependency from make tidy as per 2:
The fmt dependency cannot be run if the go.mod file needs an update:
 $ make tidy
 go fmt ./...
 go: updates to go.mod needed; to update it:
        go mod tidy
 make: *** [Makefile:103: fmt] Error 1

I have also made some changes as per the comment given here 3

/lgtm

recheck

recheck

recheck


feat: update node from 16 to 18

feat: esm build
BREAKING CHANGE: Node 18 or greater required

Coverage remained the same at 100.0% when pulling f9c4f20cd49cbb88d90df0771b18cd41b2909b4b on PLAT-3450 into f5b97ded66f68625a43d7ef37e19064224077d06 on main.


feat(telemetry): instrument rafiki

Changes proposed in this pull request
This PR introduces telemetry into Rafiki to observe and measure the growth and activities of the ILP Network. This will provide valuable insights for future improvements and developments. The implementation includes the following key features:

Rafiki instances are instrumented with Opentelemetry to adhere to a standard format and allow integrating account servicing entities to build their own telemetry.
Instrumented Rafiki communicates with an Opentelemetry collector through the otel protocol (GRPC).
Rafiki can send metrics to multiple Opentelemetry collectors, defined in the .env file.
Telemetry is entirely optional and controlled through an env variable.
Two counter metrics are introduced: one for counting the number of transactions and another for counting amounts being sent (packet level). These metrics are used to answer three key questions about the network:

What is the average amount that a transaction holds?
What is the total number of transactions?
How much money is being sent through the network?

A centralized Telemetry service is introduced, which includes a new RatesService. The RatesService reuses the existing Rafiki Rates service but queries a different URL for rates and has a different cache TTL setup. This rates URL is also built on the AWS infrastructure.
The telemetry data collected by the OTEL collector is further sent to Amazon Managed Service for Prometheus (AMP), and then used in Grafana Cloud to build our "Network insights" dashboards. See the public dashboard here
Privacy considerations have been a major focus in this PR, with a full documentation on our privacy solution included as an .md file which describes how we implement Local Differential Privacy (LDP).

Infrastructure
The infrastructure for this feature is built on AWS. We are using AWS ECS Fargate, with a cluster of custom ADOT (AWS Distro for OpenTelemetry) collectors.  All these tasks then send data further downstream to Prometheus. The infrastructure and deployed resource details are documented separately to keep this PR focused on the Rafiki changes.
Context
Full telemetry DOCS

The goal of this PR is to provide a foundation for observing the ILP Network at the money transfer level. By instrumenting Rafiki with Opentelemetry, we can collect data that will help us understand the network's growth and make informed decisions about future developments. The telemetry data is sent to a cluster of Opentelemetry collectors in AWS, but the system is designed to allow integrating ASEs to have their own collectors and build their own telemetry solutions.
Testing
To test out the telemetry feature you can use pnpm localenv:compose up command and everything will be set up for you. If you use the Rafiki peer to peer and cross currency examples in Postman you should see your metrics reflecting on the dashboard after a few minutes.
You can also checkout our tests in packages/backend/src/payment-method/ilp/connector/core/test/middleware/telemetry.test.ts and packages/backend/src/telemetry/meter.test.ts
closes #1913 #1923 #1921 #1956
Checklist

[x] Related issues linked using fixes #number
[x] Tests added/updated
[x] Documentation added
[ ] Make sure that all checks pass
[ ] Postman collection updated

new docs section added for integrating your own otel collector (the information was previously just commented configs)
Please have a look.

How does one get access to the Grafana dashboard? I tried signing in with an account created using my Github account and I wasn't able to see it.

How does one get access to the Grafana dashboard? I tried signing in with an account created using my Github account and I wasn't able to see it.

Me | Sarah need to add your emails to the grafana cloud instance. Unfortunately since AMP wasn't a good fit for us, we can't use the already existing AWS accounts.
Will add your emails, you should receive an invite

I see it working locally when runnig through the postman flow and viewing the public dashboard - very cool!

Tested it and works smoothly. Final question: Should this work on localenv?
@beniaminmunteanu @JoblersTune @AlexLakatos @mkurapov

@sabineschaller you mean enabled by default on localenv, correct?
I think it'll be good to have it on at rafiki.money (of course) but I don't think that would be particularly useful on localenv

@sabineschaller  @mkurapov
Updated such that telemetry is still enabled by default, but localenv docker-compose files turn it off.


failing random tests

I put them all in VMTests/RandomTests/*PYTHON.json

@vbuterin we are using them already, right?


Ensure that fixtures are used

Motivation
In #1511, I added a fixture but forgot to add the expectation for it. This adds that missing fixture.
I also added a test to verify that every fixture is used in at least one expectation so that this doesn't happen again. However, there are already a few where this is the case and I'm not certain if they are used elsewhere or if these are genuine mistakes.
I also discovered the rails.js file, for which usage was removed in https://github.com/Shopify/ruby-lsp/commit/670f9048fc7c662d7289e87a85007841a5275834
Implementation

Automated Tests
These are the fixtures without expectations:
[
  "aref_call_aref_assign",
  "aref_on_method_call",
  "call_then_aref_assignment",
  "class_reference_target",
  "constant_reference_target",
  "double_aref_with_assignment",
  "hash_safe_access",
  "keyword_splat_nil",
  "method_def_object_receiver",
  "nested_block_arguments",
  "return_multiple_statements",
]

Two others I added based on context clues but for these I'm not sure. I invite someone with more knowledge to build up on this PR and add expectations to make the test pass. If that is not possible since these are special somehow then I'll just remove the test and keep the added expectation I forgot.
Manual Tests
N/A

I don't think we can check for this. The way our tests are executed, if you don't have an explicit expectation for a fixture, it just verifies that the feature doesn't break when being executed against it.
And we have several cases where we added fixtures just to ensure the basic functionality wasn't breaking on some unconventional Ruby syntax.
We can definitely remove the rails.js file, but not sure we can add this verification.


Fix duration of pipeline jobs

Fixes #51.
I took over the work from https://github.com/DataDog/jenkins-datadog-plugin/pull/53 and added the proposed fallback
Btw: The code is really hard to test. I did not want to do a full refactoring to make it testable, that's why I used powermock...

Thanks @ulich . We appreciate your contribution here. We will be reviewing this PR shortly and get back to you with feedback.

Any chance you'll be reviewing this soon?

@ulich Sorry for the long delay here! I am preparing a new release the should go out next week.
The test is failing on a java.lang.NullPointerException for me, are there some missing requirements in the test?

Sorry, tests are fixed now. When I merged the master I pulled some changes in that caused the tests to fail, but I did not re-run them...
Maybe you could set up automated running of tests for PRs

Thanks @ulich! This will go out shortly with our next release.


docs(glossary-uid.md): minor edits

Thanks for providing a comprehensive document. While reading through the document, I identified these small areas where adjustments can enhance readability and maintain consistency.

I noticed that there is a missing opening parenthesis for JWT
I suggest changing "Opt-out" to "Opt-Out" for consistency in capitalization.

@gaga5lala thank you so much! Made the first mod in another PR and merged.
On Opt-out: it's correct as-is since in the glossary we are using sentence capitalization (initial cap on the first word only) other than acronyms and product names. JSON Web Token and some other terms are in that category, so there is a mix in the capitalization of the glossary terms, but sentence capitalization is our basic guidance.
Very much appreciate your input.


Contact Page - When name has more characters then edit and delete button has UI issue

Describe the bug
https://www.berrycast.com/conversations/8263a341-78cf-5f8a-9ca6-80634791661b

Content (Text) Not Valid

https://www.berrycast.com/conversations/ede6c151-059a-58eb-a50d-3fb7e165c3fb


Cluster config fixes and removal of meta.peers config field

This PR fixes a panic and a regression with the -hostname flag as well as removes the [meta].peers config option to avoid confusion.  The supported method for joining a node to a cluster is using the -join flag.

+1

Honestly, not sure this makes much sense. How are we supposed to control having a leader + follower set for when clustering is open to 100s or 1000s of nodes? Does this mean we'll always need to start one machine as the effective 'leader', then just have a -join for all other machines in the cluster? What if the leader fails and we need to restart that node, should they start back up with -join or without?
If we look to something like hdfs, this is handled via zookeeper and leader election is seamless to the process (ie. all nodes start up the same way with leader election handled behind the scenes). This change puts a lot of that work onto the designer of the cluster, and effectively creates a leader + follower structure that doesn't really work when you get out to scale.

When you start a cluster you can have them all start with the same -join flags. (e.g. set -join host1:8088,host2:8088,host3:8088 on all nodes).  The first 3 nodes to join will take part in the raft cluster and will elect a leader amongst themselves.  If the leader fails, a new leader will be elected from the remaining raft peers if a quorum is available.
Adding additional nodes just requires joining another node in an existing cluster.  It does not need to join  a member of the raft cluster. Any node is fine.    Once a node has joined a cluster, the -join flag is not used anymore and it will re-use it's existing cluster state so it's fine to just set it once and leave it.

You can also create a cluster by incrementally joining new nodes to existing ones but you don't have to do it this way.  For example, start one, then start new nodes passing -join node1:8088.  Once you have more than 1 member in the cluster, new nodes can join any of those nodes to expand the cluster.

@sebito91 I think @jwilder addressed all your concerns, but to be explicit about it:

How are we supposed to control having a leader + follower set for when clustering is open to 100s or 1000s of nodes?

You aren't supposed to control this. There is nothing special or permanent about the first node in a cluster. A subset of nodes form the raft consensus group and those nodes can change, and that will all be handled internally. InfluxDB does not have a leader follower concept, just nodes in raft consensus and nodes not in consensus. The nodes participating in consensus can and will change and there's nothing special or precious about them. If one goes away another will automatically be elected to replace it.
The reason we recommend starting one node and then having others join that node is to avoid a partitioned cluster if there are network partitions at creation time. For example, let's suppose we use -join host1:8088,host2:8088,host3:8088 as the flag for five new nodes we bring up all at once, intending to form a cluster. If there's a network partition between host1 and host2, then host1 will start a cluster, host2 will start a cluster, and when host3, host4, and host5 come up, they will join one or the other depending on which they can see. All nodes will report being in a cluster but they won't be in the same cluster. This is because the -join flag doesn't require that the node join all other nodes referenced, it just tries to join their cluster and if that fails, it falls back to the next specified node in the -join flag.
Because of this behavior, it's safest on first ever cluster creation to simply bring up one node, have two more join it to form a raft consensus group, and then bring the rest of the nodes in. That way there's no ambiguity about which nodes joined which other nodes.
Once a cluster has been created the cluster nodes are persisted to disk on each node, and the -join flag is ignored except for new nodes.

This change puts a lot of that work onto the designer of the cluster, and effectively creates a leader + follower structure that doesn't really work when you get out to scale.

I hope our explanations show why this isn't at all true for the clustering setup for InfluxDB. If you are commonly spinning up brand new 10 node clusters from scratch then yes, this might be a challenge, but I think it's fair to assume that creating an InfluxDB cluster for the very first time is an infrequent process and one that can have a bit of overhead associated with it. Bringing nodes in and out of the cluster should be trivial and will not require any knowledge of the rest of the cluster.

Deleted prior comment, my understanding is actually incorrect.

@beckettsean, @jwilder: thanks for the feedback. Obviously the documentation is still under review and there are a few kinks to work out...completely understood. It makes a little more sense now that we can effectively daisy-chain members into the cluster as necessary (according to @jwilder).
The concern we had internally was that the -join logic was unclear...do we just specify the three nodes for raft consensus across all machines that would join the cluster? How would node 1000 work when specifying the same raft consensus set? What happens to the 1000 nodes in the cluster if the three in the raft consensus died?
We'll keep testing these features out and document any issues that come up.

@sebito91 You can specify any nodes to join. Using the same 3 nodes every time is fine even with larger clusters.
If a raft node dies and will never come back, it would need to be replaced.  If it just goes offline, it'll join the raft group when it restarts.   With 3 raft nodes in the cluster, the cluster can support one raft node offline before availability is affected.  With 5, it can support 2 failed.  To replace a failed raft node, it's a manual process right now which still needs to be documented.


missing documentaion

add note about plugin settings and DB migration to readme

Fixed in: https://github.com/afkiwers/inventree_kicad/pull/15


firefox support

Fresh installation of the latest version of skeleton-navigation. Works with no problem on Chrome 45. On Firefox DE 40 it never reaches the 'Aurelia Starting' stage. It gets stuck showing the spinner. There are no errors.
What could be wrong?

Made some further tests (all on Windows):

Chrome 45: ok
Chrom 45 (canary): ok
Firefox 32: ok
Firefox 40 (dev edition): not working
Internet Explorer 11: ok

I'll try to do the same tests on a Mac during the weekend. I believe that Firefox DE doesn't work there either.

Skelly is working for me in Firefox 39 and in Firefox Developer Edition 40.0a2 (2015-06-29)

Did you manage to get it working?
I'm having problems with my app on FF.
It just stops and not any breakpoint gets hit in firebug

On normal Firefox (v. 39) no problem,
On Firefox Dev. Edition (v. 40) the app get's stuck at the init phase with no error message. Didn't investigate any further.
On Chrome and IE, no problem

for me in firefox it downloads all html files twice:
Imgur
then failing to finish loading the whole site

For me same problem. Any suggestions?

please state the version of firefox you are using and any other browsers you've tried so that we know what we're talking about -- both aurelia and the various browsers evolve continuously

I setup skeleton project with latest nodejs, npm, jspm version  and started server.
With chrome/chromiun and firefox 39 under linux mint, firefox 40 under windows the spinner is visible and application does not start or react.

Quelldatei: http://localhost:9000/browser-sync/browser-sync-client.1.9.2.js
Zeile: 3"

On Firefox 40.0.3 ins console I get the following error:
The connection to ws://localhost:9000/browser-sync/socket.io/?EIO=3&transport=websocket&sid=QgPfJ487YgLh_JFJAAAA was interrupted while the page was loading. browser-sync-client.1.9.2.js:3:0
Found hi-entropy localStorage:  60.50699332842307  bits "http://localhost:9000/" debug localhost:9000:65:1
mutating the [[Prototype]] of an object will cause your code to run very slowly; instead create the object with the correct initial [[Prototype]] value using Object.create es6-module-loader.js:7:27734
GET
XHR
http://localhost:9000/dist/main [HTTP/1.1 404 Not Found 2ms]
Unhandled promise rejection "Error loading "main" at http://localhost:9000/dist/main
Not Found: http://localhost:9000/dist/main" shim.min.js:1444:99
i/</<() shim.min.js:1444
b.exports() shim.min.js:453
 shim.min.js:1625
f() shim.min.js:1596
q() shim.min.js:1600


Algorithm

Which algorithm(s) are used for the resampling / interpolation?
Bicubic, bilinear, nearest neighbour, etc.?
Is it possible to change it?

http://php.net/manual/en/function.imagecopyresampled.php this is the function used internally by library. I could not find information on which algorithm is used by the function.


Racer panics on Option::unwrap

i'm on
$racer --version
racer 2.0.8

Racer Error:
thread 'searcher' panicked at 'called `Option::unwrap()` on a `None` value', /checkout/src/libcore/option.rs:323

Racer Error:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /checkout/src/libcore/option.rs:323
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at /checkout/src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/sys_common/backtrace.rs:60
             at /checkout/src/libstd/panicking.rs:355
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:371
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:549
   5: std::panicking::begin_panic
             at /checkout/src/libstd/panicking.rs:511
   6: std::panicking::begin_panic_fmt
             at /checkout/src/libstd/panicking.rs:495
   7: rust_begin_unwind
             at /checkout/src/libstd/panicking.rs:471
   8: core::panicking::panic_fmt
             at /checkout/src/libcore/panicking.rs:69
   9: core::panicking::panic
             at /checkout/src/libcore/panicking.rs:49
  10: racer::typeinf::get_type_of_match
             at /checkout/src/libcore/macros.rs:21
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/typeinf.rs:16
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/typeinf.rs:130
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/typeinf.rs:270
  11: <core::option::Option<T>>::and_then
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/ast.rs:494
             at /checkout/src/libcore/option.rs:578
  12: <racer::ast::ExprTypeVisitor<'c, 's> as syntex_syntax::visit::Visitor>::visit_expr
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/ast.rs:489
  13: racer::ast::get_type_of
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/ast.rs:1025
  14: racer::core::find_definition_
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/core.rs:1089
  15: racer::run
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/racer/core.rs:1038
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/bin/main.rs:161
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/bin/main.rs:411
  16: racer::daemon
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/bin/main.rs:191
  17: racer::run
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/bin/main.rs:407
  18: racer::main
             at ./.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.0.8/src/bin/main.rs:397
  19: std::panicking::try::do_call
             at /checkout/src/libstd/panicking.rs:454
  20: __rust_maybe_catch_panic
             at /checkout/src/libpanic_unwind/lib.rs:98
  21: std::rt::lang_start
             at /checkout/src/libstd/panicking.rs:433
             at /checkout/src/libstd/panic.rs:361
             at /checkout/src/libstd/rt.rs:57
  22: __libc_start_main
  23: _start

I'm trying to find a definition of .ok() by running:
 racer find-definition 65 29 main.rs

on line:
        for line in reader.lines()
          .filter_map(|x| x.ok() )   // <-- line no 65
          .filter(|x| in_cname_pattern.is_match(x)) {

Can you please try running this with RUST_LOG=racer=trace as an environment variable and share that output?
A playground with a minimal repro of the issue would also be helpful.

i think that for the whole trace output this part is relevant for current issue:
DEBUG:racer::ast: expr is a path P[x]
DEBUG:racer::ast: resolve_ast_path P[x]
DEBUG:racer::nameres: resolve_path_with_str P[x]
DEBUG:racer::nameres: resolve_path P[x] "/home/user/projects/rqh/src/main.rs" 1708 ExactMatch
DEBUG:racer::nameres: resolve_name x "/home/user/projects/rqh/src/main.rs" 1708 ExactMatch Both
DEBUG:racer::nameres: search_local_scopes PathSegment { name: "x", types: [] } "/home/user/projects/rqh/src/main.rs" 1708 ExactMatch Both
DEBUG:racer::nameres: searching scope Both start: 1702 point: 1708 'x' "/home/user/projects/rqh/src/main.rs" ExactMatch local: true, session: Session { .. }
DEBUG:racer::typeinf: get_type_of match Match ["x", "/home/user/projects/rqh/src/main.rs", 4648, true, FnArg, [], [] ||x| x.ok() )

i'll try to make an minimal repro shortly

https://gist.github.com/Eternity-Yarr/b09c5190542989ce88925192624089bd here is minimal repro.
if i run RUST_BACKTRACE=1 RUST_LOG=racer=trace racer find-definition 9 28 main.rs, racer crashes

Thanks!
What's happening here is that #697 is causing racer to find a definition for x where previously it wouldn't have. However, we don't know x's type, so trying to look for the ok() method is failing.
Short-term, the fix will probably be to avoid the unwrap and propagate the None back to the caller.


Add imperative and reactive tests for Neo4j.

Also mention Neo4j as compatible with the reactive stack and the QuerydslPredicateExecutor in the documentation.

Thanks for the pull request, we'll have a look!

Thanks for these updates!

Thank you. Very happy that this one got in. And thanks for the project in general. 💚


How to use it?

Could you give me some tutorials or guidance?

See examples folder. Other than that, the README is the only documentation.


New windows should get the size of the previous active window

VSCode Version: 1.4.0
OS Version: Win10

Steps to Reproduce:

Open VSC and resize the window, e.g., make it a bit larger
Open a new window by File => New Window or Ctrl + Shift + N

The new window has some pre-defined size. I would expect that it has the same size as the first one.

It's probably a personal preference. It should be a user setting instead of hard-coded.

+1. Need this as a preference setting option.

adding desc from #17105 to also include window position:
When I open a new window in VS Code (Ctrl/Cmd+Shift+N), the new window takes about 1/3 of the screen and I need to manually resize it to make it bigger. (On Windows this may not be a huge issue since there's the maximize button. But on a Mac, laborious manual resizing is needed to keep windows in the same space.)
Wanted behavior: The window is sized and positioned with the size and position taken from the last user-sized and the last user-positioned window.
Possible workaround if this is hard to implement: add an option to specify new default window size and an option to specify a new default window position, both in pixels.

On Windows this may not be a huge issue since there's the maximize button

It's still annoying having to perform extra steps.. I dislike this:

Open a terminal, type "code ." to open code. It opens full-screen (how I left it)
Open another terminal (or change to another folder) and type "code ." to open code. It opens in a small window

It's a little annoying that the window size is different depending on whether it's the first time you launch code or not!

I too find this annoying. I like keeping VS Code window at a certain position / size and have a browser window open next to it, but when I open a second project / window I have to manually resize it (or close the first window).
I think this should be saved in somewhere in workspace settings or globally per folder.

A new setting window.newWindowDimensions allows to control how new windows should open. By default, a new window will open in the center of the screen with small dimensions. If you change this setting to inherit, the new window will get the same dimensions as the last active one. Setting it to maximized or fullscreen will always open new windows either maximized or in fullscreen.

Can I customize new window size?


Language preference not working in OR 3.2

Describe the bug
Impossible to change the language of the UI
To Reproduce
Change the language to "French" or "Spanish" and apply. Nothing is changed, the UI is still in English
see this tweet https://twitter.com/daieuxdailleurs/status/1171672967648043008
Current Results
What results occured or were shown.
Expected behavior
A clear and concise description of what you expected to happen or to show.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Win10
Browser Version: FF
JRE or JDK Version: 1.8.0_201

OpenRefine (please complete the following information):

Version :  OpenRefine 3.2

Datasets
If you are allowed and are OK with making your data public, it would be awesome if you can include or attach the data causing the issue or a URL pointing to where the data is.
If you are concerned about keeping your data private, ping us on our mailing list
Additional context
Add any other context about the problem here.

For anyone searching this problem: a workaround is to open preferences and add "userLang" with value "fr" for french etc.


Revert "List valid company officers from Oracle for company"

Reverts companieshouse/emergency-auth-code-api#9
Environments are not provisioned to work with CGO_ENABLED=1, but this is required for SQL drivers. Reverting changes

Can you leave the utils unit test, please?


Adding custom expiry time dialog box shows 0 seconds for tokens having an expiration time

Description:
Adding custom expiry time dialog box shows 0 seconds for tokens having an expiration time
Steps to reproduce:

Follow steps listed in https://apim.docs.wso2.com/en/4.0.0-dev/consume/manage-application/generate-keys/obtain-access-token/changing-the-default-token-expiration-time/#changing-the-default-token-expiration-time-at-the-application-level
Add application level expiration time
click generate keys
Below the key, the footer mentions 0 seconds

Affected Product Version:

Environment details (with versions):

OS:
Client:
Env (Docker/K8s):

Optional Fields
Related Issues:

Suggested Labels:

Suggested Assignees:


Running the NR agent in web worker instead of main thread

Summary
Some of the functionality of the browser agent could be delegated to a web worker.
We tried running the JavaScript snippet script (as obtained via the docs) through Partytown, but there are many dependencies on the global window object that don't translate well to running in the worker context.
Desired Behavior
It would be very useful for the community if you could provide documentation and example of a setup where the NR agent is run via web workers.
This will obviously come with caveats but there will be use-cases where the benefits might outweigh the deficits.
Possible Solution
While we have not used the browser-agent library at all (and are instead relying on the JS snippet), I wonder if an equivalent set-up can be achieved by using multiple micro agents, some in worker mode, and some on the main thread.
Additional context
CWV have become increasingly important in today's SEO ecosystem, and any bit of performance that can be wrestled back from third-party scripts is a welcome improvement. With the introduction of INP as a stable core web vital metric this month, many developers are be looking into every possible avenue to increase performance.

Hi @tibineagu and thanks for opening this issue. Unfortunately we do not officially support running the agent in a worker context or even running part of the agent in a worker context. I would suggest reaching out in our forums and/or your New Relic sales/support contact.


ci: add docker build

#709  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Subscriptions page

Adds a Subscriptions page showing the user's subscribed streams. Out of scope are collapsible topics and the ability to browse to all streams. There was no design spec for the situation where the user has no subscriptions so implemented a simple text notice here.
Thanks @chrisbobbe for the color helpers. I've found a lot that could be shared between this and the inbox code in #381 -- besides the collapsible bit, the design is exactly the same save the fontSize here is 18 instead of 17 in the inbox. I think we have a lot of space to consolidate design in the future.
Figma design: https://www.figma.com/file/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?type=design&node-id=171-12359&mode=design&t=4d0vykoYQ0KGpFuu-0

Fixes #187

Having mulled it over after creating the pr I decided to rename iconDataFromStream to iconDataForStream

@gnprice ready again!

(It looks like there isn't yet a new version pushed.)

Hi! 👋 I had a few small comments while reading through this just now; see below. Hopefully this doesn't interrupt too much the conversations here between you and Greg.
Another thought I had, from comparing with the page on Figma, is that I'm not yet sure if only some of the stream rows should use bold text (as in this revision), or if all of them should. The Figma shows all of the stream rows in bold:

But it doesn't show any streams without unreads. So I think it's inconclusive about whether bold text is used to distinguish streams with unreads from streams without unreads, or if it's used to distinguish stream rows from topic rows. (I understand that topic rows is being saved for future work; there's more complicated data stuff we need for that.)
I guess one observation that might hint away from interpreting the use of bold to distinguish unreads: in the Figma, there are some topic rows with unreads, and some without unreads, and none of the ones with unreads are bold.
If you agree, I think you could just leave a TODO pointing to this comment and we can revisit it later, with feedback from Vlad.

I agree that the design specs are unclear. I had settled on this due to the existence of this outdated design in the same figma that shows streams with unreads in bold:

(from https://www.figma.com/file/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?node-id=112%3A9610&mode=dev )
I've added a TODO and linked to your comment as suggested.

Thanks @chrisbobbe for the review, your comments should be handled now!

Thanks @sirpengi for the revisions, and thanks @chrisbobbe for the added review!
All now looks good; merging.


Performance of BAM.quality ?

I posted this some time ago and someone mentioned that the performance of BAM.quality wasn't optimal. I also see in some of my code that it takes a significant portion of time.
Is there a reason for that reinterpret and conversion business ?
https://github.com/BioJulia/BioAlignments.jl/blob/master/src/bam/record.jl#L548
I've tried the following and it seems to work fine:
function quality(record)
    BAM.checkfilled(record)
    seqlen = BAM.seqlength(record)
    offset = BAM.seqname_length(record) + BAM.n_cigar_op(record, false) * 4 + BAM.cld(seqlen, 2)

    return record.data[(1+offset):(seqlen+offset)]
end

Cut down the time from 232 to 65 ns. Returning a view cuts it by further by 2. Maybe there's some cases where that fails ? I saw the bam specifications says qualities are char and not uint8.

The general issue with returning a view with the parsers and record types in BioJulia will be that if you are reading a file using the read! method, to reuse the same record, again and again, to save on allocation and GC, then if you store the view on the records internal data, across iterations over the records in the file, then they won't be valid, and you end up shooting yourself in the foot. But the slice version above
should be fine.
Maybe we can introduce a layer of *_data methods for records, so if you just want the data without conversion... or we could just drop the conversion, if the spec says qualities are chars, I highly suspect they are talking about chars that are basically a uint8, they are probably not talking about fancy UInt32 Unicode chars, but I could be wrong.

The view is a bit dangerous yes, I'll test the version above on a couple of different bam's and make a PR is everything works.


Behavior of stats.ks_2samp for ties needs investigating

From gh-6545, which reverted gh-5938:

gh-5938 changed ks_2samp for scipy 0.18.0,
the change was supposed to be a moderate speed up only, but it changed the behavior in case of ties in the data
both "old" (0.17.0) and "new" (0.18.0) behavior is somewhat ad hoc, and the "new" is not clearly better than the "old"

The correct behavior for ties needs to be figured out. There's relevant discussion on gh-6435.
Once the behavior for ties is resolved, the Cython implementation of ks_2samp that was removed in gh-6545 may be useful again.

What is the open action here?  AFAICT, the current implementation
https://github.com/scipy/scipy/blob/affd5d62ff9a6746f80513e778c69c7642f0187b/scipy/stats/stats.py#L4884-L4887
using a difference of two np.searchsorted(, , side='right') calls handles ties correctly. Or are there simple counter-examples?

For the examples I've tried, the statistic calculation matches that of R's ks.test, but the p-value (neither exact nor asymptotic) does not.
R's ks.test warns "cannot compute exact p-value with ties".
x <- c(1, 1.01, 3, 4)
y <- c(1.01, 0.5, 0.25)  # try 1.02 instead of 1.01
ks.test(x, y)

SciPy p-value agrees with R's p-value when the first entry of y is 1.02. When the first entry of y is changed to 1.01 (tie), the statistic doesn't change in either software, but the p-value changes in R (and only R).
So it seems that there is a tie correction to the asymptotic p-value calculation that SciPy does not have.

I investigated again. I think there were two parts here:

Do the right thing when there are ties.
Possibly use code from gh-6545 in the future.

Regarding 1, ks_2samp is pretty explicit about being for samples from continuous distributions, so ties are out of the current scope. In any case, our statistic calculation seems to agree with R's ks.test, so short of fulfilling gh-14434 (KS test for discrete distributions), I think this is resolved.
Regarding 2, if we wanted to compile the code for a modest speed increase, I think we'd use Pythran now. That said, I would probably be -0.5 even on that - the performance increase seems modest at best, but it does make the function a little harder to work with. Moreover, translating to array API Python calls would be more valuable, and that is tracked in gh-20544.
So I think it's safe to close this one and leave gh-14434 and gh-20544 open.


docs(plugins) 34 version for plugins

Summary
Creates a "0.34" version of any plugin that did not already have new documentation. Previously, if readers were to navigate to a plugin from 0.34 docs, it would still show "0.33-x".
Full changelog

Added duplicate docs for:

Canary
Rate-Limiting Advanced
Request-Transformer Advanced
OAuth2 Introspection
Enterprise Forward Proxy (formerly EE Forward Proxy for all pre-0.34)
LDAP Authentication Advanced

Redirect 0.33-x to the specific version, rather than the latest
Add 0.34 to the dropdown menu for each plugin doc

Issues resolved
Fix #1055
Checklist:

[x] Commit message & atomicity checked
[x] Documentation
[x] Spellchecked my updates
[x] Ready to be merged

The changes to plugin links look fine. If it's going to take longer than a day to get the right name for the forward proxy plugin, I suggest you move it into a separate PR.


Is this project dead?

IMPORTANT: Please ensure you have read SUPPORT.md before continuing
There's been no activity in 2 months

Currently, the public repo is just a fork of ungoogled-chromium with no modifications, but intern work is being done on a private repository, to prepare the first build of BoldBrowser.

Never mind


Depth camera sonar

Sonar is introduced.  This is posted for review and is not ready to merge.

Normal angles are read by Gazebo but are not used in Power equations.
Ray dimensions are not synchronized between the Gazebo camera SDF and the equations.  They are hardcoded on the SDF and Python sides.  Currently Python is hardcoded for one beam but can be hardcoded for multiple beams.
Output is a 2D ROS Image where the first axis is the beam number, the second axis is the distance bucket number and the value is the power sum for that bucket for that beam.

To do:

Add a "diagnostics" point cloud where axis 1 is range, axis 2 is sonar_retro, and axis 3 is the normal angle.
Scale bucket time ranges to distance ranges.
Integrate normal angles.

To run:  type:
roslaunch nps_uw_sensors_gazebo depth_camera_sonar_basic.launch

Depth camera settings are set in file urdf/depth_camera_sonar_robot.xacro.  Sonar settings are hardcoded in file scripts/sonar_equations.py.  File scripts/sonar_ros.py runs the ROS Node that sends and receives ROS messages and calls scripts/sonar_equations.py to perform the math.

At this point, Normal angles are read, but the incidence angle can return values that are out of range, see sonar_equations.py function _ray_incidence.  Specifically, we are getting target normal values of xyz=0,0,0 and xyz=-1,-1,0, which are invalid because they do not represent unit distances.
The Sonar equations can be run two ways:

Directly, with a hardcoded dataset, type ./sonar_equations.py, see __main__.
Using Gazebo, type roslaunch nps_uw_sensors_gazebo depth_camera_sonar_basic.launch.

To aid in diagnostics, I'll add an "image" topic where the points correspond to normal angles for rays.

A normals memory copy error was corrected.  Here are some values for a single-beam test case 3 rays wide and 4 rays high:
Incidence angles:
1.695266, 1.570796, 1.570796
1.695332, 1.570796, 1.570796
1.695259, 1.604963, 1.604963
1.638297, 1.638297, 1.638297

Ray distances:
1.193127, 7.000000, 7.000000
1.193126, 7.000000, 7.000000
1.193126, 2.889497, 2.893409
0.961657, 0.962388, 0.962388

Ray Normals column by row by (x,y,z):

ray normal 0: 0.173651, 0.984807, -0.000000
ray normal 0: 0.000000, 0.000000, 0.000000
ray normal 0: 0.000000, 0.000000, 0.000000

ray normal 1: 0.173651, 0.984807, -0.000000
ray normal 1: 0.000000, 0.000000, 0.000000
ray normal 1: 0.000000, 0.000000, 0.000000

ray normal 2: 0.173651, 0.984807, -0.000000
ray normal 2: 0.000000, -0.000000, -1.000000
ray normal 2: 0.000000, -0.000000, -1.000000

ray normal 3: 0.000000, -0.000000, -1.000000
ray normal 3: 0.000000, -0.000000, -1.000000
ray normal 3: 0.000000, -0.000000, -1.000000

Run by typing roslaunch nps_uw_sensors_gazebo depth_camera_sonar_basic.launch.  The bucketed Sonar beam power image is published as sonar_beam_image.  The incidence angles are published as sonar_ray_incidence_image.
I question the correctness of the incidence angles.  I would expect they would vary more.
Code still contains diagnostics.

Regarding CI Lint check on file src/nps_gazebo_ros_depth_camera_sonar_single_beam.cpp: This file is adapted from ROS Melodic file gazebo_ros_pkgs/gazebo_plugins/src/gazebo_ros_depth_camera.cpp.  It is modified to additionally forward normals data.  I recommend exempting this file from lint checks because leaving it alone preserves its similarity to the file it came from.  Lint is producing 112 errors.

A Sonar image is now created along with several diagnostic images and views.  Ray dimensions and sonar parameters are hardcoded in scripts/sonar_equations.py.  These ray dimensions must match the ray dimensions provided to the depth camera.  Please refer to the write-up and demo at https://github.com/Field-Robotics-Lab/dave/wiki/Depth-Camera-Sonar-with-Normals.

Getting error msg launching with roslaunch nps_uw_sensors_gazebo depth_camera_sonar_basic.launch
process[depth_and_normals_to_sonar-5]: started with pid [4391]
/usr/bin/env: ‘python\r’: No such file or directory
process[rqt_image_view_image_beams-6]: started with pid [4392]
[depth_and_normals_to_sonar-5] process has died [pid 4391, exit code 127, cmd /home/eric/uuv_ws/src/nps_uw_sensors_gazebo/scripts/sonar_ros.py __name:=depth_and_normals_to_sonar __log:=/home/eric/.ros/log/8a5c2930-fba5-11ea-9dd5-bcee7b8ddb04/depth_and_normals_to_sonar-5.log].
log file: /home/eric/.ros/log/8a5c2930-fba5-11ea-9dd5-bcee7b8ddb04/depth_and_normals_to_sonar-5*.log

according to this thread
The problem are your line ending characters. Your file was created or edited on a Windows system and uses Windows/DOS-style line endings (CR+LF), whereas Linux systems like Ubuntu require Unix-style line endings (LF).
using package dos2unix with command dos2unix *.py fixed the problem which is installed with sudo apt install dos2unix

Concerning high computational costs, excluding the point scatter model and process solely the sonar equation makes a significant reduction in calculation time. Transforming the data between frequency and time domain consumes lots of resources. @bsb808 Being very careful with this topic and hoping that I would not hurt anyone by accident, I asked a few times for the reason why we need the point scattering model to Andi. Without getting any answers, I thought it's needed for her thesis to include something new. Wondering how much fidelity is needed and what the model can provide, I think it's better to exclude it for our purposes. Or find a way to parallelize the sonar computation.
@BruceMty I have added the python code without the point scattering model on sonar_re_noScatteringModel_v1.py. It needs more revisions for what values should be used as parameters (e.g. source level, noise amplitude). Comparing with the previous python code (which takes about 2 seconds for main calculations), the new script takes less than 0.01 seconds to run. Two codes do not show exactly the same results at the moment. But it still would be able to distinguish objects with relative echo levels.

@woensug-choi thank you for providing this.  This will address the computational cost issue.  I would like @bsb808 to comment on any impact on loss of fidelity.
Because of Python looping, I can expect a 100x speedup by porting the existing algorithm to C++.  But I strongly encourage computational simplification where possible.

I spoke with @woensug-choi about this and think I understand that the current situation is that...
The python implementation of the sonar model runs very slowly.  https://github.com/Field-Robotics-Lab/dave/wiki/Depth-Camera-Sonar-with-Normals reports that it takes ~10s to generate a sonar scan for a scenario with a reduced number of rays/beams.
The point scattering model is a very important part of our current sonar model.  We can't throw it out without a viable alternative to capture similar interactions.
My recommendation is to not make this PR contingent upon running in real-time.  We should just verify that the python node correctly implements the mathematical model.  Before merging the PR we should describe the computational issues as a new github issue for post 2.0.0.
Implementing this in a computationally viable way will likely take some design.  Simply porting to C++ may not be sufficient - we may need to consider other options such as parallelization.

I added https://github.com/Field-Robotics-Lab/nps_uw_sensors_gazebo/issues/18 to document the need to improve performance.
We need to fix or disable Lint issues.  Are there any other issues blocking merging this PR?

@BruceMty Is there a reason not to move the header to an include directory?

@M1chaelM Being prototype code, I put headers in src for ease of working with.  ROS separates headers.  Gazebo puts them together.  I can move the headers if you like.

@M1chaelM Being prototype code, I put headers in src for ease of working with. ROS separates headers. Gazebo puts them together. I can move the headers if you like.

Great, thanks. Yes, could you put them under the include directory?

Lint issues are resolved and this is now passing checks. I am not caught up on the conversation between @BruceMty and @woensug-choi above. Is @woensug-choi the reviewer?

A strange error was found for the python script text format. dos2unix *.py for three python scripts fixed the errors. I was not able to make a commit since the Github status says 'No content changes found' but says '3 changed files' at the same time. I don't think this issue should block this PR, since C++ implementation is expected.

@woensug-choi What was the strange error?  Why did you run dos2unix.py?  I ran dos2unix.py.  It did not change any content but it did update the timestamp of the files.

As a review for current PR, in summary, I was able to reproduce what was on the wiki page.
Additional tests by changing beam numbers at both depth_camera_sonar_robot.xacro and sonar_equations.py lead to change in sonar image resolution as expected.

@woensug-choi how were you able to verify the Sonar component if it gave this error?  How can we troubleshoot this?  Is your build environment clean, e.g. "catkin_make clean; catkin_make"?

@BruceMty, @woensug-choi has documented the problem you ask about in issue #19. It appears to be relatively minor. Let's move further discussion to that issue and submit a new PR if needed.
Since this has been reviewed and approved, I am merging the PR.


Update to the latest version

The file is outdated, please update with the latest version from the official repository

Thanks for opening this. It's on my todo list and I expect to have time in the next few days to backport the latest changes

Fixed by 1c0cd144b5517c6e62d7209309ec18e81d910975

Fixed by 1c0cd144b5517c6e62d7209309ec18e81d910975