Feat: basic support for header parameter

Hi,
Using paperclip I currently have an issue representing one of my API requirement. I would like to be able to document the fact that every request required some Headers.
This PR aims to implement a basic Header parameter support using the same model as Security definitions.
How ?
To do so I did introduce a new derive macro, Apiv2Header which accepte attribute parameter through #[openapi].
Supported parameters are currently "name", "description" and "format".
Why is this a partial / basic support ?
Only String type is currently supported. Even if all data format are supported to describe the type, the associated logic is not (array handling with the different format for example).
Example
An example can be found in the newly added test.
Here's an example on how to use the new derive macro:
#[derive(Apiv2Header, Deserialize)]
#[openapi(
    name = "X-Request-ID",
    description = "Allow to track request",
    format = "uuid"
)]
struct RequestId;

impl FromRequest for RequestId {
    todo!()
}

#[api_v2_operation]
async fn echo_pet_with_request_id(_: RequestId, body: web::Json<Pet>) -> web::Json<Pet> {
    unimplemented!()
}

@rlebran a few questions if I may:
So we'd have one of those Apiv2Header structs for each header?
Have you considered "grouping" it, much like we currently do for the Json types?
We could also infer from the types and doc comments, example:
#[derive(Apiv2Header, Deserialize)]
struct FooHeaders {
  /// Allow to track request
  x_request_id: uuid::Uuid,
  /// Another one
  #[openapi(name = "Custom Name")]
  custom_name: i32,
}

The way you've done it it's an unit struct, so we can't actually get the value from it? So it's just a way to document it?

So we'd have one of those Apiv2Header structs for each header?

Currently yes, didn't think about grouping them to be honest.

so we can't actually get the value from it? So it's just a way to document it?

We can use it like Apiv2Security. For example:
    #[derive(Apiv2Header, Deserialize)]
    #[openapi(
        name = "X-Request-ID",
        description = "Allow to track request",
        format = "uuid"
    )]
    struct RequestId {
       id: uuid,
       timestamp: Date
    };```
is totally feasible, it totally depends on what you want to put in your `FromRequest` implementation.

Might not be a good idea but I saw in a code base `Apiv2Security` being use to carry a Realm information (which generate an invalid openapiv2 schema). The `FromRequest` implementation was building a state based on the Realm information.
This is still feasible if headers are grouped but it means all extractors logic have to be implemented in the same place (which is ok for me but I would prefer having your insight on that point).

We can use it like Apiv2Security. For example:
    #[derive(Apiv2Header, Deserialize)]
    #[openapi(
        name = "X-Request-ID",
        description = "Allow to track request",
        format = "uuid"
    )]
    struct RequestId {
       id: uuid,
       timestamp: Date
    };

is totally feasible, it totally depends on what you want to put in your FromRequest implementation.
Might not be a good idea but I saw in a code base Apiv2Security being use to carry a Realm information (which generate an invalid openapiv2 schema). The FromRequest implementation was building a state based on the Realm information.

Right yes FromRequest can build it into anything. I was just wondering if it were better to make it explicit, so the openapi is generated based on type information rather than being all "faked via proc macros", if that makes sense.

This is still feasible if headers are grouped but it means all extractors logic have to be implemented in the same place (which is ok for me but I would prefer having your insight on that point).
If someone wants multiple ones they could always add more "groups"?

/// Headers for Foo
#[derive(Apiv2Header, Deserialize)]
struct FooHeaders {
  /// Id of foo
  foo_id: uuid::Uuid,
  /// Count of foo
  foo_count: i32,
  #[openapi(skip)]
  other_cruft: XXXX
}

/// Headers for Doo
#[derive(Apiv2Header, Deserialize)]
struct DooHeaders {
  /// id of doo
  doo_id: uuid::Uuid
}

#[api_v2_operation]
async fn handler(_: FooHeaders, _: DooHeaders, body: web::Json<X>) -> web::Json<X> {
...
}

If we break it down what I'm suggesting is not vastly different than what you are, it's just grouping and "auto infer" of the header name and openapi type?
We could break it down into iterations, we start for example with a simple one where the types have to be manually specified rather than inferred, example:
/// Headers for Foo
#[derive(Apiv2Header, Deserialize)]
struct FooHeaders {
  /// Id of foo
  #[openapi(
        name = "foo-id",
        description = "Id of foo",
        format = "uuid"
    )]
  foo_id: uuid::Uuid,
}

And then we remove add that automatically, so you only have to specify #[openapi] to override things.
That'd be my suggestion, but do let me know if your thoughts and if you think it'd even work this way or not!

Hey ! Sounds good to me.
I just push the first step, still need to infer type and format parameter.

Hey ! I think we should be close to have something working here.
Fell free if you have any suggestion / questions / remarks.
Didn't find any good solution to handle the DataTypeFormat matching in the macro... Running out of ideas on this one

Hey ! I think we should be close to have something working here. Fell free if you have any suggestion / questions / remarks.
Didn't find any good solution to handle the DataTypeFormat matching in the macro... Running out of ideas on this one

Sorry I've been a bit busy...
But it's looking great! As for the DataTypeFormat it's fine as it is then, maybe later we can figure out some other day.

No problem ! From what I saw, only api_v2_schema_struct is used in the core. The other use of the macro crate is to re-expose the different macros.
One way would be to split the macro crate into 2 so core would be able to become a dependency of macros and it would be easier to do the mappings (and other stuff like relying on the SPECIAL_HEADERS const for example).
But if it's something that needs to be done, I think it deserve it's own PR

No problem ! From what I saw, only api_v2_schema_struct is used in the core. The other use of the macro crate is to re-expose the different macros. One way would be to split the macro crate into 2 so core would be able to become a dependency of macros and it would be easier to do the mappings (and other stuff like relying on the SPECIAL_HEADERS const for example). But if it's something that needs to be done, I think it deserve it's own PR

If that's possible that would be great, and yes definitely on another PR :)

There is one last thing I just saw and fixed.
What do you want to do with this case:
#[derive(Apiv2Header, Deserialize)]
#[openapi(
    name = "X-Request-ID",
    description = "Allow to track request",
    format = "uuid"
)]
struct RequestId;```
Currently `openapi` the macro emit an error indicating that the `openapi` attribute is miss placed and should be defined at field level. Sounds good ?

There is one last thing I just saw and fixed. What do you want to do with this case:
#[derive(Apiv2Header, Deserialize)]
#[openapi(
    name = "X-Request-ID",
    description = "Allow to track request",
    format = "uuid"
)]
struct RequestId;

Currently openapi the macro emit an error indicating that the openapi attribute is miss placed and should be defined at field level. Sounds good ?

Yep sounds good!

Hey @rlebran sorry I've been very busy and haven't been able to take a look at these. Is this PR ready to merge?

Hey ! Yes, this PR is ready to merge


US-103 | feat: import venues' accessibility shortcomings from new service map API

Description
feat: import venues' accessibility shortcomings from new service map API
python manage.py ingest_data location will now import venues' accessibility shortcomings:

List of accessibility shortcomings each containing:

profile (hearing_aid, reduced_mobility, ..., wheelchair)
count (How many accessibility shortcomings?)

refs US-103
Tickets

US-103

Manual testing

For testing purposes disregard expired certificate of geoserver.hel.fi so testing is possible (→PT-4958)

cp .env.example .env
echo "GDAL_HTTP_UNSAFESSL=YES" >> .env

checkout this PR's branch's version

docker-compose up --build
docker exec -it unified-search_sources_1 bash-

python manage.py ingest_data location --use-fallback-languages
Open http://localhost:5601/app/dev_tools#/console and fetch data [1]

[1] fetch data:
GET _search
{
  "query": {
    "match_all": {}
  }
}

Merged this PR into PR #97


Alternative fuel boilers in buildings

Note that alternative fuel boilers in buildings use Gas as fuel.

Options: Leave as it is, change to H2, make it more expensive to assume it's synthetic methane?


I run npm install eosjs -> no eos.js. file generated

In dawn 3.0 eos.js file was inside /node_modules/eosjs/dist folder.
I run "npm install eosjs" and there is no dist folder.
How to get eos.js file?

You need:

You need:

Install eosjs (npm install..)
build eosjs for browser
go to folder with eosjs source and run command "npm run build_browser"

Thanks - it did not work on Windows, however went smoothly on Linux

I have added eos.js to the release tag..
https://github.com/EOSIO/eosjs/releases/tag/v13.0.0

Thanks! I already found that build browser does not work on Windows, but went smoothly on Linux


🐛 BUG: wrangler pages publish incorrect handles directory names starting with underscore

What version of Wrangler are you using?
2.0.14
What operating system are you using?
Mac and Linux
Describe the Bug
🐛 Bug report
Describe the bug
Wrangler fails correctly to upload folders starting with letter _ e.g. _static for Sphinx documentation tool.
These folders include common Sphinx folders like:

_static
_images
_source

Reproduce the bug
The Github workflow that triggers the bug.
Expected behavior
With command  (cd docs/build/html && npx wrangler pages publish . --project-name=trading-strategy-docs --branch test) files are uploaded to Cloudflare Pages as they are on the filesystem directory structure.
.
./index.html
./searchindex.js
./_static
./_static/logo-square.png
./_static/favicon_32.png

The actual uploaded directory structure, as taken from from Cloudflare Pages dashboard:
index.html
favicon.svg
favicon_32.png
favicon_96.png
logo-square.png

As you can see, wrangler, without asking or reporting the matter, somehow managed to flatten _static folder away, making all Sphinx-generated CSS, JS and image resource links invalid.
Environment and versions
Fill out the following information about your environment.
 wrangler --version
2.0.14

I believe that this is how "Cloudflare Pages" works. These particular underscore prefixed files have special meaning in Pages projects. I am not sure whether there is a way to configure them.

If it is a limitation of Cloudflare Pages and it cannot handle such directories, then I feel more correct behaviour would abort the upload with an error, instead of renaming directories.

Dupe of #938.
Pages does have some magic underscore-prefixed files, but we do support other files/folders with underscores in their names. It's just _headers, _redirects and _worker.js that are currently reserved names.


feature: create new EdgePlacementDecision CRD

Feature Description
create new EdgePlacementDecision CRD that will be used to hold the decision of both "What" and "Where" of a single EdgePlacement. the new CRD should be used in pluggable transport logic.
Proposed Solution
create CRD
Want to contribute?

[ ] I would like to work on this issue.

Additional Context
No response

done in PR #1292


Default credential loader doesn't seem to follow 301s from IMDSv2

Describe the bug
This is an indirect bug report from a user of Vector, which uses the AWS SDK.
When using the default credential chain, they see the loader reporting that it saw a 301, but it doesn't seem to automatically follow it, as I would expect.
The user is using KIAM to intercept the requests which is likely why the behavior differs from IMDSv2 generally.
See debug logs below.
Expected Behavior
The default credentials loader follows any observed 301s to fetch the IAM credentials.
Current Behavior
When a 301 is observed, it stops and bubbles up an error.
Reproduction Steps
Unfortunately I haven't observed this behavior myself, but we could ask the user for additional details if necessary.
Possible Solution
Default credential loader follows 301s from IMDSv2 API.
Additional Information/Context
User is running KIAM to intercept the metadata requests.
Vector issue: https://github.com/vectordotdev/vector/issues/13211
Version
├── aws-config v0.11.0
│   ├── aws-http v0.11.0
│   │   ├── aws-smithy-http v0.41.0
│   │   │   ├── aws-smithy-eventstream v0.41.0
│   │   │   │   ├── aws-smithy-types v0.41.0
│   │   │   ├── aws-smithy-types v0.41.0 (*)
│   │   ├── aws-smithy-types v0.41.0 (*)
│   │   ├── aws-types v0.11.0
│   │   │   ├── aws-smithy-async v0.41.0
│   │   │   ├── aws-smithy-client v0.41.0
│   │   │   │   ├── aws-smithy-async v0.41.0 (*)
│   │   │   │   ├── aws-smithy-http v0.41.0 (*)
│   │   │   │   ├── aws-smithy-http-tower v0.41.0
│   │   │   │   │   ├── aws-smithy-http v0.41.0 (*)
│   │   │   │   ├── aws-smithy-types v0.41.0 (*)
│   │   │   ├── aws-smithy-http v0.41.0 (*)
│   │   │   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-sdk-sso v0.11.0
│   │   ├── aws-endpoint v0.11.0
│   │   │   ├── aws-smithy-http v0.41.0 (*)
│   │   │   ├── aws-types v0.11.0 (*)
│   │   ├── aws-http v0.11.0 (*)
│   │   ├── aws-sig-auth v0.11.0
│   │   │   ├── aws-sigv4 v0.11.0
│   │   │   │   ├── aws-smithy-eventstream v0.41.0 (*)
│   │   │   │   ├── aws-smithy-http v0.41.0 (*)
│   │   │   ├── aws-smithy-eventstream v0.41.0 (*)
│   │   │   ├── aws-smithy-http v0.41.0 (*)
│   │   │   ├── aws-types v0.11.0 (*)
│   │   ├── aws-smithy-async v0.41.0 (*)
│   │   ├── aws-smithy-client v0.41.0 (*)
│   │   ├── aws-smithy-http v0.41.0 (*)
│   │   ├── aws-smithy-http-tower v0.41.0 (*)
│   │   ├── aws-smithy-json v0.41.0
│   │   │   └── aws-smithy-types v0.41.0 (*)
│   │   ├── aws-smithy-types v0.41.0 (*)
│   │   ├── aws-types v0.11.0 (*)
│   ├── aws-sdk-sts v0.11.0
│   │   ├── aws-endpoint v0.11.0 (*)
│   │   ├── aws-http v0.11.0 (*)
│   │   ├── aws-sig-auth v0.11.0 (*)
│   │   ├── aws-smithy-async v0.41.0 (*)
│   │   ├── aws-smithy-client v0.41.0 (*)
│   │   ├── aws-smithy-http v0.41.0 (*)
│   │   ├── aws-smithy-http-tower v0.41.0 (*)
│   │   ├── aws-smithy-query v0.41.0
│   │   │   ├── aws-smithy-types v0.41.0 (*)
│   │   ├── aws-smithy-types v0.41.0 (*)
│   │   ├── aws-smithy-xml v0.41.0
│   │   ├── aws-types v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-json v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sdk-cloudwatch v0.11.0
│   ├── aws-endpoint v0.11.0 (*)
│   ├── aws-http v0.11.0 (*)
│   ├── aws-sig-auth v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-query v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-smithy-xml v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sdk-cloudwatchlogs v0.11.0
│   ├── aws-endpoint v0.11.0 (*)
│   ├── aws-http v0.11.0 (*)
│   ├── aws-sig-auth v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-json v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sdk-firehose v0.11.0
│   ├── aws-endpoint v0.11.0 (*)
│   ├── aws-http v0.11.0 (*)
│   ├── aws-sig-auth v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-json v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sdk-kinesis v0.11.0
│   ├── aws-endpoint v0.11.0 (*)
│   ├── aws-http v0.11.0 (*)
│   ├── aws-sig-auth v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-json v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sdk-s3 v0.11.0
│   ├── aws-endpoint v0.11.0 (*)
│   ├── aws-http v0.11.0 (*)
│   ├── aws-sig-auth v0.11.0 (*)
│   ├── aws-sigv4 v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-eventstream v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-smithy-xml v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sdk-sqs v0.11.0
│   ├── aws-endpoint v0.11.0 (*)
│   ├── aws-http v0.11.0 (*)
│   ├── aws-sig-auth v0.11.0 (*)
│   ├── aws-smithy-async v0.41.0 (*)
│   ├── aws-smithy-client v0.41.0 (*)
│   ├── aws-smithy-http v0.41.0 (*)
│   ├── aws-smithy-http-tower v0.41.0 (*)
│   ├── aws-smithy-query v0.41.0 (*)
│   ├── aws-smithy-types v0.41.0 (*)
│   ├── aws-smithy-xml v0.41.0 (*)
│   ├── aws-types v0.11.0 (*)
├── aws-sigv4 v0.11.0 (*)
├── aws-smithy-async v0.41.0 (*)
├── aws-smithy-client v0.41.0 (*)
├── aws-smithy-http v0.41.0 (*)
├── aws-smithy-http-tower v0.41.0 (*)
├── aws-smithy-types v0.41.0 (*)
├── aws-types v0.11.0 (*)

Environment details (OS name and version, etc.)
x86_64-unknown-linux-musl
Logs
2022-06-21T15:09:44.896310Z  INFO provide_credentials{provider=default_chain}: aws_config::meta::credentials::chain: provider in chain did not provide credentials provider=Environment context=environment variable not set
2022-06-21T15:09:44.896352Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}: aws_config::fs_util: loaded home directory src="HOME"
2022-06-21T15:09:44.896368Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_config_file: aws_config::profile::parser::source: performing home directory substitution home="/root" path="~/.aws/config"
2022-06-21T15:09:44.896379Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_config_file: aws_config::profile::parser::source: home directory expanded before="~/.aws/config" after="/root/.aws/config"
2022-06-21T15:09:44.896429Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_config_file: aws_config::profile::parser::source: config file not found path=~/.aws/config
2022-06-21T15:09:44.896447Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_config_file: aws_config::profile::parser::source: config file loaded path=~/.aws/config size=0
2022-06-21T15:09:44.896458Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_credentials_file: aws_config::profile::parser::source: performing home directory substitution home="/root" path="~/.aws/credentials"
2022-06-21T15:09:44.896477Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_credentials_file: aws_config::profile::parser::source: home directory expanded before="~/.aws/credentials" after="/root/.aws/credentials"
2022-06-21T15:09:44.896487Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_credentials_file: aws_config::profile::parser::source: config file not found path=~/.aws/credentials
2022-06-21T15:09:44.896493Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Profile}:load_credentials_file: aws_config::profile::parser::source: config file loaded path=~/.aws/credentials size=0
2022-06-21T15:09:44.896511Z  INFO provide_credentials{provider=default_chain}: aws_config::meta::credentials::chain: provider in chain did not provide credentials provider=Profile context=No profiles were defined
2022-06-21T15:09:44.896529Z  INFO provide_credentials{provider=default_chain}: aws_config::meta::credentials::chain: provider in chain did not provide credentials provider=WebIdentityToken context=$AWS_WEB_IDENTITY_TOKEN_FILE was not set
2022-06-21T15:09:44.896543Z  INFO provide_credentials{provider=default_chain}: aws_config::meta::credentials::chain: provider in chain did not provide credentials provider=EcsContainer context=ECS provider not configured
2022-06-21T15:09:44.896558Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}: aws_config::imds::credentials: loading credentials from IMDS
2022-06-21T15:09:44.896567Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}: aws_config::fs_util: loaded home directory src="HOME"
2022-06-21T15:09:44.896576Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_config_file: aws_config::profile::parser::source: performing home directory substitution home="/root" path="~/.aws/config"
2022-06-21T15:09:44.896585Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_config_file: aws_config::profile::parser::source: home directory expanded before="~/.aws/config" after="/root/.aws/config"
2022-06-21T15:09:44.896595Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_config_file: aws_config::profile::parser::source: config file not found path=~/.aws/config
2022-06-21T15:09:44.896609Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_config_file: aws_config::profile::parser::source: config file loaded path=~/.aws/config size=0
2022-06-21T15:09:44.896619Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_credentials_file: aws_config::profile::parser::source: performing home directory substitution home="/root" path="~/.aws/credentials"
2022-06-21T15:09:44.896628Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_credentials_file: aws_config::profile::parser::source: home directory expanded before="~/.aws/credentials" after="/root/.aws/credentials"
2022-06-21T15:09:44.896644Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_credentials_file: aws_config::profile::parser::source: config file not found path=~/.aws/credentials
2022-06-21T15:09:44.896650Z DEBUG provide_credentials{provider=default_chain}:load_credentials{provider=Ec2InstanceMetadata}:load_credentials_file: aws_config::profile::parser::source: config file loaded path=~/.aws/credentials size=0
2022-06-21T15:09:44.898362Z  WARN provide_credentials{provider=default_chain}: aws_config::meta::credentials::chain: provider failed to provide credentials provider=Ec2InstanceMetadata error=An error occurred while loading credentials: Error response from IMDS (code: 301). Response { status: 301, version: HTTP/1.1, headers: {"content-type": "text/html; charset=utf-8", "location": "/latest/meta-data/iam/security-credentials/", "date": "Tue, 21 Jun 2022 15:09:44 GMT", "content-length": "78"}, body: SdkBody { inner: Once(Some(b"Moved Permanently.\n\n")), retryable: true } }

I followed up—I suspect the issue is not the 301—Other SDKs don't follow 301s for IMDS (and if they do it's a bug / security issue).
The issue instead seems to be that we're hitting security-credentials (no trailing slash) and KIAM is (for some reason) deciding to redirect that.
I don't see any particular reason we couldn't hit the URL with a trailing slash from the IMDS client though

Thanks for the response! I can see why following 301s could be considered a security concern.
https://github.com/uswitch/kiam/issues/172 seems relevant. They switched to returning a 301 from a 308 thinking that clients would handle it better.
https://github.com/uswitch/kiam/issues/116 also seems relevant.
I spun up an EC2 instance to try it out and both seem to return 200s at the current time:
[ec2-user@ip-172-31-43-67 ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v <IP_ADDRESS>/latest/meta-data/iam/security-credentials
*   Trying <IP_ADDRESS>:80...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 80 (#0)
> GET /latest/meta-data/iam/security-credentials HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Accept-Ranges: bytes
< Content-Length: 23
< Content-Type: text/plain
< Date: Wed, 22 Jun 2022 18:32:15 GMT
< Last-Modified: Wed, 22 Jun 2022 18:31:24 GMT
< Connection: close
< Server: EC2ws
<
* Closing connection 0
cloudtrail-ec2-instance

[ec2-user@ip-172-31-43-67 ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v <IP_ADDRESS>/latest/meta-data/iam/security-credentials/
*   Trying <IP_ADDRESS>:80...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 80 (#0)
> GET /latest/meta-data/iam/security-credentials/ HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Accept-Ranges: bytes
< Content-Length: 23
< Content-Type: text/plain
< Date: Wed, 22 Jun 2022 18:32:17 GMT
< Last-Modified: Wed, 22 Jun 2022 18:31:24 GMT
< Connection: close
< Server: EC2ws
<
* Closing connection 0
cloudtrail-ec2-instance

curling the parent path,/iam, seems to return the "directory entries" with the trailing /:
$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v <IP_ADDRESS>/latest/meta-data/iam/
*   Trying <IP_ADDRESS>:80...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 80 (#0)
> GET /latest/meta-data/iam/ HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Accept-Ranges: bytes
< Content-Length: 26
< Content-Type: text/plain
< Date: Wed, 22 Jun 2022 18:34:39 GMT
< Last-Modified: Wed, 22 Jun 2022 18:31:24 GMT
< Connection: close
< Server: EC2ws
<
* Closing connection 0
info
security-credentials/

I'll leave it to you and others with more intimate knowledge of IMDSv2 but it does seem like having the client hit the endpoint with a trailing / would be appropriate.

it seems like KIAM explicitly added this redirect for some internal reason: https://github.com/uswitch/kiam/pull/121

PR: https://github.com/awslabs/smithy-rs/pull/1487
Unfortunately it's not going to make the release that's going out today but will go out in the next one

Awesome, thanks for the quick review and quick fix @rcoh !


Localise Everything Via a Microsoft Served CDN

Description of the new feature/enhancement

Here's me currently in mainland China trying to install python:
C:\Users\imhx>winget install python
Found Python [Python.Python]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe
  -

Apparently, as affected by the internet censorship in mainland China, locally, nearly all international internet connection is very slow, even when it's not blocked by the government. So although it makes sense to download python through it's official website, may I request to store everything in need when installing a package on a Microsoft Served CDN / Network (npm is a good example; though it does not have nodes in China, many mirrors had been built up so it's pretty accessible), just like the Windows Store (which has decent download speed according to my own experience), as both of them share a similar nature.
Proposed technical implementation details (optional)

I am not sure if, say the python installation through winget will be detecting it's latest version automatically; if so, a script can be written and ran on Microsoft's side, or a CI can be depended to store the latest version of the software, in this case python.
This idea may sound silly but :) there you go!

In addition, a Microsoft Bot can be ran on the community repo to store everything that's distributable on such Microsoft Network, and convert official download links to Microsoft networked links.
Such as:
From https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe
to winget.example.com/python/3.8.3/python-3.8.3-amd64.exe

I support it!

Specifically for the Python installation, you can get it through the Store (and once WinGet supports it, that's where it ought to point by default).
In the past we (I work at Microsoft, though not on WinGet) have tried to mirror Python on our CDN so that it's accessible in China, but the lawyers got involved and we had to take it down. So while we can try again, I wouldn't be too hopeful!
The CDN for python.org is donated by Fastly, so perhaps their coverage is not very good in China?

Specifically for the Python installation, you can get it through the Store (and once WinGet supports it, that's where it ought to point by default).
In the past we (I work at Microsoft, though not on WinGet) have tried to mirror Python on our CDN so that it's accessible in China, but the lawyers got involved and we had to take it down. So while we can try again, I wouldn't be too hopeful!
The CDN for python.org is donated by Fastly, so perhaps their coverage is not very good in China?

Fastly is partially blocked in China. So you can imagine that.
I don't believe distributing Python installation files in China is illegal? First you can host it at your Azure zones, like Hong Kong or elsewhere; secondly even you do store it in China, I believe it's 100% legal.
Even you distribute government-banned content and make it accessible in China, all the government will be able to do is that simply block the domain. There won't be any lawyers to get involve.
The software-download.microsoft.com domain is accessible in China, and I just want something similar to power winget. That's all.

The WinGet Community repository does not host any installers. Many publishers also prohibit redistribution like this without an agreement of some sort in place. Since this isn't really part of the core WinGet product, I'm going to close this issue as "not planned". I know that's not what you wanted to hear, but it's not something we can consider at this time.
In the event the publisher offers a "local" URL the installers can be split out by locale in the WinGet manifest. They just need to have some form of citation from the official publisher's website so we can verify the authenticity of the "mirror" / local cache prior to being validated in the community repository.


"Maintain focus ..." option has no effect for "run cell"

"Maintain focus ..." option has no effect for "run cell"
What steps reproduce the problem?

Open Tools > Preferences > Editor > Run Code and enable the "Maintain focus in the Editor after running cells or selections" option.
Execute Run > Run cell (or Crtl + Return)

What is the expected output? What do you see instead?
The focus switches to the console and doesn't stay in the editor. This is the same behaviour as when the "Maintain focus ..." option is disabled, i.e., enabling the option has no apparent effect. Running line (F9) works fine - it changes focus according to the enabling/disabling this option.
Similar to this issue https://github.com/spyder-ide/spyder/issues/11503. But, now it switches focus always.
 Unfortunately, I can't reproduce your error, sorry:

As you can see, the focus stays on the editor after running cells in my case, and @dalthviz confirmed he's observing the same behavior on Windows.

Maybe could you submit here a GIF or video to better understand how this happening to you @pavolgaj ? Let us know!

I just tested it on my second laptop (Win7 + Python3.7). Same behaviour. But, when I compare @ccordoba12 video. I see some difference. I have a console and editor in the same part of the main window. And if I run cell, the focus stays in the editor (there is an active cursor there) but the console is on the top and the editor is below it. I didn't notice the active cursor, before.
If I run a line, the editor is on top.
When I added console and editor separately, the focus stayed in editor like on the video above.
Here is my situation:

Thanks for the GIf @pavolgaj I was able to reproduce this :+1:


Added scrutinizer config.

Codecov Report

Merging #18 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #18   +/-   ##
=========================================
  Coverage     92.32%   92.32%
  Complexity      171      171
=========================================
  Files            27       27
  Lines           456      456
=========================================
  Hits            421      421
  Misses           35       35

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 2090045...315229c. Read the comment docs.


feat: target Unix commands in Referer header explicitly

New rules 932205, 932206 to handle the Referer header explicitly.
The regular expression in 932200 leads to false positives against URLs
with query strings (due to the ?). 932205 uses an additional prefix in
the regular expression that matches the first ? so that the following
expressions will only match question marks that are part of the payload.
932206 uses an additional prefix to match only when the Referer value is
not a URL (which is illegal). 932206 is thus equivalent to 932200 but is
required to distinguish the case where the Referer header does actually
contain a URL.
Fixes #3180.

Thanks for the reviews and the PR @theseion. Merging now.


Cant get it to work

So the instructions I followed were from here: https://github.com/lamaun/jumpcutter/#windows
and this is the error i got Traceback (most recent call last):   File "jumpcutter.py", line 13, in <module>     from pytube import YouTube   File "C:\Users\Arca\AppData\Local\Programs\Python\Python37\lib\site-packages\pytube\__init__.py", line 16, in <module>     from pytube.streams import Stream   File "C:\Users\Arca\AppData\Local\Programs\Python\Python37\lib\site-packages\pytube\streams.py", line 17, in <module>     from pytube import extract   File "C:\Users\Arca\AppData\Local\Programs\Python\Python37\lib\site-packages\pytube\extract.py", line 7, in <module>     from pytube.compat import quote ImportError: cannot import name 'quote' from 'pytube.compat' (C:\Users\Arca\AppData\Local\Programs\Python\Python37\lib\site-packages\pytube\compat.py)
I looked at some similar issues but i don't seem to understand
I don't know how to fix this so any help would work thx.

wait i think i forgot something

C:\Users\YOUR_USERNAME_HERE\AppData\Local\Programs\Python\Python37\py pip.exe install pytube --upgrade
you should have pip.exe in your scripts folder

fixed by pull request #169


Peer to Peer Review of Bootstrap Project - Ayo and Partner

Congratulations

Great Job on this project.
To  highlight 🍾

You are following GitHub actions ✔
Good commit history ✔
Your design looks good 💯 ✔
Good PR description ✔
Good use of bootstrap classes✔
Good HTML semantics to increase SEO and accessibility✔
Your design looks perfect 💯 👍 ✔

Good Job on the project
No issues with found👍


How to ask students to change in codes/make new codes?

I'm converting my notebooks to the template format.
I have a few questions:

If we want to ask the students to change something in a code, do we then add a cell in which they write in all or part of the code themselves. Or do we expect them to decide for themselves if they want to modify the existing code or add a new cell? Personally, I prefer the first option. At least in the beginning of the course.
If I want to write in a code, where they have to fill in missing values, do I then indicate the missing values with a "" or do you have another solution for this? (e.g. list(G.edges())[:_], where they have to fill in the numbers).

@karinSDU
We have separate cells for adding code but nothing specific for points 2. Wouldn't it be enough to write the instructions in a comment?
If yes, let's close this issue


Documentation - Github pages

I created a Read the Docs themed Sphinx version of the README and plugged it in to GitHub Pages. I've also added a Getting Started section as suggested in #183.
It looks really nice :sunglasses:  https://gerazov.github.io/orgmode/
I was following Continuous Documentation: Hosting Read the Docs on GitHub Pages up to the automation part.
The documentation in rst format is in ./docs_rst/ and the compiled website in ./docs - this is the only folder that can be specified other than root for gh-pages to work.
I've currently compiled the rst localjy to html using python-sphinx and make html, which generates the html in the ./docs_rst/_build/html/ folder. I then copied this to ./docs and activated gh-pages on the documentation branch and the ./docs folder.
I've done this manually just so I can share the way it looks. In the main repo it should be automated via scripts as described in Continuous Documentation: Hosting Read the Docs on GitHub Pages

This looks great, thanks!
I would love to use a separate repo for this documentation, because having ~150 files in the main repo only for documentation seems a bit too much. Could you make a PR to a new repo that I just created? https://github.com/nvim-orgmode/docs

Ok I've moved the PR there https://github.com/nvim-orgmode/docs/pull/1 :+1:


真・鋼彈無雙/SHIN・GUNDAM MUSOU[PCSH00058]

App summary

App name: 真・鋼彈無雙
App serial: PCSH00058
App version: 1.00

Vita3K summary

Version: v0.1.6
Build number: 3029
Commit hash: https://github.com/vita3k/vita3k/commit/6da03dbb
CPU backend: Dynarmic
GPU backend: Vulkan

Test environment summary

Tested by: King
OS: Windows 10/macOS/Linux Distro, Kernel Version?
CPU: Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz
GPU:NVIDIA GeForce GTX 970
Operating System: Microsoft Windows 10.0.18363 (X64)
RAM : 16GB

Issues
The screen display is abnormal and the emulator crashes during the game.
Screenshots

Log
vita3k.log
Recommended labels

dynarmic crash
graphics bug
Ingame +

@taiwan-king maybe change the name to Shin Gundam Musou

please change title to
Shin Gundam Musou [PCSH00058]


--reactive_beacon

reactive_beacon is shown in the program help screen but is an invalid option when used (don''t see it in long_options[] )

latest git hat shouldn't have --reactive_beacon. It is now together with --active_beacon
$ hcxdumptool -h
hcxdumptool 6.0.1-46-g4d5cdf3  (C) 2020 ZeroBeat
usage  : hcxdumptool <options>
         press the switch to terminate hcxdumptool
         hardware modification is necessary, read more:
         https://github.com/ZerBea/hcxdumptool/tree/master/docs
example: hcxdumptool -o output.pcapng -i wlp39s0f3u4u5 -t 5 --enable_status=3
         do not run hcxdumptool on logical (NETLINK) interfaces (monx, wlanxmon)
         do not use hcxdumptool in combination with other 3rd party tools, which take access to the interface

short options:
-i <interface> : interface (monitor mode will be enabled by hcxdumptool)
                 can also be done manually:
                 ip link set <interface> down
                 iw dev <interface> set type monitor
                 ip link set <interface> up
                 WARNING: iw use NETLINK (libnl) and hcxdumptool will not work on pure NETLINK interfaces
-o <dump file> : output file in pcapng format
                 including radiotap header (LINKTYPE_IEEE802_11_RADIOTAP)
-f <frames     : frames to save
                 bitmask:
                  0: clear default values
                  1: MANAGEMENT frames (default)
                  2: EAP and EAPOL frames (default)
                  4: IPV4 frames
                  8: IPV6 frames
                 16: WEP encrypted frames
                 32: WPA encrypted frames
                 to clear default values use -f 0 first, followed by desired frame type (e.g. -f 0 -f 4)
-c <digit>     : set scan list (1,2,3, ...)
                 default scan list: 1...13
                 maximum entries: 127
                 allowed channels (depends on the device):
                 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
                 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 68, 96
                 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128
                 132, 134, 136, 138, 140, 142, 144, 149, 151, 153, 155, 157, 159
                 161, 165, 169, 173
-t <seconds>   : stay time on channel before hopping to the next channel
                 default 4 seconds
-m <interface> : set monitor mode by ioctl() system call and quit
-I             : show WLAN interfaces and quit
-C             : show available channels and quit
                 if no channels are available, interface is probably in use or doesn't support monitor mode

long options:
--do_rcascan                       : show radio channel assignment (scan for target access points)
                                     this can be used to test that ioctl() calls and packet injection is working
                                     if you got no HIT, packet injection is possible not working
                                     also it can be used to get information about the target
                                     and to determine that the target is in range
                                     use this mode to collect data for the filter list
                                     run this mode at least for 2 minutes
                                     to save all received raw packets use option -o
--reason_code=<digit>              : deauthentication reason code
                                      recommended codes:
                                      1 WLAN_REASON_UNSPECIFIED
                                      2 WLAN_REASON_PREV_AUTH_NOT_VALID
                                      4 WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY
                                      5 WLAN_REASON_DISASSOC_AP_BUSY
                                      6 WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA
                                      7 WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA (default)
                                      9 WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH
--disable_client_attacks           : do not attack clients
                                     affected: ap-less (EAPOL 2/4 - M2) attack
--disable_ap_attacks               : do not attack access points
                                     affected: connected clients and client-less (PMKID) attack
--stop_ap_attacks=<digit>          : stop attacks against ACCESS POINTs if <n> BEACONs received
                                     default: stop after 600 BEACONs
--resume_ap_attacks=<digit>        : resume attacks against ACCESS POINTs after <n> BEACONs received
                                     default: 864000 BEACONs
--disable_deauthentication         : do not send deauthentication or disassociation frames
                                     affected: conntected clients
--silent                           : do not transmit!
                                     hcxdumptool is acting like a passive dumper
                                     expect possible packet loss
--eapoltimeout=<digit>             : set EAPOL TIMEOUT (microseconds)
                                     default: 20000 usec
--bpfc=<file>                      : input Berkeley Packet Filter (BPF) code
                                     steps to create a BPF (it only has to be done once):
                                      set hcxdumptool monitormode
                                       $ hcxumptool -m <interface>
                                      create BPF to protect a MAC
                                       $ tcpdump -i <interface> not wlan addr1 11:22:33:44:55:66 and not wlan addr2 11:22:33:44:55:66 -ddd > protect.bpf
                                       recommended to protect own devices
                                      or create BPF to attack a MAC
                                       $ tcpdump -i <interface> wlan addr1 11:22:33:44:55:66 or wlan addr2 11:22:33:44:55:66 -ddd > attack.bpf
                                       not recommended, because important pre-authentication frames will be lost due to MAC randomization of the CLIENTs
                                      use the BPF code
                                       $ hcxumptool -i <interface> --bpfc=attack.bpf ...
                                     see man pcap-filter for a list of all filter options
--filterlist_ap=<file>             : ACCESS POINT MAC filter list
                                     format:<PHONE_NUMBER>66 + comment
                                     maximum entries 256
                                     run first --do_rcascan to retrieve information about the target
--filterlist_client=<file>         : CLIENT MAC filter list
                                     format:<PHONE_NUMBER>66 # comment
                                     maximum entries 256
                                     due to MAC randomization of the CLIENT, it does not always work!
--filtermode=<digit>               : mode for filter list
                                     mandatory in combination with --filterlist_ap and/or --filterlist_client
                                     0: ignore filter list (default)
                                     1: use filter list as protection list
                                        do not interact with ACCESS POINTs and CLIENTs from this list
                                     2: use filter list as target list
                                        only interact with ACCESS POINTs and CLIENTs from this list
                                        not recommended, because important pre-authentication frames will be lost due to MAC randomization of the CLIENTs
--weakcandidate=<password>         : use this pre shared key (8...63 characters) for weak candidate alert
                                     will be saved to pcapng to inform hcxpcaptool
                                     default:
--mac_ap                           : use this MAC as ACCESS POINT MAC instead of a randomized one
                                     format:<PHONE_NUMBER>66
--mac_client                       : use this MAC as CLIENT MAC instead of a randomized one
                                     format:<PHONE_NUMBER>66
--essidlist=<file>                 : transmit beacons from this ESSID list
                                     maximum entries: 256 ESSIDs
--active_beacon                    : transmit beacon once every 200000 usec
                                     affected: ap-less
--flood_beacon                     : transmit beacon on every received beacon
                                     affected: ap-less
--infinity                         : prevent that a CLIENT can establish a connection to an assigned ACCESS POINT
                                     affected: ACCESS POINTs and CLIENTs
--use_gps_device=<device>          : use GPS device
                                     /dev/ttyACM0, /dev/ttyUSB0, ...
                                     NMEA 0183 $GPGGA $GPGGA
--use_gpsd                         : use GPSD device
                                     NMEA 0183 $GPGGA, $GPRMC
--nmea=<file>                      : save track to file
                                     format: NMEA 0183 $GPGGA, $GPRMC, $GPWPL
                                     to convert it to gpx, use GPSBabel:
                                     gpsbabel -i nmea -f hcxdumptool.nmea -o gpx -F file.gpx
                                     to display the track, open file.gpx with viking
--gpio_button=<digit>              : Raspberry Pi GPIO pin number of button (2...27)
                                     default = GPIO not in use
--gpio_statusled=<digit>           : Raspberry Pi GPIO number of status LED (2...27)
                                     default = GPIO not in use
--tot=<digit>                      : enable timeout timer in minutes (minimum = 2 minutes)
                                   : hcxdumptool will terminate if tot reached (EXIT code = 2)
--reboot                           : once hcxdumptool terminated, reboot system
--poweroff                         : once hcxdumptool terminated, power off system
--enable_status=<digit>            : enable real-time display (waterfall)
                                     only incomming traffic
                                     only once at the first occurrence due to MAC randomization of CLIENTs
                                     bitmask:
                                        0: no status (default)
                                        1: EAP and EAPOL
                                        2: ASSOCIATION and REASSOCIATION
                                        4: AUTHENTICATION
                                        8: BEACON and PROBERESPONSE
                                       16: ROGUE AP
                                       32: GPS (once a minute)
                                       64: internal status (once a minute)
                                      128: run as server
                                      256: run as client
                                     characters < 0x20 && > 0x7e are replaced by .
                                     example: show everything but don't run as server or client (1+2+4+8+16 = 31)
                                              show only EAP and EAPOL and ASSOCIATION and REASSOCIATION (1+2 = 3)
--server_port=<digit>              : define port for server status output (1...65535)
                                   : default IP: <IP_ADDRESS>
                                   : default port: 60123
--client_port=<digit>              : define port for client status read (1...65535)
                                   : default IP: <IP_ADDRESS>
                                   : default port: 60123
--check_driver                     : run several tests to determine that driver support all(!) required ioctl() system calls
--help                             : show this help
--version                          : show version

Run hcxdumptool -i interface --do_rcascan for at least 30 seconds, before you start an attack!
Do not edit, merge or convert this pcapng files, because it will remove optional comment fields!
It is much better to run gzip to compress the files. Wireshark, tshark and hcxpcapngtool will understand this.
If hcxdumptool captured your password from WiFi traffic, you should check all your devices immediately!
If you use GPS, make sure GPS device is inserted and has a GPS FIX, before you start hcxdumptool!

The reactive BEACON made too much noise, so I had to remove it an favor of an active BEACON (using a fixed time interval).

ok thanks. pulling now

I think it was a race condition between your pull and my push because latest update was very complex - hcxdumptool is complete refactored.


Clicking on footer icon navigates to home

issue reference number- #209
I have fixed the issue.
Now, if we click on footer icon it navigates us to Home.

@ThGnommy Yep, you are right,
Thanks for your feedback.
I've removed useLocation
I imported that along with Link, forgot to remove that.


Add documentation for emulators feature in cross infra

While working on cross-related PRs I came across emulators introduced by https://github.com/NixOS/nixpkgs/commit/9c8fd412248ad907eee7547b19bf3f7583d2c411.  They seem useful but haven't been documented anywhere. IMO would be a good addition to the cross-compilation section of the manual once #105364 is merged.
As I understand it, some use cases include

testing cross-built binaries
allowing cross-building of some packages (especially some compilers and tools) that use cross-compiled binaries at build time

Pinging (author of emulators feature) @matthewbauer, (cross infra maintainer) @Ericson2314

@matthewbauer could you describe a bit how emulators works, how to use it, and how to run the nixpkgs tests?

The emulators property of {build,host,target}Platform provides a way to run binaries for one architecture on another. It selects from a package set some emulator that's known to provide this in Nixpkgs. For example:
# stdenv.hostPlatform.emulator :: PackageSet -> String
$ nix eval --impure --expr '(import <nixpkgs> {}).pkgsCross.aarch64-multiplatform.stdenv.hostPlatform.emulator (import <nixpkgs> {})'
"/nix/store/vfzcwwp4xlgzkfak0n422hgfr4kfdngq-qemu-5.1.0/bin/qemu-aarch64"

Emulators includes Wine, Qemu-user, & wasmtime, but the idea is to avoid specifying exactly which architecture you need.
More examples:
$ nix eval --impure --expr '(import <nixpkgs> {}).stdenv.hostPlatform.emulator (import <nixpkgs> {})'
"/nix/store/a3fc4zqaiak11jks9zd579mz5v0li8bg-bash-4.4-p23/bin/bash -c '\"$@\"' --"

$ nix eval --impure --expr '(import <nixpkgs> {}).pkgsCross.mingw32.stdenv.hostPlatform.emulator (import <nixpkgs> {})'
"/nix/store/g9qvz1y25d500h8fww9vdfmmyknxnd9c-wine-5.0/bin/wine32"

I see that there are emulator tests in Nixpkgs, how would one run them?

I tried a simple expression, but /nix/store/lzlk7kn4aw34r9m9hf04qca31s3s8q8l-wine-5.0.3/bin/wine32 doesn't exist.
{ pkgs ? import <nixpkgs> { }}:
with pkgs;

let
  mingw-hello = pkgsCross.mingw32.hello;
  emul = pkgsCross.mingw32.stdenv.hostPlatform.emulator pkgs;

in
rec {
  runit = writeScript "runit" ''
    #!/usr/bin/env sh
    ${emul} ${mingw-hello}/bin/hello
  '';
}

@matthewbauer what kinds of things would this allow in Nixpkgs? There's several instances where packages use their own build artifacts as part of the build process, which wouldn't work when cross-compiling, so could we patch them to use the emulator to complete cross-compilation?

@matthewbauer what kinds of things would this allow in Nixpkgs? There's several instances where packages use their own build artifacts as part of the build process, which wouldn't work when cross-compiling, so could we patch them to use the emulator to complete cross-compilation?

Still WIP

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/call-for-participation-nix-workshop-at-vandyhacks/15401/4

I think there are still two pieces missing here, but once they are added this will be quite a powerful feature:

Every hostPlatform with a kernel in nixpkgs (i.e. at minimum, Linux) should know the nix expression that builds a kernel that works in the platform's emulator (e.g. qemu) without any extra fiddly configuration effort.

Add an attribute emulatedBuild which is like pkgsCross but instead of changing only the hostPlatform to create a cross-compiled package it instead changes both the buildPlatform and the hostPlatform to create a native-compiled package, with all derivations wrapped in an emulator invocation.

I implemented (1) for one specific case (mips64el) here.  The result is pretty nifty: you can use 9pfs to mount the host's /nix/store (read-only, of course) within the guest, so you don't even need a root filesystem image.  Just a kernel, initramfs-with-busybox, and then you're off and away.  Adding (2) would not be so hard.
This will be really handy for cross compilation situations where you have a long dependency chain of packages and all but one of them (buried somewhere in the middle of the chain) is able to cross-compile.  For example, #166199.  It would mean that an overlay could be used to swap out { gobject-introspection = emulatedBuild.gobject-introspection; }.

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/stdenv-hostplatform-emulator-use-case/35367/1


sis-scraper: improved pruning for conflict bits

This change improves the conflict checking algorithm to prune
bits that have no impact on whether any two classes conflict.
The total reduction for 10 minute granularity brings the number of u64s
down from 10 (pre-0/1 pruning) to 4, a 60% reduction over the naive approach.
The basic (0/1) pruner reduced the number of u64s from 10 to 7, meaning
this has approx a 42.9% reduction in the number of u64s (7->4)
Per request, we are now using one minute granularity, which needs 5 u64s.
Pre-optimization, the naive algorithm requires 158 u64s, therefore this presents approx. a 96.8% reduction.

Per request, we are now using one minute granularity, which needs 5 u64s.
Pre-optimization, the naive algorithm requires 158 u64s, therefore this presents approx. a 96.8% reduction!


Official docker hub registry needed

Could you create an official docker hub repo?

Good idea. Here you go:
docker run oyster/halfshell config.json

Thanks! You should note this repo in README.

Tags with version numbers will be helpful too ;-)

Yeah, as of now, it's just latest. I tried to create a tagged version for 0.1.1 and 0.1.0, but unfortunately their Dockerfile doesn't successfully build anymore; the gophers/go PPA doesn't update. We're pretty close to a 0.2 release, so I didn't bother with it.


[BUG] Text always gray

Describe the bug
The text is always grey, making it look bad
To Reproduce
Steps to reproduce the behavior:
Install with auto installer
Open spotify
Screenshots

Desktop (please complete the following information):

OS: Windows 10 Pro
Version: Dynamic 1.6, Spotify <IP_ADDRESS>3

Logs
Add logs from console. To do that

Run spicetify enable-devtools in terminal
Spotify will be restarted
Hit Ctrl + Shift + I to open DevTools window
Navigate to tab Console
Copy console window content.

(Please paste here console logs or attach a screenshot)

Please look at your logs as explained in the bug template.
Please also share the content of config-xpui.ini

Nevermind i fixed it, for some reason color_scheme was set to Nord-Dark

#19


Attachment support in v3?

Is there currently a way to read attachments in the v3 SDK or is that still in progress?
I see there are a number of classes and functions related to attachment reading, but it doesn't look like they're accessible yet. Is that true or am I not discovering it correctly?

https://github.com/Azure/azure-cosmos-dotnet-v3/blob/5ce792f507f3039b7d4d97c0c7909f53a4551635/Microsoft.Azure.Cosmos/src/MediaResponse.cs#L14
https://github.com/Azure/azure-cosmos-dotnet-v3/blob/7e49190e518b5ee3e0a604f8d17586c7603912f8/Microsoft.Azure.Cosmos/src/MediaOptions.cs#L9
https://github.com/Azure/azure-cosmos-dotnet-v3/blob/5ce792f507f3039b7d4d97c0c7909f53a4551635/Microsoft.Azure.Cosmos/src/ResourceFeedReaderClientExtensions.cs#L159-L163
https://github.com/Azure/azure-cosmos-dotnet-v3/blob/5ce792f507f3039b7d4d97c0c7909f53a4551635/Microsoft.Azure.Cosmos/src/IMediaHandler.cs#L32-L34

Can this be un-parked? I can't migrate without this functionality.

Am I right in thinking this functionality still isn't available?

Unfortunately I believe that CosmosDb attachments are no longer something they're trying to support.
If you search in the CosmosDb docs you'll no longer find references to attachments: GitHub docs search
So it's likely they're not planning on support attachments in v3? But it would be nice to get confirmation from them. Maybe it's something the community could add support for to this SDK.

Any news on this? This is currently blocking our migration to .NET core :\

Attachments is a legacy feature supported in v2.
At the point in time, we recommend using Azure Blob Storage as a superior blob storage alternative Cosmos DB attachments. We do not have plans for introducing attachments in v3+ onwards.
To find out more - please see: https://docs.microsoft.com/en-us/azure/cosmos-db/attachments


Active record query issue

Given the following object...
class User
  jsonb_accessor :preferences,
     send_email: :boolean
end

When I try to run this query Address.include(:user).order("users.name")  rails will include send_email column in the select clause of the query, so something like this ....
select "users"."send_email"  ...which is obviously an error.

@kapso Which version of ActiveRecord and JsonbAccessor are you using?

Rails 4.2.4 and latest jsonb_accessor 0.3.0

@kapso I've added spec here. It looks like the example you've provided above but it does not fail. Is there something missing from the test?

I think this will fail, basically use order field from the join table. So not products.id but product_category.id
Product.includes(:product_category).order("product_category.id").to_a

@crismali
When Rails early loads via join, its select individual fields and includes jsonb_accessor fields, thus error'ing out.
When Rails lazy loads, all it does is select * and it works.

Ah, I see. Taking a look.

At the moment this appears to be more of a bug with the ActiveRecord attribute api. I'm able to reproduce the error in classes without jsonb_accessor like so:
class Product < ActiveRecord::Base
  belongs_to :product_category
end

class ProductCategory < ActiveRecord::Base
  attribute "foo", ActiveRecord::Type::Value
  has_many :products
end

Product.includes(:product_category).order("product_categories.id").to_a
# raises:
# PG::UndefinedColumn: ERROR:  column product_categories.foo does not exist
#      LINE 1: ...S t1_r0, "product_categories"."options" AS t1_r1, "product_c...
#                                                                    ^

Got it. So looks like until ActiveRecord issue is fixed, jsonb_accessor will not be usable with eager load joins?

Looks to be the case for now. For now I'm gonna check to see if there's already an open issue in the Rails repo.

@crismali any update on the Rails side?

We've been looking into it but currently don't have a work around.

We ran into this issue, too. Doesn't look like there's an issue open on rails around this.

This seems to work in Rails 5. v0.4.0.beta of this gem has support for Rails 5 now.


Obtain url matchers for both spring and spring-boot endpoints.

Read the contribution guidelines
Include a reference to a related issue in this repository
A description of the changes proposed in the pull request

Coverage decreased (-2.3%) to 61.818% when pulling 63173045b23ea46f3cbcc8f1cb576288ba82d42c on fix/monitor-all-endpoints into 620e51b55e9a16d3cbaceac01bb1b1c161ce470c on master.


upgrade to Kotlin 1.3.2

Hello, It can sound silly, but can you upgrade to kotlin 1.3.20 ?

I released it in 1.6.23


Support Bucket policy

Adds support for creating, updating and delete bucket Policy. This field is simply a JSON string that applies IAM permissions to objects in the bucket.
This is the first Put* field implemented so far that has a separate Delete* call, so the logic for syncBucket now checks accordingly.

While writing this I also realised that the e2e tests do not clean up their buckets if the assertions fail. That will need some work to rewrite.

/approve
/lgtm


Add an eval option that can disable parsing of expressions

Description of the pull request:
This adds an eval option for instances and parsing that when set to false causes the parser to skip any expression parsing functions and just use the reference parsing function. The end effect is that any non-reference mustaches throw a parsing error when eval: false.
Per comments in ractivejs/ractivejs.github.io#68, if you have untrusted content in your templates and you're using SSR, there's not really a way to completely ensure that terrible things wouldn't happen to the server when rendering. With expressions turned off, you can at least be sure that the template has no access to the environment.
Question
Is eval the best name for this option? allowExpressions seems a bit more descriptive of what will actually happen. For instance, you could pre-parse a template that allowed expressions, and they would still execute in an instance with eval: false.
Fixes the following issues:
Security. Please, think of the children.
Is breaking:
Only if you use an eval property on your instances.
Reviewers:
@MartinKolarik @fskreuz

For instance, you could pre-parse a template that allowed expressions, and they would still execute in an instance with eval: false.

That's bad IMHO. The option should be also checked in runtime.

Pull request # 3000. Dun dun duuun!

I'd go with the allowExpressions name, and true by default. false would:

Have the parser ignore expressions/omit them from the parsed result.
Disable all forms of string evaluation on runtime, like computed props.

Log warning when Ractive spots something that causes string evaluation.
References to expressions would render nothing or return undefined.

I've updated the PR:

eval is now allowExpressions
allowExpressions: false on an instance will cause the expression proxy to use noop rather than getting the actual expression fn to evaluate - effectively disabling runtime evaluation of expressions

So if you want to pre-parse certain trusted templates with expressions supported, you can and still have others pre-parsed without expressions as long as the instance allowExpressions !== false. If you trust no templates, then allowExpressions: false on the instance has you covered. (right?)
I think computeds are probably safe because if the malicious entity can access your ractive instance to modify your computeds, it can already do pretty much whatever anyway, no?
Should there also be a runtime option to disable the runtime parser on a particular instance? It wouldn't be hard to add and would allow you to force a particular instance into using pre-parsed templates. Seems like it might go well with anchored instances. (runtimeParser: false).

👍

Should there also be a runtime option to disable the runtime parser on a particular instance?

I don't see how that would be useful.

Looks good. 👍
Thinking about it, it looks like the option is better as a global config, a full lockdown of the library (i.e. Ractive.allowExpressions = false). I haven't tried Ractive on a multi-tenant setup though. Not sure if locking down one subtree and not the other is a thing.

You can just use Ractive.defaults.allowExpressions = false if you want it to be global.

Reading on CSP further, it looks like CSP is a page-wide security feature. Doesn't seem to make sense to have a per-instance config. Why would we allow an instance to use expressions on a page that doesn't allow it? Or have one expression forcefully not be allowed to use expressions while the other is allowed?

@fskreuz this is about scenarios discussed in https://github.com/ractivejs/ractivejs.github.io/pull/68 and not strictly related to CSP.

Ahh, gotcha. 👍


Generate dynamic routes

Version
v2.9.2
Reproduction link
https://github.com/19pdh/puszcza/tree/kronika
Steps to reproduce
npm run build
I created dynamic routes for my blog posts and it works perfectly on my computer (macOs). But when I tried to run it on Linux (Docker) an error occurs during route generating.
What is expected ?
To generate the route the same as on macOS.
What is actually happening?
I tried to inspect it with hooks but I got this:
/kronika/2019/10/11/test                                                                                12:09:48
/opt/buildhome/repo/dist/kronika/2019/10/11/test/index.html                                                                                12:09:48
[                                                                                12:09:48
  {
    type: 'handled',
    route: '/kronika/2019/10/11/test',
    error: {
      statusCode: 404,
      path: '/kronika/2019/10/11/test',
      message: 'This page could not be found'
    }
  }
]

I have no idea why this is happening. I'm using netlify image (https://github.com/netlify/build-image).

This bug report is available on Nuxt community (#c9896)

I changed _title.vue to _title/index.vue and it started working but as far as I'm concerned it's should work without it.

I changed _title.vue to _title/index.vue and it started working but as far as I'm concerned it's should work without it.

Yeah, this shouldn't make any difference.
My current guess is that the problem is in your project's code and not in the Nuxt code but it's tricky to investigate.
Could you provide more details and a minimal example?


Specific RPM in drills breaks cobblestone generators

Describe the Bug
Whenever you set a drill to mine a cobblestone generator at ~64RPM it breaks and a cobblestone block is instantly generated instead of stone after a delay.
Setting it to >48RPM or >80RPM fixes it.
Reproduction Steps

Use the same setup as below, using waterlogged drills.
Set drills to 64RPM
That's it

Expected Result
Stone should be generated and there should be a small delay between the block being broken and the next block being generated.


Test Result Adapter

Use case
Currently Flutter test (including WidgetTester) results are not readable by the platform. It would be nice to adapt the test result from a Flutter test to the formats that Android and iOS recognizes, e.g. Android instrumentation tests.
Proposal
Creates a Flutter plugin that could adapt a test result from Flutter to the platform.

See https://github.com/flutter/plugins/tree/master/packages/instrumentation_adapter


gh-16: starting a blog

Resolves gh-16

Mostly the boilerplate lifted from docsy, but with a few modifications.

Build failed because there is no blog post in the list. I'm working on drafting an introductory one.


[1.21 Alpha] Server Registry unmapping failing

Whenever a client disconnects from a server using the latest Mythic Metals alpha, it crashes the client. The Stacktrace is obscure, citing no source but rather complaining about something during registry unmapping.
Needs further investigation and debugging.

Attaching a related crashlog. This can easily be reproduced by the following:

Run a client and a server with Mythic Metals
Connect to the server
Disconnect from the server. Your client should crash

crash-2024-07-07_13.12.21-client.txt
This happens without Alloy Forgery as well, so the issue has to be within Mythic Metals or it's required dependencies

Cause of the issue has been found, and a fix is underway


version 11 is not supported by invenio-cli

Is your feature request related to a problem? Please describe.
The latest version 11 is not supported.
invenio-cli init rdm -c v11

The correct command is invenio-cli init rdm -c v11.0. I'll make sure that's updated in the docs.


💡 [FEATURE] - Add "C++ Programming Language" Complete Resources

Idea Contribution

[X] I have read all the feature request issues.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Explain feature request
Hi @jfmartinz
I would like to add Complete resources for C++ Programming Language it would be a great addition to the ResourceHub project.
Explain your solution
I propose adding a dedicated cpp.md file for Compete C++ Language:

Roadmap
Basic Syntax and Structure
Object-Oriented Programming (OOP) in C++
Functions
Advanced C++ Features
Advanced OOP Concepts
Standard Template Library (STL)
Concurrency and Memory Management
Modern C++ (C++11 and Beyond)
Project Ideas (Beginner, Intermediate, Advanced)
Certification Cources.
Etc

Any alternative approaches/features
I'll try to cover all existing topics related to cpp
Additional Context
Thank you. for the opportunity to contribute with you, Please assign this issue to me under GSSoC 24.

Hey @MastanSayyad, you can automatically create PR so It will help me to lessen the time of assigning people. Thanks. Next time. Another thing I made a mistake earlier when I merged your PR but we are trying to solve it already. The structure should be like this:
/Programming Languages
/Java
readme.md
/Javascript
readme.md
Programming languages is a parent folder and its children is the languages, and each languages has its own readme.md file. This is because to fetch it easily and work perfectly in the wbesite, thanks

Oka, I got all the instructions clearly @jfmartinz

Thanks

hey @jfmartinz, as you said that i don't have to raised the issues and can directly pull requests for each programming languages. so I request you to do not assign the issues related to programming languages to others as I am already assign to work on them.

Sure, no problem.

My bad. Maybe I assigned someone.

someone raised issues about c and typescript\ but I closed it already, you can have it all the issues loll gg


Added option_match!

This is great, thanks! Are more changes coming or do you want me to update the crate now?

Nope, I just bumped into this need today

I'll update the README too, since it's a bit out of date.


[Chip] Fix tabIndex

Switching the container to  changed the default tabIndex from -1 to 0
causing a non-clickable / deletable chip to be focusable.

[x] PR has tests / docs demo, and is linted.
[x] Commit and PR titles begin with [ComponentName], and are in imperative form: "[Component] Fix leaky abstraction".
[x] Description explains the issue / use-case resolved, and auto-closes the related issue(s) (http://tr.im/vFqem).

Do we need that default property at all ?

Good point. Fixed and squashed.


Add generated paginators for cognito-idp

Codecov Report

Merging #1655 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop    #1655   +/-   ##
========================================
  Coverage    92.39%   92.39%
========================================
  Files           53       53
  Lines         9797     9797
========================================
  Hits          9052     9052
  Misses         745      745

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 4c1679c...8653f1a. Read the comment docs.


Can't download data

Hi!
I wonder if the website https://marks.hms.harvard.edu/deepsequence/alignments.tar.gz still exists.
Currently, I can't connect to this site.
Thank you!

Sorry. It seems to be a firewall problem at my institution.


fix: 🐛 Handle MS proposal executed event for 7.x chain

Description
Handle MS proposal executed event for 7.x chain. Earlier a boolean value was received, which from 7.x was replaced by Result<Null, SpRuntimeDispatchError>
Breaking Changes

JIRA Link

Checklist

[ ] Updated the Readme.md (if required) ?

/fast-forward

/fast-forward


Persistence after disconnect

Hi, I think this would be a feature request... I love the app so far, but I think it would be really great if the program didn't essentially "shut down" after the system enters sleep mode.
On the website, the current session is "paused" until connection is resumed. Like, if I leave my computer and go out to lunch, then return to my computer after, my previous session is resumed. This is great, because I can easily view the day's conversations and "pick up where I left off" at the end of the morning.
On the app, however, when I leave and then come back, the program essentially freezes and needs to be completely exited and restarted in order to re-establish a connection. This results in the loss of the day's conversations so far (on the computer, anyways) and makes things a bit more difficult. Would it be possible to introduce functionality so that the current session can be "saved" upon disconnect (or system entering sleep mode, etc), so that it can be "reconnected to" later?
Sorry for the long description. I'm using Ubuntu 16.04 LTS, Mate desktop, and program version is 2.0.0
Thanks!
Description
First of all, thanks for your attention to open an issue for this project.
Please notice that if you are requesting a feature, then you should give a brief description of your request.
If you are reporting a bug, please follow the template below.
A bug report without detailed information required will have a very low priority and even be ignored (closed directly)!
Specifications

Version of Electron (run $ electron --version): v0.0.0
OS: <OS>
Stack trace from the error message (if any)

<Stack trace here>

Concurred. Is it possible to allow users to locally store their chat history?


Add Hangman game command

Description

I created a Hangman game in Python and would like to add it to Sir Lancebot via a new cog.
Reasoning

I think Hangman is a game I am sure many people will want to play!
Proposed Implementation

I would like to add a new cog to Sir Lancebot with the command .hangman
Would you like to implement this yourself?

[x] I'd like to implement this feature myself
[ ] Anyone can implement this feature

Could you please fill out the Proposed Implementation section with how you propose to implement this game?

@ChrisLovering Didn't I do that?
"I would like to add a new cog to Sir Lancebot with the command .hangman"

Yes, but could you explain how you propose it would work? Does the user get shown an image? does it use text, emojis, buttons, all of the above?
Actually describe what it is you plan to implement.

@ChrisLovering Done. Let me know if you need anything else

I've just found this issue https://github.com/python-discord/sir-lancebot/issues/599 that has quite a bit more defined about it, did you want to take over that issue instead? As it's currently up for grabs?

Ok, will take a look


[Question] Publisher Pipeline is not creating API called 'oauth2', is this is a reserved keyword in apiops

Release version
v5.1.1
Question Details
I am trying to create an API called oauth2 which will acts as a proxy for the actual token URL endpoint from Azure AD.  i am seeing a failure when i am trying to publish this new API into my apim instance as looking onto the traces it looks like it is trying to fetch the oauth2 API instead of creating it and since this API does not exist the publisher pipeline is getting failed.
I have tried to create the API manually and it working fine, the API is getting created successfully but from publisher it is not.
Is the Keyword oauth2 is reserved in APIOPS as i was able to create the api manually using the same artefacts i have in my repo.
if you see the below trace it is trying to fetch the API instead of creating it.
2024-07-31T12:28:52.9693796Z info: Publisher[0]
2024-07-31T12:28:52.9695292Z       Putting API oauth2...
2024-07-31T12:28:53.0118089Z dbug: GetRestResource[0]
2024-07-31T12:28:53.0119467Z       Beginning request to get REST resource at URI https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis/oauth2?api-version=2022-04-01-preview...
2024-07-31T12:28:53.3408459Z crit: Publisher[0]
2024-07-31T12:28:53.3410966Z       System.Net.Http.HttpRequestException: HTTP request to URI https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis/oauth2?api-version=2022-04-01-preview failed with status code 404. Content is '{"error":{"code":"ResourceNotFound","message":"Api not found.","details":null}}'.
2024-07-31T12:28:53.3411733Z          at common.HttpPipelineExtensions.Validate(Response response, Uri requestUri)
2024-07-31T12:28:53.3412285Z          at common.HttpPipelineExtensions.GetContent(HttpPipeline pipeline, Uri uri, CancellationToken cancellationToken)
Expected behavior

the publisher pipeline should run and create all the artefacts for the oauth2 API.

Actual behavior

instead of creating the new API, the publisher pipeline is trying to fetch the oauth2 api and since it it not available in the APIM, the publisher pipeline getting failed.

Reproduction Steps

create an api called oauth2.
create a post endpoint called 'generate-access-token' which should fetch the token from azure ad using client credentials flow.
commit the artefacts for api changes into the APIOPS repo.
run the publisher pipeline to create the API in APIM instance.
the publisher pipeline would fail trying to GET the API details instead of creating one.

@GaurSumit - do you have an artifacts/apis/oauth2/apiInformation.json file as part of the artifacts that need to be published?

@guythetechie yes the file is present in the repository in the mentioned path.

@GaurSumit - I think this was resolved in v6.
In v5, if your apiInformation.json is not part of the commit, we attempt to retrieve some information from the REST API. This can create the problem you're experiencing.
If you're not ready to upgrade to v6, try changing both the apiInformation.json and the specification file. I know you said the apiInformation.json is in your repository, but it also needs to be in your commit.

@guythetechie the file was part of the commit, i had it worked out by reverting the changes and pushing them again as fresh change.

@guythetechie - thanks for the info. I am running v6.0.1 and if I update only a specification.json artifact, the publisher will see no change. If I amend the apiInformation.json with some random bogus description text change and update my specification.json the publisher updates correctly.
It seems even in the latest release this is still happening where you need to update both for changes to be published.

@guythetechie - thanks for the info. I am running v6.0.1 and if I update only a specification.json artifact, the publisher will see no change. If I amend the apiInformation.json with some random bogus description text change and update my specification.json the publisher updates correctly.
It seems even in the latest release this is still happening where you need to update both for changes to be published.

Sounds like a bug. If you only change the specification.json artifact, the publisher should attempt to process that API. Can you send a sample publisher log where you've only changed the specification.json?

@guythetechie - thanks for the info. I am running v6.0.1 and if I update only a specification.json artifact, the publisher will see no change. If I amend the apiInformation.json with some random bogus description text change and update my specification.json the publisher updates correctly.
It seems even in the latest release this is still happening where you need to update both for changes to be published.

Sounds like a bug. If you only change the specification.json artifact, the publisher should attempt to process that API. Can you send a sample publisher log where you've only changed the specification.json?

Log attached.  Json changes:

I did some other tests after, saw your comment in this issue and tested it out. It worked, so yeah, maybe a bug. Let me know if I can do anything to help test further?

Thank you, definitely looks a bug. Will prioritize fixing this.

@riosengineer - would you mind creating a separate issue to keep things clean? The bug is unrelated to this original issue.


Dutch Translation

Added the Dutch translation for people from The Netherlands.

That's awesome but I cannot merge this as it has conflicts.


[Proposal] Resolve Deployment of new CocoaPods on a Community-level

This is in continued discussion to #29 & #27.
The Problem
People who are the sole owners of a Cocoapod abandon their - still active - project, leaving the community without an ability to deploy new Pod versions of a library. This is a huge issue in RxGoogleMaps and has the potential to be an issue in other repos as well.
Proposed Solution
It might've seemed this discussion have "died", but I had a thought on how to resolve this for a while now, but just had to go through several steps to "get the needed resources".
After several thoughts back and forth about this, I believe I've found a relatively "perfect" solution to make sure deploys can always be done by the community and not "tied" to a single owner.
This solution is composed of two parts : Community-Controlled Deploys (mandatory), and Auto Deploys (optional, but extremely cool).
Community-Controlled Deploys
As some of you may know, we have a community domain for RxSwift, aptly named www.rxswift.org. It has been inactive for a while due to some issues but thanks to the very generous help of @bontoJR, it is now active again and I also have secondary access to it so I could work through some of the related details (and also http://slack.rxswift.org is now back, woohoo!)
The first part of the solution is extremely simple - Amend the Checklist for Transferring Ownership to include an extra step:

[ ] Add<EMAIL_ADDRESS>as an owner of your project's Cocoapod by using pod trunk add-owner<EMAIL_ADDRESS>
The email address<EMAIL_ADDRESS>is a simple email forwarder, currently forwarding only to myself, but it could forward to an arbitrary list of Highly-Active Community Leaders (such as @ashfurrow etc), and will let us address pushing a podspec up if an owner goes missing leaving us "hanging dry"
Auto Deploys
This is all great and solves the problem in the most basic of levels, but there is a second step we can go through to take this to the next level and make things really neat and smooth and that's Auto Deploys.
This description will be relevant to CircleCI, but should be applicable to Travis as well.
Whenever<EMAIL_ADDRESS>is added as an owner, one of the forwarded-to owners will "register" a session for that repo (using pod trunk register<EMAIL_ADDRESS>"RxSwift Community"), in order to generate a token (found in ~/.netrc) that can be used to deploy the Podspec later.
This token will be added as a Secured Environment Variable to your CI of choice with the key COCOAPODS_TRUNK_TOKEN. This will let the CI push a Podspec to trunk as RxSwift Community.

To neatly wrap up this entire thing, adding a "Tag-level" deployment script in CircleCI to make sure only when a new tag (release) is pushed, CircleCI will build and also push an updated podspec.
I've made a Fake Repo to test this and it works extremely well, as you can see in this build: https://circleci.com/gh/RxSwiftCommunity/FakeRepo/30 (see the "pod trunk push" phase at the bottom)

You can also experiment with my Fake Repo yourself, if you'd like. You can modify the podspec, push it to master and then creating a new "Release" will trigger a build on CircleCI and push up a podspec. Super smooth and makes sure all deploys of Podspecs are done automatically and are always coming from "RxSwift Community".
I'd really appreciate your opinions on this (@ashfurrow @bobgodwinx @fpillet @RxSwiftCommunity/contributors) on if you think this is a viable solution, as I think it would easily resolve all of the issues we've been having around this.
Thanks for reading !

👏 This sounds like a good solution.
The simplest easiest of modifying the template when transferring ownership will definitely help.
Having the automated deploys would be the icing on the cake!!
Great work @freak4pc !

Dang you're a quick reader @esttorhe , thanks !

Hey! Yes I agree, using a common email is a good idea, feel free to add me to the email forwarder. Let's make sure if we move forward with this solution (I think/hope we should) that we document everything appropriately. We'll also have to follow-up with all our existing repos.
Okay so automating deploys is trickier... I have a small security concern. For the repos that I switched to CircleCI a few months ago, I had to explicitly enable two settings:

Build CI for pull requests made from forks.
Pass the encrypted environment variables to builds for pull requests.

If we move to auto-deploys, which I agree are Very Cool, we would have to disable the second option and stop passing environment variables to PRs from forks, because someone could easily write a PR to extract the value from the CI build and then they'd be able to maliciously push new versions of all our libraries.
Why does this matter? The reason I initially enabled that second option was to future-proof to install Danger on those repos. Danger needs a GitHub access token in an environment variable which, for open source projects is just used to leave comments on GitHub pull requests. We never ended up adding Danger to those repos, and instead went for a Peril installation (see #28), so I think it's fine to disable this, but it will mean we can't add regular Danger to any of our repos. Again, that's totally fine but I wanted to raise it as a concern. Let me know if I can clarify any of this.
So yeah! Let's see what the rest of the community thinks (sure would be nice to be able to easily @ mention all the point-people for all our repos, but...). I'm very excited about this solution!

Thanks for the feedback @ashfurrow :)
I had similar security conern, but I felt like Peril entirely solves this, and I was also sort of "blacklisting" this option up until when you set-up Peril.
Repos that already have a Dangerfile won't have to run Danger locally since they get it "for free" with Peril, there would be no need for a repo-level secret since Peril has org-wide organization and runs Danger per-repository.
I think we'd be 100% good to turn this option off for all of our Repos. 💯
The other "Security concern" is anyone who is a RxSwiftCommunity member could attain the secret and do deploys with it, but this isn't something we can worry about because a member could, just as well, wipe out an entire project, or cause other serious damage. We can always swap out tokens AFAIK.
Any other community feedback would be highly appreciated :)

Yeah, Peril does fix that.
TBH, I think this is great idea 👍

- Cocoapods
+ CocoaPods

🤓

Haha :) Fair @devxoul
In my defense, I usually get it right 😉

@freak4pc I give my blessing to this solution 💯 I think it's fine when deployment happens only on new tags, which the most important thing. So I vote for this solution 👍

Our first Auto-Deploy was successful 🎉
https://circleci.com/gh/RxSwiftCommunity/RxGoogleMaps/13

How exciting! Very well-done 😄 Looks like the pod trunk is really verbose, any way we can trim it down? Or is it verbose on purpose? Either way, looks good!

@ashfurrow Sure! We can definitely --silent it 👍
I sort of left it there to see "stuff is happening" since it was the first build ever.
When writing the docs for how to set this up (as its an optional step), we can link to that CircleCI file as an example, possibly

Cool! I wonder if we can redirect the verbose output to an artefact directory is it's available for inspection if we need it, but still have like an inline quiet output?

Nothing built-in to that pod but we can just 'pod trunk push --verbose ... > pod_trunk_push.log`

@ashfurrow I did this here https://circleci.com/gh/RxSwiftCommunity/FakeRepo/34#artifacts/containers/0
But TBH - I have no idea why it's so verbose. it's not doing that locally for me and I didn't have that verbose flag on the original build on RxGoogleMaps 🤔

Yeah I was surprised by that too. Normally pod trunk push is really parsimonious with its output. Maybe it detects its on a CI environment? Hmm.

Seems like it 🤔
This is how it looks locally for me:

@ashfurrow This seems OK. I really have no good idea of why this is happening: https://github.com/CocoaPods/cocoapods-trunk/blob/1a28c0957d00e6c679abbf037b2447080b3a8e26/lib/pod/command/trunk.rb#L74

Mmmm okay. Could it be that we're not specifying a podspec for pod trunk push, so the spec param there is nil?

@ashfurrow Look at the second link there - it seems to be a known issue. I'll shoot an email to one of the support engineers and see if we can get some clarity

@ashfurrow some info from Circle CI :

The CoacoaPods config file should be located in the homepath
~. You can edit it as you like prior to running anything. Though take note that if a build fails without the verbose logging it will be almost impossible for us to provide support. If you're okay with that then feel free to edit the file as needed in a config step.

I think its fine practically. We could potentially edit the config only for that part of the job (e.g. pod trunk push)

Okay, sounds good. We can always change our minds later 🙃

@ashfurrow Just FYI, this is what I did:
https://github.com/RxSwiftCommunity/FakeRepo/blob/master/circle.yml#L24
It is quite the hack, but it works for that specific purpose :)

https://circleci.com/gh/RxSwiftCommunity/FakeRepo/42
What do you think?

Makes sense! Good commenting 👍

@ashfurrow Funny enough, but I think this calls for a --noverbose flag to override the config file ;)
One day ...

I feel pretty confident closing this right now. It is not yet wide-spread across the entire existing community repos, but every new repo adds<EMAIL_ADDRESS>as an owner, making it possibly to deal with owners that leave the community, which was the number concern around here.
For automatic deploys, several repos have this but it would take much more effort and community help to make this happen across all repos. The groundworks for this has been laid out with examples in RxSwiftExt, RxMKMapView, etc. so I don't think this issue is needed for now.
Thanks for all the feedback!


Also detect version with importlib.metadata.version

The docs state two ways cyclopts tries to determine your CLI app's version
Another way to determine this would be using https://docs.python.org/3.12/library/importlib.metadata.html#distribution-versions
from importlib import metadata
metadata.version("package-name")

Also has a backport to support older python https://importlib-metadata.readthedocs.io/en/latest/

I can add this! Should this have higher or lower priority over directly checking mypackage.__version__? My gut says higher priority. Or would directly checking mypackage.__version__ be redundant (is it already handled by importlib)?

Yes, importlib should be at the highest priority because it's the "official" way.
Reference:
https://peps.python.org/pep-0396/#pep-rejection

This has been and released in v1.2.0.


R2dbcTimeoutException - pool runs out of connections

We have a high volume processing project using r2dbc-pool and r2dbc-postgresql modules.
In some environments we started periodically experiencing issues where attempts to get a connection from pool end up with exception:
org.springframework.dao.DataAccessResourceFailureException, Message: Failed to obtain R2DBC Connection; nested exception is io.r2dbc.spi.R2dbcTimeoutException: Connection acquisition timed out after 120000ms
We captured a couple of heap dumps and observed:

all io.rdbc.pool.PooledConnections have isClosed=true
all io.r2dbc/postgresql.PostgresqlConnection objects they point to seem to be open and idle (client.isClosed = 0, client.transactionStatos = IDLE)
Looking at io.r2dbc.pool.ConnectionPool and its reactor.pool.SimpleDequePool, it has a pendingSize = 7, acquired = 20 (we set the pool size to 20 per container and the idleResources deque seems empty

We suspect that in a period of a spike of error conditions with connections (e.g. lock timeout) there's a racing or timing condition that occurs that prevents connections from being released properly and returned to the pool.
Do you have suggestions for investigating and troubleshooting this issue to it's root cause?
Thanks in advance!

Maybe related to https://github.com/r2dbc/r2dbc-pool/issues/198?

@SimoneGiusso Thanks Simone! I've tried the repro from #198 but was not able to reproduce the problem. The issue seems very close to what we are experiencing. I've asked Alexei (the creator of #198) for details.

@jivkodobrev Hi, do you have some update? Can you share some code example, so I can help you solve it? Thanks

@cyberluke Hi - unfortunately I got reassigned to something else and will not get the chance to work on this. BTW - check the #198 mentioned above, it seems to be the issue. HTH


feat: group input variables inside ibm_catalog for DA

Description
Issue: https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager/issues/75

Release required?

[ ] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

/run pipeline

/run pipeline

@akocbek please hold off running pipeline until PR has been approved (we are hitting SM quotas in our account)

/run pipeline

:tada: This PR is included in version 1.10.0 :tada:
The release is available on:

GitHub release
v1.10.0

Your semantic-release bot :package::rocket:


Compiler Error CS0121

I am having problems with the compiler not being able to differentiate between two different methods with the same name.
The compiler says:
The call is ambiguous between the following methods or properties:
"DropNet.DropNetClient.GetMetaData(string, string, bool, bool)" and
"DropNet.DropNetClient.GetMetaData(string, bool, bool)"

It's methods overload problem:
public MetaData GetMetaData(string hash = null, bool list = false, bool include_deleted = false)
public MetaData GetMetaData(string path, string hash = null, bool list = false, bool include_deleted = false)

If you're first argument is "path", write like this:
var metaData = client.GetMetaData("/Public/DropboxManagement/Logs", null);

Thanks for the reply, I'll keep it in mind!
The project, which used DropNet, has been abandoned, so unfortunately I can't 100% confirm your suggestion on my end.