Allow to select system as preference for themes

Goal
Enable to select system as preference for themes.
As suggested in https://github.com/bestofjs/bestofjs/pull/285#pullrequestreview-2176239342
I also took poetic license to add a grow animation on the theme change, which uses view transitions if the browser being used supports them.
It also follows user preferences by avoiding the animation in case the user has prefers-reduced-motion set.
If the animation is not liked, the first commit can be considered.
How to test
As in the video.
Screenshots
https://github.com/user-attachments/assets/9e624f3d-9587-4e80-afee-71211195bc90

Hello @stefanofa thank you very much for going deep with the theme switcher topic 😄
And sorry again for the late reply, I'm working on a big migration of the backend and I missed this PR, shame on me!
The animation looks really cool in the video but I'm a bit worried by the complexity it adds to the codebase, considering users will probably not change the theme often (especially with this addition of the "system" option).
The previous animation was a simple one done with CSS and "stolen" from shadcn/ui but they went the same way as us, adding a "system" option and there is no more animation: https://ui.shadcn.com/
So I'd grateful if you could discard the second commit (including the changes in the lock file), thank you for your understanding! 🙏

Hey @michaelrambeau, I've reverted the second commit as requested, including the changes in the lock file. If there's anything else you need, feel free to let me know.

Thank you so much @stefanofa the feature is live!
And sorry again, I felt bad after having rejected the animation you crafted, using your right to the poetic license (I love that expression!)
Feel free to suggestion any other improvement, now that you are familiar with the codebase.
(and don't hesitate to join us on Discord if you have questions, it's a very quiet server 😅 )


Update goreleaser source (after next release)

This is a tracking issue just to cover updating Goreleaser's code to the latest version, as it includes fixes like https://github.com/goreleaser/goreleaser/pull/4555

Looks like https://github.com/goreleaser/goreleaser/releases/tag/v1.24.0 is now the latest release - @christophwitzko is it documented how to do the updates? I'm happy to raise a PR!

I've tried with #8:

Checkout https://github.com/goreleaser/goreleaser/releases/tag/v1.24.0
Copy all files from :point_up: into goreleaser/

Hi @jamietanna,
thanks for looking into this. These are the following steps I perform to update the goreleaser depenceny:

Change the github.com/goreleaser/goreleaser version in the go.mod file
Run ./scripts/fork-goreleaser.sh
git add goreleaser and git commit

https://github.com/go-semantic-release/hooks-goreleaser/releases/tag/v1.10.0 contains now the GoReleaser v1.24.0

Thanks very much, that's good to know for the future :raised_hands:


recognize all contributors

This PR sets up All Contributors on the project so we can recognize contributions in all their various forms, not just commits.

Added the @allcontributors bot which we can use to add contributors directly from Issue and PR comments.
Added docs on how and we acknowledge contributions.
Added the folks from GitHub's Contributors page. There are more folks not on that list that we can add manually after this lands.
There's a CLI for adding contributors but we probably need it since we have the GitHub bot. We can add it later if needed.

Here's what it look like in the rendered README:

Wonderful!

@allcontributors please add @zeke for tool


Implement get_config_param and Fix issue with masterchain addresses

This PR introduces the following modifications to the library:

Implements the get_config_param function, enabling the retrieval of config cells and the reading of data from them.
Resolves a problematic implementation of store_address that affects masterchain addresses. The issue can be reproduced via the example provided.

use anyhow::{bail, Ok, Result};
use tonlib::address::TonAddress;
use tonlib::cell::CellBuilder;

fn test_address(addr_: &str) -> Result<()> {
    let addr = TonAddress::from_base64_url(addr_)?;
    let c = CellBuilder::new().store_address(&addr)?.build()?;
    let mut p = c.parser();
    let c_ = p.load_u8(2)?;
    let anycast = p.load_bit()?;
    let wc = p.load_u8(8)? as i8;
    let hash = p.load_uint(256)?;
    println!(
        "constructor: {}, anycast?: {}, wc: {}, hash: {}",
        c_, anycast, wc, hash
    );
    p = c.parser();
    let addr = p.load_address();
    if addr.is_err() {
        bail!("Couldn't load address");
    }
    if !addr.unwrap().to_base64_url().eq(addr_) {
        bail!("Serialized and deserialized addr don't match!");
    }
    Ok(())
}
fn main() -> Result<()> {
    // This is a normal addr (wc = 0) | Will work as expected
    let wc_addr = "EQATcgoK4eGMgackgnMF8aHUJLR0Pq_U0hzcmiwAhPbEMmw_";
    let r = test_address(wc_addr);
    assert!(r.is_ok());
    // This is a mc addr (wc = -1) | Will fail
    let mc_addr = "Ef8HujUcsUlU_vClVUnZRqHQfnhvrc8C241HOIqRL5XDe2P7";
    let r = test_address(mc_addr);
    r.unwrap();

    Ok(())
}

This code should ideally run without errors for both addresses. However, it fails for the second one, with unexpected changes in constructor and anycast flag values, as seen in the log:
constructor: 2, anycast?: false, wc: 0, hash:<PHONE_NUMBER>317782811755257230391905142775921687175506829826532924721519313970
constructor: 3, anycast?: true, wc: -1, hash:<PHONE_NUMBER>236973450600321995803361255911842138770757834326427501877748155259
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Couldn't load address', src/main.rs:35:7
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

A deeper look at the code reveals that the problem possibly arises from how wc is masked with 0xff but then stored as an i8, potentially causing issues due to sign bits. Adjusting the code to use store_u8 instead seems to fix the issue:
    /// Stores address without optimizing hole address
    pub fn store_raw_address(&mut self, val: &TonAddress) -> anyhow::Result<&mut Self> {
        self.store_u8(2, 0b10u8)?;
        self.store_bit(false)?;
        let wc = (val.workchain & 0xff) as i8;
        self.store_i8(8, wc)?;
        self.store_slice(&val.hash_part)?;
        Ok(self)
    }

Closing in favor of #16, which resolves merge conflict + squashed clean commits.


New plugin manager with native JDK code

Hi Andsel,
I have changed the plugin manager to a native JDK code.
You can find the code here
https://github.com/WilliamKinaan/moquette/tree/plugin_native
Could you check please before I made a pull request?
When you agree on the structure, i can add many plugins.
Many thanks in advance.
Best regards,

Hi William,
as I said before, I've already integrated the PR from Wagner to the master, so I don't intend to switch to another, so please if you want I review something, start from the current code base in the master.
Then when you modify files and want to contribute back, don't touch the complete indentation of a file (like in the ProtocolProcessor or Server in your branch) because understanding the diffs becomes really time wasting.
Please for any other discussion on funtionalities or architecture stuff that you want to discuss refer to the Google Group, this is an issue tracker not a chat.
I hope you could agree on these lines, many thanks
Andrea

Hi Andsel
I can open a discussion on Google group, but really there is no difference
in Server or Protocol classes, it is a very small difference, in the server
just one line code, and in the protocol class, just calling the methods,
it is a minimum changes as you wanted.
I hope we find something in common between us as we are doing efforts to
integrate our functionality into Moquette.
Regards
On Mon, Aug 10, 2015 at 9:23 PM, Andrea Selva<EMAIL_ADDRESS>wrote:

Closed #80 https://github.com/andsel/moquette/issues/80.
—
Reply to this email directly or view it on GitHub
https://github.com/andsel/moquette/issues/80#event-378423852.

--
William.


Memory leak issue

Issue
It might not be exactly be the memory leak but I thought this would be easiest to be understood. The issue is that when I ran DEG a few times against a dataset with a significant size, around 3GB to 8GB, it will consume a lot of memory and the program crashed because of out of memory issue. At the createData() and DEG(), it consumed memory significantly, which should be obvious to the writer I believe, when I profiled with memory-profiler.
I wonder if this issue would be fixed or not ?
The workaround I did right now is to modify the route() to fork a sub process to run the DEG() function and return only the result CSV back to the parent process. This way, the memory usage will be constant on the parent process when I tested with the following test case.
The test case's code
I uploaded the modified VIPInterface.py to pastebin, https://pastebin.pl/view/941d8988. The main changes are adding @profile on createData() and DEG() and to remove the dependency on the Flask app so it could be a self-contained testable code.
The test case body is as followed,
from server.common.config.app_config import AppConfig
from VIPInterface2 import route

@profile
def main():
    app_config = AppConfig()
    app_config.update_server_config(
        single_dataset__datapath='/datasets/datafile.h5ad',
    )
    # import pdb; pdb.set_trace()
    data = open('/datasets/data.json', 'rb').read()
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    res = route(data, app_config)
    # print(res)
    del res

if __name__ == "__main__":
    main()

The data.json is dataset dependent so I didn't include it in this issue, but it should be able to be captured from the browser.
Workaround code
This is the workaround that I did on route(),

from multiprocessing import Process, Queue

def runJob(q, data, appConfig):
  data = initialization(data,appConfig)
  try:
      taskRes = distributeTask(data["method"])(data)
      q.put([False, taskRes])
  except Exception as e:
    q.put([True, traceback.format_exc()])

def route(data,appConfig):
  q = Queue()
  p = Process(target=runJob, args=(q, data, appConfig,))
  try:
    getLock(jobLock)
    p.start()
    has_error, data = q.get()
    p.join()
    freeLock(jobLock)
    if has_error:
        return 'ERROR @server: '+data
    else:
        return data
  except Exception as e:
    freeLock(jobLock)
    return 'ERROR @server: '+traceback.format_exc() # 'ERROR @server: {}, {}'.format(type(e),str(e))
  #return distributeTask(data["method"])(data)

if you use "Welch's t-test (cellxgene)", will this memory issue happens?

@z5ouyang I forgot to mention which one I used. I used "Welch's t-test (diffxpy)" when I created this issue. The memory usage is like this,

I just tried with "Welch's t-test (cellxgene)", the memory usage is like this,

So "Welch's t-test (cellxgene)" didn't have the issue but only "Welch's t-test (diffxpy)".

@michaeleekk sorry for the delay, many projects. Do you mind to set up a pull request? thanks!

@z5ouyang I created #72 for this issue. Hope it helps !


Adds Java 21 and Node.js 20 LTS images

This pull request adds Java 21 (Eclipse Temurin) and Node.js 20 LTS images

Is it possible to merge this PR, or are there any pending tasks?


Consider replacing all Vecs with a singly-linked list (queue)

Specifically this one which allows efficient appending: https://rust-unofficial.github.io/too-many-lists/fifth-final.html

This has been more fleshed out in #122


I made a template for HP Color Laserjet CP1515n printer

I copied the existing CP2025dn template and modified it to match CP1515n, including changing all the relevant uuids in the yaml file. For the last point I wrote a python script to do those changes automatically.
This branch is made on top of the branch in this pull request, I will rebase this branch when that pull request is merged to main.

We wanted to thank you for your contribution to the development of the community, but we can't take your PR. Please, correct the directory structure.
Example:

template_name

\_5.0
|   \_template_<name>.xml
|   |_README.md
|   |_files
|       \_other_files
|       |_ ...
|_5.4
|   \_template_<name>.[xml,yaml,json]
|   |_README.md
|   |_files
|       \_other_files
|       |_ ...
|
|_...

All additional files: executable external check scripts, images, auxiliary utilities, third-party integration - must be moved to the "files" directory

The python script is not bound to this pull request at all and should not live inside template_hp_color_laserjet_cp1515n. I moved it out to a separate pull request.

It is very important that the version in the name of the catalog coincides with the actual version of the template. For example, in the 5.0 directory there must be a template for version 5.0.

What do you mean? The directory already follows exactly that structure:
$ tree template_hp_color_laserjet_cp1515n
template_hp_color_laserjet_cp1515n
├── 5.0
│   ├── README.md
│   └── template_hp_color_laserjet_cp1515n.xml
└── 5.4
    ├── README.md
    └── template_hp_color_laserjet_cp1515n.yaml
$

I have just re-tested importing and then exporting again against one 5.0 and one 5.4 server, and sans timestamp and space vs tab for indentation the exported files are the same as the files checked into git. I cannot see anything that is wrong or missing with these template files.

Yes, all right. Thanks for the integration.


Restrict checkstyle

Work on #24

Pull Request Test Coverage Report for Build 60

83 of 132 (62.88%) changed or added relevant lines in 26 files are covered.
3 unchanged lines in 2 files lost coverage.
Overall coverage increased (+3.5%) to 67.233%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/rfc5054/RFC5054TestVector_k.java
2
3
66.67%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/rfc5054/RFC5054TestVector_g.java
2
3
66.67%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/rfc5054/RFC5054TestVector_b.java
2
3
66.67%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/rfc5054/RFC5054TestVector_S.java
2
3
66.67%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/rfc5054/RFC5054TestVector_s.java
2
3
66.67%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/rfc5054/RFC5054TestVector_a.java
2
3
66.67%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/SRP6PrecomputedValue.java
11
13
84.62%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/SRP6SrvSesKey.java
3
6
50.0%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/SRP6SrvPubEphVal.java
3
6
50.0%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/SRP6ScrPar.java
8
11
72.73%

Files with Coverage Reduction
New Missed Lines
%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/util/hashing/DigestArgument.java
1
0.0%

wse-common/src/main/java/com/github/glusk2/wse/common/crypto/srp6/SRP6PrecomputedValue.java
2
84.62%

Totals

Change from base Build 37:
3.5%

Covered Lines:
277

Relevant Lines:
412

💛  - Coveralls


after running train.py it is showing Value-error y contains previously unseen labels:

I am following your YouTube series....and this happens in episode 1. I rechecked script 10 times. It is ditto same as yours.

fillna before doing this.

fillna before doing this.

But why your script is running in episode 1....you have written it from scratch, i was following that !!
What changes do i have to make to fillna ? do i have to write module by my own ? or you did it in some else script ??
Thanks

Done....now it's working properly. Thank you  sir


Behavior of learning rate decay

Currently, the learning rate decay happens after each iteration and the update rule is
lr = config.lr/(1 + args.lr_decay*step)

So, the learning rate of step 0 and 1 will be the same value config.lr.
Is this the expected behavior? Or, the following is correct
lr = config.lr/(1 + args.lr_decay*(step+1))

We don't know if this causes any significant differences but you can
check through experiments as part of the project
On 2020-03-22 11:13, djshen wrote:

Currently, the learning rate decay happens after each iteration and
the update rule is
lr = config.lr/(1 + args.lr_decay*step)
So, the learning rate of step 0 and 1 will be the same value
config.lr.
Is this the expected behavior? Or, the following is correct
lr = config.lr/(1 + args.lr_decay*(step+1))
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub [1], or unsubscribe
[2]. [ { "@context": "http://schema.org", "@type": "EmailMessage",
"potentialAction": { "@type": "ViewAction", "target":
"https://github.com/cjlin1/simpleNN/issues/3", "url":
"https://github.com/cjlin1/simpleNN/issues/3", "name": "View Issue" },
"description": "View this Issue on GitHub", "publisher": { "@type":
"Organization", "name": "GitHub", "url": "https://github.com" } } ]
Links:
[1] https://github.com/cjlin1/simpleNN/issues/3
[2]
https://github.com/notifications/unsubscribe-auth/ABI3BHTBNEU2VUMHVHKYOFLRIV65DANCNFSM4LREQZ3A

If I use tf.keras.optimizers.schedules.InverseTimeDecay in my code, I need to modify either simpleNN or TensorFlow to get "the same results".

The following is a simple example.
import tensorflow as tf

lr_init = 0.1
lr_decay = 0.1

lr_keras = tf.keras.optimizers.schedules.InverseTimeDecay(
        initial_learning_rate=lr_init,
        decay_steps=1,
        decay_rate=lr_decay)
lr_simplenn = lr_init

for step in range(11):
        # keras get the learning rate "before" a batch
        lr_keras_value = lr_keras(step)
        print('Step {:2d}: train one batch with lr_keras {:6f} and lr_simplenn {:6f}'.format(
                step, lr_keras_value, lr_simplenn))
        # simpleNN update the learning "after" a batch
        lr_simplenn = lr_init / (1 + lr_decay * step)

The output is
Step  0: train one batch with lr_keras 0.100000 and lr_simplenn 0.100000
Step  1: train one batch with lr_keras 0.090909 and lr_simplenn 0.100000
Step  2: train one batch with lr_keras 0.083333 and lr_simplenn 0.090909
Step  3: train one batch with lr_keras 0.076923 and lr_simplenn 0.083333
Step  4: train one batch with lr_keras 0.071429 and lr_simplenn 0.076923
Step  5: train one batch with lr_keras 0.066667 and lr_simplenn 0.071429
Step  6: train one batch with lr_keras 0.062500 and lr_simplenn 0.066667
Step  7: train one batch with lr_keras 0.058824 and lr_simplenn 0.062500
Step  8: train one batch with lr_keras 0.055556 and lr_simplenn 0.058824
Step  9: train one batch with lr_keras 0.052632 and lr_simplenn 0.055556
Step 10: train one batch with lr_keras 0.050000 and lr_simplenn 0.052632

If I change step to (step + 1) in the last line, the output will be
Step  0: train one batch with lr_keras 0.100000 and lr_simplenn 0.100000
Step  1: train one batch with lr_keras 0.090909 and lr_simplenn 0.090909
Step  2: train one batch with lr_keras 0.083333 and lr_simplenn 0.083333
Step  3: train one batch with lr_keras 0.076923 and lr_simplenn 0.076923
Step  4: train one batch with lr_keras 0.071429 and lr_simplenn 0.071429
Step  5: train one batch with lr_keras 0.066667 and lr_simplenn 0.066667
Step  6: train one batch with lr_keras 0.062500 and lr_simplenn 0.062500
Step  7: train one batch with lr_keras 0.058824 and lr_simplenn 0.058824
Step  8: train one batch with lr_keras 0.055556 and lr_simplenn 0.055556
Step  9: train one batch with lr_keras 0.052632 and lr_simplenn 0.052632
Step 10: train one batch with lr_keras 0.050000 and lr_simplenn 0.050000

With this modification, I can get exactly the same loss values between simpleNN and its keras counterpart, where I replace almost everything in simpleNN with tf.keras.


Update ElasticSearch to version 2.3.3

Current coverage is 20.15% (diff: 21.89%)

Merging #75 into master will decrease coverage by <.01%

@@             master        #75   diff @@
==========================================
  Files           591        592     +1
  Lines         15798      15804     +6
  Methods           0          0
  Messages          0          0
  Branches       1655       1658     +3
==========================================
  Hits           3186       3186
- Misses        12325      12331     +6
  Partials        287        287

Powered by Codecov. Last update a953022...98991c4

Note that this PR does not pass intergation tests for MetadataBackend because deletion is not implemented.

Closing in favor of #267


cleanco takes 8 seconds per execution of basename, types and countries

I have the following unit test running on my brand new (March, 2021) top of the line Macbook Pro with every bell and whistle:
import timeit
import numpy as np

def test_speed_get_cleanco() -> None:
    # First use timeit to find out how performant nameparser is
    setup_code = """from DeepDiscovery.oc.utils import get_cleanco

company_names = ["Apple, Inc.", "Filo Oy.", "Jim Jones Company", "Albert Goods, LLC", "Smithson Painting", "Chovak Lubil sk"] * 10
    """

    test_code = """
for company_name in company_names:
        c = get_cleanco.__wrapped__(company_name)
        a = c.type
        b = c.country
        d = c.basename
    """

    t = timeit.Timer(test_code, setup=setup_code)
    run_repeats = t.repeat(repeat=3, number=100)
    avg_time = np.mean(run_repeats)
    time_per_record = avg_time / 100
    time_per_million = 1000000 * time_per_record

    print(
        f"Time per million DeepDiscovery.oc.utils.get_cleanco calls: {time_per_million:,.2f}"
    )

The code it tests is:
import pyspark.sql.functions as F
import pyspark.sql.types as T
from cleanco import prepare_terms, basename, typesources, countrysources, matches
from pyspark.sql import Row

# Setup Cleanco parameters
terms = prepare_terms()
type_sources = typesources()
country_sources = countrysources()

cleanco_schema = T.StructType(
    [
        T.StructField("basename", T.StringType(), True),
        T.StructField("type", T.StringType(), True),
        T.StructField("country", T.StringType(), True),
    ]
)

@F.udf(cleanco_schema)
def get_cleanco(name: str) -> Row:
    """get_cleanco Use cleanco to parse company names into their basename, business type and country it came from

    Parameters
    ----------
    name : str
        A company name

    Returns
    -------
    pyspark.sql.Row
        This Row object has three fields:

        basename - the company name without its corporate ending
        country - the first country returned by cleanco.matches(string.capwords(name.lower()), country_sources)
        type - the first company type return by cleanco.matches(string.capwords(name.lower()), type_sources)
    """
    clean_name = basename(
        string.capwords(name.lower()), terms, prefix=False, middle=False, suffix=True
    )

    country = matches(string.capwords(name.lower()), country_sources)

    if len(country) > 0:
        country = country[0]
    else:
        country = None

    company_type = matches(string.capwords(name.lower()), type_sources)
    if len(company_type) > 0:
        company_type = company_type[0]
    else:
        company_type = None

    return Row(**{"basename": clean_name, "country": country, "type": company_type})

It has the following output indicating it takes 8 seconds per execution of the function:
Time per million DeepDiscovery.oc.utils.get_cleanco calls: 8,356,185.99

I have tested this without the Spark part and it is still slow. What am I to do? It is extremely slow to run this on lots of data.

I apologize. My math was wrong :) Cleanco is fast!


Refactor AggregationPoliciesDTO

In order to allow our new json schema, we need to modify the policy DTO model

TBD


playWithUrl not working anymore.

I am trying to play back text with playWithUrl, it used to work but it is not working anymore. If I copy the url to the browser it plays fine.
react-native: v0.39.2
react-native-audio: v2.2.0
iOs: 10
osx: 10.11.6

Are you still having this issue? In the next version, we're going to deprecate playback soon in favor of https://github.com/zmxv/react-native-sound, since we plan to integrate with this library. So closing this out for now. Thanks!

Yes i am. So will there be a text to speech function?


ConfigClient not honoring spring.profiles.active from config server

Describe the bug
If I use spring-boot-starter-parent = 2.4.8  vs  2.5.2  then I can't read spring.profiles.active from the Config Server's files
When running with application.properties with a value of spring.profiles.default=local  it connects to the config server and reads both properties files:
==> src/main/resources/config/config-client-local.properties <==
readProfile=ConfigServerReadActiveProfile-Local

==> src/main/resources/config/config-client.properties <==
readProfile=ConfigServerReadActiveProfile
spring.profiles.active=${readProfile}

And the client outputs
The following profiles are active: ConfigServerReadActiveProfile-Local
But if I switch to 2.5.2 (or 2.5.0, 2.5.1) I get
No active profile set, falling back to default profiles: local
Was this an intended change?
Example
config-server-client-active-profile.zip
Run first the server mvn spring-boot:run -f config-server/pom.xml  then the client mvn spring-boot:run -f config-client/pom.xml
As packaged you will see the No active profile set message,  if you edit the spring-boot-starter-parent version in the root pom and run the client again, you will get the The following profiles are active message

Can you please try with this
spring.config.activate.on-profile=default

I tried adding spring.config.activate.on-profile=default in 2 places.  First in config-client/src/main/resources/application.properties, it fails quickly never connecting to the config server with this error
[main] ERROR org.springframework.boot.SpringApplication - Application run failed
org.springframework.boot.context.config.InactiveConfigDataAccessException: Inactive property source 'Config resource 'class path resource [application.properties]' via location 'optional:classpath:/'' imported from location 'class path resource [application.properties]' cannot contain property 'spring.profiles.default' [origin: class path resource [application.properties] - 2:25]
	at org.springframework.boot.context.config.InactiveConfigDataAccessException.throwIfPropertyFound(InactiveConfigDataAccessException.java:126)
	at org.springframework.boot.context.config.ConfigDataEnvironmentContributors$InactiveSourceChecker.onSuccess(ConfigDataEnvironmentContributors.java:315)
	at org.springframework.boot.context.properties.bind.Binder.handleBindResult(Binder.java:351)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:341)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:329)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:259)
	at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:220)
	at org.springframework.boot.context.config.Profiles.getProfiles(Profiles.java:101)
	at org.springframework.boot.context.config.Profiles.getDefaultProfiles(Profiles.java:92)
	at org.springframework.boot.context.config.Profiles.<init>(Profiles.java:83)
	at org.springframework.boot.context.config.ConfigDataEnvironment.withProfiles(ConfigDataEnvironment.java:275)
	at org.springframework.boot.context.config.ConfigDataEnvironment.processAndApply(ConfigDataEnvironment.java:231)
	at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:102)
	at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:94)
	at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:102)
	at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:87)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82)
	at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1510)
	at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
	at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111)
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62)
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:374)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:332)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332)
	at org.example.config.client.ConfigClientApplication.main(ConfigClientApplication.java:10)

So I removed it from there and tried putting it in config-server/src/main/resources/config/config-client.properties,  then in the config-server logs I see this when the client connects:
2021-06-29 08:34:55.441  WARN 27657 --- [nio-8888-exec-1] o.s.c.c.s.e.EnvironmentController        : Error getting the Environment with name=config-client profiles=local label=null includeOrigin=true

org.springframework.cloud.config.server.environment.FailedToConstructEnvironmentException: Could not construct context for config=config-client profile=local label=null includeOrigin=true; nested exception is org.springframework.boot.context.config.InactiveConfigDataAccessException: Inactive property source 'Config resource 'class path resource [config/config-client.properties]' via location 'classpath:/config/'' imported from location 'class path resource [config/config-client.properties]' cannot contain property 'spring.profiles.active' [origin: class path resource [config/config-client.properties] - 2:24]
	at org.springframework.cloud.config.server.environment.NativeEnvironmentRepository.findOne(NativeEnvironmentRepository.java:158) ~[spring-cloud-config-server-3.0.4.jar:3.0.4]
	at org.springframework.cloud.config.server.environment.CompositeEnvironmentRepository.findOne(CompositeEnvironmentRepository.java:64) ~[spring-cloud-config-server-3.0.4.jar:3.0.4]
	at org.springframework.cloud.config.server.environment.EnvironmentEncryptorEnvironmentRepository.findOne(EnvironmentEncryptorEnvironmentRepository.java:61) ~[spring-cloud-config-server-3.0.4.jar:3.0.4]
	at org.springframework.cloud.config.server.environment.EnvironmentController.getEnvironment(EnvironmentController.java:131) ~[spring-cloud-config-server-3.0.4.jar:3.0.4]
	at org.springframework.cloud.config.server.environment.EnvironmentController.defaultLabelIncludeOrigin(EnvironmentController.java:113) ~[spring-cloud-config-server-3.0.4.jar:3.0.4]

Same errors if I use 2.4.8 or 2.5.2

I'm experiencing the same issue, the spring.profiles.active is not loaded from config server. This worked perfectly on 2.4.6

I'm experiencing the same issue. I've tried defining the active profile using the env variable SPRING_PROFILES_ACTIVE but does not work either. The SPRING_PROFILES_ACTIVE variable worked perfectly on 2.4.2

I'm experiencing the same issue. It work on 2.5.1 but when upgrade to 2.5.2 or 2.5.3 fail even if set the property as VM arg or ENV arg

Same issue here after upgrading von 2.4.9 to 2.5.x. Anyone found a solution yet?

facing the same issue on spring-boot 2.5+

Hi,
In Springboot 2.5.X version, it doesn't activate the active profile.
As a solution, I have added below code in springboot application main class and it got resolved.
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "profile");
super.onStartup(servletContext);
}

Same. Isn't this pretty huge to be ignored?

@mehiel  I agree. My team has been waiting on this to be resolved for a couple of months now.

can we get any update regarding this issue?

Setting below profile property did not work for 2.5.X, 2.6.6 and 2.6.7 version of spring boot.
@ Override
public void onStartup(ServletContext servletContext) throws ServletException {
System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "profile");
super.onStartup(servletContext);
}
This issue can be fixed by adding active profile during startup or using conditional property as below.

Interject active profile during startup e.g

mvn spring-boot:run -f config-client/pom.xml -Dspring-boot.run.profiles=ConfigServerReadActiveProfile-Local

Or, update bean profile to use conditional property.

From: @Profile(value="ConfigServerReadActiveProfile-Local")
To: @ConditionalOnProperty(name="readProfile", havingValue="ConfigServerReadActiveProfile-Local")

I faced with the same issue as well. Any idea when this might be fixed?

@mstarodubtsev could you provide an updated sample?

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Which requested information would that be?
When I created the bug I gave you a sample illustrating the problem.  Back in June of 2021 I was asked to try something, I did and posted the results and never received a reply. Most of the other comments on this bug are when will this be fixed and me too.
I wound up converting all our code to use ConditionalProperty as a few people suggested but it it isn't nearly as clean or elegant as using the profiles as intended.

What was your code using before you switched to @ConditionalOnProperty?

Was that directed to me? It was using spring profiles indicated by the config server. As seen in the code attached to the ticket.


[TODO] What do i have left to do?

Okay, so. I've got ALLOT of stuff that still has to be done.
Please comment if i forgot something.
And tell me what u like to see first.

[x] Player Inventory's
[x] Player armor
[x] Fight damage
[ ] Fall damage
[ ] Tools (I count weapons as tools too)
[ ] Mobs
[ ] Redstone
[x] Water physics
[ ] Crafting
[ ] Smelting
[x] Item entity's
[ ] World generation tuning
[ ] Calculate what biomes can be next to each other (Temperatures)
[x] Plugin system
[ ] Brewing
[ ] Enchanting
[ ] Portals
[ ] Nether + End
[x] Multiworld
[x] Player save data (Inventory, health, Etc...)
[ ] Tile entity's (Chests, Signs etc...)
[ ] Online mode
[ ] Compression

Brewing and enchanting?
Good luck with this!

@tonibm19 Thank you! :)

[0] Recontinue @kennyvv


Add a comparison workflow / app

A common use case during the research/exploration phase is to compare/assess the difference in responses based on different embedding models/llm's etc. It would be useful to make this workflow easier.
i.e.

setup a matrix of configuration options
setup the list of docs to use
setup a list of questions to ask
summarize the responses from each configuration along with any relevant metrics (response time etc)
potentially calculate similarity scores between responses.

This could be a fairly straightforward panel app.

+1
In addition a basic annotation work flow would help. Getting anecdotal evidence of a good RAG is obviously nice, but a more systemic approach would help compare different configurations.
I often make a set of questions and annotated chunks (labels could be "relevant", "inconclusive" or "irrelevant" in its ability to answer the question). Then make a summary table that shows per question and model configuration how well the embedding models rank on retrieving the relevant (and inconclusive) chunks. This also helps me in the future when new embedding models are released and I want to test them.

Add a comparison workflow / app

We need to clarify what we want here. Since we have a fully featured Python API, the "workflow" part is already covered. However, if you haven't worked with async programming before, it might be non-obvious. We should have an example in the documentation for this.
As for the "app" part, I'm not super enthusiastic about it. This whole use case screams experimentation. And for that you need all kinds of knobs, which is very hard to get consistent in a general UI. This is why we built the Python API (note that the issue was created before the Python API was a thing). IMO, if someone really wants / needs an UI for that, it should be a third-party app that builds on top of the Ragna Python / REST API.

Bumping impact to medium. For the 0.2.0 release, we are going to add an example to the documentation to describe the comparison workflow together with the Python API. Although still not enthusiastic about a possible UI for this, let's open a separate issue for that as soon as the documentation is updated.


Update GDTask.Tests.csproj and README.md

Change to the GDTask.Test.csproj is rejected, other looks good. I prefer to stay at a fixed test package version as long as it's working instead of using Wildcard(*).


Resources (sphinx)

Extensions / Plugins

[ ] https://pypi.org/search/?c=Framework+%3A%3A+Sphinx+%3A%3A+Extension
[x] https://github.com/sphinx-contrib/sphinx-lint

a dedicated linter for sphinx, included in sphinx-contrib
existing hook for pre-commit
not sure of the advantages compared to doc8, just using both of them

[ ] webcompile (accidentally closed the tab(
[ ] https://github.com/executablebooks/sphinx-copybutton

adds a button to source code elements for easy copy/paste
NEEDS evaluation
most likely some arcane JS

[ ] https://sphinxext-opengraph.readthedocs.io/en/latest/index.html

SEO
NEEDS evaluation
what is the benefit compared to just integrating this into the (custom) templates

[ ] https://github.com/jdillard/sphinx-sitemap

generate the sitemap.xml
NEEDS evaluation

[ ] https://sphinx-external-toc.readthedocs.io/en/latest/intro.html

manual TOCs
NEEDS evaluation
might be an alternative to using sitemap.rst as root_doc

[ ] https://sphinx-notfound-page.readthedocs.io/en/latest/index.html

NEEDS evaluation

[ ] https://github.com/wpilibsuite/sphinxext-photofinish

great purpose
I don't know if I like the idea of generating the required images from the sphinx build process
might be a reference for a custom plugin/extension

[ ] https://github.com/sunpy/ablog

a weblog engine based on Sphinx
have a look at the PostDirective class for an implementation of dedicated meta information
Check how this meta information is processed / displayed

Guides / Articles

https://sammart.in/post/2021-05-10-external-data-sphinx-extension/
https://lornajane.net/posts/2021/define-navigation-structure-in-a-sphinx-project
https://lornajane.net/posts/2021/sphinx-front-matter-and-template-variables
https://github.com/sphinx-doc/sphinx/tree/master/sphinx/themes/basic
https://github.com/reinout/reinout.vanrees.org

https://github.com/badges/awesome-badges


Verify credential

CC: @sapience
To do:

[ ] Remove demonstration code from apps/idos-data-dashboard/src/lib/idos/index.ts

Honestly, I'm not sure what/who I'm waiting for here. :x

[ ] Move credential from packages/idos-sdk-js/src/lib/verified-credential.js to its test file
[x] See if we can prune any dependencies (Alex and I added a lot of things blindly to make the initial PoC work)
[ ] Check if @ditoglez opposes the addition of packages/idos-sdk-js/.node_version

This change feels very infra-y, and I don't feel in-the-know about the current repo's philosophy.

[ ] Check if @juliosantos has opinions  packages/idos-sdk-js/README.md

I'm not sure how transparent or opaque we want to be with external deps' types.

[ ] Squash all the junk and exploratory commits into a single tidy one.

To check that this works on idos-data-dashboard, run pnpm dev after applying this patch:
patch -p1 <<EOF
diff --git a/apps/idos-data-dashboard/src/lib/idos/index.ts b/apps/idos-data-dashboard/src/lib/idos/index.ts
index 749d34e..02282b5 100644
--- a/apps/idos-data-dashboard/src/lib/idos/index.ts
+++ b/apps/idos-data-dashboard/src/lib/idos/index.ts
@@ -1,5 +1,7 @@
 import { idOS } from "@idos-network/idos-sdk";

+console.log(await idOS.verifiedCredential.verify(idOS.verifiedCredential.exampleCredential));
+
 export const idos = await idOS.init({
   nodeUrl: import.meta.env.VITE_DB_PROVIDER,
   container: "#idos",
EOF


WASM Support

What is the WASM support status on this lib?
What needs to be done?

Probably hard to get it working with async-trait.
wasm-pack inside ethers-providers has this error:

Could maybe be solved by switching our async-traits to not be Send, but that would mean we can't spawn them, which is not ideal

@gakonst following up on this, because I just saw ethabi no_std https://github.com/darwinia-network/ethabi/tree/xavier-no-std
Would it actually be worth it to support wasm/no_std? I can't really think of a good use case...
That being said, I think we can get the problems in providers resolved for no_std

I don't have a great use-case in mind either, and candidly, feels like doing async stuff over wasm/ffi would be a big pain :P

async in wasm is not as bad as it seems. You can convert to/from promises relatively easily. To be honest, my approach would be to ensure that the wasm32-unknown-unknown target compiles, but not provide any official wasm interface. That gives people the option to use it, with very little work up front

Agreed


check if the custom header is the reason the site experience isn't good

check if the custom header is the reason the site experience isn't good and if that's the case lose the custom header.

done


improved the web accesibility on the forms

fixes #157 @BatoolMM  i improved the form accesibilty by adding the aria-label attribute to each input space ,this would help screen readers when people with disabilities are using OSCSA website

Brilliant, thank you for paying attention to the accessibilty!
@all-contributors please add @jesutobi for accessibility

We will merge it now!

Brilliant, thank you for paying attention to the accessibilty! @all-contributors please add @jesutobi for accessibility

you are welcome ,thank you for taking your time to review


all: potential infinite recursions in method recursion/retry due to assumption that SessionPool are always working after ._getSession return 'No Session Found'

Throughout this package and in my journey of tracing this package, I've encountered the pattern of this form
https://github.com/googleapis/nodejs-spanner/blob/2a19ef1af4f6fd1b81d08afc15db76007859a0b9/src/database.ts#L3608-L3628
writeAtLeastOnce(
   mutations: MutationSet,
   optionsOrCallback?: CallOptions | CommitCallback,
   callback?: CommitCallback
 ): void | Promise<CommitResponse> {
...
     this.pool_.getSession((err, session?, transaction?) => {
       if (err && isSessionNotFoundError(err as grpc.ServiceError)) {
         span.addEvent('No session available', {
           'session.id': session?.id,
         });
         this.writeAtLeastOnce(mutations, options, cb!);

but notice that if pool._getSession returns Session Not Found, then that method will call itself an indefinite number of times and that's non-determinism. We've got many such cases.
https://github.com/googleapis/nodejs-spanner/blob/2a19ef1af4f6fd1b81d08afc15db76007859a0b9/src/database.ts#L2097-L2103

@odeke-em if there will be Session Not Found Error, we will retry the transaction after getting another session from the session pool. In every try we will be getting 'Session Not Found Error' that's very rare.

Could you please help me understand in which case it could lead to an issue?

If for example the pool is faulty, or the Cloud Spanner database is under load or even a billing issue on the account.

@odeke-em IIUC, in all above cases, sessions will not be created at the time of session pool creation.
In this case there will not be any Session not found error instead , the request will keep waiting for the session to be available and ultimately the request will get timed out. Refer
You could also set the timeout for acquiring sessions by setting SessionPoolOptions:acquireTimeout default is infinity. Refer https://cloud.google.com/blog/topics/developers-practitioners/deploying-cloud-spanner-based-nodejs-application
Please let us know if you are not seeing the above behavior and instead seeing infinite recursion for your use case ?


⚠ Bofrost.lu has degraded performance

In 1cf6d6a, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1298 ms

Resolved: Bofrost.lu performance has improved in 4ec1e52 after 8 minutes.


refactor jfr-daemon to improve reusability and clarity

Now that we're adding a standalone agent and an agent extension, the jfr-daemon module needed some refactoring to be more usable / clear. This PR makes progress in that direction.
Package organization:

The com.newrelic.jfr.daemon package contains shared utilities
The com.newrelic.jfr.daemon.app package contains logic specific to running the daemon as a standalone application. This contains the bits to connect a remote server and stream the jfr data over jmx, with JFRDaemon as the entry point.
The com.newrelic.jfr.daemon.agent package contains logic specific to running the daemon as a standalone java agent. AgentMain is the entry point.

The code was a bit scrambled and indirect, and this should improve it and make it more clear. Some of the things I improved:

There were instances of builders that implied that only some properties were needed when in fact all the properties were needed. For example, EventConverter.Builder and JFRUploader.Builder.
The code that connected to the remote mbean server was duplicated across MBeanServerConnector and JFRJMXRecorder. Its now centralized in MBeanConnectionFactory.
There were several different strategies for repeatedly trying tasks until they succeed. See BusyWait, JFRJMXRecorder#connectWithBackOff, and JFRJMXRecorder#startRecordingWithBackOff. That's all standardized now using com.newrelic.telemetry.Backoff to dictate the schedule.
JFRUploader had some ugly instances of broken encapsulation with its AtomicReference<EventConverter> eventConverter and AtomicBoolean readinessCheck, allowing external code to change its state in unprotected ways.
JFRUMXRecorder had too many responsibilities. Its been broken into JmxJfrRecorderFactory and JmxJfrRecorder for improved comprehensibility.
Most of the public methods that comprise the main code flow lacked javadoc. As a result, it was unnecessarily hard to work through and understand the code. I've added javadoc in all the crucial places.

A big set of changes like this isn't ideal, but there was a good number of things that needed cleaning up that were fairly interwoven together. Better to rip the bandaid off IMO.
I've tested this code manually locally, and was sure to add smoke tests before embarking on this to have a decent reference point of end-to-end behavior.

Per conversation with @kittylyst, I've adjusted the PR to retain the ability to record and buffer JFR events while awaiting the remote entity id to become available.

Per conversation with @kittylyst, I've adjusted the PR to retain the ability to record and buffer JFR events while awaiting the remote entity id to become available.


Add adopters.

Codecov Report

Merging #1200 into master will decrease coverage by 0.14%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1200      +/-   ##
==========================================
- Coverage   86.37%   86.22%   -0.15%
==========================================
  Files          90       90
  Lines        2803     2803
  Branches      114      114
==========================================
- Hits         2421     2417       -4
- Misses        382      386       +4

Impacted Files
Coverage Δ

...re/shared/src/main/scala/io/circe/KeyDecoder.scala
94.59% <0%> (-2.71%)
:arrow_down:

...les/core/shared/src/main/scala/io/circe/Json.scala
77.3% <0%> (-0.62%)
:arrow_down:

...rc/main/scala/io/circe/numbers/BiggerDecimal.scala
87.13% <0%> (-0.59%)
:arrow_down:

.../core/shared/src/main/scala/io/circe/Decoder.scala
86% <0%> (-0.25%)
:arrow_down:

...re/shared/src/main/scala/io/circe/JsonNumber.scala
90.24% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Thanks much @takayahilton!


Apply Clippy lints.

Description

Fixes #0000
Checklist

[x] I have run cargo make pr-flow
[x] I have reviewed my own code

Thanks! Could you fix the remaining issues too?

Should be done now.
There was a discrepancy between my local version of Clippy and the one used in CI.

Thanks a ton!


AttributeError: module 'numpy.linalg._umath_linalg' has no attribute '_ilp64'

when I run OWL_ViT_Export_JAX_model_to_TensorFlow_SavedModel.ipynb in colab,it post the error.

numpy version 1.26.0 works for me

But I can not change the numpy version in colab. Is there any idea about change it. I have reinstall the numpy and other command to upagrade, but the numpy version is still 1.23

But I can not change the numpy version in colab. Is there any idea about change it. I have reinstall the numpy and other command to upagrade, but the numpy version is still 1.23

You can restart runtime, then run:
!pip install numpy==1.26.0
line before installing any of the required packages then, install the packages.
It worked for me.

Restarting runtime and running everything again worked for me.

not able to run OWL_ViT_minimal_example notebook on T4 GPU. Any idea how to fix it? I've tried restarting, and also installing 1.26.0 numpy version, but it didn't work.

The first cell automatically uninstalls NumPy 1.25.2 and installs NumPy 1.26.4, so you don't need to install numpy again. When I run first two cells, it does throw the error - AttributeError: module 'numpy.linalg._umath_linalg' has no attribute '_ilp64'. After getting error, do Runtime > Restart session and run all. It should be working.

The first cell automatically uninstalls NumPy 1.25.2 and installs NumPy 1.26.4, so you don't need to install numpy again. When I run first two cells, it does throw the error - AttributeError: module 'numpy.linalg._umath_linalg' has no attribute '_ilp64'. After getting error, do Runtime > Restart session and run all. It should be working.

I tried this, it worked.

Restarting runtime and running everything again worked for me.

Thank you so much


Update user-driven-hybrid.md

Adjusted the AD DC requirements to make them more clear.

@greg-lindsay - Can you please assist to check, approve and merge the content of this PR?
Thank you.

@greg-lindsay - We would like to follow up. Can you please assist to check, approve and merge the content of this PR?
Thank you.

@greg-lindsay - We would like to follow up. Can you please assist to check, approve and merge the content of this PR?
Thank you.


Change IIS projects to target netcoreapp3.0

#3754
Also fixed an error in HttpResponseStream.cs. The NETCOREAPP2_1 targets weren't getting compiled since the assembly only targeted netstandard2.0.

I think the test projects may be broken for publish. PublishedSitesFixture.cs publishes for netcoreapp2.2 still in tests.
Note: tests are still disabled in master due to a websdk issue causing all out of proc tests to fail.

We need to re-enable tests before taking this.

What will it take to re-enable tests? This is blocking lower repos from getting converted.

I think @pakrym is looking into it now.

Just got new hosting dependencies, will update shortly.

We're adding required PR checks to ensure the repo compiles before you merge. Can you update this PR by rebasing on master?
git fetch origin master:master
git rebase master

Alternative: if you plan to 'squash merge' this PR, you can also use a merge to update this PR. This can be easier to manage if you have lots of changes in this PR.
git fetch origin master:master
git rebase master

By the way, you can ignore the error that says "AspNetCore-pr-validation — Unable to find '.azure/pipelines/fast-pr-validation.yml'". This is the result of changing PR checks after a PR was created. It shouldn't appear in PRs created from now on.

Tests should be passing now.

Still quite a few test failures where it looks like the server is failing to start.

https://github.com/aspnet/AspNetCore/issues/4512 for flaky test.


Use another channel to send bearer tokens

Howdy,
First let me tell you that I like this tool, it is fast, has great debug, and for now is not flagged anywhere  :smile:
However, I am facing a situation where I am unable to establish the websocket connection due to a reverse-proxy that tampers with the websocket upgrade request.
After troubleshooting a bit, I found out that the proxy was stripping query params from the upgrade request, which obviously prevented the wstunnel session from successfully mounting. I assumed this was a behavior specific to the revers-proxy I was dealing with until I tried to setup a wstunnel server behind a Cloudfront distribution, and the same happened: query params stripped on the incoming request.
I guess a good workaround would be to give a bit flexibility to the user about how he wants the bearer token to be sent. The following options are not exhaustive but I can't think about any other at the moment:

query param
path component (e.g. /morille/events/<bearer>)
header

Happy to chat about it if needed.

Hello :)
That's seem odd to me because query params is the only way to pass information with the websocet javascript API from browser.
https://stackoverflow.com/questions/4361173/http-headers-in-websockets-client-api
Would you mind sharing the log of wstunnel client and server with the env variable RUST_LOG=trace set ? So I can take a look at what the server receive.
If you are right, I can try to pass the info in the Sec-WebSocket-Protocol header

Would you mind trying release v8.5.0 and let me know if it works better for you ? https://github.com/erebe/wstunnel/releases/tag/v8.5.0
I now pass tunnel info into Sec-WebSocket-Protocol header

feel free to re-open if needed

@erebe I have done a little bit more digging and I am pretty sure it was just me that did not configure the cloudfront distribution properly (it does not forward query parameters by default).
So I guess whether you send it through a header or a query param should not make a difference.
Apologies for the overrun :smile:


Suggestion: Lang for words automation title

is it possible to have a translate for automation pagination title
For example :

For the words "of" & "for", here in fr is "sur" & "dans"

have found its in seo-tag plugin (not translate for another lang) in drop.rb line 193


Add --target-host to nixos-generate-config and nixos-install

Project description
Adding a --target-host option (like nixos-rebuild has) to these tools will make remote installations much easier, and allows ad hoc installation on lightweight hardware that may not be big enough to evaluate its config.
Example work flow:

Write an installer image and boot it on the target host
Prepare and mount the file systems
nixos-generate-config --target-host HOST --root /mnt --dir .

connects with ssh to HOST
runs the local copy of nixos-generate-config with --root /mnt --dir $tmp
copies the files back to the local directory from --dir. --dir is mandatory when --target-host is specified

Write a flake locally to import that configuration.nix into nixosConfigurations.host
nixos-install --target-host HOST --root /mnt --flake .#host

builds the configuration locally
copies a closure including nixos-install script. nixos-install need not be part of toplevel for this to work!
invokes the installation process over ssh

Nice to have:

run the installation in tmux or screen

As a workaround, I have done this manually:

nixos-rebuild --flake <flake>
nix-copy-closure --to <host> result
(on remote) nixos-install --system <system-closure>

Of course, that requires nixos-install on the target!

I think that's nixos-rebuild build in (1)?
Ideally we shouldn't even need nixos-rebuild on the target. I think it only needs to copy the closure, set the profile and call activate. On the target, nix should suffice, even just a store-only one:

https://github.com/NixOS/rfcs/pull/134

Such minimalism is up to the final configuration though. It seems like a good tradeoff to keep some of these commands on the installation media configurations:

runs the local copy of nixos-generate-config


Feature request: Add invert colors functionality

Having a PDF in my IDE in dark mode feels like looking directly into the sun.
Functionality to invert PDF colors would be much appreciated.

@hugoppp Do you mean inverting colors of the actual document?

Yes, just inverting the document colors on the view. Many PDF viewers have this feature, most of them let you set background and foreground/text color.

Ok, unfortunately, there is no such feature in pdf.js library I am using for actual rendering. But I'll try come up with something.

You could try what this SO answer suggested, it worked for me in Firefox:
javascript:(function(){viewer.style = 'filter: grayscale(1) invert(1) sepia(1) contrast(75%)';})()

Sorry for a long delay - I had to do my stuff at work (.
I implemented this feature a week ago, but had some problems with gradle and new IDEA versions.
@breandan Thank you for your suggestion). I apply filter: grayscale(85%) to the page and it seems to be looking okay.

Preview of applying invert filter with different values (85%, 90%, 100%)

I can't promise that this method will work for all use cases (it won't work for documents with pictures), but for plain text documents it should work fine.
I uploaded new version and it will be available in a day or two.

New version is up! To use invert colors feature you need to set registry flag pdf.viewer.enableExperimentalFeatures. After that, you can use Invert Document Colors action to apply filter: invert(<value>%) to the pages. You can set <value> in plugin settings (Settings > PDF Viewer > Experimental Features > Colors invert intensity).
For now it will stay in the experimental section, as I want to explore other ways of inverting document colors.
If you have any suggestions, feel free to post them here.

@FirstTimeInForever Nice work, thanks for your responsiveness! I was able to confirm this feature works as described.

I'd like to suggest also adding hue-rotate(180deg) to the filter, so the hue is restored after the inversion, e.g.:
filter: invert(0.85) hue-rotate(180deg)
Currently, every color is inverted to its complementary (blue → orange and such), as can be seen in the hyperlinks in the screenshots you posted, @FirstTimeInForever.
I use this same filter to invert PDF views in Chrome.

the latest version has not this feture?

PDF Viewer is great! Thank you for maintaining it!
I'm not able to affect the colors of my pdf other than the Background.
I changed the Background color to 090909 and that updated the PDF Viewer background as expected.
Changing the Foreground and Icons colors had no effect.
What I really want is a nice dark theme for viewing pdf's built by LaTeX as I work on them.
I typically achieve this by color inversion. I don't see an option for that.
I'm using:
PyCharm 2022.2.2 (Professional Edition)
Build #PY-222.4167.33, built on September 15, 2022


getting error while building the project in android studio ... flutter module giving a lot of trouble while building ..!

I tried to build the apk injured android ...installed all dependies flutter sdk and dart sdk after that this error were raising
Task :flutter:compileFlutterBuildDebug
Target kernel_snapshot failed: FileSystemException: Cannot open file, path = 'D:\android\build\flutter_module.packages' (OS Error: Access is denied.
, errno = 5)
build failed.

Mainly Flutter module error most of the time... i have setup in right directory everything

What OS are you using when trying to compile the Flutter module? Access denied looks like possibly sudo is needed, I don't think I needed sudo to build the module though. I need more info in order to help as this issue depends on the OS and build setup. Might have more luck adding a Flutter module and replacing the dart files with the exercise dart code. Running flutter doctor might help resolve the issues as well.

I'm using windows ...I'm also got error like .packages not found in the modules directory ..I added manually .packages......folder...after that got error like permission denied .....!
My is win64 10

Executing tasks: [:app:assembleDebug] in project D:\android\build\InjuredAndroid

Configure project :app
Kotlin plugin should be enabled before 'kotlin-android-extensions'

Task :app:preBuild UP-TO-DATE
Task :app:preDebugBuild UP-TO-DATE

Task :flutter:compileFlutterBuildDebug FAILED
Target kernel_snapshot failed: FileSystemException: Cannot open file, path = 'D:\android\build\flutter_module.packages' (OS Error: The system cannot find the file specified.
, errno = 2)
build failed.

FAILURE: Build failed with an exception.

Where:
Script 'D:\flutter_windows_1.17.4-stable\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 882

What went wrong:
Execution failed for task ':flutter:compileFlutterBuildDebug'.

Process 'command 'D:\flutter_windows_1.17.4-stable\flutter\bin\flutter.bat'' finished with non-zero exit value 1

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

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

BUILD FAILED in 3s
1 actionable task: 1 executed

i tried doctor app running fine and also i created a app with flutter default app its also working fine ..but injured andorid was gving error

I'm guessing there's some build files missing for the flutter module that were taken out by the official .gitignore. Try building the source for the InjuredAndroid Flutter module with the default app you created and see if it compiles successfully. Unfortunately I use Ubuntu as my development machine so I'm not sure what is causing the permissions error on Windows 10.

I'm using windows ...I'm also got error like .packages not found in the modules directory ..I added manually .packages......folder...after that got error like permission denied .....!
My is win64 10

Are the files above the user level directory? This path D:\android\build\flutter_module.packages looks like Administrator permissions are needed. Try building in a user level path.

I'm planning on re-downloading the project source to see if .gitignore is excluding a needed file to build the flutter module. Stay tuned!

Recently rebuilt InjuredAndroid on Windows and I believe this error may have resulted from the local.properties not linking the Flutter SDK and Android SDK.
This file "local.properties" has to be created because everyone's SDK paths are different.
Contents of local.properties example for Windows:
sdk.dir=C:\\Users\\B3nac\\AppData\\Local\\Android\\Sdk
flutter.dir=C:\\Users\\YourUsername\\PathTo\\flutter

Hi @balook I found the real cause of the non zero exit code.
Not setting the path additionally in Android Studio is the main cause of this error. Here's the steps I took to solve this issue.

Set the Flutter path in Android Studio

File -> Settings -> Languages & Frameworks -> Flutter

Enable Dart Support

Run flutter pub get to import the flutter dependencies


adding collab instructions, yet again

Description
we've added stuff about how to collaborate
Todos
Notable points that this PR has either accomplished or will accomplish.

[ ] TODO 1

Questions

[ ] Question1

Status

[ ] Ready to go

i don't understand what this is, elaborate!


Add a default rustfmt to project root

My attempt at a function which will create a default rustfmt file in the current project - following up on https://github.com/emacs-rustic/rustic/issues/68.

Thanks for creating this PR. Why did you pick these particular settings for the rustfmt file?

The default from copilot. At a quick glance it seemed reasonable but I don't have good insight in to what makes a good rustfmt config so won't pretend it's better than any other config.

I don't think we would want to specify rustfmt settings for the user unless there is a de facto standard that most people would want. I would assume that the default settings (i.e. no rustfmt file) would be the most common.

Fair enough, I think it could stil be nice to provide users with a basic rustfmt file. I changed to create a file with a single entry for edition which is defined to its default value of "2015" - https://rust-lang.github.io/rustfmt/?version=master&search=#edition.
I'll close the PR if it still doesn't seem appropriate to you :slightly_smiling_face:.

From the docs you linked:

Rustfmt is able to pick up the edition used by reading the Cargo.toml file if executed through the Cargo's formatting tool cargo fmt.

If we specify 2015 in the rustfmt toml file it will override what the user has in their cargo.toml. Which is probably not what user wants. Especially since that is a really old edition that realistically few people are using.


Problems with LWT

I am having trouble getting consistent interactions with the LWT. It seems that from my testing the delayed LWT will fire; however, the hook will not always be called. I have also attempted to test with MQTTX with a locally running broker and can't get the LWT to fire at all.
I am curious if anyone else has had similar reliability issues with the LWT.

@dgduncan I have tested it and there are no issues.
Did the Will Message trigger under any of these conditions?
The Will Message must be published when the network connection is subsequently closed unless the Server deletes the Will Message upon receipt of a DISCONNECT Packet [MQTT-3.1.2-8].
Situations in which the Will Message may be published include, but are not limited to:
An I/O error or network failure detected by the Server.
The Client fails to communicate within the Keep Alive time.
The Client closes the Network Connection without first sending a DISCONNECT Packet.
The Server closes the Network Connection because of a protocol error.
It's possible that you closed the MQTT connection normally, so you didn't receive the LWT. You could try disconnecting the client by directly closing the MQTTX client software, causing a network abnormality, to see if the Will Message is triggered.

@dgduncan If you can provide a pattern for reproducing this issue I can look into it 👍🏻

@mochi-co @werbenhu I am going to close this issue. I need to do a more further investigation. In a whirlwind of a night I attempted to move everything I used over to MQTT V5 without doing a full investigation.

@dgduncan best of luck!


Extracted Unsplash Comp into own package

no issue
We currently have 3 versions of the Unsplash selector; The Admin-X version, written in Typescript + React; The Koenig version, written in Javascript + React; and the original Ember version.
This creates a standalone Unsplash-Selector package in the Ghost Apps monorepo. The plan is to only have 1 package to maintain and be able to reuse it elsewhere to avoid having to maintain separate versions of a library that does exactly the same thing everywhere.

In favour of publishing it via the Koenig repo instead - https://github.com/TryGhost/Koenig/pull/1165


Support non-symmetric grids

It is generally a very useful feature that when you enter a block or a bar, it enforces 180 degree symmetry.
However, some crosswords (no matter how much we frown on it!) do not have 180 degree symmetry, and I believe such puzzles cannot be entered with this tool.
Please allow the automated symmetry to be turned off.

I've added this feature in v0.26, ptal: you can turn off symmetry enforcement temporarily from the Edit menu, just for the next "Toggle block/bar" operation. While this may be a little inconvenient if every single added block/bar is going to need to be asymmetric, but I'd rather not make the setting sticky, hopefully discouraging extremely asymmetric grids.

I've added this feature in v0.26, ptal: you can turn off symmetry enforcement temporarily from the Edit menu, just for the next "Toggle block/bar" operation. While this may be a little inconvenient if every single added block/bar is going to need to be asymmetric, but I'd rather not make the setting sticky, hopefully discouraging extremely asymmetric grids.


Sidekick publish button updates

Moved the publish button to right side of the sidekick to help avoid accidentally clicking.
Added a warning pop up message on hover.

Resolves: MWPW-146126
Test URLs:

Before: https://main--milo--adobecom.hlx.page/drafts/rclayton/test-template?martech=off
After: https://sidekick-publish-alt--milo--adobecom.hlx.page/drafts/rclayton/test-template?martech=off

I see the same behavior that @elan-tbx mentioned about the delay. I also did a shift+refresh after the first load and it went back to the original sidekick layout. I did this in incognito. Not sure if it is just me.

We have to wait for the sidekick to load, so there can be a slight delay due to that.
There was a recent request to only move the publish button to sit just after the tools button. Doing some testing locally and this helps the appearance delay.
cc: @elan-tbx @sukamat


[BUG] Helm "harvester" fails with a custom StorageClass set as default

Describe the bug

Helm "harvester" in namespace "harvester system" fails upgrade:

The number 27855 is a helm revision and the cluster is barely 2d 4h old 🤯
Helm logs:

- [x] KubeVirt Operator
- [x] KubeVirt Resource named "kubevirt"
- [x] Longhorn
- [x] Harvester Network Controller

Please make sure there is a default StorageClass in the Kubernetes cluster.

To Reproduce
Steps to reproduce the behavior:
This is a fresh cluster with some things configured. I am not sure if it is the case, but my guess is that chart fails upgrade when the default storage class is changed.
I created new storage classes and set one of them as default instead of "harvester-longhorn". After seeing the error message, I set the "harvester-longhorn" to be a default storage class again and the helm upgrade succeeded:

Helm logs stayed the same, so that doesn't seem to be an error message, but just a not about the default storage class.
Expected behavior

A custom storage class can be set as default and harvester helm upgrades would succeed.
Support bundle
supportbundle_783c68be-e423-4646-9d1f-df0ff2b4783c_2024-03-23T02-04-43Z.zip
Environment

Harvester ISO version: 1.3.0
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630):
Supermicro baremetal servers.

Additional context
Not sure how relevant is this, but I have storage VLAN configured.
And my custom StorageClass has 2 replicas, not 3 as the "harvester-longhorn" one.

This could be related:
https://github.com/longhorn/longhorn/issues/1527#issuecomment-650328255

Install Longhorn v0.8.1 using Rancher.
Modify the StorageClass longhorn, e.g. change replica count from 3 to 2.
Upgrade to v1.0.0.
Observe the upgrade error

Thus, an amount of replicas being set to other than 3 for a default StorageClass would be breaking the helm upgrade. Though that issue is from 2020 and it's closed and seems to be solved.
Could be a confirmation bias.. 😄

Environment
Harvester ISO version: 1.3.0

If you installed from 1.3.0, what are you upgrading to with Helm? 1.3.0 is the most current release.

I didn't upgrade anything manually, it went into the pending-upgrade cycle itself.

Hello, need to mention other bug (not sure but worth checking),
with no upgrade of longhorn , in harvester version 1.3.0  if we edit the number of replica in a storage class and then we create a new VM (note that storage class is default ) the  number of replicas for that new vm created is not respecting the updated number in storage class.
second scenario:  if we create a new storageClass and  set it as default then we create a new VM  we notice that the number of replica is not respecting the norm , and the number of replica is like the previous storageclass (which is no more the default one)

Hello, need to mention other bug (not sure but worth checking), with no upgrade of longhorn , in harvester version 1.3.0 if we edit the number of replica in a storage class and then we create a new VM (note that storage class is default ) the number of replicas for that new vm created is not respecting the updated number in storage class. second scenario: if we create a new storageClass and set it as default then we create a new VM we notice that the number of replica is not respecting the norm , and the number of replica is like the previous storageclass (which is no more the default one)

same here !!!!! with Harvester 1.3.0
weird behavior i hope this gets fixed asap


New VAT/GST custom field for expenses

User story
As a host Admin, I wanna make sure that people only uses the invoice option to submit services with a legit tax status. In the EU, you need a company/tax number to get paid for a services you gave to a collective.
As a host Admin, I need my accountant to be able to get these tax numbers in the csv export
Best solution for this problem
Add a mandatory VAT/GST custom field (that some host can have, other not depending on the needs) after the user chose the invoice option.
P1 high frequency, high impact

Custom fields are indeed an option, but I would advocate for implementing explicit support for VAT directly in the code - like what we do for contributions.
Related: https://github.com/opencollective/opencollective/issues/4532

@jfdh shall we close this in favour of #4532?

Yes! Created this in a hurry but i am going to elaborate on #4532

Implemented with https://github.com/opencollective/opencollective/issues/4532


add ci workflow to upgrade pip dependencies

please also see #38
please see https://github.com/AdrianDsg/poetry-plugin-up/pull/3 for an example
As discussed in #38 this PR adds a workflow to upgrade the pip dependencies using the plugin.
The workflow opens a pull request if changes to poetry.lock or pyproject.toml have been detected after executing the plugin. The workflow runs weekly on Mondays at 05:05 AM (UTC).
I also added a Dependabot config file to cover the upgrades for the GitHub Actions as well.
As previously discussed Dependabot would try to upgrade the dependencies in the test data as there's currently no option to exclude directories. Therefore we'd only use Dependabot for the GitHub Actions.

@AdrianDsg what do you think of running the workflow on a monthly basis instead of weekly?


add support to enable protection for VMs

Hi,
We would like to use this provider to deploy our proxmox VMs but we are concerned that it would be too simple to delete a VM by a human mistake if the wrong terraform config file is deleted.
To reduce the risk we would like to be able to enable the protection flag for the deployed VMs so deleting a VM is a two step workflow where you first disable the protection flag and then delete the VM. We have seen than protection is supported for containers but not for VMs.
As a workaround I plan to check if I can enable the protection flag using terraform's local-exec provider to try to do an extra api call to enable protection but it would be great to have native support from this provider to enable protection for new deployed VMs.

in case it's helpful for anyone else, I have implemented a workaround creating this script:
#!/bin/sh

proxmox_user="$1"
proxmox_password="$2"
proxmox_node="$3"
proxmox_vmid="$4"

cookie=$(curl -s -k -d "username=${proxmox_user}" --data-urlencode "password=${proxmox_password}" https://<IP_ADDRESS>:8006/api2/json/access/ticket |jq -r .[].ticket)

token=$(curl -s -k -d "username=${proxmox_user}" --data-urlencode "password=${proxmox_password}" https://<IP_ADDRESS>:8006/api2/json/access/ticket |jq -r .[].CSRFPreventionToken)

curl -s -D/dev/stderr -k  -H "CSRFPreventionToken:${token}" -b PVEAuthCookie="${cookie}" -XPOST -d protection=1 https://<IP_ADDRESS>:8006/api2/json/nodes/${proxmox_node}/qemu/${proxmox_vmid}/config

And I execute it using the terraform local-exec provisioner when deploying a resource of type proxmox_vm_qemu
  provisioner "local-exec" {
    command = "./utils/enable-protection-flag-for-vm.sh $proxmox_username $proxmox_password $proxmox_node $proxmox_vmid"

    environment = {
      proxmox_username = var.proxmox_username
      proxmox_password = var.proxmox_password
      proxmox_node = proxmox_vm_qemu.services_int.target_node
      proxmox_vmid = proxmox_vm_qemu.services_int.vmid
    }
  }

For new VMs the protection flag is enabled and this is what I get if I delete the .tf file and  I run terraform apply
module.proxmox_vms.proxmox_vm_qemu.services_int: Destroying... [id=pve-int04/qemu/107]

 Error: 500 can't remove VM 107 - protection mode enabled


WV-454 redirected readonly queries of Emailaddress to readonly database [Team Review]

/admin_tools/views.py  - 1064 - goes to one_voter
1347 - goes to one_linked_voter which goes to template

👍


Uncaught Type Error in dotcom-shell-composite.js:183

Uncaught Type Error in dotcom-shell-composite.js:183
Detail
In a new angular project, just implemented dotcom-shell but getting type error in browser console on scrolling
app.component.html has
<dds-dotcom-shell-container>
  <main>
    Hello World!
  </main>
</dds-dotcom-shell-container>

package.json has
"dependencies": {
    "@angular/animations": "~9.1.13",
    "@angular/common": "~9.1.13",
    "@angular/compiler": "~9.1.13",
    "@angular/core": "~9.1.13",
    "@angular/forms": "~9.1.13",
    "@angular/platform-browser": "~9.1.13",
    "@angular/platform-browser-dynamic": "~9.1.13",
    "@angular/router": "~9.1.13",
    "@carbon/ibmdotcom-web-components": "^1.4.0",
    "@carbon/icons-angular": "^11.2.2",
    "carbon-components": "^10.36.0",
    "carbon-components-angular": "^4.52.0",
    "lit-element": "^2.5.1",
    "lit-html": "^1.4.1",
    "process": "^0.11.10",
    "rxjs": "~6.5.4",
    "tslib": "^1.10.0",
    "typescript": "^3.7.7",
    "zone.js": "~0.10.2"
  },

Error
In Chrome the error in console is
Uncaught TypeError: Cannot read property 'getBoundingClientRect' of undefined

In Firefox the error in console is
Uncaught TypeError: this._tableOfContentsInnerBar is undefined

@Kpal22 Hi Kaustav,
We'll look into it.
Could you put it in a sandbox and give us the link to it to further investigate?
Thank you!

@DragosRistici  Hi,
I tried my repo https://github.com/Kpal22/carbon-design-test  in codesandbox but its not working there
https://codesandbox.io/s/keen-zhukovsky-p5r4q


Implemented Applications start/stop operations V3

Implemented Applications start/stop operations V3

Hi Ivan,
Please update Junits for the modified methods. Now we need to mock the client APIs according to V3 implementation.

Yes, sure, I will update units


Including a Changelog

Including a log is convenient for users getting a high level overview of the most important changes between releases.

Hey @dyzhu12 - great idea! I'll look into implementing this and will let you know when I've gotten started.


Replace HMAC functions marked deprecated as of OpenSSL 3.0

Resolves #1582.
Description of changes:
Since the low level HMAC functions have been marked deprecated as of OpenSSL 3.0, it has been unable to build the SDK according to README in a modern environment without suppressing warnings.
This pull request resolves the issue by checking the version of provided OpenSSL and use the appropriate functions.
Check all that applies:

[x] Did a review by yourself.
[ ] Added proper tests to cover this PR. (If tests are not applicable, explain.)
[ ] Checked if this PR is a breaking (APIs have been changed) change.
[x] Checked if this PR will not introduce cross-platform inconsistent behavior.
[ ] Checked if this PR would require a ReadMe/Wiki update.

Check which platforms you have built SDK on to verify the correctness of this PR.

[x] Linux
[ ] Windows
[ ] Android
[ ] MacOS
[ ] IOS
[ ] Other Platforms

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

Hi @mocknen,
Thank you a lot for your valuable contribution. It is very much appreciated.
I just merged it.
Best regards,
Sergey.


ActivityHeader test error: not wrapped in act

console.error
    Warning: An update to ActivityHeader inside a test was not wrapped in act(...).

    When testing, code that causes React state updates should be wrapped into act(...):

    act(() => {
      /* fire events that update state */
    });
    /* assert on the output */

    This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
        at item (/Users/amanda/iNaturalistReactNative/src/components/ObsDetails/ActivityHeader.js:34:3)
        at View
        at Component (/Users/amanda/iNaturalistReactNative/node_modules/react-native/jest/mockComponent.js:28:18)
        at RCTScrollView
        at Component (/Users/amanda/iNaturalistReactNative/node_modules/react-native/jest/mockNativeComponent.js:17:18)
        at ScrollViewMock (/Users/amanda/iNaturalistReactNative/node_modules/react-native/jest/mockScrollView.js:22:23)
        at className (/Users/amanda/iNaturalistReactNative/node_modules/nativewind/dist/styled/index.js:23:23)
        at RCTSafeAreaView
        at Component (/Users/amanda/iNaturalistReactNative/node_modules/react-native/jest/mockNativeComponent.js:17:18)
        at className (/Users/amanda/iNaturalistReactNative/node_modules/nativewind/dist/styled/index.js:23:23)
        at className (/Users/amanda/iNaturalistReactNative/node_modules/nativewind/dist/styled/index.js:23:23)
        at component (/Users/amanda/iNaturalistReactNative/node_modules/nativewind/dist/styled-component.js:10:57)
        at children (/Users/amanda/iNaturalistReactNative/src/components/SharedComponents/ScrollViewWrapper.js:13:31)
        at ObsDetails (/Users/amanda/iNaturalistReactNative/src/components/ObsDetails/ObsDetails.js:68:34)
        at children (/Users/amanda/iNaturalistReactNative/src/components/App.js:39:17)
        at children (/Users/amanda/iNaturalistReactNative/src/providers/ObsEditProvider.js:41:29)
        at children (/Users/amanda/iNaturalistReactNative/node_modules/@react-navigation/core/src/EnsureSingleNavigator.tsx:20:49)
        at initialState (/Users/amanda/iNaturalistReactNative/node_modules/@react-navigation/core/src/BaseNavigationContainer.tsx:82:7)
        at value (/Users/amanda/iNaturalistReactNative/node_modules/@react-navigation/native/src/theming/ThemeProvider.tsx:11:41)
        at theme (/Users/amanda/iNaturalistReactNative/node_modules/@react-navigation/native/src/NavigationContainer.tsx:55:5)
        at children (/Users/amanda/iNaturalistReactNative/node_modules/@gorhom/bottom-sheet/mock.js:16:37)
        at apply (/Users/amanda/iNaturalistReactNative/node_modules/@callstack/react-theme-provider/src/createThemeProvider.js:14:3)
        at View
        at Component (/Users/amanda/iNaturalistReactNative/node_modules/react-native/jest/mockComponent.js:28:18)
        at PortalHost (/Users/amanda/iNaturalistReactNative/node_modules/react-native-paper/src/components/Portal/PortalHost.tsx:45:32)
        at children (/Users/amanda/iNaturalistReactNative/node_modules/react-native-safe-area-context/jest/mock.js:32:24)
        at children (/Users/amanda/iNaturalistReactNative/node_modules/react-native-paper/src/core/SafeAreaProviderCompat.tsx:38:50)
        at theme (/Users/amanda/iNaturalistReactNative/node_modules/react-native-paper/src/core/Provider.tsx:25:11)
        at children (/Users/amanda/iNaturalistReactNative/src/providers/INatPaperProvider.js:37:31)
        at QueryClientProvider (/Users/amanda/iNaturalistReactNative/node_modules/@tanstack/react-query/build/lib/QueryClientProvider.js:52:22)

      48 |     const isActiveUserTheCurrentUser = async ( ) => {
      49 |       const current = await isCurrentUser( user?.login );
    > 50 |       setCurrentUser( current );
         |       ^
      51 |     };
      52 |     isActiveUserTheCurrentUser( );
      53 |

      at call (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:72:30)
      at printWarning (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:46:7)
      at error (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16677:9)
      at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14877:5)
      at scheduleUpdateOnFiber (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:7510:7)
      at setCurrentUser (src/components/ObsDetails/ActivityHeader.js:50:7)
      at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
      at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)

I don't see this on main.


Optimization converged to parameters that are outside the range should be a ValueError

Is your feature request related to a problem? Please describe.
scipy 1.7.0 introduced a validation of the parameters learned by the stats distributions. When the validation fails, the code raises a plain Exception:
>>> import numpy as np
>>> from scipy.stats import beta
>>>
>>> vector = np.concatenate([np.zeros(29), np.ones(21)])
>>> beta.fit(vector)
.../scipy/optimize/minpack.py:175: RuntimeWarning: The iteration is not making good progress, as measured by the
  improvement from the last ten iterations.
  warnings.warn(msg, RuntimeWarning)
.../scipy/optimize/optimize.py:761: RuntimeWarning: invalid value encountered in subtract
  np.max(np.abs(fsim[0] - fsim[1:])) <= fatol):
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../scipy/stats/_continuous_distns.py", line 62, in wrapper
    return fun(self, *args, **kwds)
  File ".../scipy/stats/_continuous_distns.py", line 662, in fit
    return super().fit(data, *args, **kwds)
  File ".../scipy/stats/_distn_infrastructure.py", line 2505, in fit
    raise Exception("Optimization converged to parameters that are "
Exception: Optimization converged to parameters that are outside the range allowed by the distribution.

Describe the solution you'd like
Since the problem is that the values are not valid for the current distribution, I think that raising a ValueError would be better.
Additional context (e.g. screenshots)
This error was discovered because the Exception escaped an except ValueError statement that was previously able to capture all the fit errors, which means that ValueError is probably the optimal exception type and what other implementations may also be expecting. See https://github.com/sdv-dev/Copulas/issues/264 for reference.

Oops, I don't think we meant to return a plain Exception there.
ValueError suggests to me that there is something wrong with the user's values. Really, the user's input may be fine, but the algorithm is not doing what is expected. That seems like a conceptually distinct type of exception, to me. Do you think that distinction is important, or do you think it is ok to be liberal about the use of ValueError?

PR welcome!


Adopt RSCSS system

With this pull request I would like to update our CSS guidelines.
RSCSS
Right now we are using the BEM syntax. Over the last couple of projects we encountered some issues with it. One of the biggest was an on going raise of long selectors — which of course can be handled by linting and stricter rules. But nevertheless…
I stumbled upon RSCSS during these projects which is a …

A set of simple ideas to guide your process of building maintainable CSS.
– rscss.io

Since BEM isn't bad at all and RSCSS pretty much follows BEM conventions[1], only with a different syntax I thought we can give it a try without changing too much at a time.
File and folder structure
With that and HTTP2 (#6) in mind I started to update our gridonic/web-boilerplate (feature/http2). Specifically speaking I changed our structure to a more strict component based approach. Now that we are going to stick to the RSCSS system, we can also have our file and folder structure in a more component orientated approach.[2]
So the major changes are:

No more bundles or modules, just components
All components have their own directory within the components folder[2]
Each component has their styling inside its folder[2]
Non-component styling will still be in the (global) app-wide counterparts

I'm just trying to eliminate complexity by simplifying the structure. In my opinion everything on a website is a component, even if it's a collection of components. So why not drop any surplus naming and keep it simple?

References

http://rscss.io/other-resources.html
These changes are closely associated with the proposed changes in #6.

@gridonic/core Please review and comment where appropriate.

Any other takers @gridonic/core ?

I also removed the alphabetically ordering statement which we discussed last time as this is a little bit too specific.

Have looked over it, thank you very much. To me it looks awesome and we should definitely merge this! I have added some comments along some lines. Also, I have directly made two commits with corrections.