Add support for phi-3-mini-128k model

Please add support for the phi-3-mini-128k(context length) model in neural-speed.

It's in our plan.
Thanks

Thanks, since phi 3 support has been merged will close this issue. But I have another question and do not want to create a separate issue, so asking here.
According to https://github.com/intel/neural-speed/tree/main/neural_speed/core#fastest-configuration-for-cpus , for ISAs both newer and older(AVX2) than AVX512F, int8 is the fastest configuration, but for AVX512F fp32 is the fastest. Why is it so? Also, does int8 compute lead to lesser memory usage as compared to fp32 or is the memory usage equal for same type of quantization?

@bil-ash Hi, AVX512F here means devices without AVX512_VNNI, and I don't implement u8s8 and s8s8 for AVX512. So it's better to use fp32 for computation. AVX2 devices without AVX_VNNI have u8s8 & s8s8 kernels for backup.

Okay, understood


Allow connections to successfully close even if wrapped connection doesn't respect read deadlines

WARNING - This template is public, do not include any sensitive information

[ ] Do the tests pass? Consistently?
[ ] Did this change improve test coverage?
[ ] Has it been reviewed/approved by relevant teammates?
[ ] Can it be QA’d in staging or something like staging?
[ ] Is the code in question being linted? If not, consider adding a linter step to CI. If yes, make sure the linter is happy.
[ ] Do we know how we’re going to deploy this?
[ ] Are we clear on what the support and maintenance impact is?
[ ] Did you create new documentation? Is it accessible and in the right place?
[ ] Has existing documentation been updated?
[ ] Have you logged tickets for related technical debt with the label “techdebt”?

Looks reasonable to me @oxtoacart
I'm not sure if there is a followup that would still require them, but it looks like there could be some simplifications without the locking? (ie now there is no distinction between Read/doRead Write/doWrite SetDeadline/doSetDeadline etc SetReadDeadline/doSetReadDeadline SetWriteDeadline/doSetWriteDeadline )

I'm not sure if there is a followup that would still require them, but it looks like there could be some simplifications without the locking? (ie now there is no distinction between Read/doRead Write/doWrite SetDeadline/doSetDeadline SetReadDeadline/doSetReadDeadline SetWriteDeadline/doSetWriteDeadline )

Good point, fixed!
Thanks for the review @forkner.


support PEP 484

Is your feature request related to a problem? Please describe.
No type hint is written, resulting in a static analysis that differs from annotations.
ex: xi accepts float, but is inferred to be int because of the default.

This also causes some issues with static analysis and using the IDE.
Describe the solution you'd like
Add the correct type hint.
References or alternative approaches
https://peps.python.org/pep-0484/
Additional context
If you decide to support type hint, I'll contribute.
However, since a lot of changes are planned in #447 , i'll start with modules that are not related to #447 .
Are you able and willing to implement this feature yourself and open a pull request?

[X] Yes, I can provide this feature.

I have one question while writing #494.
TargetSpace.register() requires float as constraint_value, and if constraint_value is restricted to float.
then the return type of ConstraintModel will be fixed to float,
and the value of constraint in TargetSpace.max() will also be fixed to float.
However, when I checked logger.py, it seems to happen in the case of np.ndarray.
Is the comment in TargetSpace.register() wrong?

In case of multiple constraints this can indeed be an np.ndarray. See e.g. this test.

That is to say -- yes, I wrote documentation that's wrong 😬

In case of multiple constraints this can indeed be an np.ndarray. See e.g. this test.

Thanks, that makes it a little clearer where to fix it.
By the way, can I continue with this #494 ?

By the way, can I continue with this https://github.com/bayesian-optimization/BayesianOptimization/pull/494 ?

I'm personally in favour of adding type hints everywhere. It hasn't been a priority since I consider it more of a QoL update, additionally I don't have a lot of experience with type hints and handling more complex situations. I quickly had a look at your PR and I'm a bit surprised that some things are not immediately clear to me in their function (TypeVar, Generic, ParamSpec, etc.; i.e. most of the non-primitive type imports from typing), though I am also not a software engineer and I'm not familiar with more advanced type hinting.
I don't mind learning something, but it's important to me that this package's code remains accessible for casual users. One thing that I like about this package is that it is very easy for non-experienced programmers to contribute if they know some python, I am worried that this will increase the threshold for such contributions.
There may simply not be a better way of handling things, I'm unfortunately not qualified to answer that. I would suggest you continue for now and we have another look at review time. What do you think?

By the way, can I continue with this #494 ?

I'm personally in favour of adding type hints everywhere. It hasn't been a priority since I consider it more of a QoL update, additionally I don't have a lot of experience with type hints and handling more complex situations. I quickly had a look at your PR and I'm a bit surprised that some things are not immediately clear to me in their function (TypeVar, Generic, ParamSpec, etc.; i.e. most of the non-primitive type imports from typing), though I am also not a software engineer and I'm not familiar with more advanced type hinting. I don't mind learning something, but it's important to me that this package's code remains accessible for casual users. One thing that I like about this package is that it is very easy for non-experienced programmers to contribute if they know some python, I am worried that this will increase the threshold for such contributions.
There may simply not be a better way of handling things, I'm unfortunately not qualified to answer that. I would suggest you continue for now and we have another look at review time. What do you think?

If you want to keep your runtime code as it is, you can also support type hint with a stub file(*.pyi).
In fact, pandas supports it using stub file.
However, you will need to synchronize the stub file with the runtime code,
which can make supporting type hints a bit complicated.
I'm used to typehint, so it doesn't matter to me, but I agree with what you said.
I think we'll have to wait until #447  is done before we can finish this anyway,
so let's keep it as is for now, and let me know when you've decided and we can move forward.

Hey @phi-friday, do we consider this issue fixed already, fixed after merging #520 or is there something else left to be done?

Hey @phi-friday, do we consider this issue fixed already, fixed after merging #520 or is there something else left to be done?

In my opinion, it's practically already done, but I think adding py.typed would make it clearer.
This issue will be automatically closed with the merge of #520. You don't need to do anything else.
Of course, you can just close it.

Thanks for your contributions! Much appreciated!

@till-m Thank you for actively sharing your thoughts with me. It helped me to see this issue through to completion.


Can we change the default behaviour of solution_array.call?

I don't know if this will be too annoying to implement, but it would be great if the default behaviour of sol(varkey) returned what mag(sol(varkey) currently returns. I'm sure there is a reason for how it is at the moment, but needing to use mag is kind of annoying and ugly...

@whoburg...

(the idea was to prevent unit conversion errors)

When writing to textfiles etc..  I can make do.

If it's in non-automated code then this seems like a legit grievance. We could have a SolutionArray.submag function to save the import?

is there a way to handle this by using pint's string formatting? http://pint.readthedocs.io/en/0.7.2/tutorial.html#string-formatting


Helper methods for deriving new views?

Maybe these?

[x] zoom.scaleBy(selection, k)
[x] zoom.scaleTo(selection, k)
[x] zoom.translateBy(selection, x, y)
[ ] zoom.translateTo(selection, x, y)

I’m not sure zoom.translateTo makes much sense given there’s already zoom.transform. So, gonna leave it with those three.


SSL conversion for kghub.io

And any related issues for Cloudfront transition.
@kltm

From a discussion with @caufieldjh :
For now, we'll just move the proxy from LBL to AWS to avoid LBL security interference (by making sure we are not transiting through LBL machines). After publication we can migrate kghub.io to be the primary data deliverer and look at shutting down or forwarding kg-hub.berkeleybop.io.
build.berkeleybop.io has already transitioned to Cloudflare.

@caufieldjh Okay, as I worked through this, it became apparent that moving the proxy would be fiddly and I've gone ahead with a more robust (and simple) solution: kghub.io is now a CloudFront distribution in exactly the same way that kg-hub.berkeleybop.io is, with both being backed by the same S3 bucket. The only change from an external perspective would be that the there is no longer a forward, but both domains work. (It might even be work decommissioning kg-hub.berkeleybop.io when you're comfortable to prevent alternate URLs existing.)
Please take a look around and let me know; switching back for anything written here is as simple as changing one DNS record.
As a final step, I'll setup LBL Cloudflare to front AWS CloudFront, which will give us activity and logging, as well as reducing costs.
Final note for today, I also noticed the existence of kg-hub-rdf.berkeleybop.io, which we did not get a chance to discuss. It does not seem to be LBL, so can remain as-is for now. However, the name is a little odd and you might want to think about the future of it before publication (assuming it is actually used or intended to be a public resource).

Ok, thanks @kltm !
I'm not aware of kg-hub-rdf.berkeleybop.io being used for anything. Is there a date for when that was created?
I'll need to check on whether any scripts are expecting to use berkeleybop.io - most don't care about anything beyond the S3 bucket.
Sounds good otherwise!

Oh, kg-hub-rdf.berkeleybop.io is the KG-COVID-19 blazegraph endpoint. Not a high priority for now.

@caufieldjh "not a high priority" as in it is used but off my radar, or can it be blinked out without negative consequence?

The former

Is this still open?

Will consider this fixed as per #18


Suggestion: Show players not connected to IRC when they are connected to FAF

Hey
I guess this migth not be wanted behavior and also might need server support.
But I find it annoying when I see someone in a game lobby, and I want more info about them. I can't just search them up and click more info/view replays. IMO everyone online, at least anyone in an active multiplayer lobby or game should be searchable and shown online.
tl;dr If you are connected to faf and are getting game data. you should also be connected to IRC or at least shown online but unavailable if not(so you are searchable).

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Interesting suggestion, theoretically, if you're connected to FAF you should also be connected to the IRC, if you aren't, then the problem is at a different location. But as this isn't a big issue cause there is actually no server side support needed/ is already there, I think it should be implemented as a fallback strategy as the IRC is currently failing sometimes.

Another case it will happen is if someone is chat banned. Still useful for me to see if they are online for playing. But maybe your not supposed to see if they are... idk :P

In leaderboard

At the moment there is no way to know when a player has signed off other than them logging out of the IRC so a player logout message would need to be added to the server to do this.

Waiting on this lobby feature: https://github.com/FAForever/server/issues/786

This is now actually feasible


update_subscription or create_subscription with forward_to throw an exception

Describe the bug
I tried to create a subscription and set forward_to attribute but got an error
I can update all properties except forward_to.
if I set it manually and try to update any of attribute I get same error
here is the function
def get_and_update_subscription(servicebus_mgmt_client):
    subscription_properties = servicebus_mgmt_client.get_subscription(
        TOPIC_NAME, SUBSCRIPTION_NAME)
    subscription_properties.forward_to = QUEUE_ADDRESS
    subscription_properties.max_delivery_count = 5
    servicebus_mgmt_client.update_subscription(
        TOPIC_NAME, subscription_properties)

Exception or Stack Trace
Exception has occurred: HttpResponseError
MissingToken: The authorization header was not found. To know more visit https://aka.ms/sbResourceMgrExceptions. . TrackingId:a950b88a-d221-4f3d-aa8e-898d8d7233f8_G36, SystemTracker:zishibus:Topic:zishi.adaptive/cognitiveandsurveyupload, Timestamp:2020-11-25T13:31:47
  File "/home/farsid/development/zishi-adaptive-prediction-engine/src/PredictionConsummer.py", line 62, in get_and_update_subscription
    TOPIC_NAME, subscription_properties)
  File "/home/farsid/development/zishi-adaptive-prediction-engine/src/PredictionConsummer.py", line 68, in <module>
    get_and_update_subscription(servicebus_mgmt_client)

To Reproduce
Steps to reproduce the behavior:
Create a queue and subscription and try to set forward_to to the queue address
CONNECTION_STR = "Endpoint=sb://xxxx"
QUEUE_NAME = "cognitive-servey-prediction"
SUBSCRIPTION_NAME = "cognitive-servey-prediction"
TOPIC_NAME = "zishi.adaptive/cognitiveandsurveyupload"
QUEUE_ADDRESS = "sb://xxxx.servicebus.windows.net/cognitive-servey-prediction"

def create_subscription(servicebus_mgmt_client):
    print("-- Create Subscription")
    if not any(x.name == SUBSCRIPTION_NAME for x in servicebus_mgmt_client.list_subscriptions(TOPIC_NAME)):
        servicebus_mgmt_client.create_subscription(
            TOPIC_NAME, SUBSCRIPTION_NAME)
    print("Subscription {} is created.".format(QUEUE_NAME))
    print("")

def create_queue(servicebus_mgmt_client):
    if not any(x.name == QUEUE_NAME for x in servicebus_mgmt_client.list_queues()):
        servicebus_mgmt_client.create_queue(
            QUEUE_NAME, max_delivery_count=10, dead_lettering_on_message_expiration=True)

def get_and_update_subscription(servicebus_mgmt_client):
    subscription_properties = servicebus_mgmt_client.get_subscription(
        TOPIC_NAME, SUBSCRIPTION_NAME)
    subscription_properties.forward_to = QUEUE_ADDRESS
    subscription_properties.max_delivery_count = 5
    servicebus_mgmt_client.update_subscription(
        TOPIC_NAME, subscription_properties)

with ServiceBusAdministrationClient.from_connection_string(CONNECTION_STR) as servicebus_mgmt_client:
    create_queue(servicebus_mgmt_client)
    create_subscription(servicebus_mgmt_client)
    get_and_update_subscription(servicebus_mgmt_client)

Setup (please complete the following information):

Python Version:  3.7.5
SDK Version: azure-servicebus==7.0.0

(Removing mgmt tag as this is the dataplane (azure-servicebus) administration SDK.)
Thanks @farshid3003 , this was a really solid set of repro steps, and I can confirm what you're seeing.  Will loop back here as soon as we know more, but wanted to mention if this was a hard blocker the azure-mgmt-servicebus lib is an option (and typically the one we point folks at for management that doesn't require SAS based auth)

Hi @KieranBrantnerMagee , Thanks for the answer, for now I just create it manually.

Good news @farshid3003
We've found the issue at hand;  forward_to and forward_dead_lettered_messages_to require additional bearer token headers to be provided.  (see here) Thanks for the callout, this was a good gap to fill and have tested, I expect this to find its way in with the next release.


Update apache-spark-python-package-installation.md

Adding instructions to set spark session parameters after service restart.

Microsoft authors of articles need to make updates through the private repository so the updates can be staged and validated by the current validation rules. After you review staging and fix all validation issues, you can add the sign-off comment to let the PR reviewers know the updates are ready to be merged.It's easy to access the private repo version of your articles in GitHub. Just add -pr to the URL, as follows:
Public repo URL: https://github.com/Microsoft/azure-docs/blob/master/articles/azure-portal-overview.md
Private repo URL: https://github.com/Microsoft/azure-docs-pr/blob/master/articles/azure-portal-overview.md
We have closed this pull request. Please resubmit the updates through the private repo. If you need perms to the private repo, see the contributor guide instructions


Only 10 records returned

Is this a bug e.g.  client.campaign.all() returns only 10.
How to handle all of them?

Am I correctly get that I need to invoke client.campaign.all(count=XXX) to get all elements?

Seems that way from playing with client.member.all
Would be useful to document this.

I have made short pull request to really process all entities - https://github.com/charlesthk/python-mailchimp/pull/39

Thanks @andjelx I have merged your PR !


[Opinion] Impossible to figure out error messages

Setup
Versions

Rust: rustc 1.46.0-nightly (feb3536eb 2020-06-09)
Diesel: 1.4.4
Database: postgres
Operating System windows

Feature Flags

diesel:
postgres, r2d2

Problem Description
Ok, so, I'm just wondering if I'm going down the wrong user path, because I just spent 20 minutes trying to diagnose an error and figured out the code:
        use schema::scripts::dsl::*;
        let result = diesel::delete(
                scripts
                    .filter(id.eq("1"))
            )
            .execute(session.db())
            .map_err(|e| {
                debug!("{:?}", e);
                format!("Could not delete script.")
            });

was bugged because you can't use a string instead of a number when id is a number. That's all well and good, but this is the error message it gave me:
the trait bound `diesel::query_builder::SelectStatement<schema::scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<schema::scripts::columns::id, &str>>>: diesel::query_builder::IntoUpdateTarget` is not satisfied

the trait `diesel::query_builder::IntoUpdateTarget` is not implemented for `diesel::query_builder::SelectStatement<schema::scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<schema::scripts::columns::id, &str>>>`

help: the following implementations were found:
<diesel::query_builder::SelectStatement<F, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, W> as diesel::query_builder::IntoUpdateTarget>rustc(E0277)

And I read through the api docs to try to figure out exactly what I was doing wrong, and there is basically no way to figure out from the docs, I just had to guess. Although to be fair it was the example in the docs that made me guess it needed to be an integer.
But I mean, am I just stupid, or are most users going down a different path where they would already understand this before they run into an error? I mean, I just want to make sure I'm following the standard path, because I don't see how the average person could figure out how to use this library without just reading the source code.
I talked to my friend, and he told me he just read the source code.
Maybe this is just the type of error that will always be a pain, but you only have to learn it once, so it's not a big deal?
What is the expected output?
It would be nice if it said something like "we expected an integer"
What is the actual output?
the trait bound `diesel::query_builder::SelectStatement<schema::scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<schema::scripts::columns::id, &str>>>: diesel::query_builder::IntoUpdateTarget` is not satisfied

the trait `diesel::query_builder::IntoUpdateTarget` is not implemented for `diesel::query_builder::SelectStatement<schema::scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<schema::scripts::columns::id, &str>>>`

help: the following implementations were found:
<diesel::query_builder::SelectStatement<F, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, W> as diesel::query_builder::IntoUpdateTarget>rustc(E0277)

Unfortunately there is no way to control rustc's error messages, so we cannot just print "we expect an integer" there. Beside of that I do not think that is even possible to give such a concrete error message in this case, the best that can be printed is that str does not implement AsExpression<Integer> as there are possibly multiple types that are supported in this position. I assume rustc generates this error message, because there can be multiple impls for a given trait and for the general case rustc cannot know which impl should be choosen to generate the error message. If it would randomly guess there, that could lead to situations where it suggests something completely wrong, because it guessed the wrong impl (even that happens from time to time).
Closed as this is not actionable for the diesel team. I agree that the error message could be better, but for the reasons explained above I do not see any way to improve them. If you think rustc could report some better message here you should probably submit an bug report there.

Ok, thanks for letting me know. I wasn't sure if there was a solution or not, but was just trying to improve the experience for newcomers, as I was almost like, "I guess I just can't use diesel". But ok, thanks anyway

I'm not sure how we can improve the situation here for newcomers, as we do not have much control about the error messages. If you have any concrete suggestions feel free to share them.

One of possible solutions can be procedural macro where you write SQL code directly and you have full control on error messages

@Mingun Feel free to provide such a macro. For me it is clearly out of scope of diesel to implement parsers for all the subtily different SQL dialects out there.

I wish I could be of more assistance, but I'm pretty new to Rust in general. I will keep that in mind though as I progress...it does seem to be a trend that error messages pop up that really aren't very helpful, at least to me, and I end up having to just find an example that works and work backward from there trying to integrate it into my codebase. Maybe this is more of an overall larger problem with Rust and very difficult to overcome because of the borrow checker. I do know the Rust team is trying to work on making better error messages, so, I guess we'll just wait and see what they come up with!

So I sat down and tried the example to look for variants to improve the error messages here. For reference I've used the following modified code (just made in compile in a minimal reproducible environment):
#[macro_use]
extern crate diesel;

use diesel::prelude::*;

table! {
    scripts {
        id -> Integer,
        name -> Text,
    }
}

fn test(conn: &PgConnection) {
    let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
        .execute(conn)
        .map_err(|e| {
            format!("Could not delete script.")
        });
}

While trying to compile this snippet rustc emits the following error messages:
    Checking diesel_test v0.1.0 (/tmp/diesel_test)
error[E0277]: the trait bound `str: diesel::Expression` is not satisfied
  --> src/main.rs:14:70
   |
14 |     let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
   |                                                                      ^^^ the trait `diesel::Expression` is not implemented for `str`
   |
   = note: required because of the requirements on the impl of `diesel::Expression` for `&str`
   = note: required because of the requirements on the impl of `diesel::expression::AsExpression<diesel::sql_types::Integer>` for `&str`

error[E0277]: the trait bound `str: diesel::Expression` is not satisfied
  --> src/main.rs:14:55
   |
14 |     let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
   |                                                       ^^^^^^^^^^^^^^^^^^^ the trait `diesel::Expression` is not implemented for `str`
   |
   = note: required because of the requirements on the impl of `diesel::Expression` for `&str`
   = note: required because of the requirements on the impl of `diesel::Expression` for `diesel::expression::operators::Eq<scripts::columns::id, &str>`
   = note: required because of the requirements on the impl of `diesel::query_dsl::filter_dsl::FilterDsl<diesel::expression::operators::Eq<scripts::columns::id, &str>>` for `diesel::query_builder::SelectStatement<scripts::table>`

error[E0277]: the trait bound `str: diesel::expression::NonAggregate` is not satisfied
  --> src/main.rs:14:55
   |
14 |     let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
   |                                                       ^^^^^^^^^^^^^^^^^^^ the trait `diesel::expression::NonAggregate` is not implemented for `str`
   |
   = note: required because of the requirements on the impl of `diesel::expression::NonAggregate` for `&str`
   = note: required because of the requirements on the impl of `diesel::expression::NonAggregate` for `diesel::expression::operators::Eq<scripts::columns::id, &str>`
   = note: required because of the requirements on the impl of `diesel::query_dsl::filter_dsl::FilterDsl<diesel::expression::operators::Eq<scripts::columns::id, &str>>` for `diesel::query_builder::SelectStatement<scripts::table>`

error[E0277]: the trait bound `diesel::query_builder::SelectStatement<scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<scripts::columns::id, &str>>>: diesel::query_builder::IntoUpdateTarget` is not satisfied
   --> src/main.rs:14:33
    |
14  |     let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `diesel::query_builder::IntoUpdateTarget` is not implemented for `diesel::query_builder::SelectStatement<scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<scripts::columns::id, &str>>>`
    |
   ::: /home/weiznich/.cargo/registry/src/github.com-1ecc6299db9ec823/diesel-1.4.5/src/query_builder/functions.rs:135:18
    |
135 | pub fn delete<T: IntoUpdateTarget>(source: T) -> DeleteStatement<T::Table, T::WhereClause> {
    |                  ---------------- required by this bound in `diesel::delete`
    |
    = help: the following implementations were found:
              <diesel::query_builder::SelectStatement<F, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, W> as diesel::query_builder::IntoUpdateTarget>

error[E0277]: the trait bound `diesel::query_builder::SelectStatement<scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<scripts::columns::id, &str>>>: diesel::query_builder::IntoUpdateTarget` is not satisfied
  --> src/main.rs:14:18
   |
14 |     let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
   |                  ^^^^^^^^^^^^^^ the trait `diesel::query_builder::IntoUpdateTarget` is not implemented for `diesel::query_builder::SelectStatement<scripts::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<scripts::columns::id, &str>>>`
   |
   = help: the following implementations were found:
             <diesel::query_builder::SelectStatement<F, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, W> as diesel::query_builder::IntoUpdateTarget>

error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0277`.
error: could not compile `diesel_test`.

To learn more, run the command again with --verbose.

Cargo-Process exited abnormally with code 101 at Tue Jul  7 10:11:53

So instead of getting a single error message like reported in the OP, we are getting 6 errors here. A normal strategy for rustc error messages is starting to read them with the first one first, because later error messages can be based on false assumption from rustc (which is the case here). So for readibility here the first error message again:
error[E0277]: the trait bound `str: diesel::Expression` is not satisfied
  --> src/main.rs:14:70
   |
14 |     let result = diesel::delete(scripts::table.filter(scripts::id.eq("1")))
   |                                                                      ^^^ the trait `diesel::Expression` is not implemented for `str`
   |
   = note: required because of the requirements on the impl of `diesel::Expression` for `&str`
   = note: required because of the requirements on the impl of `diesel::expression::AsExpression<diesel::sql_types::Integer>` for `&str`

While this error message is not great, it's definitively not bad as it:

Points to the correct span
Correctly lists the issue as concrete as possible (the second node explicitly says that there is no impl AsExpression<Integer> for &str

The next four error messages are now based on the assumption that &str implements Expression which is wrong from diesels point of view. From rustc's point of view this makes sense, as there is no concrete impl for AsExpression<Integer> for &str while there is a generic one for all types that implement Expression, so it will suggest that the Expression impl is missing and base the following analysis on this assumption. (I assume that generally this is useful behavior from rustc side as I can definitively also see cases where the error messages get more concrete in such cases)

This is fantastic!
I do actually believe this is the ideal solution, and I don't think I could possibly suggest anything better.
Of course, it would be better if it said that it expected an integer directly, but I think that would probably cause other problems, kind of like overfitting the data.
With this solution, it makes much more intuitive sense to me, because I can see that diesel::Expression implements the Integer. It kind of tells me that although, a string would be a valid diesel::Expression, this particular one is expecting an i32, which I think is very clear. Great job!


Error - Unable to generate assets to build and debug

I have tried to run through the HelloWorld sample from Microsoft for C# on VS Code. On both Windows and a Mac, I get the error: Unable to generate assets to build and debug. OmniSharp server is not running. I have the C# extension, .NET Core 7 SDK installed, etc.

A lot has changed with O# since this issue was opened. If you are still having problems, please open a new issue at https://github.com/omnisharp/omnisharp-roslyn/issues


fix readme: add file textual_rendering.png

Add file textual_rendering.png and fix file name in README

Codecov Report

Merging #133 (edee134) into master (f355c50) will decrease coverage by 0.09%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #133      +/-   ##
==========================================
- Coverage   81.81%   81.71%   -0.10%
==========================================
  Files          20       20
  Lines        2040     2040
==========================================
- Hits         1669     1667       -2
- Misses        371      373       +2

Impacted Files
Coverage Δ

src/envs/sequential_rooms.jl
94.20% <0.00%> (-0.97%)
:arrow_down:

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 f355c50...edee134. Read the comment docs.


Add configuration option to not post anything if no code suggestions were found

Currently the pr agent posts a "No code suggestions found for the PR." message if it has no suggestions to provide.
It will be nice to have a configuration option where we can turn off the "no code suggestions" message if the pr agent has nothing to suggest.

sounds reasonable.
Welcome to open a PR for this


Collection-detail: add Requires Ansible

fixes https://issues.redhat.com/browse/AAH-410
This adds a "Requires Ansible" row to collection detail, defaulting to "No" if not present.
When present.. (last line)

When absent..

Question: should that be a "No" or more something like "Any"? (updated to "unspecified")

@himdel If the author doesn't provide a "Requires Ansible" value then I would not show the Requires Ansible field.


Update commands list and remove unecessary code

The old code is not necessary at all and can safely be removed. There were only a few very old redis commands that we should probably not support anymore.
Support is dropped for:
[ 'substr', 'debug', 'config', 'cluster', 'client' ]

New commands supported are:
[ 'command', 'geoadd', 'geohash', 'geopos', 'geodist', 'georadius', 'georadiusbymember', 'hstrlen', 'role', 'wait', 'zrevrangebylex' ]

The new commands have no tests yet, but I'd say this is good to go right away and we should add some tests for this later on.

Superseds #702

@BridgeAR good job. It's cool to see those cluster commands coming in, it would be neat to put a test or two around those to get a feel for the API.

@bcoe cluster was already supported, but I'm uncertain if it works. So we should definitely add some tests but I guess that could be done in a separate PR?


Create active integration tests & client

This functionality allows us to act on bookstore from within a notebook.

[x] Write NotebookClient for hitting Jupyter endpoints (e.g., by grabbing config with the notebook.notebookapp.list_running_servers()
[x] Write method for hitting Jupyter Notebook's /api/contents endpoint
[x] Write BookstoreClient for hitting bookstore's /api/bookstore/published endpoint

Closed by #69!


Please can 🦋 palindromic sat numbers be added as a charm?

These are by far the most sought after exotic sats (i.e. non-Rodarmor rarity sats) and are also the clear leader of the "digit rarity" class of satributes: https://x.com/ZedZeroth/status/1710287036848934984
Thank you :)
@cbspears - Do you agree? :)

I personally like the idea of adding more charms that the community & market have seemed to come to consensus on, especially if they are a clearly defined category and unique classification.
This would effectively be re-opening the discussion that originated from adding "Black Sats" in 2815
From @casey 's reasoning for closing that issue:

I think I'm going to close this. We can revisit it later. My reasons are:

It's confusing to add charms/rarities which have the same name (uncommon/rare/epic/legendary) as the existing rarity tier.
I can't think of good emoji / charms.
It does feel a little dilutive to me of the existing rarity tiers.

It's now over 2 months later, the rare and exotic sat market has continued to develop, and various sats continue to maintain value in the market.
In response to the 3 reasons to push discussion for another time, I think palindromes may have sufficient reason to "pass the test."

They do not have the same name as any existing rarity tiers
There is a clearly agreed upon emoji (🦋) which is easily identifiable & appears to work across multiple platforms

Is it dilutive to existing rarity tiers? I think there is a strong case to recognize sats where the rarity derives from the notation scheme as opposed to notable events/blocks/positioning as existing sat charms have.
I also think that it would be a good show to the Rare Sat community & ecosystem to add a sat + charm which was suggested from outside the core ord developer team. I believe all charms to date are ones Casey both suggested + implemented and we have not seen a "community suggested" charm be incorporated to date. Palindromes seem like a strong candidate.
I will caveat that I think an argument against them is that palindromes are not necessarily rare and they may be resource intensive to index. But rarity hasn't been a disqualifier for sat charms yet.

Thanks @cbspears. You've laid out the case much more clearly than I could. Regarding your last paragraph, based on our analysis of locked sats, once the last sat is mined it's likely that Uncommons will only be 10x as rare as palindromes. They are arguably the rarest "exotic" (non-Rodarmor) rarity class. Thanks again :)

How can I get a sense of what sat types are popular? For example, what are the different popular websites which have different sat types, and what are the symbols, relative values, and relative prices of each? Links to as many as possible would be great.

good places to look are:
https://satscribe.xyz
https://magisat.io
https://magiceden.io/ordinals/marketplace/rare-sats

One of first pioneer is Gansy:
Rare Sat Society (group)
https://twitter.com/RareSatSociety
discord.gg/raresatsociety
Marketplace and explorer
https://sating.io/

How can I get a sense of what sat types are popular? For example, what are the different popular websites which have different sat types, and what are the symbols, relative values, and relative prices of each? Links to as many as possible would be great.

Hi Casey. Thanks for looking into this. Here goes:
Leonidas' https://www.ord.io/ was the first website to use exotic categories in addition to Rodarmor rarities. I don't think they have changed categories since launch so you can see the selection on there. They also were the first to use the 🦋 symbol. The main difference between palindromes and the other exotic types are the total supply figures. See my July 2023 X-post for a comparison. Note that I actually over-estimated the total palindrome supply here, it's now known to be 120M with potentially 50% locked in early UTXOs/coinbase TXs: https://x.com/ZedZeroth/status/1677280978845278210
Next came Magisat. Quary's marketplace entirely dedicated to rare sats: https://magisat.io/categories You can see that palindromes are so popular that 12 of the 33 main categories consist of palindrome "layerings". Within January alone they've had Block 666 palindromes selling for $1700, Nakamoto palindromes selling for $1900, a Pizza palindrome selling for $7500... and check out the activity on Perfect Palinceptions (palindromes made of repeated palindromes): https://magisat.io/category/activity/perfect-palinception The only sats selling for more are Rodarmor Rares and Black Rares.
Recently Magic Eden (the largest inscription marketplace as far as I'm aware) just implemented a rare sats marketplace: https://magiceden.io/ordinals/marketplace/rare-sats They also list palindromes (and palinceptions).
Note that all major platforms have used the 🦋 symbol since it was first introduced by ord.io.
Please note that it could be thought that I am biased towards palindromes because I have a collection (and upcoming collections) inscribed upon them. But really that's seeing things backwards. I am a maths teacher who has been extremely interested in palindromes since June 2023. I have likely conducted more research into their patterns and circulation than anyone else, and that's why my collections are built on them. I would strongly argue that they the undisputed leading exotic rare sat class and are coveted by collectors across the world.
Here's my July 2023 post on the total supply count: https://x.com/ZedZeroth/status/1678009309769113600
Feel free to read more of my posts if you want to dive in deeper :smile:

sattrek.com - Provides an overall idea of the value of each category.
I recommend web desktop.
*Bundles having multiple different sattributes (e.g., palindrome pizza) are not considered.
*ME data
Also, please familiarize yourself with one of the infinite number of concepts capable of endowing sats with satributes:
"SatoSeries creates a direct connection between sats and inscriptions/collections of inscriptions. It adds a layer of complexity and fairness to distribution, promoting engagement in the collection's economy at an early stage, rewarding those who expand their knowledge of Bitcoin" - Inscription #58 941 610

How can I get a sense of what sat types are popular? For example, what are the different popular websites which have different sat types, and what are the symbols, relative values, and relative prices of each? Links to as many as possible would be great.

Check out... https://www.satology.io

In the interest of helping Casey assess the market better, is there someone
who could do some basic aggregation of total volume across most/all
marketplaces for the top 10 most traded types of sats?
On Sun, Feb 11, 2024, 3:19 PM Brian Laughlan @.***>
wrote:

How can I get a sense of what sat types are popular? For example, what are
the different popular websites which have different sat types, and what are
the symbols, relative values, and relative prices of each? Links to as many
as possible would be great.
Check out... https://www.satology.io
—
Reply to this email directly, view it on GitHub
https://github.com/ordinals/ord/issues/3095#issuecomment-1937858694, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/A5T23ZKYXW6HZQBFUVUEKLLYTERWBAVCNFSM6AAAAABDBY5U62VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZXHA2TQNRZGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Dans le but d'aider Casey à mieux évaluer le marché, existe-t-il quelqu'un qui pourrait effectuer une agrégation de base du volume total sur la plupart/tous les marchés pour les 10 types de sats les plus échangés ?
…
Le dimanche 11 février 2024, à 15 h 19, Brian Laughlan @.> a écrit : Comment puis-je avoir une idée des types de sat qui sont populaires ? Par exemple, quels sont les différents sites Web populaires qui proposent différents types de satellites, et quels sont les symboles, les valeurs relatives et les prix relatifs de chacun ? Des liens vers autant de liens que possible seraient formidables. Découvrez... https://www.satology.io — Répondez directement à cet e-mail, consultez-le sur GitHub < #3095 (commentaire) >, ou désabonnez-vous < https://github.com/notifications/unsubscribe-auth/ A5T23ZKYXW6HZQBFUVUEKLLYTERWBAVCNFSM6AAAAABDBY5U62VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZXHA2TQNRZGQ > . Vous recevez ceci parce que vous avez été mentionné.ID du message : @.>

There is @Sat_stats on Twitter who does this SEO work, but he has deleted these threads currently. He is part of the Deezy_inc team

Here are the ones I chose to highlight on Ordiscan if it’s any help! 👍
https://ordiscan.com/rare-sats

How can I get a sense of what sat types are popular? For example, what are the different popular websites which have different sat types, and what are the symbols, relative values, and relative prices of each? Links to as many as possible would be great.

With no end there is no beginning.
One cannot exist without the other, so how could uncommon sats have value but not black uncommons?
Using this logic, the value of uncommons and the value of black uncommons should be equal right?

In the interest of helping Casey assess the market better, is there someone who could do some basic aggregation of total volume across most/all marketplaces for the top 10 most traded types of sats?

These are the volume figures from https://magisat.io/categories in $1000s (I am unsure of the volume time period):
Vintage | 909
Uncommon | 889
Nakamoto | 858
Alpha | 773
Block 9 | 736
Palindrome | 548
Block 9 450x | 484
Sequence Pali | 369
Rare | 262
Black Uncommon | 243
Omega | 225
3d Pali | 121
Pizza | 94
Vintage Palindrome | 82
Uniform Palinception | 65
Block 78 | 60
Perfect Palinception | 55
Nakamoto Palindrome | 48
2d Pali | 47
Black Rare | 33
Silkroad | 29
Pizza Palindrome | 28
Paliblock Palindrome | 26
Rodarmor Name | 23
Block 286 | 18
Hitman | 10
B666 Pali | 8
Block 666 | 8
JPEG | 7

sattrek.com - Provides an overall idea of the value of each category. I recommend web desktop.
*Bundles having multiple different sattributes (e.g., palindrome pizza) are not considered. *ME data
Also, please familiarize yourself with one of the infinite number of concepts capable of endowing sats with satributes:
"SatoSeries creates a direct connection between sats and inscriptions/collections of inscriptions. It adds a layer of complexity and fairness to distribution, promoting engagement in the collection's economy at an early stage, rewarding those who expand their knowledge of Bitcoin" - Inscription #58 941 610
This is the ME volume for the last 30 days from the sattrek data (in sats):

In the interest of helping Casey assess the market better, is there someone who could do some basic aggregation of total volume across most/all marketplaces for the top 10 most traded types of sats?

These are the volume figures from https://magisat.io/categories in $1000s (I am unsure of the volume time period):
Vintage | 909 Uncommon | 889 Nakamoto | 858 Alpha | 773 Block 9 | 736 Palindrome | 548 Block 9 450x | 484 Sequence Pali | 369 Rare | 262 Black Uncommon | 243 Omega | 225 3d Pali | 121 Pizza | 94 Vintage Palindrome | 82 Uniform Palinception | 65 Block 78 | 60 Perfect Palinception | 55 Nakamoto Palindrome | 48 2d Pali | 47 Black Rare | 33 Silkroad | 29 Pizza Palindrome | 28 Paliblock Palindrome | 26 Rodarmor Name | 23 Block 286 | 18 Hitman | 10 B666 Pali | 8 Block 666 | 8 JPEG | 7

These are mixed sattribute data. There's almost no demand for regular vintage, but at the same time, vintage palindromes are popular, Block 9 (#2 by volume) is considered vintage on its own and is also accounted for in these mixed data, same Nakamoto. This particular issue is what I tried to address in SatTrek.

How can I get a sense of what sat types are popular? For example, what are the different popular websites which have different sat types, and what are the symbols, relative values, and relative prices of each? Links to as many as possible would be great.

With no end there is no beginning.
One cannot exist without the other, so how could uncommon sats have value but not black uncommons?
Using this logic, the value of uncommons and the value of black uncommons should be equal right?

I personally like the idea of adding more charms that the community & market have seemed to come to consensus on, especially if they are a clearly defined category and unique classification.
This would effectively be re-opening the discussion that originated from adding "Black Sats" in 2815
From @casey 's reasoning for closing that issue:

I think I'm going to close this. We can revisit it later. My reasons are:

It's confusing to add charms/rarities which have the same name (uncommon/rare/epic/legendary) as the existing rarity tier.
I can't think of good emoji / charms.
It does feel a little dilutive to me of the existing rarity tiers.

It's now over 2 months later, the rare and exotic sat market has continued to develop, and various sats continue to maintain value in the market.
In response to the 3 reasons to push discussion for another time, I think palindromes may have sufficient reason to "pass the test."

They do not have the same name as any existing rarity tiers
There is a clearly agreed upon emoji (🦋) which is easily identifiable & appears to work across multiple platforms

Is it dilutive to existing rarity tiers? I think there is a strong case to recognize sats where the rarity derives from the notation scheme as opposed to notable events/blocks/positioning as existing sat charms have.
I also think that it would be a good show to the Rare Sat community & ecosystem to add a sat + charm which was suggested from outside the core ord developer team. I believe all charms to date are ones Casey both suggested + implemented and we have not seen a "community suggested" charm be incorporated to date. Palindromes seem like a strong candidate.
I will caveat that I think an argument against them is that palindromes are not necessarily rare and they may be resource intensive to index. But rarity hasn't been a disqualifier for sat charms yet.

I believe we need to broaden our understanding of categories. Palindromes, like rare sats, are clearly defined by a pattern at the sats level, including being able to calculate their entire supply, unlike 'historical' ones where we reach a consensus regarding transactions/set of transactions and subjective events. I dare say that palindromes are even more organic to Ordinals than Roadarmor rares.

I might be biased but I think Pizza Sats are pretty cool.

Here are the ones I chose to highlight on Ordiscan if it’s any help! 👍
https://ordiscan.com/rare-sats

Note that your palindrome total supply figure is incorrect, it should be 120,999,998. See https://x.com/ZedZeroth/status/1678009309769113600 although @gmart7t2 had a much more elegant way of determining the figure. Thanks

This is the ME volume for the last 30 days from the sattrek data (in sats)

Yes. For the figures you posted, what proportion of the pizza/B78/Nakamoto volume were palindrome layerings?

Looking at @Misha-btc's list, the issue with many of them is that the total supplies are so huge, and I think @casey is keen to avoid tagging too many inscriptions with charms.
Vintage:        5 000 000 000 000
Pizza:           1 000 000 000 000
Nakamoto:    95 000 000 000
B9/B78:         5 000 000 000
Palis:             120 000 000
Uncommons: 7 000 000
Related to this, the large trading volumes for most of these satributes are for "layerings". People are not spending fortunes on common vintage/Nakamoto etc, but rather palindrome (and other) layerings within these.
As such I think palindromes (a) has a reasonably low total supply (likely 10x Uncommons when you take locked sats into account), (b) has high trading volumes (particularly with layerings), and (c) has a unanimously accepted emoji.
I agree that black sats fulfil (a) and (b), we'd just need some consensus on the emojis. I'm also not against including other satributes, I just think taking things slowly makes sense, as you can't remove them once added. And to me palindromes is the top contender for the first non-Rodarmor satribute to be included.

we have had sats falling into only two categories, Ordinal rare and Historical

Life would be too boring with only two categories: https://x.com/ZedZeroth/status/1710287028019958007
:laughing:

Can someone calculate how many palindrome there are? I like sat charms to be pretty rare.

Can someone calculate how many palindrome there are? I like sat charms to be pretty rare.

Hi Casey. It's just short of 121M, so an overall palindrome:uncommon ratio of 17:1. However, palindrome density decreases with sat number, so we estimate that somewhere around 50% of all palindromes are locked in early sats. This means that the palindrome:uncommon ratio for inscriptions will likely tend towards 10:1 over time. Note that in eight years palindrome production will drop below uncommon production, as the density is now fixed at 1 palindrome/bitcoin until the last sat is mined. Let me know if you need any more info. Thanks

These are by far the most sought after exotic sats (i.e. non-Rodarmor rarity sats) and are also the clear leader of the "digit rarity" class of satributes: https://x.com/ZedZeroth/status/1710287036848934984
Thank you :)
@cbspears - Do you agree? :)

The 🦋 looks beautiful 😄
Sp

I think that 10:1 just isn't a good enough ratio for a charm. Our most common is the coin charm, whichis far scarcer. Coins are one in 100,000,000 sats. Palindromes are just too common.

I think that 10:1 just isn't a good enough ratio for a charm. Our most common is the coin charm, which is far scarcer. Coins are one in 100,000,000 sats. Palindromes are just too common.

Hi Casey. Thanks for looking into this. I'm confused by your reasoning though. Don't you have a charm for Block 9 sats, which are 40x less scarce than palindromes? Thanks

There are 50 BTC worth of block 9 sats, so 50 / 2100000 sats are block nine, or one in 420000. I'm just going off the above quoted figure of one in ten sats being palindromes, but if that's true, then they're orders of magnitude more common.

Sorry, I'm not sure where that one in ten figure has come from, but it's wildly incorrect. There will be a total of 120,999,998 palindromic sats after all sats are mined, so one in roughly 17 million sats are palindromic. Also bear in mind that palindrome production decreases exponentially so, for example, roughly 10% were mined in Jan 2009, meaning that a huge proportion of palindromes are not in circulation. Let's put things in perspective:
Uncommons / Black Uncommons: 0.3 per BTC
Alpha / Coin / Omega sats: 1 per BTC
Palindromes: 6 per BTC
B9 / Nineball sats: 238 per BTC
Thanks

How can I reproduce the 120,999,998 figure?

Another issue is that block nine sats are contiguous, which makes them harder to get, whereas palendromes are evenly distributed, so they're easier to get.
For example, given any contiguous 1 BTC range of sats, I think it'll probably contain a palendrome. But it only has a 50 / 21,000,000 chance of containing block 9 sats. So the absolute number of a given sat type isn't the only criteria.

How can I reproduce the 120,999,998 figure?

https://x.com/gm7t2/status/1690209119318237184

Another issue is that block nine sats are contiguous, which makes them harder to get, whereas palendromes are evenly distributed, so they're easier to get.

There are two sides to this coin. Sat hunters may find many individual palindromes, but they are irregularly spread out and must be sequestered individually. Whereas B9s are found in huge ranges and sliced out with ease.
Inscription numbers suggest that palindromes are much harder to "get":
125,513 inscribed B9 sats: https://www.ord.io/?satributes=block9
11,749 inscribed palindromes: https://www.ord.io/?satributes=palindrome

Gotcha. Okay, that does make the case stronger. I'll reopen this.

Thanks, yes, the total supply has been calculated independently by myself and Greg using different methods, and a sathunter/ordwizard called DAnTer also set up a sat number database and effectively brute-forced the same result. I've been playing around with palindrome maths (e.g. change in density per bitcoin over time, change in rate of production over time etc) for about 18 months now and I'm very confident that this is the correct figure.
Here's a table I made recently here to determine the palindrome emission curve: https://x.com/ZedZeroth/status/1853534745985970547

It is done! #4064

Love seeing this! There's a small but hyper dedicated contingent of palindrome enjoyers.
They are somewhat rare, but I actually think that the strongest case for adding a palindrome charm is actually that the community has clear consensus on the charm 🦋, even people who do not collect rare sats know the butterfly more than the know about half of the other charms.

It is done! #4064

Thank you @casey, this is great news!

It is done! #4064

Thank you @casey, this is great news!

Don't forget to rebuild the index. They forgot to bump the schema number again: #4080

@gmart7t2 Be nice!

Is it not nice to bring up issues on an issues tracker?

Boys, everyone take a breather Bitcoin is about to hit 100k

The "again" just rubbed me the wrong way 😅

It was meant to be funny, because Raph said last time that it wouldn't happen again and it did.
I'll endeavor in future to only rub you in the correct ways.


[SMALLFIX] Fix example of using Spark on Tachyon

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/Tachyon-Pull-Request-Builder/5980/
Test PASSed.

LGTM


Add shellcheck, linter and plugin.yml

I set tagged v.0.0.1 and fixed the version number, set up CI, and updated a few things. I might need your help @lox on the spellcheck error though.

Actually the tests don't pass anyway, so I'm just going to merge this and we can fix the broken builds later.


Test skeleton for rwx volumes

https://github.com/longhorn/longhorn/issues/1606
I've added a new file test_rwx.py and added a few test skeletons for rwx volumes.

@khushboo-rancher we should probably add a test with a regular scaled deployment.
If the pods come up on different nodes while they refer to the same PVC that should be sufficient evidence.

@joshimoo Added a test case with a regular scaled deployment


[5.3] default zero timeout for daemon worker

Can you explain why this would be better please?

By default no timeout at all to me is more reasonable than 1 min or 5 min. To let it be 60 is a silent trouble for those who need to migrate from Laravel 5.2. And have their app run in the production.

I am thinking of forge daemon workers. Maybe a note in the upgrade guide is better?


Failed to compile Go app without vendor on Go 1.16

go.mod
module test

// +heroku goVersion go1.16

go 1.16

require github.com/go-sql-driver/mysql v1.5.0

Push failed log:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 382 bytes | 382.00 KiB/s, done.
     Push rejected, failed to compile Go app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !	Push rejected to darren-test-1.
remote:

run this  locally fails with error:
go list -find -mod=vendor -f '{{ if eq .Name "main" }} {{.ImportPath}} {{ end }}' ./...
go: inconsistent vendoring in /tmp/test:
<EMAIL_ADDRESS>is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt

	To ignore the vendor directory, use -mod=readonly or -mod=mod.
	To sync the vendor directory, run:
		go mod vendor

Thanks. If you then run go mod vendor locally, does it change vendor/modules.txt? If so, can you please try committing those changes and pushing again?

@danp
Yes, run go mod vendor and commit vendor/modules.txt will make it compile successfully. But this is not necessary in previous versions.

Could I please clarify what your situation was?
Was this a brand new app or were you updating it from a previous Go version to 1.16?
If updating, what Go version were you using before? What did the go line in go.mod say?
Did you have a vendor directory previously?
If you were updating from pre-1.14 to 1.16, the need to run go mod vendor again may be due to the changes mentioned under "Vendoring" here: https://golang.org/doc/go1.14#go-command. If you're using 1.14 or later and your go.mod has go 1.14 or greater, there are more consistency checks done on vendor/modules.txt.
Thanks!

Not reproducible on heroku now, I shall close it.


Fix docker build

Description
simply working on fixing docker image build.

@gpx1000 this seems to have lots more commits in the log? but only one change?

Yeah, my fault.  I made the branch off of my fork's master which was out of date when I made it.   I tried merging but it still winds up listing all of the commit changes.  There is only one change despite the log getting messed up.  If this is a concern I can recreate a new branch based upon main and it should only have the one commit.

Although it shouldn't be an issue to squash and merge this PR, it would be better if there was only one commit from the main branch

Yeah, I kinda agree.  Do you want me to create a new branch to clean it?  Just lemme know.  The change should literally be one character ;-)

Please, I would do it but it's your change, and I don't want to steal the commit :)


Failed to ros install when booting by kexec

I installed with the following commands on a bare metal server:
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install --assume-yes --show-progress kexec-tools aria2
aria2c https://releases.rancher.com/os/v1.5.0/rancheros.iso

mkdir -p /mnt/rancheros
mount -t iso9660 rancheros.iso /mnt/rancheros
cd /mnt/rancheros
kexec --initrd ./boot/initrd-v1.5.0 --command-line="rancher.password=<strong-password>" ./boot/vmlinuz-4.14.85-rancher

reboot
sudo ros install -c cloud-config.yml -d /dev/sda -t gptsyslinux

As I was mounted on v1.5.0 ros tries to install that.
[rancher@rancher ~]$ sudo ros install -c cloud-config.yml -d /dev/sda -t gptsyslinux
Installing from rancher/os:v1.5.0
Continue [y/N]: y
INFO[0004] start !isoinstallerloaded
ERRO[0004] Failed to get boot iso: stat /dev/sr0: no such file or directory
There is no boot iso drive, terminate the task
FATA[0004] Failed to run install                         err="stat /dev/sr0: no such file or directory"

sudo mkdir /dev/sr0 workaround can work.
Originally posted by @Sebisnow in https://github.com/rancher/os/issues/2241#issuecomment-451356186

You can try this command line:
--command-line="rancher.password=<strong-password> rancher.state.autoformat=[/dev/sda] rancher.state.dev=LABEL=RANCHER_STATE rancher.state.wait"

This way you don't have to run ros install again.
But what you mentioned is really a problem, we have not tested it by using kexec, we need to solve it.


Implement and use inspector: from component API in H2 sample store

The Component API now includes an inspector field for specifying which parts of the inspector to render https://github.com/concrete-utopia/utopia/blob/1db5de99e04b91a9c26cff3af50040018fa7b474/utopia-api/src/helpers/helper-functions.ts#L73. That field isn't yet used, so we now need to honour the value provided when rendering the inspector for the selected component, and provide use it to suppress the style section for components that don't use it in the Sample Store project (Column, Row, the Remix and Hydrogen components)
Please contact Team Components if picking up this task.

The plan:

possible values for inspector: "layout", "layout-system", "visual", "typography", "all"

Class names, Style: controlled by "visual"
Frame: controlled by "frame"
Layout system: controlled by "layout-system"
Container: bit of an edge case because of opacity, I'm going to use "frame" for it but open to ideas
Type: controlled by "typography"
Transforms, Background, Border, Shadow, Text Shadow: controlled by "visual"


Add helm charts

This PR adds:

Dockerfiles for building minimal docker images for each of the binaries (sender, tps, funder)
Conditional compilation of the binaries based on whether the polkadot-parachain metadata, or rococo-relaychain metadata is used via the usage of feature flags, these are propagated to each crate accordingly
Refactoring of the n clap argument passed to the binaries to make sure helm templates work
Helm charts for the tps and sender binaries (these are the ones that will be needed for kubernetes based environments as chain-specs can be used to fund the necessary accounts in advance) based on the DevOps teams' common helm charts
Some examples to setup local development environments for Kubernetes based deployments independent of zombienet
Some preliminary tests, which currently do not work (zombienet's later releases may make it work, however), which are related to triggering sTPS on a collator/parachain.
Also adds GHA pipeline for building docker images on a release for both the tick and rococo metadata accordingly (i.e. two images per binary with different runtime types). Secrets still need to be configured for this to work properly.
Fixes the GHA tests

Note the sentence "independent of zombienet". I.e. these helm charts are used for deployments in more long-lived, static kubernetes clusters, such as Versi. More work needs to be done to fix this, however, namely:

fixing the block number which tps starts to scrape from, since this is no longer the second block as per now
potentially a long living server which continuously exposes sTPS metrics to a long-living Kubernetes cluster

Such tasks are better suited for a different PR so this can be focused on helm and docker related matters.

Looks good @bredamatt 🚀 , small comment (I think typo)


Detroit - Large Export Experience

User Story:
As an admin in partners portal exporting my user and listings data
I want the export to be emailed to me if the file is too large to download directly
So that I do not have to wait on the page for an extended period of time.
Acceptance Criteria:
Given that I am an admin in partners portal
When I try to download an export that is too large,
Then the file will be emailed to me.
Given that I have too much user or listings data to export easily
When I export my files from partners portal,
Then I see a message indicating that my export will be emailed to me instead.
Implementation Notes:
This applies to both user and listings exports.

Closing this one, will keep core one


How to make Keras Layer class to be immutable or is this a bug?

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): from https://github.com/ahmedfgad/Mask-RCNN-TF2 with some other TF2 fixes

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):  Windows Pro

Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:  n/a

TensorFlow installed from (source or binary):  via pip install

TensorFlow version (use command below):  v2.7.0-rc1-69-gc256c071bb2 2.7.0

Python version:   v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32

Bazel version (if compiling from source):   n/a

GCC/Compiler version (if compiling from source):   n/a

CUDA/cuDNN version:   cuda_11.2.r11.2/compiler.29373293_0

GPU model and memory:   Quadro 2000 32GB

You can collect some of this information using our environment capture script
No windows version
Describe the current behavior
The exception in the log below is symptom not the cause.  The actual cause is the variable used in the set() call in method _insert_layers() of the class Functional
    # Insert layers and update other layer attrs.
    layer_set = set(self._self_tracked_trackables)

The self._self_tracked_trackables is a list of class instances of type keras.engine.input_layer.InputLayer.  Set requires the instances to be immutable and since it gives an error it must not be.  So  the question then becomes why pass something that  will not pass this requirement.
We can find that self._self_tracked_trackables is initialized in the code below from method _init_graph_network of the same class which gets called when the model is initialized. It can be  seen that self.outputs is what drives the layers output of this _map_graph_network call.
    # Keep track of the network's nodes and layers.
    nodes, nodes_by_depth, layers, _ = _map_graph_network(
        self.inputs, self.outputs)
    self._network_nodes = nodes
    self._nodes_by_depth = nodes_by_depth
    self._self_tracked_trackables = layers

The model is defined as:
            model = KM.Model([input_image, input_image_meta, input_anchors],
                             [detections, mrcnn_class, mrcnn_bbox,
                                 mrcnn_mask, rpn_rois, rpn_class, rpn_bbox],
                             name='mask_rcnn')

Each of the outputs are derived from keras.layers.Layer' class.  So how do  we make Layer to  be non-mutable to be able to use that set()` call in the keras system?
Describe the expected behavior
No exception
Contributing

Do you want to contribute a PR? (yes/no):  no
Briefly describe your candidate solution(if contributing):

Standalone code to reproduce the issue
Provide a reproducible test case that is the bare minimum necessary to generate
the problem. If possible, please share a link to Colab/Jupyter/any notebook.
Please see https://github.com/ahmedfgad/Mask-RCNN-TF2
Other info / logs Include any logs or source code that would be helpful to
diagnose the problem. If including tracebacks, please include the full
traceback. Large logs and files should be attached.
Exception has occurred: TypeError       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
unhashable type: 'ListWrapper'
  File "D:\.venvs\maskrcnn\Lib\site-packages\tensorflow\python\training\tracking\data_structures.py", line 672, in __hash__
    raise TypeError("unhashable type: 'ListWrapper'")
  File "D:\.venvs\maskrcnn\Lib\site-packages\keras\engine\functional.py", line 851, in _insert_layers
    layer_set = set(self._self_tracked_trackables)
  File "D:\.venvs\maskrcnn\Lib\site-packages\keras\engine\functional.py", line 908, in _graph_network_add_loss
    self._insert_layers(new_layers, new_nodes)
  File "D:\.venvs\maskrcnn\Lib\site-packages\keras\engine\base_layer.py", line 1579, in add_loss
    self._graph_network_add_loss(symbolic_loss)
  File "D:\public\Mask-RCNN-TF2\mrcnn\model.py", line 2191, in compile
    self.keras_model.add_loss(loss)
  File "D:\public\Mask-RCNN-TF2\mrcnn\model.py", line 2379, in train
    self.compile(learning_rate, self.config.LEARNING_MOMENTUM)
  File "D:\public\Mask-RCNN-TF2\samples\shapes\debug_shapes.py", line 230, in <module>
    layers='heads')
  File "C:\Python\python37\Lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python\python37\Lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "C:\Python\python37\Lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "C:\Python\python37\Lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python\python37\Lib\runpy.py", line 193, in _run_module_as_main (Current frame)
    "__main__", mod_spec)

@quaesitor-scientiam
Please post this issue on keras-team/keras repo.
To know more see;
https://discuss.tensorflow.org/t/keras-project-moved-to-new-repository-in-https-github-com-keras-team-keras/1999
Thank you!

@quaesitor-scientiam Thank you for the update!
Moving this issue to closed status as we will track this ticket Keras #15897


Support function overload with Literal attributes

Return types for overloaded functions are incorrect for Literal type in function arguments.
Overload for non-literal types works great, so it would be great to have type discovery for Literal as well.
mypy handles this case correctly, so probably it could be used somehow. I am not sure if hover popup uses info from mypy.
Steps to reproduce

Install mypy
Insert this code to a new file

from typing import Any
from typing_extensions import overload, Literal

@overload
def test(value: Literal["a"]) -> int:
    ...

@overload
def test(value: Literal["b"]) -> bool:
    ...

def test(value: Any) -> Any:
    if value == "a":
        return 5

    return True

test_a = test("a")
test_b = test("b")

Hover test_a and test_b variables to check types.

Expected result
test_a: int
test_b: bool

Actual result
test_a: bool
test_b: bool

Just did some extra testing - works as it should when overloads are defined in *.pyi. So it is a potential won't fix.

Nope, there is still an issue, but it is more complex. It works only if function is defined where you use it. Consider that we have three files: test.py, test.pyi, main.py
# test.pyi - we define our function interface here

from typing_extensions import overload, Literal
@overload
def test(value: Literal["a"]) -> int: ...
@overload
def test(value: Literal["b"]) -> bool: ...

# test.py - function is defined here and we will try to check types

from typing import Any

def test(value: Any) -> Any:
    if value == "a":
        return 5

    return True

test_a = test("a") # type: int - correct
test_b = test("b") # type: bool - correct

# main.py - let's use test function here and check types again

from test import test

test_a = test("a") # type: bool - WRONG!
test_b = test("b") # type: bool - correct


isAbstract

Seems like this was removed here: https://github.com/MichalLytek/type-graphql/discussions/1455
But it's still being generated:
src/generated/graphql/resolvers/outputs/WellIdentifierMaxAggregate.ts:7:3 - error TS2345: Argument of type '{ isAbstract: boolean; }' is not assignable to parameter of type 'ObjectTypeOptions'.
  Object literal may only specify known properties, and 'isAbstract' does not exist in type 'ObjectTypeOptions'.

7   isAbstract: true
    ~~~~~~~~~~~~~~~~

src/generated/graphql/resolvers/outputs/WellIdentifierMinAggregate.ts:7:3 - error TS2345: Argument of type '{ isAbstract: boolean; }' is not assignable to parameter of type 'ObjectTypeOptions'.
  Object literal may only specify known properties, and 'isAbstract' does not exist in type 'ObjectTypeOptions'.

7   isAbstract: true
    ~~~~~~~~~~~~~~~~

src/generated/graphql/resolvers/outputs/WellIdentifiersOnOrdersCountAggregate.ts:7:3 - error TS2345: Argument of type '{ isAbstract: boolean; }' is not assignable to parameter of type 'ObjectTypeOptions'.
  Object literal may only specify known properties, and 'isAbstract' does not exist in type 'ObjectTypeOptions'.

7   isAbstract: true

Fixed with this script:
const replace = require("replace-in-file");
const results = replace.sync({
  files: "src/generated/graphql/**/*.ts",
  processor: (input) => input.replace(/isAbstract: true/g, ""),
  countMatches: true,
});

That's the issue with breaking changes 😔

That's the issue with breaking changes 😔

What about throwing it behind a flag?
Also curious because the above PR are your changes, did it happen upstream somewhere?

What about throwing it behind a flag?

We can even try to read the TypeGraphQL version from project package.json and apply that conditional isAbstract generation automatically, so the flag would be used only when the detection mechanism failed.

@MichalLytek is there something we can do to temporally solve this issue?

I think this line here type-class.ts:193 should be removed

@MichalLytek I just created a PR to remove the flag from Model, Input and Output clases. https://github.com/MichalLytek/typegraphql-prisma/pull/393

Closing as resolved by 19e841b 🔒


Issue #588: allow a function supplying the agent to support in follow…

This PR addresses issue #588. When the user wants to provide an agent option, the user has to decide (prior making the call to fetch) to provide a http or https agent. If request is for http and makes it redirect to https (or vice versa), the provided agent is incompatible and breaks further processing.
Based on the proposal, agent can now be a function which takes parsedURL as an argument.
A typical use would be:
const httpAgent = new http.Agent({ keepAlive: true });
const httpsAgent = new https.Agent({ keepAlive: true });

const options = {
  agent: url => url.protocol === 'https:' ? httpsAgent : httpAgent
};

This looks good to me, solves issues related to url-based agent creation (not just http/https change during redirect, but more advanced management of connection pools too.)
@jimmywarting what's your take on this?

Lgtm

I would almost want to get rid of the option to provide a agent and only have one way of solving it...
- agent: null   // http(s).Agent instance (or function providing one), allows custom proxy, certificate, dns lookup etc.
+ agent: null   // function that can return an Agent that allows for custom proxy, certificate, dns lookup etc.

Think it's better to have one way of solving things instead of having to deal with every scenario

Aside from that I would almost want to get rid of the option to provide a agent and only have a callback function

That's a breaking change and I think largely an unnecessary break (saves only 2 lines).
PR welcomed to fix doc though. I prefer adding another paragraph below the code block.

That's a breaking change and I think largely an unnecessary

Yea, i know and that would be bad. Agree that it's unnecessary.

PR welcomed to fix doc though. I prefer adding another paragraph below the code block.

or just an example block using agent? didn't see any in the readme...

I'm just a bit frustrated ATM on another project that tries to deal with a lot of unnecessary overhead instead of just accepting one form of input. kinda: is stream? is it a buffer? canvas? string? promise? object? blob? FileList? filePath? url? then do this or that and it magically unwrap itself sometimes sync and sometimes async
Now when i mention it, it kind sounds like our Body.js constructor 😅
but it's not node-fetch i'm lashing out on.


Fix grid max zoom

The grid also skip clustering if >= maxZoom
https://github.com/googlemaps/js-markerclusterer/blob/1193ff43e55f86eb269c132d90160983f4024128/src/algorithms/grid.ts#L76
We the comparison should be >= instead of >
Some other minor cleanups
Notes:

I documented/changed the code base on the implementation of the grid algo. We could also decided that maxZoom should be excluded but it would change the behavior of the grid algo
Interestingly I figured that the supercluster does nothing with the max zoom... looks like a bug to me (and already reported as #647) edit: it's actually an option of the SuperCluster

Note that SuperCluster defines maxZoom as "Maximum zoom level at which clusters are generated."
This is not what is implemented in this CL (ref "We could also decided that maxZoom should be excluded but it would change the behavior of the grid algo" in the initial description).
So first step would be to decide and document what the desired behavior is and then make the corresponding updates in gris/supercluster.

Thanks for contributing this fix, @vicb!

@wangela I don't think this should have been merged without resolving the open question in the description and comment - that is grid and clusterer should be consistent.


Missing Columns

We ran into a case where we are specifying columns, but if the key is missing in the data, we don't get the  we are expecting.
Reproduce:

Open our example http://reactweek.com/projects/reactTunes/
Search for "a" and click Submit.

I wonder if you're encountering what @saary fixed here. If that's the case, I think upgrading to griddle-react 0.2.7 may resolve. Please let us know if that fixes it for you. :+1:

That's probably it. I'll try in the morning and let you know.
On Tuesday, March 10, 2015, Ryan Lanciaux<EMAIL_ADDRESS>wrote:

I wonder if you're encountering what @saary https://github.com/saary
fixed here https://github.com/DynamicTyped/Griddle/pull/102. If that's
the case, I think upgrading to griddle-react 0.2.7 may resolve. Please let
us know if that fixes it for you. [image: :+1:]
—
Reply to this email directly or view it on GitHub
https://github.com/DynamicTyped/Griddle/issues/110#issuecomment-78199328
.

--
Joshua K Stoutenburg
Web Applications Developer
<EMAIL_ADDRESS>503-916-9945

I just tested and I can confirm that the update to 0.2.7 fixes this issue.

Sweet
On Tuesday, March 10, 2015, Justin Warkentin<EMAIL_ADDRESS>wrote:

I just tested and I can confirm that the update to 0.2.7 fixes this issue.
—
Reply to this email directly or view it on GitHub
https://github.com/DynamicTyped/Griddle/issues/110#issuecomment-78206882
.

--
Joshua K Stoutenburg
Web Applications Developer
<EMAIL_ADDRESS>503-916-9945

Hi, I'm facing this same issue. Any idea what's happening?


Create GraphUpdateTests for owned entities

To get good coverage of state manager and update pipeline behaviors when using owned entities.

Note: see OwnedFixupTest


[bug] Uninstalling Liqo Errors on pre-delete Pod if there is a forgein cluster added

What happened:
The liqoctl uninstall --purge hung due to retrying and erroring for liqo-pre-delete-* Pod on AKS
Once finally deleted - namespaces that persisted:

liqo
liqo-storage
liqo-tenant-...

What you expected to happen:
I expected liqoctl uninstall to remove all CRDs and Manifests and not Error/Hang
How to reproduce it (as minimally and precisely as possible):

Have two clusters, both with liqo installed
Add cluster 2 as a forgein cluster to cluster-1
Run liqoctl uninstall --purge on cluster-1

Anything else we need to know?:
I ran
kubectl config use-context cluster-1
liqoctl remote cluster cluster-2

prior to liqoctl uninstall --purge and that allowed everything to be uninstalled
Environment:

Liqo version: 0.4.0
Kubernetes version (use kubectl version): 1.21.9
Cloud provider or hardware configuration: AKS
Network plugin and version: NA
Install tools: liqoctl
Others: NA

Hi @BnJam!
Your issue should be related to the fact that the helm uninstall hook waits for all the peerings to be disabled. Can you check the logs of the liqo-pre-delete pod if this happens again?
We should add a check in the liqoctl uninstall command to warn the user if some peering is enabled at uninstall time.

That does make a lot of sense! A feature in liqoctl uninstall would be very helpful - I don't think I caught any reference to this situation in the documentation (but I may have missed it).
I was performing a proof of concept for multi-cluster communication - but if we go with liqo, I will follow up with the logs.

Closing, as the pre-install checks have been implemented in liqoctl, and they will be included in the new release.


JdbcConnection.CloseAsync() issue

During the opening of the connection using JdbcConnection.OpenAsync() method with correct DriverPath and DriverClass but an incorrect JdbcUrl, the driver starts, and the connection status becomes Broken. However, when attempting to close this connection, the driver remains active and requires manual shutdown.
The problem lies in the JdbcConnection.CloseAsync() method, which only sets the connection status to Closed. The JdbcBridgePool.Release(Bridge.Key) is not executed due to a condition in the if statement where ConnectionId is null.
Should this be fixed in future updates?

Also, the ConnectionId should be set to null after the connection is closed, otherwise if the subsequent connection fails, it will try to close the broken connection, which will throw an exception that says:
Cannot invoke "java.sql.Connection.close()" because "connection" is null


Charset UTF-8

it is not displaying special characters.
include encoding="utf-8" to correct in lines 120 and 122
init.py
        if getattr(sys, 'frozen', False):
            content = str(open(os.path.join(sys._MEIPASS, file), "r", encoding="utf-8").read())
        else:
            content = str(open(file, "r", encoding="utf-8").read())

Fixed in https://github.com/IanTerzo/Neutron/commit/932af20d87166005f80233049203760aac638d4e


WIP: Revert "Remove peer network"

Some additional changes need to be made to configs:

[ ] travis: restore proto version
[ ] travis: restore removal of unused pypi deploy

But want to have CI run on restored code and tests and make sure everything works.

Codecov Report

Merging #3 into master will increase coverage by 0.14%.
The diff coverage is 86.88%.

@@            Coverage Diff             @@
##           master       #3      +/-   ##
==========================================
+ Coverage   83.68%   83.83%   +0.14%
==========================================
  Files          31       33       +2
  Lines        7694     7938     +244
  Branches      939      957      +18
==========================================
+ Hits         6439     6655     +216
- Misses       1063     1084      +21
- Partials      192      199       +7

Impacted Files
Coverage Δ

ga4gh/server/serverconfig.py
100% <100%> (ø)
:arrow_up:

ga4gh/server/frontend.py
90.59% <100%> (+0.38%)
:arrow_up:

ga4gh/server/exceptions.py
98.58% <100%> (+0.01%)
:arrow_up:

ga4gh/server/repo/models.py
100% <100%> (ø)
:arrow_up:

ga4gh/server/datamodel/peers.py
100% <100%> (ø)

ga4gh/server/network/__init__.py
70.27% <70.27%> (ø)

ga4gh/server/backend.py
85.84% <74.07%> (-0.42%)
:arrow_down:

ga4gh/server/datarepo.py
84.69% <85.18%> (+0.17%)
:arrow_up:

ga4gh/server/paging.py
88.76% <85.71%> (-0.17%)
:arrow_down:

ga4gh/server/cli/repomanager.py
86.44% <89.18%> (+0.29%)
:arrow_up:

... and 5 more

Continue to review full report at Codecov.

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


Feature/v2 create project other form

What does this PR do and why?
Towards https://github.com/jbx-protocol/juice-interface/issues/544
Tab 4: 'Others'

Paused payments
Token minting
Reconfiguration rules

Screenshots or screen recordings
If applicable, provide screenshots or screen recordings to demonstrate the
changes.
Acceptance checklist

[ ] I have evaluated the Approval Guidelines for this PR.
[ ] I have tested this PR in all supported browsers.

@johnnyd-eth awesome work, merging.


Live window reszing

Currently, a Kivy window supports resizing by allowing the user to click and drag the window border, similar to most other applications.
However, the user can not see how the new size affects the application until they release the mouse button, so Kivy applications do not feel to be as responsive or fluid as other applications are.
I would like to have the application resize event to occur while the user is dragging the mouse border, rather than only when the user releases the mouse pointer.

Want to back this issue? Place a bounty on it! We accept bounties via Bountysource.

This appears to be the case in Kivy 1.8, using pygame on windows and mac os x.
This also occurs in Kivy 1.9 (Latest master, as of yesterday), using SDL2 on mac os x.

Hello. Just for the fun of it I went into the trouble writing some C++ code (it's been 17 yrs lol). Also I understand it's a nice touch of polish for any application.
Short answer: Not possible.
Long answer: Requires a lot of platform specific code.
Example with pygame, this what Kivy does (99% certain, see on_resize(width, height)) and as you said it does not work.
On Windows, we have two events:
WM_SIZE
WM_SIZING
WM_SIZING is the one we want, but despite being declared in SDL it's likely that it's not wrapped on SDL_WINDOWEVENT which includes SDL_WINDOW_RESIZED and SDL_WINDOW_SIZE_CHANGED
If SDL2 fires the event SDL_WINDOW_SIZE_CHANGED when it receives WM_SIZING from Windows operating system, then we might have a solution for Windows only. But that's platform specific and probably against the cross-platform library philosophy. The root of the problem is that there are many different event messages to handle, and this one message seems to be implemented very differently every time.
Here is the log:
INFO: Window 1 gained keyboard focus
INFO: Window 1 shown
INFO: Window 1 exposed
INFO: Window 1 moved to 538,197
INFO: Mouse entered window 1
INFO: Mouse left window 1
INFO: Window 1 exposed
...
INFO: Window 1 exposed
INFO: Window 1 size changed to 731x566
INFO: Window 1 resized to 731x566
INFO: Mouse entered window 1
INFO: Mouse left window 1
INFO: Window 1 closed
The program '[4688] Print_SDL_WindowEvent.exe' has exited with code 0 (0x0).

Hello victor-rene,
I have it working using SDL2 on the mac, with changes to window_sdl2.py and corresponding pyx files, although it is probably a bit of a hack.

So it's definitely working for the mac.
And will probably work for windows as well, assuming that the platform sends the event (which is likely).

I think it may well work on windows because I am not using anything mac-specific (only SDL2), however I am hoping to avoid compiling kivy for windows at this stage.
The problem with SDL2 is that the events stop firing until the resize event has completed:

My workaround is to filter the SDL event loop (ie, catch the event before it enters the SDL event system), SDL allows these hooks using SDL_SetEventFilter:

The code I have in _window_sdl2.pyx is:
cdef extern from "SDL_events.h":
ctypedef int (*SDL_EventFilter)(void , const SDL_Event)
cdef void SDL_SetEventFilter(SDL_EventFilter filter, void * userdata)
EVENT_FILTER_HANDLERS = [] # A bit of a hack (I'm very new to kivy)
cdef int eventFilter(void * userdata, SDL_Event * event):
for handler in EVENT_FILTER_HANDLERS:
if event.type == SDL_WINDOWEVENT:
if event.window.event == SDL_WINDOWEVENT_RESIZED:
action = ('windowresized', event.window.data1, event.window.data2)
handler(action)
return 1
This event filter needs to be installed after the SDL_Init routine has completed, like follows:
    if SDL_Init(SDL_INIT_VIDEO| SDL_INIT_JOYSTICK) < 0:
        self.die()
    SDL_SetEventFilter(eventFilter, <void*>0)

So, on the mac at least, using SDL2, it's certainly possible to grab the event, it should be possible on windows as well without any additional code.
In window_sdl2.py, I add a resize handler to the EVENT_FILTER_HANDLERS within the create_window method, and this is implemented as follows:
def _onEventFilterEvent(self, action):
    if action[0] == 'windowresized':
        self._size = action[1:]
        self._win.resize_window(*self._size)
        EventLoop.idle()

@arafangion Gratz :+1:. That's what I was describing, you have to write additional code to get it to work. Now, is it something that will be implemented as default in Kivy, I can not answer. And it must be tested on other platforms.

@victor-rene Awesome!
Would we be able to reduce the testing overhead by only applying this patch for platforms where it makes sense? (Namely: Windows and Mac OS X - it is possible that linux does not need this, and this whole issue is unneccessary on iOS and Android).
I am happy to volunteer to write the code for the SDL2 backend, restricted to mac os x and windows, and then send a pull request.
However, I am unable to do testing: I only have one mac laptop, and all my windows dev is in a virtual machine.

@arafangion My time schedule is a bit tight. But I volunteer to test anything related to Windows. I will follow this. Regards.

@arafagion, i believe sdl2 takes care of the platform differences, so we could support all desktop OSes, including Linux distros. You can ping me too if you need more testers.

@dessant, @victor-rene: Sadly I've lost the opportunity to investigate this further, as I am not working with kivy any more (Mostly due to not being able to rely on having OpenGL 2.0 or newer, though there were other factors).

Hello, I'd love to see this approached again, it's a valuable feature for folks targeting desktop applications with kivy. I know users would mention this if I used it.
What next steps need to happen here? I'm not experienced with the platform yet but seems like the core research has at least been started. If there is a straight-forward contribution path I can put some effort in or help validate/test.
Thank you!

I also have this issue on macOS HighSierra

[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>
[INFO   ] [GL          ] OpenGL version <b'2.1 ATI-1.66.31'>
[INFO   ] [GL          ] OpenGL vendor <b'ATI Technologies Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'AMD Radeon Pro 560 OpenGL Engine'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available
[INFO   ] [Base        ] Leaving application in progress...

macOS High Sierra 10.13.4
No pygame installed. Provider is SDL2. Same problem as described.

Following. Same problem windows.

Same problem with MacOS X 10.13.6, python 3.6.5, kivy 1.9


Follow semantic versioning

MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards compatible manner, and
PATCH version when you make backwards compatible bug fixes.

With this in mind, we will bump to minor version as we add features. Patches will only increase now on with fix-only.

@danielsuguimoto @dbpolito this is mostly for us to know and remind ourselves of following it moving forward.

We have added this to our RELEASE notes.