Replication remote -> local doesn't work in 3.0

Description
Version used: Remote CouchDB 2.3.1 and Local CouchDB 3.0
Simple remote->local replication using authentication on both ends doesn't work
Steps to Reproduce
Go on Fauxton and create a replication using the UI for a remote to local DB (existing or new fail). Once created, the list of replication shows that the source is not correct and display the address of the destination. The replication fails with the retry message.
My CouchDB instances run behind nginx and https addresses are used for both sides.
Expected Behaviour
Replicates without errors...
Your Environment

CouchDB version used: 3.0
Browser name and version: Chrome 80
Operating system and version: CentOS 8

Additional Context

Not sure what the problem is but no replications work... maybe the nginx proxy?
Even local to local replication fails. It's using the https address in source and target but should maybe use localhost?

Replications with same proxy config works correctly with couch 2.3.1 on both side?

CouchDB 2.3.1 already had issues with reverse proxies but I thought 3.0 had fixed them. What is the best practice for replicating through a reverse proxy? The UI doesn't work at all...

There was a similar issue reported and I think it's related:
https://github.com/apache/couchdb/issues/2594
We had figured out there that Fauxton grabs the URL from the browser's location and uses parts of for the "local" replications. I can see how proxies or container environments would interfere with that. As the URL the browser connect to the server might not be accessible for the server to connect to itself especially with localhost being used.
Try to reproduce the issue outside Fauxton and just using the API directly.
Somethings to keep in mind with a proxy:

Make sure that it doesn't buffer requests, as say _changes feeds APIs need to stream data

They may alter the Set-Cookie headers and prevent servers behind the reverse proxies to authenticate requests properly. To avoid the issue can switch to basic auth only by setting

[replicator]
auth_plugins = couch_replicator_auth_noop

@nickva How can I do a basic auth? With<EMAIL_ADDRESS>?
That exposes the password...
Also, do you know if nginx alter the setcookie header by default? that would surprise me.

So I have tried with basic auth for the remote server which is behind the reverse proxy and it works...
When I say it exposes the password, I meant it exposes the clear password in the CouchDB replication document, not in the request!
I have tried multiple configuration (source and/or target being behind nginx) but here is a simple example to reproduce the issue. Use your own computer with CouchDB installed (not behind a reverse proxy) as the source. On a remote server, install CouchDB and nginx. I use the following config to redirect the requests to the right port (I didn't test without ssl but I don't think it's different):
server {
    listen 443 ssl http2;
    server_name db.address.com;

    ssl_certificate /etc/letsencrypt/live/db.address.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/db.address.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/db.address.com/chain.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        proxy_pass  http://<IP_ADDRESS>:5984;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

Try to replicate from you local computer to the remote server with session

@natcohen Your proxy config is incomplete.
See our documentation here: https://docs.couchdb.org/en/stable/best-practices/reverse-proxies.html#reverse-proxying-with-nginx

@wohali Shame on me, I completely missed this part of the doc! Everything works except for the Fauxton issue mentioned by @nickva that grabs the url from the browser for localhost but it's already tracked in another thread!


add CCDCivilFileContent

Description
This PR includes the following proposed change(s):

{List all the changes, if possible add the jira ticket #}

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Refactoring / Documentation

if your change is a breaking change, please add breaking change label to this PR
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] New and existing unit tests pass locally with my changes

@claudiuvlasceanu  Please remove the zip file from the commit

@claudiuvlasceanu Please remove the zip file from the commit


item.toggleSelected() is not working

I need to unselect a selected items programmatically.
In particular, inside the Method onWeekdaysItemClicked(int attachId, WeekdaysDataItem item)
I need to unselect the current item if I check that all the weekdays has been selected.
I tried using item.setSelected(false); to unselect the item and it seems to work, because the weekday is not anymore between the selected ones.
The problem is that I can't "toggle" the graphical selection. I tried using  item.toggleSelected();
Thanks for your help.

I think the all days selected must be turned off before you can toggle a single day again.

Suppose weekdaysDataSource is the WeekdaysDataSource object.
If I use weekdaysDataSource.selectAll(false), all the items become unchecked. I just need to uncheck the current clicked item.
It is because I can't permit that all the items (weekdays) are checked. So, when the last item (weekday) is checked, then I need to uncheck it and unselect it programmatically.


Min SDK

Can you make min sdk to 1? Thanks!

If there is no specific reason, I would not support min 1 really, because I'll use some features which are supported api 8 and above.


Incorrect image links in Envoy and Grafana logs

Description
I see multiple errors in our logs where images aren't linked correctly:
Resource not found | Requests
-- | --
/docs/latest/img/envoy-listings.png | 34
/docs/latest/img/envoy-db1.png | 31
/docs/site/content/docs/img/envoy-listings.png | 31
/docs/latest/img/envoy-db3.png | 30
/docs/latest/docs/img/envoy-db2.png | 30
/docs/latest/docs/img/grafana-data-source.png | 29
/docs/latest/docs/img/grafana-landing-page.png | 29
/docs/latest/img/grafana-manage-dashboards.png | 29
/docs/site/content/docs/img/envoy-db1.png | 28
/docs/site/content/docs/img/envoy-db2.png | 28

Location
Looks like they are located in docs/site/content/docs/latest/vsphere-monitoring-stack.md
Additional Context

Hey @jonasrosland - can you point to where you are seeing these errors? Those images appear to be showing up fine in the rendered site: https://tanzucommunityedition.io/docs/latest/vsphere-monitoring-stack/#validating-contour-functionality


Implement AutoTag option for api.Create

Description

Checklist

[ ] added release notes to Unreleased section in CHANGELOG.md, if user facing change

References

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

@LittleFox94 your suggestion to extract the api implementation into its own package instead of the type, allows a much cleaner AutoTag implementation. :+1:
Tests are currently failing, because I still need to rewrite some things to make api.HTTPError usable outside of the api package (probably just a helper (constructor) function). Also our xxgenerated_object_test.go generator needs some work to allow v1_test package because corev1 cannot import the api/implementation package.

Addendum to my previous comment:
We could also move non-generated test into pkg/apis/core/v1/tests to avoid changes to the code generator.
I just realized that moving the implementation into a separate package is a breaking change as it cannot be imported by pkg/api. Is that something you had in mind @LittleFox94?

Also our xxgenerated_object_test.go generator needs some work to allow v1_test package > because corev1 cannot import the api/implementation package due to import cycles.
Addendum to my previous comment: We could also move non-generated test into pkg/apis/core/v1/tests to avoid changes to the code generator.

We should probably rename all the test packages to v1_test and only test exported things. For cases where we have to test internal things, we can still have extra tests in v1, but default case is v1_test and that's also the only case we generate tests for - does that make sense?

I just realized that moving the implementation into a separate package is a breaking change as it cannot be imported by pkg/api. Is that something you had in mind @LittleFox94?

So api/implementation is importing api to

have the type returned by NewAPI api.API

I'd like that function in api instead, with the option-resolving code extracted to make clear what is implementation-specific and what isn't (option-resolving probably isn't)

have some errors defined in api

we could move them to api/types and re-export them in api
would also make it easier to use them in api packages - most probably only need to import api/types then?

have the Options in tests

all the request options are defined in api/types, only the functions to use them are in api - maybe we could move them to api/types and, again, alias them

.. I stopped searching at this point

This is a big clusterfuck, especially for a not-that-big feature to add .. let's push that to background processing in our minds for today and look at this again tomorrow?


[Numpy] fix invalid ndarray dispose

Thanks for the fix. Now all the tests but Perl's have passed.


DeepL

please please use google translator api im from IN I cant access DeepL api keys 😢 !!

Let me try to find a solution with google translator API.

Let me try to find a solution with google translator.

Thanks man i tried it
im not getting any errors in my terminal and the collab notebooks too
still not able to get any output

I have added in an option to use Google Translate instead in the .env file in a new commit, so test to see if it works!
As for your other issue, do wait for my setup video to ensure that you've set everything up properly :)

I tried the new commit i found that the code terminates itself without sending request to whisper


Revised make command for minor release docs

Issue #, if available:
Description of changes:

fixes bug in sorting for minor release doc
added a ton of comments to explain what to do

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/lgtm


[New Snap] Saferoot

Checklist
All items in the list below needs to be satisfied.

[x] Is the Snap repository publicly accessible and linked in this ticket? https://github.com/Staging-Labs/Saferoot-Snap
[ ] Is the Snap distributed on npm and linked in this ticket?
[ ] Has an audit been performed and the audit report attached or linked in this issue?
[ ] Is a complete list of discovered vulnerabilities from the audit documented in this issue?
[ ] For vulnerabilities that have been deemed necessary to be addressed, are the links to the fixes attached to this issue?
[ ] For vulnerabilities that have been deemed not necessary to be addressed, is a reason for each of them documented in this issue?
[ ] The corresponding pull request in this repo has been merged.

Audit report: Least Authority- Staging Labs Saferoot Snap Final Audit Report (1).pdf

Discovered vulnerabilities:

Issue A: Data Is Stored Unencrypted in localstorage
Issue B: Usage of Vulnerable Dependencies
Suggestion 1: Improve Error Handling and Reporting
Suggestion 2: Update Deprecated Functions
Suggestion 3: Adhere to MetaMask Best Practices
Suggestion 4: Remove Unused Code
Suggestion 5: Improve Code Comments

All vulnerabilities have been fixed and verified according to the original auditor.


RetroCore API improvements

Introduction
You'll probably want to turn off whitespace changes to weed out indentation changes in the code.
This PR is a collection of miscellaneous API improvements I tinkered with over the weekend. The goals for these changes, in rough order of importance, were:

Expose the full functionality of the libretro API.
Future-proof the API against new environment commands.
Enforce more of libretro's rules using types.
Make the crate's abstractions as close to zero-cost as possible.
Minor project housekeeping (e.g. update the gitignore.)

I wanted to get these breaking changes out of the way now before moving on to adding more environment commands and features.
Major Changes
Environment overhaul
Scoped environments
Addresses #2 and lays the groundwork for #16. The new implementation exposes an environment trait for every retro_* function, so that we can limit which non-raw environment commands are available. The *_raw methods are always available, since they're the user's escape hatch for functionality the crate doesn't implement yet.
I initially tried to implement this by adding a PhantomData parameter to the environment, but this required casting in every RetroInstance callback as well as polluting the API with a lot of marker structs.  I found the trait-based implementation much more straightfoward, since the C callback can implement all of the environment traits simultaneously, and it allows users to unit test their RetroCore since they no longer have a hard-coded dependency on the C function pointer.
Reworked raw methods
The base environment trait defines its raw_* methods in terms of Rust types, not pointers, and there's a new method fn mut_ref_raw<T>(&mut self, key: u32, data: &mut T) for commands that mutate structs.
All raw methods are unsafe
All raw methods should be unsafe since they allow the user to violate libretro's requirements and we can't account for future additions to the environment callback.
RetroCore API improvements
Exposed every retro_* function in RetroCore
Because libretro can add new environment commands at any time, and those commands may require being called during specific retro_* callbacks, the only way to expose libretro's full functionality and future-proof the API is to surface all of the retro_* to the user.
Other benefits of this change are less glue code in RetroInstance and a much tighter correspondence between the Rust API and C API, which should help users cross-reference the documentation.
Removed redundant method parameters.
Some functions in the C API pass an array pointer and the array's size as separate parameters. In RetroCore, the array pointers were translated into Rust slices, but the redundant size parameter wasn't removed. Since slices carry their length, I've removed these size parameters.
Refine c_uint parameters.
libretro's ABI uses unsigned int for all integers, even if its parameters would fit into a byte or short. To the best of my ability, I've replaced most c_uint/u32 parameters with the narrowest fixed-size type that will accept all of its values.
Additionally, two of these parameters pass user-defined values that are established in environment commands. These have been replaced with two associated types:
pub trait RetroCore: Sized {
  type SpecialGameType: TryFrom<u8>;
  type SubsystemMemoryType: TryFrom<u8>;

  fn load_game_special(&mut self, env: &mut impl LoadGameSpecialEnvironment, game_type: Self::SpecialGameType, info: RetroGame) -> bool;

  fn get_memory_data(&mut self, env: &mut impl GetMemoryDataEnvironment, id: RetroMemoryType<Self::SubsystemMemoryType>) -> Option<&mut [u8]>;
  // etc.

This will allow users to use their own enums, provided the enum is convertible into a u8. Cores that have no need for this functionality can use the provided empty tuple struct NotApplicable:
impl RetroCore for Emulator {
  type SpecialGameType = NotApplicable;
  type SubsystemMemoryType = NotApplicable;
  // etc.
}

Overhauled string handling
Some C strings returned by libretro are not guaranteed to be UTF-8 encoded. The crate should expose these as &CStr and let the user decide if they want to assume they're UTF-8 or handle them some other way. Convenience methods have been provided to convert Option<&CStr> to Option<&str> in one step.
Additionally, the API uses the CUtf8 crate when exposing UTF-8 C Strings, since this type preserves the fact that the string slice is both UTF-8 and nul-terminated. This allows for trivial conversions to both &CStr or &str. &str can't do this because once a &CStr is converted to &str, you've discarded the fact that it was originally nul-terminated.
Internal changes
Zero-cost struct conversions
Rust versions of the C structs generated by bindgen are now implemented as #declare(transparent) newtype wrappers. The public API still uses idiomatic Rust types, but the conversion to a libretro struct should be a no-op:
/// Rust interface for [retro_system_timing].
#[repr(transparent)]
#[derive(Clone, Debug)]
pub struct RetroSystemTiming(retro_system_timing);

impl RetroSystemTiming {
  /// Main constructor.
  pub fn new(fps: f64, sample_rate: f64) -> Self { Self(retro_system_timing { fps, sample_rate }) }
  pub fn fps(&self) -> f64 { self.0.fps }
  pub fn sample_rate(&self) -> f64 { self.0.sample_rate }
  pub fn into_inner(self) -> retro_system_timing { self.0 }
}

Modularized the crate
lib.rs was getting crowded, so wherever I overhauled a type I moved it to a new file. For the sake of making the diff easier to verify, any code that only required minor changes was left in lib.rs.
Removed libc
To the best of my knowledge, we weren't using it for anything that core::ffi::* didn't already provide.
Updated bindgen version
I updated bindgen to the latest version. This resulted in 2 or 3 lines in RetroInstance having some casts adjusted.
core over std
I've replaced references to std with core wherever possible, which should help us be more conscious of places where we're doing allocations and may allow the crate to function in a no_std context.
Afterword
Sorry for the big PR. I wasn't expecting to submit this much at once, but as I was experimenting one thing just led to another. As usual, let me know where you think a change missed the mark.

@InquisitiveCoder going to close this as we discussed opening a few smaller PRs. I am eagerly anticipating them 😄


Add max-width to Display Name column on releases page

Let's add max-width here so this column wraps - it currently doesn't wrap which causes horizontal scroll.

@jongio max-width won't make the wrapping. It would just make the text overflow the container and won't be displayed. It would also block the responsiveness of the page on bigger screens.
Using word-break: break-all; on the table style should be enough. I will create a PR


Uncaught Exception: Attempting to call a function in a renderer window that has been closed or released. Function provid

An uncaught exception was reported.
Info:
OS: win32
Arch: ia32
GPMDP Version: 3.0.1
Time: Tue Mar 29 2016 09:39:52 GMT-0400 (Eastern Daylight Time)
Error:
Attempting to call a function in a renderer window that has been closed or released. Function provid
Error: Attempting to call a function in a renderer window that has been closed or released. Function provided here: Object.<anonymous> (C:\Users\wkantz\AppData\Local\GPMDP_3\app-3.0.1\resources\app\build\inject\GPMInject\interface\mouseButtonNavigation.js:8:8.
    at BrowserWindow.callIntoRenderer (C:\Users\wkantz\AppData\Local\GPMDP_3\app-3.0.1\resources\atom.asar\browser\lib\rpc-server.js:201:19)
    at emitTwo (events.js:92:20)
    at BrowserWindow.emit (events.js:172:7)

This issue was created automatically inside the uncaughtException handler

Closing this automatically reported issue as a duplicate of #470


Tech refresh, new versions and Scala 2.12.0

@rleibman  thanks for the PR , btw we want to support scala 2.11.x also :)
add this to PR
val Scala211 = "2.11.8"
val Scala212 = "2.12.0"

//in Common settings
crossScalaVersions := Seq(Scala211,Scala212)

There you go.

(I'm assuming you will update the project version and deploy to mvn yourself?)
oh yeah , but its @oyvindberg call, Hey any updates coming to mui or ..


Added decoder for URL. Also, added tests for dates and URLs.

@voidref Any more suggestions?

@codeOfRobin Just that the calls to decoder should be calls to decode instead. The decoder call isn't really meant to be a public interface, it's just there for customized parameter handling.

LGTM, I am not a maintainer, just a contributor, so you'll need to wait for @Anviking to have time to review and merge. Thanks!

LGTM too. Thanks, @codeOfRobin, and thanks, @voidref for reviewing!

@voidref I just invited you as a repo collaborator also in case you want to!


Support release builds and promote using binaries

We should:

Enable release builds in every distro
Support compiling moveit2_tutorials using binaries
Promote using binaries over source

Tutorials are usually the entrypoint for people starting to use MoveIt, we should use binaries over source to make it less painful and problematic for people.

We tried this and had diffulty maintaining binary builds of moveit ourselves. The current only supported workflow for the main branch is a source build or the docker images.


compile errors in leptos_macro v0.2.1 on new project

Environment:
rustc --version
rustc 1.70.0-nightly (8a73f50d8 2023-03-11)
Windows 10, PS 5.1
Steps to reproduce:

Fresh install
rustup toolchain install nightly
rustup default nightly
rustup target add wasm32-unknown-unknown
cargo install cargo-leptos

Setup new project
cargo leptos new --git https://github.com/leptos-rs/start
cd <project_name>

run cargo leptos watch and get compile errors:

Compiling leptos_macro v0.2.1
|
213 |         let encoding = input.parse().unwrap_or(Encoding::Url);
|                              ^^^^^ the trait Parse is not implemented for Encoding
|
= help: the following other types implement trait Parse:
Abi
Abstract
AndAnd
AndEq
AngleBracketedGenericArguments
Arm
As
At
and 254 others
note: required by a bound in ParseBuffer::<'a>::parse
--> C:_redacted_.cargo\registry\src\index.crates.io-6f17d22bba15001f\syn-1.0.109\src\parse.rs:467:21
|
467 |     pub fn parse<T: Parse>(&self) -> Result {
|                     ^^^^^ required by this bound in ParseBuffer::<'a>::parse
For more information about this error, try rustc --explain E0277.
error: could not compile leptos_macro (lib) due to previous error
warning: build failed, waiting for other jobs to finish...
Notify watching folders assets, style, src
Leptos ctrl-c received

Hi — Can you run cargo update and try again? There was an issue that caused about an 8-12 hour gap in the publishing between 0.2.1 and 0.2.2 for some of the crates. I just tried with 0.2.2 and was not able to reproduce.

That solved it! Thanks for your quick response on this - looking forward to using leptos!


Add collections feature

This is a draft PR as I'm still working on it. See #677 for ongoing work.

Ugh making a huge mess once again. Good db migrations are tough! I created a schema, continued the work, and then realized faults in the schema. I try to keep the amount of migrations to a minimum so I'll be closing this and restarting.


"The driver you are using does not support the new state management."

Hello,
I'm running an application that uses<EMAIL_ADDRESS>which has<EMAIL_ADDRESS>as a dependency.
Our compilation process for local devleopment runs two migrations: one set of base migrations to build our PostgreSQL schema, and another set of migrations under the scope dev to add some seed data to the database.
Before today, our migrations ran fine. However, we're now seeing the following message in our logs:
[WARN] The driver you are using does not support the new state management. Please raise an issue in the repository of your driver maintainer

Our data now fails to seed because the dev-scoped migration is running our base migrations a second time. Because the migrations already ran in the past, the second run fails and never gets to the seed migrations further down the line.
We did not update any packages. Is there something I am missing? I can provide additional data if requested.
Thanks!

no nothing. the new beta tag was accidentially released instead of the stable branch and the new version checks the drivers for compatibility. This is nothing you will have to worry about, this functionality will be just skipped in the new version. There is nothing really blocking that is known until know that would raise an issue with the new version, so you could continue using it, but the last stable was 0.11.x.
the newest db-migrate-pg driver is compatible with the newest db-migrate version though. the major version bump was due to breaking the node js compatibility level. Before 1.x.x the db-migrate-pg driver still supported < 8 now it is only >= 8.

the behaviour you're describing later however sounds wrong

Our data now fails to seed because the dev-scoped migration is running our base migrations a second time. Because the migrations already ran in the past, the second run fails and never gets to the seed migrations further down the line.

what do you mean with it runs the base migrations a second time? Which commands did you issue?

@wzrdtales Ah that makes sense. We use Docker to run our application, postgres DB, and other services locally. As part of the build process for the application's container, we install db-migrate globally (in the image's Dockerfile). I hardcoded the version to v0.11.11, which fixed the seeding issue. Thank you!

what do you mean with it runs the base migrations a second time? Which commands did you issue?

When we spin up the Docker containers for our application and postgres DB, we do the following:

First, we run a set of base migrations with db-migrate up to run every migration under the migrations/ directory in our repo. These migrations set the schema for our postgres DB.
Once those migrations succeed, we run the migrations for a specific scope depending on the build context. In dev, we run db-migrate up:dev. These migrations add seed data necessary for local development.

When we build the application's Docker image and globally install the latest stable version of db-migrate (v0.11.11), the above migrations work as expected.
However, when we were unintentionally installing the latest beta version, we would see the "driver you are using does not support new state management" warning message, and db-migrate up:dev would run the base migrations again. The second base migration run would fail, and the seeding migration would never run as a result.

ok thanks for the information, I will try to reproduce this behaviour.


Unable to edit the created custom block by right click on the block from workspace section

On the flyout area, under My blocks click on "make a block"
Edit the block name on the block display on centre of the window.
Click on OK (Custom block appears on the workspace)
On the workspace, right click on the block and select Edit.
Edit the block and click OK button to accept changes.

https://screencast.googleplex.com/cast/NTY3MjE3NjM1NDA2NjQzMnw1M2JiNzZhYS05NA

As per Scratch,
The user is able to click OK and see the changes on the block.

User able to edit custom block by right click on the block.
https://screencast.googleplex.com/cast/NTg2OTQ2MzgzMTMxNDQzMnxmZjdiZmUyYS03MQ


WIP: Implementing the Hierarchical Proximity Graph collector

ATTENTION
[DocumentNGramHGraph2D](https://github.com/npit/PyINSECT/blob/1b8340b84e21fc2371b259c1a88861dce95f333c/src/pyinsect/documentModel/representations/DocumentNGramHGraph.py#L84) does not respect the current implementation of the Union Operator as it is composed of multiple sub-graphs


Documentation:  Restructure Reference Page

Please select a category the issue is focused on?
Other
Let us know where something needs a refresh or put your idea here!
The reference page should be restructured:

Remove “Other Keywords”, move “Timing”, “Sources” to User Utilities, move TTE sources and Metadata to top level
Add subsection for User Utilities and Developer Utilities/ Various, User Utilities should contain functions called in ADaM scripts, Developer utilities should contain functions called in admiral functions or functions of admiral extension packages. User Utilities should not contain derive_* functions.
Remove "Miscellaneous" section

Do you think we could do this one before the release?  @PoojaKumari05 do you think you could do this one as you are familiar with  the pkgdown dramework now?

i wonder if there's any way to separate the more generic functions here vs those targeted and only specific to one single derivation? or might not even be a good idea - but i just wonder how best to get people familiar with the generic functions like the merged ones which they can re-use for many study-specific purposes.

@rossfarrugia , I think it is a good idea. But it is not so easy to implement because it is not clear which functions are generic and which are targeted, e.g., how would you classify functions like derive_vars_dy(), derive_vars_duraton(), or derive_var_last_dose_date()?

yes you're right, might become subjective! i guess the vignettes and ADaM templates are always going to be the key then to helping people learn all our functions, as we cant expect everyone to read through all the reference page as part of their training/onboarding.

I did not mean that we shouldn't try to restructure the page such that the generic functions are easier to find. I just wanted to say that is is not obvious and we need some time to define clear classes of functions which enables the users to find quickly what they need. One class could be functions which add variables versus functions which create, add, or return observations.
I think the vignettes and templates are helpful if you need to implement the ADaM dataset they are describing. But if I need to implement a study or TA specific variable or parameter, I would not like to read through all the vignettes and templates to find a similar derivation.

yep agree, it definitely still needs a restructure but not how i was suggesting with specific vs generic functions. i like that idea about adding a variable vs adding/editing a record (which would include parameter functions). maybe we just need to try out a few ways to categorise these and throw it past our team for a sanity check. there's probably no perfect way, but i like your angle of thinking to try out

How about categorizing by how many times they appear across typical specs.  For example, ADY appears across many different datasets, but R2ANRLO only appears in ADLB.
So...specific versus generic would still be helpful.  Maybe instead of generic there would a tag like common-add vars and common-add obs and then a specific-add vars and specific-add vars
common-add vars - Variable derivation appears in 2 or more datasets across typical specs
common-add obs - Observation derivation appears in 2 or more datasets across typical specs
specific-add vars - Variable derivation appears in 2 or less datasets across typical specs
specific-add obs - Observation derivation appears in 2 or less datasets across typical specs
Not beholden to my ingenious naming scheme.

hmm... you'd lose the benefit then of having them alphabetised which is actually really useful when you know the function name you're looking for and just want to scroll down to it. i'm personally more in favour of Stefan's proposal of categorising by similar behaviour (and then alphabetising). probably a good discussion for our call tomorrow!

I end up using the search bar or doing a control+f to search for finding functions, but yes we would lose the alphabetised reference if we go my way.
However, I'm a bit more interested in this as I have yet to use derive_derive_param (first function on the current list), but have used derive_var_ady, derive_vars_merged_dtm across multiple datasets.  I would imagine these would be typical derivations that new comers would like to see.
Yes!  Good topic for meeting tomorrow!!

Using @family and meta.R looks promising.

I've been playing around with the families.  Here are some examples that could appear in our documentation.  You can mess with the meta.R file to make the text a little nicer on the eyes - Hence the :

You can see I have 4 families that I have created:

Date/Time Functions
Common BDS Functions
Utilities for Dataset Checking
Utilities for Filtering Observations

In no way are these set in stone!
Other family candidates could be:

Utilities for Observation
Utilities for Formatting
Utilities for Units
Common Flag Variable Derivations

Suggestion for others?

We should also think about if and how deprecated functions are listed (see https://github.com/pharmaverse/admiral/issues/1262).

Hi all,
I've been coming up with more families.  I'm just flailing in the wind here - so don't hesitate to be critical of my themes.
Thinking that we should split out families for compute and derivations.  For example, compute functions for common bds would be grouped together and derive functions for common bds would be grouped together.  This way a user looking at the function derive_var_analysis_ratio would see other bds findings function grouped in the documetation like derive_param_qtc and derive_param_wbc_abs.

Definitely agree to keep compute and derive functions separate in the list @bms63 as its important newcomers understand the different behaviour. we had this question a lot in the external testing.

All these families make sense to me. It seems that the families are combinations of existing or not yet existing keywords. For example, the com_date_time family includes all functions with keywords computation and timing.
I am a bit concerned regarding the burden for keeping the families and keywords consistent and up to date.
I wonder if we could automate it partially. For example we could add the @keywords tag to the header but not the @family tag. If the documentation is rendered, a "Related Functions" section is added. It lists all functions with the keywords from the @keywords tag. The keywords for listing the functions could be modified by the user. For example, if we have @keywords computation timing, the user could deactivate the computation keyword to display all timing related functions.
With this approach we would need to maintain the keywords only. And the users could decide which famlies (= combination of keywords) are useful for them.
As a user and developer I would like this approach but I am not sure if it is technically possible.
What do you think?

umpf... @bundfussr sounds amazing but way beyond my paltry skills!
So keywords are for helping with organizing the reference section.  I'm actually learning towards just one keyword per function.  This way we can do starts_with(computation) and it only appears once.  However, I think keywords also need an update as it would be nice to separate the reference section with one keywords so starts_with(computation) would be starts_with(com_date_time) and then the family would be com_date_time.  So a developer only has to use the same keyword and family for their function.
This would mean that compute functions dealing with date/time would be organized nicely on the reference page and the individual documentation would link out to similar functions within the family.
The rate of adding new admiral functions has decreased a lot.  I think have some way to extract the keywords and families and have a high-level overview will be really helpful.  I have some code to do this now...so hopefully we stay on top of this.  Perhaps add it to the CRAN checklist.

Here is deprecated section of the reference page.  These will have to have keywords deprecated and will need to be part of our deprecation guidance .  I will update the programming strategy.

Updated Deprecation Guidance in programming strategy

@bms63 , I am not sure what you mean by "just one keyword per function". Do you want to list all derivations in the "Derivations" section and nowhere else? For example, derive_param_bmi() would be listed in "Derivations" but not in "ADVS"?

I'm leaning towards that so it  just make the reference page not so verbose.  But im open to suggestions.

Here is example of date/time derivations and computations listed directly on reference page as seen on first image.  Once you you click on, for example derive_vars_dt, in the See Also section you can see similar functions for date/time derivations.

@morrishj  I'm working in this branch if you want to see what I've been tweaking https://github.com/pharmaverse/admiral/tree/1105_restructure_docs

Okay!  Phew...this is tedious.  Definitely earning my ration of alcohol this weekend.
Got some more themes going on here on the right side of the Reference page.
The @keywords make it easy to group functions on the reference page.  I think we should only do one keyword as having it listed multiple times on the same page is confusing - at least for me.  If a user goes to the function docs and doesn't like what they see, then in the @family will list out additional functions for them.

The @family make it easy to list out all the functions grouped on the references page that a user might like on a specific function page.
I'm happy with the Functions moved to another pharmaverse package section :)

We can also still use @seealso to help with a user that might need a very specific function reference

@bms63 , I am not sure if the new structure works. I think the main issue is that the new sections are not mutually exclusive but each function is listed only once. For example, derivat_var_trtdur() is listed in "Derivations for Date/Time Variables", which makes sense. However, it is also a standard ADSL derivation but it is not listed in "Derivations for ADSL". So users may miss it if they look in "Derivations for ADSL" only.

HI all.  I managed to fork admiral and republish the website on my own repository.  Hoping this can help to spur discussion on rework of the reference page.
Lots of mis-spellings and unfurnished pieces but nice to have something to look at and try out.  It is actually kind of cool as I can work in admiral branch 1105_restrucutre_docs and then fetch my updates in my repo and republish the site from my repo.  This way people don't have to run things locally or I have to post screen shots of proposals.
https://bms63.github.io/admiral/main/reference/index.html

Thanks @bms63 - helps to have something to play around with and explore. I like the new direction, but here would be my suggested simpler wordings with any new categories in bold. Generally I feel like less is more with sub-categories as the more we add the harder it will be to maintain and you'd have difficult decisions like I could put this function in multiple (to Stefan's point above)

Derivations for adding variables

All ADaMs (would include Date/Time)
ADSL-specific
BDS-specific
OCCDS-specific

Derivations for adding parameters

BDS-specific
TTE-specific

Advanced Functions

Higher Order
Metadata
Other

Computation Functions for Vectors

All ADaMs
BDS-specific

Utilities (I would remove all the sub-categories here)
Example Datasets
Relocated/Depracated

I didn't correct any spellings above as trust you'll get these later :) happy to be over-ruled on the above but having played around with your reference page, I think this might be simpler!

Not purposeful.  will update

Really looks nice.
Some comments and initial thoughts:

advanced functions - should we add a bit more detail what this means? I don't want to add a lot of documentation in addition, but I wonder if it is clear for new users what "advanced functions" could mean. Basically one or two bullets that summarize what advanced functions purpose is and why these been created? (i.e. not ADaM dataset specific, higher order functions functions to slide, restrict datasets to apply calculations on selected data onyl ...) .

I think this is a good idea.  I would like to link out to vignettes that deal with these functions as they are slightly mysterious to me as well!!

I wonder if the computation functions for BDS should be in the BDS section? I know they differ from the create a param/variable in BDS but somehow it might be easier if the users see all BDS functions in one place?

Users have reported confusion around these derivation and compute functions being together in the past and not knowing which one to use.  I think keeping them separate should be the way forward.

Relocated functions - could we add where these been relocated to? Or is that too much maintenance?

I put a blurb in about assertion and other functions moving to admiraldev.  Hopefully can link the admiraldev site when that comes online.  I think this will be a wee bit of hassle for us to maintain but a really nice to have as we move things around between our different packages.  Also helps us developers keep a eye on what is in what package!

Deprecated function - could we already add what they will be replaced with? Or is that too much maintenance?

The deprecated function has that type of information in it when you run it.  I think this might be a bit of a hassle to write into the website - not entirely sure how that would be done.

Thanks a lot @bms63 for re-structuring this. I still remember I had this as an first issue to think about a structure/categories before your time :) Now it seems to come into place quite nicely.

:)

Hi all,
So I'm making an editorial decision here.
I want the @keywords and @family to be identical and for there only to be one entry for both.   This makes development and maintenance way simpler and makes it so our developers don't use multiple keywords for a function that sometimes don't make sense (or make up their own!)
I've updated the https://bms63.github.io/admiral/main/articles/programming_strategy.html#categorization-of-functions to reflect my decision on this issue.
I've also listed out the only keywords and families available to developers in this section.  We can add to this list as needed or clarify in the description.  I might need some word-smithing help here.
So...
A developer making a new function needs to decide what keyword/family their functions fits into OR ask for a new keyword/family to be created.  Once they add this keyword/family (from the proscribed list), then their function will be added into both the relevant Reference Section and the See Also section of related family of functions.

Also,
I extracted all the keyword/family combos and placed in Extraction July-11 if if you are interested in the keyword/family combos for each function.
https://exbpbox.box.com/s/aj6t1c2tokoxs0g2a7in1yu7ioy136gk

See #688


dogs？

Are you the running dogs of the United States? As a technical party, why do you stand in line

https://github.com/reactjs/reactjs.org/issues/4433#issuecomment-1060759889


Sort out image blobs in the repo

It'd widely known that having blobs in the Git tree is harmful in general (because of Git's design).
/asset/molecule.png and /doc/source/_static/logo.png are the same file duplicated in the repo.
/asset/mollie.png is used nowhere.
*.psd files are big blobs.
This can be improved:

Don't keep duplicates in the repo
Use SVG for web pages
Try to check whether there's any useful metadata in those Photoshop sources; If not, having an image in vector format should be more than enough. If yes, it should be mostly possible to extract that metadata and put into SVG files.
Eliminate PNG in favor of SVG (which are XML documents essentially == text which is Git-friendly)

Issue Type

Bug report

Molecule and Ansible details
N/A
Molecule installation method (one of):
N/A
Ansible installation method (one of):
N/A
Detail any linters or test runners used:
N/A
Desired Behavior
No blobs in Git tree.
Actual Behaviour
Blobs in Git tree.

Short of a full history rewrite these blobs will remain anyways.

@MarkusTeufelberger yes, but I'm not advocating for the rewrite. Those things are not needed in the dev checkout + they are not needed in dists. This will also allow us to remove MANIFEST.in which I had to add because current artifact tracking relies on Git-tracked files.
Also, when the need arises to change those artifacts, each change will generate megabytes of the Git tree growth which won't happen with text content.


wasm: implements strictSandbox for output binding and HTTP middleware

Description
This implements strictSandbox as an optional configuration for our two wasm features: output binding and HTTP middleware.
When enabled, this uses fake sources of system data, deterministic with the exception of walltime.
Issue reference
https://github.com/dapr/dapr/issues/6422
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

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

ok @Taction @ItalyPaleAle if you like this approach I will backfill tests on the fake'ish clock.

@Taction seems this can wait until your draft PR upstream? then no need for separate PRs or should we merge this first?

@codefromthecrypt this pr should be merged first, but should be after deciding how to pass strictSandbox configuration.
My upstream pr passes the configuration via context, which could also probably be passed by metadata. So waiting for dapr maintainers who may have ideas on that. If the current draft pr is accepted, there will need some small changes to this pr(mainly about how to get the configuration).

ok I will clean this up for merge. thanks for the advice @Taction!

next step:

create internal/wasm/testdata/strict/main.go that hits all of these functions and compile with tinygo
add TestNewModuleConfig to internal/wasm/wasm_test.go and make the following 2 tests:

when strict the output is deterministic except wall time.

For example, using the random source twice should return the same value.

when not strict the output of running testdata/strict/main.wasm is not-deterministic at all.

Once that's done we should be good. If I don't have this by monday, please nag me!

ok I added the tests, so ready for real review I think. Thanks for the patience.

I also rebuilt all the wasm with the latest TinyGo 0.28.1. The more important release notes are on 0.28 which is mostly about portability with libraries like encoding/json.

@codefromthecrypt it seems that the added unit test is not working on Windows, where it fails 100% of the time. The reported duration is always 0: https://github.com/dapr/components-contrib/actions/runs/5754171576/job/15598923556
Any thoughts?

Thanks for the fix!
btw to you think maybe we could still enforce a minimum on Linux but not windows?

btw to you think maybe we could still enforce a minimum on Linux but not windows?

We could, but it isn't high signal I think. Basically, we are testing it takes "some time" to sleep ;) Happy either way. If we want to test on non-windows, I would set the test time based on runtime.GOOS != "windows"

btw to you think maybe we could still enforce a minimum on Linux but not windows?

We could, but it isn't high signal I think. Basically, we are testing it takes "some time" to sleep ;) Happy either way. If we want to test on non-windows, I would set the test time based on runtime.GOOS != "windows"

I think you're right, it's not very useful signal.


SSH keys with nil location can't be renamed

lib/tasks/rename_ssh_keys.rake: Use empty string if location is nil.

Thank you!


SDK and workflow for error codes

How this works

Error codes are generated as 3th job due to additional timing needed for QA to pickup error updates.
Error codes are generated only on API change due to fact that we agreed with teams to change openapi when errors are changed. This is simpler rather than constraining team to have all errors in the single file.
Once Job is triggered we fetch all APIs

Notes
COS api is not on stage yet but I have added it manually to provide early support.
Solution provided is dedicated to this SDK. Other SDKS will use different patterns.
Verification
Will work with @riccardo-forina to replace existing error codes and use SDK once merged.

I need to add error handling to examples

Will wait for @craicoverflow review and integrate that with kas-ui

Merging so I can do proper release. Already tested it with UI


Some cleanups, and fix for span warnings on own requests

Fixes #4.

LGTM. I pointed out a few other potential constants but they don't need to go in right now.


feat(datagrid): added feature to control number of skeleton rows

Contributes to #4750
isFetching prop now accepts a number and a boolean.
if its boolean and true, it shows 3 row skeletons by default.
if it is a number, it shows the number of row skeletons.
What did you change?
packages/ibm-products/src/components/Datagrid/Datagrid/DatagridContent.js
packages/ibm-products/src/components/Datagrid/useSkeletonRows.js
How did you test and verify your work?
in Datagrid.stories.js at Skeleton story, i have set the isFetching prop to true, false, 0, n where n is any number after 0, and got below results.
true -> 3 skeletons
false -> empty state
0 -> empty state
n -> n number of skeletons

i need a second opinion on this 🤔🤔

docs not updated yet.

Thanks for the review @elycheea the updates are made.


Color Capabilities

In Alexa app, I am seeing Color device has both Color Capabilities.  So current implementation support Colors device, but it includes both color capabilities. This should be separated to:

Color device only (COLORS: RBG control)
Color Temperature device (SHADES OF WHITE:Warm white, Soft white, White, Daylight white, Cool white)
Color device &  Color Temperature device (current implementation)

Most general LED lighting products support color temperature change only. RGB control is for special lighting purpose only and the use is not that many. (I am working in lighting field, so I know this well)
So please add at least one device type for color temperature control only.

I will add that as soon as I have time :)

I listed three types of devices above. But according to Google Smart Home Light Guide, it is better to follow this as it reflects real LED lighting products in market.
Smart Home Light Guide

action.devices.traits.OnOff
action.devices.traits.Brightness
action.devices.traits.ColorSpectrum
action.devices.traits.ColorTemperature

I do not know if Hue has all of the above. But it is nice to have these 4 types because some LED light can be on or off without dimming capability (type 1).

I think I'll add these (the types are directly pulled from the API response of my actal hue bridge):

"On/Off plug-in unit"
"Dimmable light"
"Color temperature light"
"Extended color light"
and maybe "Color light" (I'm not actually sure this exists, but it would be a color device that doesn't support white shades)

These are perfect!
My works include LED light designs, so I can tell Color Light usually does not have White Shades (Color temperature: cool, warm...) That is why Google treats them differently. (type 3 and type 4 above).
And a LED light with both type 3 and type 4 is hard to make! Just RGB lighting sources is not possible. Usually there must be white light sources for controlling white shades. I saw some stage lighting products make use of WRGB at the same time.

The new types are now added as of v2.4.0!
Please note that I couldn't get color temperature support working on earlier gen Echo Dots.

Just read the changes. It looks good. I will have a test tomorrow.
Great thanks for the wonderful works!

@Aircoookie Tested with ESP32 module firstly. Most work but not the Alpha device. The device type is wrong and its type is "other", not "light", so there is no way to control On/Off on Alexa app (no on/off button there). And Alpha is not in Light group.
The rest of four devices work well. I think it is a small bug and I will wait for the fix before testing with ESP8266.

@eos1d3 sounds good so far! Yes, I'm aware of the alpha device issue. Philips does not sell hue products which don't support brightness adjustment so the JSON for it is a bit made up (I'm using a similar JSON to the OSRAM smart plug, which is supported by hue and shows up as a non-dimmable light to alexa with the hue bridge). I'll try to change it a little more so that it is actually controllable from the app (because with voice it works, ON/OFF as expected and trying to set % returns "Device doesn't support that value" as expected)

Osram smart plug is recognized as lighting device in Alexa? It is funny.
I think it is acceptable if there is no non-dimmable light option. With application using Alexa, I also believe no one will make a non-dimmable  lighting device, like what Phillips does. Please just try to see if Alexa can recognize it properly.
Off topic: This library is really good and easy to use. Is there a way to make temperature or humidity sensor with Alexa easily with local API? So we can ask what is the room temperature or humidity?


Update tonic and prost dependencies respectively to 0.8.x and 0.11.x

This is a repeat of PR #4 for tonic 0.8 and prost 0.11.

Maybe @jorgecarleitao can take a look at this? This issue blocks the databend from directly depending on arrow-format.

Thanks!

Released to Cargo as 0.8.0 :)

Released to Cargo as 0.8.0 :)

Thanks a lot!


Typescript imports with ".js" file extension are failing.

Describe the bug
Importing from a Typescript file by referencing it with a ".js" file extension is failing with the error below. It is my understanding that it should work (based on looking at #5510).
To reproduce, clone the repository provided, run pnpm install and pnpm run dev.
This is a VueJS project, but after sitting in front of this bug report for a long time and agonising over the question, I think it is probably a Vite bug and not a vuejs/core bug. That, or I am making an elementary mistake (sorry).
22:36:26 [vite] Internal server error: Failed to resolve import "../constructors.js" from "src/components/Example.vue". Does the file exist?
  Plugin: vite:import-analysis
  File: /home/redacted/redacted/vite-bug-report/vite-bug-report/src/components/Example.vue
  1  |  import { defineComponent as _defineComponent } from "vue";
  2  |  import { makeProfile } from "../constructors.js";
     |                               ^
  3  |  const _sfc_main = /* @__PURE__ */ _defineComponent({
  4  |    setup(__props, { expose }) {
      at formatError (/home/redacted/redacted/vite-bug-report/vite-bug-report/node_modules/.pnpm/vite@2.7.13/node_modules/vite/dist/node/chunks/dep-f5552faa.js:36769:46)
      at TransformContext.error (/home/redacted/redacted/vite-bug-report/vite-bug-report/node_modules/.pnpm/vite@2.7.13/node_modules/vite/dist/node/chunks/dep-f5552faa.js:36765:19)
      at normalizeUrl (/home/redacted/redacted/vite-bug-report/vite-bug-report/node_modules/.pnpm/vite@2.7.13/node_modules/vite/dist/node/chunks/dep-f5552faa.js:73703:26)
      at processTicksAndRejections (node:internal/process/task_queues:96:5)
      at async TransformContext.transform (/home/redacted/redacted/vite-bug-report/vite-bug-report/node_modules/.pnpm/vite@2.7.13/node_modules/vite/dist/node/chunks/dep-f5552faa.js:73843:57)
      at async Object.transform (/home/redacted/redacted/vite-bug-report/vite-bug-report/node_modules/.pnpm/vite@2.7.13/node_modules/vite/dist/node/chunks/dep-f5552faa.js:36985:30)
      at async doTransform (/home/redacted/redacted/vite-bug-report/vite-bug-report/node_modules/.pnpm/vite@2.7.13/node_modules/vite/dist/node/chunks/dep-f5552faa.js:52060:29) (x2)

Reproduction
https://github.com/dashavoo/vite-bug-report
System Info
System:
    OS: Linux 5.10 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
    CPU: (8) x64 Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
    Memory: 10.53 GB / 12.29 GB
    Container: Yes
    Shell: 5.1.4 - /bin/bash
  Binaries:
    Node: 16.13.1 - ~/.nvm/versions/node/v16.13.1/bin/node
    npm: 8.1.2 - ~/.nvm/versions/node/v16.13.1/bin/npm
  npmPackages:
    @vitejs/plugin-vue: 2 => 2.1.0
    vite: ^2.7.13 => 2.7.13

Used Package Manager
pnpm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to https://github.com/vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

As the report says, Does the file exist?
You could choice one solutions here:

Importing ../constructors or ../constructors.ts instead
Make sure running a tsc watch mode for compiling ../constructors.ts to ../constructors.js

@zheeeng I feel like I might be missing something here but: no, it doesn't exist, and if I understand the PR I linked above correctly (and also the corresponding issue #3040) it shouldn't need to.

Using ../constructors.ts instead results in complaints from the type checker and is (strangely) not the done thing in Typescript
Importing ../constructors works fine, and is the workaround I am already using

Interestingly, if I remove the import of the constructors file but keep the other import, it works fine. Maybe because it is just Types and Interfaces so it gets stripped altogether by that point?

So here's the reason: it's all about ESM support.
ESM imports need to end with a file extension. To support this in TypeScript, you can import other TS files using the .js extension in the import and TypeScript is smart enough to know that you really mean the .ts file. When it builds the output, all the imports have .js extensions and the files themselves are JS at that point.
common patterns look like:
import mod from './my-typescript-module.js' // source is .ts
import mod from './my-explicitly-commonjs-typescript-module.cjs' //source is .cts
import mod from './my-explicitly-esm-typescirpt-module.mjs' // source is .mts

Ahh, the workaround in #3040 works great

This comment seems to indicate that support for this feature has been shipped? I'm using v2.8.3 and this issue is still present.
https://github.com/vitejs/vite/issues/5539#issuecomment-960271520

The issue is because #5510 handles cases where the importer is a TS file, then it resolves the .js/.ts import. In this case, because the importer is a Vue file, Vite skips the import check hence the error. To fix this, we need to provide a hint somewhere so that we know it's imported from a TS code, and do the extra import checks.

The issue is because #5510 handles cases where the importer is a TS file only, then it resolves the .js/.ts import check. In this case, because the importer is a Vue file (not a TS file), Vite incorrectly skips the import check, hence the error. To fix this, we need to provide a hint somewhere so that Vite knows the Vue file is written in TS, and do the extra import checks.

it's also broken when used with typescript alias: tsconfig, vite config
Error:
Error: [vite]: Rollup failed to resolve import<EMAIL_ADDRESS>from "src/main.ts".
This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`

Project for reference: https://github.com/wight554/blog-template/ (doesn't containt nodenext changes)


Check installed conda-smithy against current feedstock conda-smithy

Is there metadata for this?

Not really. That's sort of intentional so as to avoid re-renderings that only update this metadata. Though we have tried to standardize commit messages from re-renderings. Maybe doing some git log parsing would solve this. Would recommend gitpython to make this easier.

OTOH one can just always run the re-render. Is there some reason not to?

No, not at all. It just seems ungainly to have the program update the version and then inadvertently revert the regenerated code.


Improve error message - Schema checks

This check works as expected:
checks for sodatest_customers_b7580920:
 - schema:
   warn:
    when required column missing: [sombrero]

soda scan -d local_postgres_sodasql -c ~/.soda/configuration.yaml -ch checks.yaml
Soda Core 0.0.1
Scan summary:
1/1 check WARNED:
  sodatest_customers_b7580920 in local_postgres_sodasql
   schema [WARNED]
    missing_column_names = [sombrero]
    schema_measured = [id character varying, size double precision, sizetxt character varying, distance integer, pct character varying, cat character varying, country character varying, zip character varying, email character varying, date date, ts timestamp without time zone, ts_with_tz timestamp with time zone]
Only 1 warning. 0 failure. 0 errors. 0 pass.

But when I purposely messed up my syntax by adding an errant when, the error message is misleading in pointing out what exactly is wrong. The colon in line 5 isn’t the problem, the aimless extra when is the issue. More precise error message?
checks for sodatest_customers_b7580920:
 - schema:
   warn:
    when
    when required column missing: [sombrero]

soda scan -d local_postgres_sodasql -c ~/.soda/configuration.yaml -ch checks.yaml
Soda Core 0.0.1
YAML syntax error
 | mapping values are not allowed here
 |  in "<unicode string>", line 5, column 37:
 |       when required column missing: [sombrero]
 |                     ^ (line: 5)
 | Stacktrace:
 | Traceback (most recent call last):
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/soda_core/soda_core/common/parser.py", line 65, in _parse_yaml_str
 |   file_dict = yaml.load(yaml_str)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/main.py", line 434, in load
 |   return constructor.get_single_data()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/constructor.py", line 119, in get_single_data
 |   node = self.composer.get_single_node()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 76, in get_single_node
 |   document = self.compose_document()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 99, in compose_document
 |   node = self.compose_node(None, None)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 143, in compose_node
 |   node = self.compose_mapping_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 223, in compose_mapping_node
 |   item_value = self.compose_node(node, item_key)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 141, in compose_node
 |   node = self.compose_sequence_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 185, in compose_sequence_node
 |   node.value.append(self.compose_node(node, index))
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 143, in compose_node
 |   node = self.compose_mapping_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 223, in compose_mapping_node
 |   item_value = self.compose_node(node, item_key)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 143, in compose_node
 |   node = self.compose_mapping_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 223, in compose_mapping_node
 |   item_value = self.compose_node(node, item_key)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 113, in compose_node
 |   if self.parser.check_event(AliasEvent):
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/parser.py", line 146, in check_event
 |   self.current_event = self.state()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/parser.py", line 629, in parse_block_mapping_value
 |   if self.scanner.check_token(ValueToken):
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 1796, in check_token
 |   self._gather_comments()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 1838, in _gather_comments
 |   self.fetch_more_tokens()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 288, in fetch_more_tokens
 |   return self.fetch_value()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 657, in fetch_value
 |   raise ScannerError(
 | ruamel.yaml.scanner.ScannerError: mapping values are not allowed here
 |  in "<unicode string>", line 5, column 37:
 |       when required column missing: [sombrero]
 |                     ^ (line: 5)

 +-> line=5,col=37 in checks.yaml
Scan summary:
1 errors.
Oops! 1 error. 0 failures. 0 warnings. 0 pass.
ERRORS:
YAML syntax error
 | mapping values are not allowed here
 |  in "<unicode string>", line 5, column 37:
 |       when required column missing: [sombrero]
 |                     ^ (line: 5)
 | Stacktrace:
 | Traceback (most recent call last):
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/soda_core/soda_core/common/parser.py", line 65, in _parse_yaml_str
 |   file_dict = yaml.load(yaml_str)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/main.py", line 434, in load
 |   return constructor.get_single_data()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/constructor.py", line 119, in get_single_data
 |   node = self.composer.get_single_node()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 76, in get_single_node
 |   document = self.compose_document()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 99, in compose_document
 |   node = self.compose_node(None, None)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 143, in compose_node
 |   node = self.compose_mapping_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 223, in compose_mapping_node
 |   item_value = self.compose_node(node, item_key)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 141, in compose_node
 |   node = self.compose_sequence_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 185, in compose_sequence_node
 |   node.value.append(self.compose_node(node, index))
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 143, in compose_node
 |   node = self.compose_mapping_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 223, in compose_mapping_node
 |   item_value = self.compose_node(node, item_key)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 143, in compose_node
 |   node = self.compose_mapping_node(anchor)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 223, in compose_mapping_node
 |   item_value = self.compose_node(node, item_key)
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/composer.py", line 113, in compose_node
 |   if self.parser.check_event(AliasEvent):
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/parser.py", line 146, in check_event
 |   self.current_event = self.state()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/parser.py", line 629, in parse_block_mapping_value
 |   if self.scanner.check_token(ValueToken):
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 1796, in check_token
 |   self._gather_comments()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 1838, in _gather_comments
 |   self.fetch_more_tokens()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 288, in fetch_more_tokens
 |   return self.fetch_value()
 |  File "/Users/Janet/Documents/GitHub/soda-sql-v3/.venv/lib/python3.8/site-packages/ruamel/yaml/scanner.py", line 657, in fetch_value
 |   raise ScannerError(
 | ruamel.yaml.scanner.ScannerError: mapping values are not allowed here
 |  in "<unicode string>", line 5, column 37:
 |       when required column missing: [sombrero]
 |                     ^ (line: 5)

 +-> line=5,col=37 in checks.yaml

@vijaykiran closing this as it's a minor compared to all the work we still have ahead.  If you want to keep this, then I suggest you create a skipped unit test that produces this error and create a ticket on the backlog referring to that unit test.  The logs and error handling will change anyways.  So we ll have to see after that refactoring if this still produces a bad error messsage


refactored to allow return values

Here is an update to External Modules that supports return values.  It takes the approach that the last one wins.   Also, if there are return values from both EM hooks and 'non-em' function-based hooks, it takes the approach that the function-based hook wins.  This is debatable, but for now it is a start.  If we wanted we could try to allow multiple return values and handle the processing on the actual hook functions, but that seems like a leap when we don't have a good use case.
One issue that needs resolve is the exitAfterHook call.  Currently, if a hook has 'exitAfterHook' enabled, it happens before the return value is sent.  I'm guessing this may be okay as how can you process a return value AND exit after hook?  Seems a little hard.
If two EMs try to return a value for the same hook, it will throw a warning email to the admins, something like:
[This message was automatically generated by REDCap]

2 return values were generated from hook custom_verify_username by the following external modules:

1 admin_ninja: {"status":false,"0":"message","1":"SOMETHING ELSE"}
1 username_verification: {"status":false,"message":"The specified SUNet ID, asdfsadfsa<\/u><\/b>, does not appear to be valid.

 Many users have email aliases (e.g<EMAIL_ADDRESS>where the email prefix is not the same as their SUNet ID. A SUNet ID should be 8 characters or less without any periods or hyphens.

Try searching the
Stanford Directory<\/b><\/div><\/a> or contact your collaborator to obtain their SUNet ID."}
Only the last result from username_verification value will be returned to REDCap for processing by the hook function. Consider disabling or refactoring the other external modules so this does not occur.

URL: http://localhost/redcap_v8.9.3/UserRights/edit_user.php?pid=21
Server: localhost (2db2d4c7bc82)
User: andy123

It also requires an update to the Hooks.php class in REDCap.
	// Call a REDCap Hook function
	public static function call($function_name, $params=array())
	{
		// If not a real hook method in this class, then return
		if (!method_exists(__CLASS__, $function_name)) return false;

		// Call External Modules method before calling the native hook in the hook functions file
		if (defined("APP_PATH_EXTMOD")) {
			$em_result = \ExternalModules\ExternalModules::callHook($function_name, $params);
		}

		// Evaluate hook from hook_functions.php file if present
		if (function_exists($function_name)) {
			// Call the hook function
			$func_result = call_user_func_array($function_name, $params);
		}

		// We have to decide how to handle collisions where both the EM AND the hook function return a value
		// For now, I'll let the local function override the EM as any local hook function has to be
		// explicitly set up by the owner of the redcap instance
		$result = !empty($em_result)   && is_array($em_result)   ? $em_result   : false;
		$result = !empty($func_result) && is_array($func_result) ? $func_result : $result;

		// Call the appropriate method to process the return values, then return anything returned by the custom function
		return call_user_func_array(__CLASS__ . '::' . $function_name, array($result));
	}

While we are at it, I'd like to also do a minor update to the redcap_custom_verify_username hook:
	public static function redcap_custom_verify_username($result)
	{
		// If a message is returned, then output the message in a colored div
		if (isset($result['message']) && !empty($result['message'])) {
			// Set the color for the message based on the status
			$colorClass = $result['status'] ? 'green' : 'red';
			print RCView::div(array('class'=>$colorClass, 'style'=>'margin:10px 0;'), $result['message']);

			// If status is FALSE, then stop script execution
			if (isset($result['status']) && ($result['status'] === false)) exit;
		}
		// Don't return anything
	}

thx!

I just sent a REDCap core PR request to Rob.  I decided to make some tweaks to the call() function before sending it over, the biggest one being that I changed it back to returning false when there are no return values (rather than passing false to call_user_func_array()).  I don't think that changes anything for your needs:
// Call a REDCap Hook function
public static function call($function_name, $params=array())
{
	// If not a real hook method in this class, then return
	if (!method_exists(__CLASS__, $function_name)) return false;

	// Call External Modules method before calling the native hook in the hook functions file
	if (defined("APP_PATH_EXTMOD")) {
		$result = \ExternalModules\ExternalModules::callHook($function_name, $params);
	}

	// Evaluate hook from hook_functions.php file if present
	if (function_exists($function_name)) {
		// Call the hook function
		$func_result = call_user_func_array($function_name, $params);
		if($func_result){
			// We have to decide how to handle collisions where both the EM AND the hook function return a value
			// For now, I'll let the local function override the EM as any local hook function has to be
			// explicitly set up by the owner of the redcap instance
			$result = $func_result;
		}
	}

	// If an array is not returned, then return
	if (!is_array($result)) return false;

	// Call the appropriate method to process the return values, then return anything returned by the custom function
	return call_user_func_array(__CLASS__ . '::' . $function_name, array($result));
}

Sounds fine - no need to call the function if there aren't any parameters (at least so far).
-A


"Upgrading pre 1.12" Android instructions causes Android crashes as written

my application was work as good with out any issues but after upgrade to flutter 1.12 form here
I'm facing a lot of issue with dependences like

MissingPluginException(No implementation found for method init on channel plugins.flutter.io/google_sign_in)

and also this issue with flutter_goolge_map

PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: plugins.flutter.io/google_maps E/flutter ( 8262): at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:91)

even the google map work with the same key on ios and android before upgrade
pubspec.yaml
dependencies:   flutter:     sdk: flutter   flutter_localizations:     sdk: flutter   cupertino_icons: ^0.1.2   flutter_local_notifications: ^0.8.4+3   cached_network_image: ^2.0.0-rc   intl: ^0.16.0   flutter_signin_button: ^1.0.0   provider: ^3.1.0+1   cloud_firestore: ^0.12.10+2   firebase_auth: ^0.14.0+5   firebase_messaging: ^6.0.2   firebase_dynamic_links: ^0.5.0+8   google_sign_in: ^4.0.11   google_maps_flutter: ^0.5.21+15   share: ^0.6.3+3   speech_to_text: ^0.7.0   flare_flutter: ^1.7.3   flutter_slidable: ^0.5.4   http: ^0.12.0+2   flutter_svg: ^0.15.0   flutter_sticky_header: ^0.4.0   shared_preferences: ^0.5.6   sqflite: ^1.2.0   argon_buttons_flutter: ^1.0.2   flutter_spinkit: ^4.1.1+1   flare_splash_screen: ^3.0.0   flutter_translate: ^1.5.7   flutter_background_geolocation: ^1.5.0   geolocator: ^5.1.5   in_app_purchase: ^0.2.2+4   background_fetch: ^0.4.0   not uses anymore   auto_size_text: ^2.1.0   jiffy: ^2.1.2   flutter_facebook_login: ^3.0.0   path: ^1.6.4   google_places_picker: ^2.0.2+2
androidManifest.xml

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="come.example.appid">

    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- Speech To Text configration -->
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <!-- Geolocator Configration Start -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- Geolocator Configration end -->
    <!-- Local Notification -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <!-- Local Notification -->

    <application
        tools:replace="android:label"
        android:label="appname"
        android:icon="@mipmap/launcher_icon">

        <!-- Google Maps -->
        <meta-data android:name="com.google.android.geo.API_KEY"
             android:value="APIKeyyyyyyyyyyyy-xxxxxxxx"/>

        <!-- Google Maps -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="@string/default_notification_channel_id"/>

        <!-- Facebook Configration Start -->
        <!-- <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"/> -->

        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />

        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">

            <!-- FCM Configration start -->
            <intent-filter>
                <action android:name="FLUTTER_NOTIFICATION_CLICK" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <!-- FCM Configration end -->

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
        <!-- Facebook Configration end -->

        <!-- Local Notification -->
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            </intent-filter>
        </receiver>

        <activity
            android:name="io.flutter.embedding.android.FlutterActivity"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">

            <!-- Specify that the launch screen should continue being displayed -->
            <!-- until Flutter renders its first frame. -->
            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@drawable/launch_background" />

            <!-- Theme to apply as soon as Flutter begins rendering frames -->
            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme"
                />

            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />

    </application>
</manifest>

and more than once like sqflite , flutter_facebook_login and google_places_picker , i did this instructor here.
https://github.com/flutter/flutter/issues/46807
but no fix still issues existed .
this photo for issue
https://ibb.co/qpCYgt2
flutter --version Flutter 1.12.13+hotfix.6 • channel unknown • unknown source Framework • revision 18cd7a3601 (2 weeks ago) • 2019-12-11 06:35:39 -0800 Engine • revision 2994f7e1e6 Tools • Dart 2.7.0
I'm trying on android 10 emulator and 9 on my Samsung device

I'm noticing when I display those plugins
flutter_facebook_login: ^3.0.0
google_places_picker: ^2.0.2+2
this issue disappears

MissingPluginException(No implementation found for method init on channel plugins.flutter.io/google_sign_in)

but this issue still exists

PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: plugins.flutter.io/google_maps

Hi @niypoo
please note that some 3rd party plugins might not be "1.12 ready",
you may open an issue in the dedicated github page of those plugins.
regardless you may want to run
flutter clean
flutter pub cache repair
If the issue persist w/ 1st party plugins
please provide your updated flutter run --verbose
thank you

I was facing same issue for my plugins on android. I inspect MainActivity.java and it looks like
`package xxx.xxxx.xxxxx;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity { }`
so I changed it to
`package xxx.xxxx.xxxxx;
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}`
and  flutter clean then deleted app from phone and build. that worked for me..

/cc @amirh @xster @blasten, it looks like in some cases plugins aren't being registered correctly in the new embedding, or the automatic registration isn't detecting what to do?
The workaround described in issuecomment-570498912 is a manual switch to the old embedding and previous plugin registration mechanism.

@xyzbilal Could you please explain how you ended up with the empty MainActivity class? The tool doesn't generate such file.

The fix for this has rolled into Flutter v1.14.6 (currently contained in the beta, dev, and master channels). Unfortunately it doesn't look like we'll be able to hotfix it so I'm going to close this since there isn't much more action to take here except wait for the fix to roll everywhere.

@mklim and @matthew-carroll  ... You are probably aware, but I noticed that google_maps_flutter v0.5.22 now has Support Android v2 embedding.
https://pub.dev/packages/google_maps_flutter#-changelog-tab-
As per my previous comment, I fixed my issues with google_maps_flutter but it is nice to see the support for v2 embedding appear in the release notes 😃 Hopefully other key packages affected that are still v1 embedding, either add v2 support or Flutter ```v1.14.6`` gets into stable soonish.
Thanks guys for continuing to work through this tricky issue and getting it fixed 👍😁

See https://github.com/flutter/flutter/projects/59. We should have done the majority already.

A bit confusing, as described here, we can actually delete the MainActivity.java/kt, but @xster  provide a solution which require MainActivity.java.

I have switched to the beta channel of Flutter and using the latest version of google maps plugin, and it seems I can hot reload the app with getting PlatformException, but looks like the maps fail to draw (blank white screen, with only Google logo display instead of the map) if the application is in the background for some time (over few hours) and brought to the foreground from the recent applications list.
The issue is still there, this ticket should be reopened and with high priority and its over few months old threads and there no solution in sight!


[Question] When ending the Pomodoro the softwave didn't having sound of reminder ?

💻 Environment

Platform: macOS
OS Version: macOS 10.14.6
Toggl Version: 7.4.1012
📒 Description

when I update toggl, sound of reminder  when I ending the Pomodoro work was disappeared. Then I search the preferences panel didn't find the voice configration, so the latest version in Mac is removing the sound of ending reminder

Hey,
Please find the Sound option in System Preference -> Notifications. Then finding TogglDesktop app in left panel and turn the sound ON.

We change the behavior of sound in the latest version to follow the System Sound config. I just tested on latest 7.4.1012 and it works well. I suppose that it's OFF by default.

in the Notifications，the last checkbox I was checked，but I try the one Pomodoro，but it didn't work


Name service in Open Liberty

@arun-gupta From the old PR:
Added three new profiles: wildfly for starting the service in Wildfly, openliberty for starting the service in Open Liberty, docker-openliberty for building a Docker image for Open Liberty.
To start the service in Wildfly as before, run:
mvn wildfly-swarm:run -P wildfly

To start the service in Open Liberty, run:
mvn install liberty:start-server -P openliberty

Just in case, run the clean goal when switching between runtimes.
New files:
The src/main/openliberty/config directory contains two files:

server.xml contains the server configuration. This is where you can enable various features in the server.
bootstrap.properties contains the runtime variables.

Justification for code changes:

Added a slash to the url pattern in the web.xml file as outlined in the servlet spec.

Open Liberty also requires the JavaEE JAX-RS, so hence the reason for adding javax.ws.rs-api dependency and separating the two JAX-RS versions into the two profiles.

Added the NameMessageBodyWriter class to getClasses() method in MyApplication.java so that its visible.

@yeekangc @evelinec @Emily-Jiang

Thank you @Kubik42 ! @arun-gupta let's get together next week to go through the changes. The PR demonstrates well that the app installed in Open Liberty or Wildfly swarm can work well in AWS.


[WIP] Roger tangos/python3

Make imports Python3 friendly
Add a few python3-isms
Reimplement/Refactor how ModelDB does Syncer Singletons

don't pass args to object.__new__. Use a __metaclass__ instead

Making the singletons python3 friendly

Pushed. I could do some more import cleanup if we think it’s worth it. The issue is that even if all of the tests pass, it’s still likely to break any user workflows.

Hey @mpvartak - The python tests were passing locally on my machine, but no longer are. I think it's due to an update from one of the requirements. Do you have a clue which one it would be? LMK, and then I'll freeze it at a previous version
======================================================================
ERROR: test_old_dataframe (testRandomSplitEvent.TestRandomSplitEvent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/sklearn/testRandomSplitEvent.py", line 37, in setUp
    X, y, train_size=0.7))
  File "/Users/arcarter/code/modeldb/client/python/modeldb/sklearn_native/ModelDbSyncer.py", line 258, in train_test_split_fn
    result = split_dfs[:len(split_dfs) / 2]
TypeError: slice indices must be integers or None or have an __index__ method

======================================================================
ERROR: test_random_split_event (testRandomSplitEvent.TestRandomSplitEvent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/sklearn/testRandomSplitEvent.py", line 37, in setUp
    X, y, train_size=0.7))
  File "/Users/arcarter/code/modeldb/client/python/modeldb/sklearn_native/ModelDbSyncer.py", line 258, in train_test_split_fn
    result = split_dfs[:len(split_dfs) / 2]
TypeError: slice indices must be integers or None or have an __index__ method

======================================================================
ERROR: test_split_dataframes (testRandomSplitEvent.TestRandomSplitEvent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/sklearn/testRandomSplitEvent.py", line 37, in setUp
    X, y, train_size=0.7))
  File "/Users/arcarter/code/modeldb/client/python/modeldb/sklearn_native/ModelDbSyncer.py", line 258, in train_test_split_fn
    result = split_dfs[:len(split_dfs) / 2]
TypeError: slice indices must be integers or None or have an __index__ method

======================================================================
FAIL: test_transformer_spec (testFitEvent.TestFitEvent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/sklearn/testFitEvent.py", line 73, in test_transformer_spec
    utils.is_equal_transformer_spec(spec, expected_spec, self)
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/utils.py", line 157, in is_equal_transformer_spec
    spec2.hyperparameters[i].name)
AssertionError: 'n_jobs' != 'copy_X'
- n_jobs
+ copy_X

======================================================================
FAIL: test_overall_pipeline_fit_event (testPipelineEvent.TestPipelineEvent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/sklearn/testPipelineEvent.py", line 107, in test_overall_pipeline_fit_event
    utils.is_equal_transformer_spec(spec, expected_spec, self)
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/utils.py", line 157, in is_equal_transformer_spec
    spec2.hyperparameters[i].name)
AssertionError: 'pca__whiten' != 'logistic__n_jobs'
- pca__whiten
+ logistic__n_jobs

======================================================================
FAIL: test_pipeline_second_fit_stage (testPipelineEvent.TestPipelineEvent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/sklearn/testPipelineEvent.py", line 188, in test_pipeline_second_fit_stage
    utils.is_equal_transformer_spec(spec, expected_spec, self)
  File "/Users/arcarter/code/modeldb/client/python/modeldb/tests/utils.py", line 157, in is_equal_transformer_spec
    spec2.hyperparameters[i].name)
AssertionError: 'n_jobs' != 'copy_X'
- n_jobs
+ copy_X

Travis is continuing to choke on the PR. It's unclear why. One of the failures was with TestPipelineEvent, which almost makes sense. The other errors have all been with sudo make thrift, which is code that hasn't changed in a while, is identical to that on the branch, and passes on the branch.

It seems it's passing now @RogerTangos

Thanks for putting together a py3 version!
A couple notes I observed from trying to get this to work:
I think you need to add
if sys.version_info <= (3, 0):
    import ModelDbSyncer
else:
    from . import ModelDbSyncer

to SyncableMetrics.py and SyncableRandomMetric.py too.
Also, with the addition of the future package, you need to add that dependency to setup.py.

@eyadsibai ... Great! And I still have no idea why.
@justinanderson - with @gte620v 's changes, is this something you'd like to merge?

I'm not 100%, but I think I've resolved all of the remaining Python 2/3 issues.
If anyone wants to test this without checking out the code, I've uploaded a test distribution to PyPi. You can install it with:
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple modeldb


updating WORKSPACE for demo UI

This is just adding the necessary dependencies in bazel to get the Demo UI code working. This includes some kotlin tooling, grpc gateway dependencies, and React dependencies. The code will be added in follow up PRs.

This change is

@kungfucraig @SanjayVas OK, got through my bazel build and linting issues and it looks good now. Ran into what I thought was an issue with the build taking a long time (~1.5 hrs), but that's because I changed a fundamental part of the WORKSPACE and GHA builds the cache basically from scratch. I'll keep an eye on this to make sure it's not an issue in the future.

WORKSPACE line 116 at r3 (raw file):
Previously, SanjayVas (Sanjay Vasandani) wrote…
Don't check in commented-out code.

Ah yeah, thanks. I was experimenting with removing some stuff and missed deleting this block.

WORKSPACE line 15 at r3 (raw file):
Previously, SanjayVas (Sanjay Vasandani) wrote…
Don't group these by what they're for. I know it's counter-intuitive, but you really want these organized by load order. Anything that's a direct repo dep (e.g. http_archive targets) go first. Something like:

common_jvm_repositories()
reporting_ui_repositories()
Things which load from the above repos
Things which load from the previous item
etc

I think I have that though, no?
Load the http_archive targets, then call load  and the methods based on dependency order. Or are you just suggesting I remove the comment blocks? I had those in case someone wanted to reorder the deps for some reason, but that could break the loading order.

WORKSPACE line 20 at r1 (raw file):
Previously, SanjayVas (Sanjay Vasandani) wrote…
Name it reporting_ui_repositories().

ok will do

build/reporting_ui/reporting_ui_deps.bzl line 23 at r3 (raw file):
Previously, SanjayVas (Sanjay Vasandani) wrote…
Don't define anything here that's already coming from somewhere else.
If you need to override the version of something that's included by e.g. common-jvm, do the version overriding there so we have consistent versions across all of our repos.

Ah OK. I'll double check all these.

build/reporting_ui/reporting_ui_deps.bzl line 23 at r3 (raw file):
Previously, bdomen-ggl wrote…
Ah OK. I'll double check all these.

OK I missed deleting these as well apparently

build/reporting_ui/go_repositories.bzl line 19 at r3 (raw file):
Previously, SanjayVas (Sanjay Vasandani) wrote…

I have grpc-gateway pulled as a binary from reporting ui deps (which makes the http_archive calls).

What I see is an http_archive of the grpc-gateway source code (e.g. https://github.com/grpc-ecosystem/grpc-gateway/archive/refs/tags/v2.15.0.tar.gz), rather than an http_file that just grabs a pre-compiled binary (e.g. https://github.com/grpc-ecosystem/grpc-gateway/releases/download/v2.15.2/protoc-gen-grpc-gateway-v2.15.2-linux-x86_64).
If you're just grabbing the binary and writing your own rule that calls protoc with that plugin binary then I don't think you need any of the Go dependencies for grpc-gateway.

Oh gotcha. I'll try to switch it out.
Unless I'm completely off base with my Bazel understanding and the people I talked to, grpc-gateway is basically just a protoc plugin as far as I can tell. Except it is only written for supporting Go backends. That's what the Go libraries are for. This was the only other example I could find with grpc-gateway + kotlin and the guy still made a gateway in Go. https://github.com/adetalhouet/flux
Example gateway: https://github.com/grpc-ecosystem/grpc-gateway/blob/main/examples/internal/gateway/gateway.go
Example pb dependency: https://github.com/grpc-ecosystem/grpc-gateway/blob/main/examples/internal/proto/oneofenum/BUILD.bazel#L12
Go api v2 BUILD definition: https://github.com/grpc-ecosystem/grpc-gateway/blob/main/BUILD.bazel#L33
If you don't want Go at all, I can scrap the grpc-gateway approach and write our own protoc call to build everything in Kotlin. That will take me quite a bit longer I think.