Regression on v1.4.6

Hello! I am experiencing a regression on v1.4.6.
Consider the following code.
// Path Declaration
var path: String {
        switch self {
        case .postOnboardingDocCheckFinishSuccess:
            return "onboarding/doc-check/finish"
        case .postOnboardingDocCheckStartSuccess:
            return "onboarding/doc-check/start"
        default:
            return "onboarding"
        }
    }

// Path registration
enum Method {
    case DELETE
    case PATCH
    case HEAD
    case POST
    case GET
    case PUT
}

protocol EndPoint {
    var method: Method { get }
    var path: String { get }
    var response: ((HttpRequest) -> HttpResponse) { get }
}

protocol JSONFileRepresentable {
    var fileName: String { get }
}

class Router {
    let server: HttpServer

    init() {
        server = HttpServer()
    }

    func stop() {
        server.stop()
    }

    func start() {
        try! server.start()
    }

    func setUp(with endPoints: [EndPoint]) {
        endPoints.forEach({
            switch $0.method {
            case .GET:
                server.GET[$0.path] = $0.response
            case .POST:
                server.POST[$0.path] = $0.response
            case .PUT:
                server.PUT[$0.path] = $0.response
            case .DELETE:
                server.DELETE[$0.path] = $0.response
            default:
                fatalError("Method not yet supported")
            }
        })
    }
}

Registering only Onboarding success. Calls the response block normally.
But registering all 3 paths makes onboarding to return 404 not found.
This is part of a testing suite and it started falling after updating to v1.4.6
It works fine on v1.4.5

Hey, @sonic555gr Thanks for reporting this! Can you please try your issue pointing to stable? We worked in a fix for two similar issues two weeks ago.

Hello @Vkt0r.
I installed "stable" branch but it seems to be failing on a different issue now.
I can't test the same problem since the tests fail much earlier.
Apparently the GET requests return status code of -1 and no response body.

I'm also sending you the Charles Session of one of the requests with the faulty response.
[{"status":"COMPLETE","method":"GET","protocolVersion":"HTTP/1.1","scheme":"http","host":"localhost","port":8080,"actualPort":8080,"path":"/user/details","query":null,"tunnel":false,"keptAlive":false,"webSocket":false,"remoteAddress":"localhost/<IP_ADDRESS>","clientAddress":"/<IP_ADDRESS>","clientPort":53409,"times":{"start":"2019-04-30T15:06:25.684+01:00","requestBegin":"2019-04-30T15:06:25.688+01:00","requestComplete":"2019-04-30T15:06:25.688+01:00","responseBegin":"2019-04-30T15:06:25.690+01:00","end":"2019-04-30T15:06:25.690+01:00"},"durations":{"total":5,"dns":2,"connect":1,"ssl":null,"request":0,"response":0,"latency":2},"speeds":{"overall":"93400","request":"0","response":"0"},"totalSize":"467","request":{"sizes":{"headers":342,"body":0},"mimeType":null,"charset":null,"contentEncoding":null,"header":{"firstLine":"GET /user/details HTTP/1.1","headers":[{"name":"Host","value":"localhost:8080"},{"name":"X-Device-Fingerprint","value":"4A5F9097-1E68-4F7D-A273-1BF3EED549F1"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"PagoFX/1.0+2975 x86_64 iOS/12.2 CFNetwork/978.0.7 Darwin/18.2.0"},{"name":"Authorization","value":"A BEARER"},{"name":"Accept-Language","value":"en-us"},{"name":"Accept-Encoding","value":"gzip, deflate"},{"name":"Connection","value":"keep-alive"}]}},"response":{"status":-1,"sizes":{"headers":62,"body":63},"mimeType":null,"charset":null,"contentEncoding":null,"header":{"firstLine":null,"headers":[]},"body":{"text":"HTTP/1.1<PHONE_NUMBER>974933605 Created\r\nServer: Swifter 1.3.3\r\n\r\n","charset":null}}}]

Hey, @sonic555gr Thanks for the Charles response! Nevertheless, I'm seeing something weird in your response just in the following line:
"body": {
    "text":"HTTP/1.1<PHONE_NUMBER>974933605 Created\r\nServer: Swifter 1.3.3\r\n\r\n",
     "charset":null
 }

As you can see above we set the version of the server is being used and your response is telling me you're using the version 1.3.3. If you're using Cocoapods or Carthage you need to specify the stable branch.
Below you can see the Charles session response from a test I have in my current PR and compare with yours:

[
    {
        "status": "COMPLETE",
        "method": "GET",
        "protocolVersion": "HTTP/1.1",
        "scheme": "http",
        "host": "localhost",
        "port": 8080,
        "actualPort": 8080,
        "path": "/a/:b/c",
        "query": null,
        "tunnel": false,
        "keptAlive": true,
        "webSocket": false,
        "remoteAddress": "localhost/<IP_ADDRESS>",
        "clientAddress": "/<IP_ADDRESS>",
        "clientPort": 51015,
        "times": {
            "start": "2019-04-30T23:03:45.517-04:00",
            "requestBegin": "2019-04-30T23:03:45.518-04:00",
            "requestComplete": "2019-04-30T23:03:45.518-04:00",
            "responseBegin": "2019-04-30T23:03:45.519-04:00",
            "end": "2019-04-30T23:03:45.519-04:00"
        },
        "durations": {
            "total": 1,
            "dns": null,
            "connect": null,
            "ssl": null,
            "request": 0,
            "response": 0,
            "latency": 1
        },
        "speeds": {
            "overall": "396000",
            "request": "0",
            "response": "0"
        },
        "totalSize": "396",
        "request": {
            "sizes": {
                "headers": 200,
                "body": 0
            },
            "mimeType": null,
            "charset": null,
            "contentEncoding": null,
            "header": {
                "firstLine": "GET /a/:b/c HTTP/1.1",
                "headers": [
                    {
                        "name": "Host",
                        "value": "localhost:8080"
                    },
                    {
                        "name": "Accept",
                        "value": "*/*"
                    },
                    {
                        "name": "User-Agent",
                        "value": "xctest/14490.71 CFNetwork/978.0.7 Darwin/18.5.0"
                    },
                    {
                        "name": "Accept-Language",
                        "value": "en-us"
                    },
                    {
                        "name": "Accept-Encoding",
                        "value": "gzip, deflate"
                    },
                    {
                        "name": "Connection",
                        "value": "keep-alive"
                    }
                ]
            }
        },
        "response": {
            "status": 200,
            "sizes": {
                "headers": 127,
                "body": 69
            },
            "mimeType": "text/html",
            "charset": null,
            "contentEncoding": null,
            "header": {
                "firstLine": "HTTP/1.1 200 OK",
                "headers": [
                    {
                        "name": "Content-Length",
                        "value": "69"
                    },
                    {
                        "name": "Server",
                        "value": "Swifter 1.4.6"
                    },
                    {
                        "name": "Content-Type",
                        "value": "text/html"
                    },
                    {
                        "name": "Proxy-Connection",
                        "value": "keep-alive"
                    }
                ]
            }
        }
    }
]

As you can see the version of the server should reflect 1.4.6.

It was definitely the right branch I pulled from cocoapods. I saw the 1.3.3 as well.
pod 'Swifter', git: => '', branch: => "stable"

@sonic555gr Can you please set the following line  in your Podfile:
pod 'Swifter', :git => 'git@github.com:httpswift/swifter.git', :branch => 'stable'

Afterward, run pod update Swifter in your terminal and try again your issue
If the above steps don't work for you I going to need you to create a sample project reproducing your issue if that's possible.

@Vkt0r I will do it again, but this is what I'm doing. and That is the response I'm getting. I will enclose the entire session from charles and tomorrow do some debugging on my tests and try to get closer to the problem, maybe pull swifter and write some tests that replicated the problem.

Thanks, @sonic555gr That would be great, keep me posted!

Spend a bit of time on it. And found the issue. After adding "stable" as a development pod and trying to breakpoint my way through the problem I realised that the breakpoints weren't working. Derived data was somehow corrupted after updating the Swifter pod and while it kept working it was using some obscure version of the Swifter library (I don't even have 1.3.3 installed). I was flabbergasted to know that this can occur. There was no indication whatsoever that something was wrong and The results where random and inconsistent.
"Stable" branch seems to have the issue fixed. I will keep 1.4.5 as my stable version till you push 1.4.7. Thank you very much.

@sonic555gr Thanks for reporting your results. Glad to hear your problem is solved in the stable branch. We will be releasing a new version very soon 🚀 !


_print_valid_platforms() throws stack trace

When an invalid platform or provider are specified, an exception is raised which is then caught in core.py to print an error message and then prints valid platforms and providers. Those print methods require a valid instance of provisioners which isn't created if an exception is raised, so here we create it without the offending option to be used later.
Fixes #101

:+1:

:+1:


[Bug]: Jest tests in GitHub CI environment are flaky

Version
v28.1.1
Steps to reproduce
The code is in this repo: https://github.com/AndysonDK/syncbase
More specifically here is all the jest test code that I use in this repo:
https://github.com/AndysonDK/syncbase/tree/main/packages/server/src/resolvers/tests
And here is my jest configuration:
https://github.com/AndysonDK/syncbase/blob/68593e54e949cef7dfb1371c6ac94a0d60ece02b/packages/server/package.json#L55-L75
To test the flakiness submit a pull requesting making the jest test job run, observe that Jest may hang in GitHub CI (the flakiness)
Expected behavior
I want Jest to run in GitHub CI environment without this flakiness; if Jest fails in CI it should always fail in CI without any code changes, if it passes in CI, it should always pass in CI without any code changes
Actual behavior
Here you can observe the flakiness:
https://github.com/AndysonDK/syncbase/actions/runs/2453272922

As you can see the third attempt finally worked, but attempt 1 and 2 for some reason failed (I had to cancel them both since they were just hanging). All of those attempts had NO code changes between them
Additional context
Here is some extra environment information that Jest was running in. This may help with the issue:

Environment
Since this bug/flakiness only occurs in GitHub CI, please take a look at this configuration for the environment jest is running in:
https://github.com/actions/virtual-environments/blob/ubuntu20/20220529.1/images/linux/Ubuntu2004-Readme.md
And I'm using jest v28.1.1

We're also experiencing the same issue of Jest tests job hanging out forever, since we upgraded from Jest 26.1.0 to 28.1.1.

Hmm okay it seems like increasing the testTimeout kinda works:
"test:ci": "yarn test --ci --testTimeout=20000"


webicon updated

📋 Description

🔨 Changes Made
#17  I added a .png file which resonates the new webicon for the campx website

✅ Checklist
Before submitting the PR, please make sure you have completed the following:

[ ] My code follows the style guidelines of this project.
[ ] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation (if applicable).
[ ] My changes generate no new warnings.
[ ] I have tested it locally and it works fine.
[ ] Any dependent changes have been merged and published in downstream modules.

🏷 Types of Changes
What type of changes does your code introduce? (Check all that apply)

[ ] Bug fix (non-breaking change which fixes an issue) 🐛
[ ] New feature (non-breaking change which adds functionality) ✨
[ ] UI enhancement (non-breaking change which enhances UI) 🎨
[ ] Documentation update 📚

🤝 Related Issues

Fixes #

📸 Screenshots (if applicable)

Reminder:
Please ensure your pull request is made to the test branch, not main.
Thank you for contributing to VigneshDevHub! We look forward to reviewing your PR and getting it merged!

Thanks for Contributing!


Run backend and numerical tests in parallel on MacOS build

Signed-off-by: Gong Su<EMAIL_ADDRESS>

Jenkins Linux ppc64le Build #6055 [push] Run backend and numerica... started at 23:10

Jenkins Linux amd64 Build #6948 [push] Run backend and numerica... started at 22:10

Jenkins Linux s390x Build #6963 [push] Run backend and numerica... started at 23:10

Jenkins Linux amd64 Build #6948 [push] Run backend and numerica... failed after 42 min

Jenkins Linux ppc64le Build #6055 [push] Run backend and numerica... failed after 54 min

Jenkins Linux s390x Build #6963 [push] Run backend and numerica... failed after 1 hr 25 min


v0.0.1rc3

version bummp

Hey @MMathisLab , just finished adding anisotropy handling where requested and fixed a few errors in #17, if you'd like I can finish updating the docs then we can release as rc3 ?


Memory Leak

This code leaks memory (tested with Anaconda on Ubuntu & Windows)
from tornado.ioloop import IOLoop
from streamz.dataframe import Random

src = Random(freq='10ms', interval='50ms')
src.x.rolling(2).quantile(0.1).stream.sink(lambda x: x)
IOLoop.current().start()

I tried various rolling functions and lengths on both OSes monitoring the process memory consumption.
The leak is faster with longer windows.
Interestingly both of these do not leak on Linux, but on Windows:

src.x.rolling(2).std().stream.sink(lambda x: x)
src.x.stream.sink(lambda x: x)

CPU was below 10%, so I guess its not an overdue GC cycle. Memory consumption was >20GB after several hours when i killed the python process.
I tried to track it down with objgraph, but it did not output anything helpful (Im pretty new to python though).
Any thoughts on how to debug this?

Using meliae I created a memory dump and opened it with pyrasite-memory-viewer. It does not show any suspicous objects, total size stays at 22MB while process memory is at multiple GB.

Thanks for tracking this down.
On Wed, Jul 18, 2018 at 5:34 AM fl4p<EMAIL_ADDRESS>wrote:

It turns out to be a pandas issue, see pandas-dev/pandas#21965
https://github.com/pandas-dev/pandas/issues/21965
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mrocklin/streamz/issues/190#issuecomment-405871686,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AASszAiGZSoJIPzDMVLCnZBF3V6NNCi8ks5uHwEzgaJpZM4VTfhR
.


Projects/organizations that should map to multiple sub-categories?

Hi! Love the new landscape. One question I have as an OpenTelemetry maintainer is how our project should fit into the greater Observability category. We support metrics, tracing, and logging but are currently pigeonholed as a tracing project. Realistically, we should be in each of the monitoring, logging, and tracing categories (although I would perhaps categorize 'monitoring' as 'metrics'...)
There's also an associated issue here, which is for organizations that map to multiple categories. Datadog, for instance, would fall under monitoring/logging/tracing as well, etc.
While I'm not really advocating for a change in the taxonomy, it seems like there might be better categorization for this section in general? Perhaps 'Instrumentation/Telemetry', 'Storage', 'Analysis', etc.

Hi again!
We've added support for the second_path item field to landscape2. This field allows assigning multiple categories/subcategories to an item in landscape1. Please note that in the CNCF landscape this field is meant to be used only if the additional categories listed are in a different sub landscape (aka group in landscape2), like in the case of wasmCloud. In case of doubt, it's best to discuss it in the cncf/landscape repo 🙂
Will close this issue for now, please feel free to reopen if needed.
/cc @caniszczyk


Allow tags on parameters

In some cases it's helpful to tag parameters. For this example, it would be good to tag the full GET request, as the parameter is interesting and may suggest investigation.
bbrf urls -q |gf xss |bbrf url -q add - -t interestingparam:true
If you bbrf tags interestingparam you will see the endpoint without the parameter.

Hello - apologies for the delayed response. Can you explain in more detail what you're trying to do and why it doesn't work today? From what I can see, this command should work: bbrf url add - -t interestingparam:true.


"amplify push" - Connection timed out after 120000ms

Hi @kaustavghosh06 and @kimfucious
I'm facing the same issue right now... I did a bash script to build my Node.js lambda, once they were coded using Typescript I needed to do it. But when I run "amplify push -y" I'm always getting the error below:
Connection timed out after 120000ms
An error occurred during the push operation: Connection timed out after 120000ms

But the weird thing is that if I just update one resource like my API Gateway, so then I don't get any error, and it works fine!
Amplify CLI Version

Any help guys ?
Originally posted by @wellmmer in https://github.com/aws-amplify/amplify-cli/issues/5663#issuecomment-810598503

Sometimes the error is this one below...

@wellmmer This is an intermittent issue due to DNS/Network issue from mainly AWS S3 service but I agree we should catch these network issue in the CLI. We're tracking the work for this out here - #6930. Closing this as a dup.


Accessing the project context inside hooks implementations

Hi,
I'm a colleague of @Galileo-Galilei. We discussed the issue of accessing the project template and properties from a plugin. We raised the point in the kedro project
What will it solve :

No more Template assumptions. We will ask the kedro context where the template component resides (project_paths, conf_paths, src path, ...). That lead to less kedro updates regression, because we will no longer manage a template at our side.

No more configs loading logic assumptions. We will use the kedro context configLoader and get_crendentials (that can be overrided by user).

That solve : #64 #54 #30 #31 (User will use kedro credentials mechanisms, i'll put details in another issue) and a part of #62
How can we implement it (For now, i see three possibilities):

Calling a load_context inside before_pipeline_run hook and setting at the same time a global project_path variable, hoping that the before_pipeline_run hook is always the first hook that will be called in the futur. --> So hacky

Declaring the mlflow hooks as a project context property. Which means that the hooks can easily access to the current context --> No more auto registration

Waiting for the release of the kedro session. It will apparently allows access to the current context --> We don't know when will it land

Keep up the good work guys, I'm happy to join you :)

I suggest that we go with the first solution (call load_context in hook before_pipeline_run) which is completely invisible to the user and will solve this painful problem. We will plan to migrate to KedroSession once official. @takikadiri Can you take it?

I digged into the implementation details of the first solution, and I can tell you it's going to be very hacky.
The MlflowNodeHook also needs to access the context, but it doesn't have the data (project_path, env, extra_params) to create it. That's mean the MlflowNodeHook and some other hooks in the plugin expects the before_pipeline_run hook to create the context and storing it in a global variable or somewhere else, so they (other hooks) can access to it.
One of the many side effets of using global variable as storage, is that the order of the hooks list given by the user in his kedro project will matter. The before_pipeline_run has to be always the first on the list.
I suggest to go for the second solution, while having in mind the migration to the third one, as soon as the kedro 0.17.0 is released. The second solution look like this
Do you see another way to implement the first solution ?
I'll create a pull request for this.

I understand that the second solution is much cleaner than the first (mostly because the first create another context object for each node) but i don't why you need it to create a global variable for the first. I think that creating an attribute on the fly is enough for our use cases (see here):
def before_pipeline_run(
        self, run_params: Dict[str, Any], pipeline: Pipeline, catalog: DataCatalog
    ) -> None:
        """Hook to be invoked before a pipeline runs.

        Args:
            run_params: The params used to run the pipeline.
                Should be identical to the data logged by Journal with the following schema::

                   {
                     "run_id": str
                     "project_path": str,
                     "env": str,
                     "kedro_version": str,
                     "tags": Optional[List[str]],
                     "from_nodes": Optional[List[str]],
                     "to_nodes": Optional[List[str]],
                     "node_names": Optional[List[str]],
                     "from_inputs": Optional[List[str]],
                     "load_versions": Optional[List[str]],
                     "pipeline_name": str,
                     "extra_params": Optional[Dict[str, Any]]
                   }

            pipeline: The ``Pipeline`` that will be run.
            catalog: The ``DataCatalog`` to be used during the run.
        """
        self.context=load_context(run_params["project_path"])
        self.env=run_params["env"]
        self.extra_params=run_params["extra_params"]

The informations will be accessible later in the hook, especially:

Remove __init__ in MlflowNodeHook:
https://github.com/Galileo-Galilei/kedro-mlflow/blob/e0afaf44ed045fc3ef205d6065307d897670a428/kedro_mlflow/framework/hooks/node_hook.py#L11-L18
Load conf with the config loader at the beginning here:

https://github.com/Galileo-Galilei/kedro-mlflow/blob/e0afaf44ed045fc3ef205d6065307d897670a428/kedro_mlflow/framework/hooks/node_hook.py#L21-L40
something like:
config=kedroMlflowConfig.from_dict(self.context.config_loader("mlflow.yml"))
...

Do the same change here in MlflowPipelineHook

https://github.com/Galileo-Galilei/kedro-mlflow/blob/e0afaf44ed045fc3ef205d6065307d897670a428/kedro_mlflow/framework/hooks/pipeline_hook.py#L65-L67
And it should be ok. The reason for why I prefer solution 1 over solution 2 is that the first one is a non breaking change, while the second modifies the hooks arguments and consequently is a breaking change. Since none of them is the target solution, I think we can deal with it for a few months. Does it sounds good for you?


Add support for read-only rendering

It would be very useful to be able to render a form (or other similar HTML view) that was read-only. This would allow people to use this component to summarise the values of JSON data that was governed by a Concerto model.
Describe the solution you'd like
A new prop readOnly that could be set on the form component. When true all the fields in the form would read-only (i.e. labels or disabled input fields).

hi @dselman, I think for this I need to add readOnly property to both json component and form component because if you change the json component, form component also changes.

Is this resolved with #54 @mttrbrts @dselman?

Is this resolved with #54 @mttrbrts @dselman?

Yes


Realtime Async example not working in v0.1.10

First of all, thank you mobizt for building these libraries, they're unbelievably useful!
This is the first time I'm trying this new library and I'm having some issues. Yesterday I tried out an example on my laptop which worked great but today I couldnt get it working on my main PC, a few hours of debugging later it turns out the examples work on version 0.1.9 but not 0.1.10. Heres the code I was testing with:
#include <Arduino.h>
#include <WiFi.h>
#include <FirebaseClient.h>
#include <WiFiClientSecure.h>

#define WIFI_SSID ""
#define WIFI_PASSWORD ""

#define FB_PROJECT_ID ""
#define FB_RTDB_HOST ""
#define FB_API_KEY ""
#define FB_STORAGE_BUCKET_ID ""

#define USER_EMAIL ""
#define USER_PASSWORD ""

using AsyncClient = AsyncClientClass;

void asyncCB(AsyncResult &aResult);
void printResult(AsyncResult &aResult);

DefaultNetwork network; // initilize with boolean parameter to enable/disable network reconnection
UserAuth user_auth(FB_API_KEY, USER_EMAIL, USER_PASSWORD);
FirebaseApp app;
WiFiClientSecure ssl_client;

AsyncClient aClient(ssl_client, getNetwork(network));
RealtimeDatabase Database;
AsyncResult aResult_no_callback;

void setup()
{
    Serial.begin(115200);
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

    Serial.print("Connecting to Wi-Fi");
    unsigned long ms = millis();
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(300);
    }
    Serial.println();
    Serial.print("Connected with IP: ");
    Serial.println(WiFi.localIP());
    Serial.println();

    Serial.printf("Firebase Client v%s\n", FIREBASE_CLIENT_VERSION);
    Serial.println("Initializing app...");

    ssl_client.setInsecure();
    app.setCallback(asyncCB);
    initializeApp(aClient, app, getAuth(user_auth));

    // Waits for app to be authenticated.
    // For asynchronous operation, this blocking wait can be ignored by calling app.loop() in loop().
    ms = millis();
    while (app.isInitialized() && !app.ready() && millis() - ms < 120 * 1000)
        ;

    app.getApp<RealtimeDatabase>(Database);
    Database.url(FB_RTDB_HOST);

    Serial.println("Asynchronous Set... ");
    Database.set<int>(aClient, "/test/int", 12345, asyncCB);
    Database.set<bool>(aClient, "/test/bool", true, asyncCB);
    Database.set<String>(aClient, "/test/string", "hello", asyncCB);
    Database.set<object_t>(aClient, "/test/json", object_t("{\"data\":123}"), asyncCB);

    // Library does not provide JSON parser library, the following JSON writer class will be used with
    // object_t for simple demonstration.
    object_t json, obj1, obj2, obj3, obj4;
    JsonWriter writer;
    writer.create(obj1, "int/value", 9999);
    writer.create(obj2, "string/value", string_t("hello"));
    writer.create(obj3, "float/value", number_t(123.456, 2));
    writer.join(obj4, 3, obj1, obj2, obj3);
    writer.create(json, "node/list", obj4);
    // To print object_t
    Serial.println(json);
    Database.set<object_t>(aClient, "/test/json", json, asyncCB);

    object_t arr;
    arr.initArray(); // initialize to be used as array
    writer.join(arr, 4 /* no. of object_t (s) to join */, object_t("[12,34]"), object_t("[56,78]"), object_t(string_t("steve")), object_t(888));

    // Set array
    Database.set<object_t>(aClient, "/test/arr", arr, asyncCB);
    // Set float
    Database.set<number_t>(aClient, "/test/float", number_t(123.456, 2), asyncCB);
    // Set double
    Database.set<number_t>(aClient, "/test/double", number_t(1234.56789, 4), asyncCB);
    // To assign UID for async result
    // Database.set<number_t>(aClient, "/test/double", number_t(1234.56789, 4), asyncCB, "myUID");
    // To get anyc result without callback
    // Database.set<number_t>(aClient, "/test/double", number_t(1234.56789, 4), aResult_no_callback);
}

void loop()
{
    app.loop();
    Database.loop();
}

void asyncCB(AsyncResult &aResult)
{
    printResult(aResult);
}

void printResult(AsyncResult &aResult)
{
    if (aResult.appEvent().code() > 0)
    {
        Serial.printf("Event msg: %s, code: %d\n", aResult.appEvent().message().c_str(), aResult.appEvent().code());
    }

    if (aResult.isDebug())
    {
        Serial.printf("Debug msg: %s\n", aResult.debug().c_str());
    }

    if (aResult.isError())
    {
        Serial.printf("Error msg: %s, code: %d\n", aResult.error().message().c_str(), aResult.error().code());
    }

    if (aResult.available())
    {
        Serial.printf("payload: %s\n", aResult.c_str());
    }
}

platform.ini:
; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
lib_deps =
	https://github.com/mobizt/FirebaseClient.git
monitor_speed = 115200
build_flags = -DCORE_DEBUG_LEVEL=5
build_type = debug
monitor_filters = esp32_exception_decoder

Hopefully we can get this resolved soon. Once again thank you for the effort you put into this library!

Thanks for reporting this.
I will check and update soon.

The issue is now fixed in v0.1.11.

Thanks!


Optimize space mapProps function

The logic with space had multiple unnecessary function calls and duplicated logic. Since it's used a lot within the system, I removed the extra function calls to is() and reduced it's work.

Thanks for this! In light of the changes in #479, I suspect the mapProps function will be going away, so I'm closing this one out

No problem!


Docs: Fix landing page text using wrong palette

Description

Fixes regression from #8515 due to the wrong palette being used originally for the text.
Used a gray instead of text-secondary.
Now matches other sections of the landing page.
How Has This Been Tested?

visually
Types of changes

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

v6

v7 Before

v7 After

v7 After Light

Checklist

[X] The PR is submitted to the correct branch (dev).
[X] My code follows the code style of this project.
[ ] I've added relevant tests.

Its better yes but why change it from the current site? it still does not match.

@Garderoben Because the search bar uses that grey palette in the docs. Adding the search bar to the landing page used the default grey, so I copied it from the docs theme, not realizing that the text used the grey color instead of a text color.

@Garderoben
If you want I could at some point merge the landing page and doc palettes and unify them further in the backend.
Though really it's the appbar that's the problem. If we could isolate the styles to that it would solve it.

Its better yes but why change it from the current site? it still does not match.

@Garderoben Because the search bar uses that grey palette in the docs. Adding the search bar to the landing page used the default grey and thus looked totally out of place, so I copied it from the docs theme, not realizing that the text used the grey color instead of a text color.

@Garderoben If you want I could at some point merge the landing page and doc palettes and unify them further in the backend to fix issues like this and the text color in the search panel

The fact that DocsLayout and LandingLayout are separate is slowing me from adding a search hotkey and other features.
We can keep the nice white/dark contrasty text for the actual landing section and other details like that by scoping the CSS

Yeah i did not design the landing page to have this search bar in the first place, for me it breaks the design of what i did. It just does not look as good.
I don't like the search bar on the landing page but i know @henon probably loves it, we can keep it but i really want the rest of the colors to be the same as before. Docs and Landing page is separated for a reason.
Also the search bar looks bad on bigger monitors, i needs to have the max width set same as on the docs page. (360px)

@Garderoben Actually a search button would suffice on the landing page for users like me who visit the site just to look stuff up. Would that be a good compromise?

a search button would suffice on the landing page for users like me who visit the site just to look stuff up. Would that be a good compromise?

@henon It was originally a search button that opened a dialog. See live version. Added one extra step to getting to components, but now that I fixed the auto-focus it's not as bad. I prefer search bar but doesn't bother me to revert it.
If you two wanna let me know your immediate goals for the docs (and this PR) I'll probably work on it today or tomorrow.

I just checked, both Vuetify and MUI have a search button on their landing page. I'd say let's keep just the button, so it won't break Garderoben's carefully crafted design ;)

Vuetify and MUI

@henon They have a keyboard shortcut though. That's why I was hoping for #7268.
But again, with the auto-focus being fixed it's the same number of clicks anyway, so not really a problem to revert it. Also renders this PR obsolete.

So you got the flaky focus to work consistently?

That's why I was hoping for #7268.

If the author doesn't respond we can add Adornment RFs on our own.

So you got the flaky focus to work consistently?

@henon Seems to work for me on both dev.mudblazor and debug. desktop and mobile. I think it was me plus the person who worked on the focus styles. There is one quirk in which it doesn't trigger the default list but I think that's a core issue with autocomplete and I plan to look into that. Let me know if you run into any problems with it.

@Garderoben Actually a search button would suffice on the landing page for users like me who visit the site just to look stuff up. Would that be a good compromise?

a search button would suffice on the landing page for users like me who visit the site just to look stuff up. Would that be a good compromise?

@henon It was originally a search button that opened a dialog. See live version. Added one extra step to getting to components, but now that I fixed the auto-focus it's not as bad. I prefer search bar but doesn't bother me to revert it.
If you two wanna let me know your immediate goals for the docs (and this PR) I'll probably work on it today or tomorrow.

Sorry maybe i was not super clear, with this PR's color changes i'm happy with how it looks so we could keep the new searchbar even though i would prefer the old button but as you say the textfield needs to be auto focused when clicked i notice that its broken now?
What i meant was i would like no further color changes after this.

@Garderoben Just pushed a commit to make the search bar the same size as the docs one. Should be ready to merge if the rest of the page looks good.
Just so we're on the same page, there are some subtle differences between the two layouts:

Doesn't matter to me either way but I'm available if anyone decides they want the backends unified to solve those issues while keeping the actual landing page content visually the same.

This looks like a docs-only change.  You can add this to the Types of Changes section to tag it with docs
- [X] Documentation (fix or improvement to the website or code docs)


Add new "free casting" option for spells

A common pattern that has been used frequently in new content is spells being granted that can be cast once per rest for free at their base level and also cast using a player's spell slots. Currently this pattern is done in one of two ways:

Adding a limited uses to the spell, allowing the casting limit to be tracked. This has the disadvantage of requiring the player to uncheck "Consume Uses" every time they want to cast it using normal slots, or uncheck "Consume Slot" if they want to use the free use.
Creating two versions of the spell, in in "Innate Spellcasting" with the limited uses and one in normal spellcasting. This is more usable, but the player has to maintain those two copies and there is no mechanism within advancement to easily grant them both at the same time.

This can be resolved by add a checkbox indicating that the limited uses represent "Free Castings" of the spell. When this checkbox is checked and the spell is cast, the ability use dialog will have the ability to easily toggle between either casting at base level and using the free use or using a spell slot. If all the free castings are spent, then it will simply default to using a spell slot.
It should be possible for the spell configuration within ItemGrantAdvancement and ItemChoiceAdvancement to set this flag just like it sets limited uses so these spells can easily be given to players.

Leaning in with support, though I'd honestly be satisfied if it kept the same system as it does now, but, if there's available uses, check on Consume Available Uses and check other stuff (like Spell Slots) off by default. I just want to be able to conveniently use Uses for free-casting stuff before using other resources like Spell Slots or Sorcery Points.

Although in the above scenario it should be a radio button choice between consuming a slot or using your daily free casting.

Leaning in with support, though I'd honestly be satisfied if it kept the same system as it does now, but, if there's available uses, check on Consume Available Uses and check other stuff (like Spell Slots) off by default. I just want to be able to conveniently use Uses for free-casting stuff before using other resources like Spell Slots or Sorcery Points.

That would just cause the opposite problem for spells that have a limited use and consume a spell slot, such as some of the warlock invocations (Bewitching Whispers allows you to use a warlock spell slot once per long rest to cast "Compulsion", but you cannot cast it after that). A separate options will give support for both or spells and and spells.

Ideally they would change based on the spell requirements. But I understand your desire to keep things as simple as possible.

There's also some sorcerer abilities that let you cast spells with either Sorcery points or spell slots, would this approach allow for that as well? Or is that still better served with multiple items?

When you reach 3rd level in this class, you learn the darkness spell, which doesn't count against your number of sorcerer spells known. In addition, you can cast it by spending 2 sorcery points or by expending a spell slot. If you cast it with sorcery points, you can see through the darkness created by the spell.

I think in part the Darkness here for Shadow Sorcerer and the Shadow Monk stuff can be handled with just added a duplicated spell with a preset UUID consumption, but yea, those are more things to consider I geuss


Once again - finally Object vs String

Hey everyone,
first of all I want to thank you for the huge amount of effort you've put into this package. Looks very neat. I'm struggling with the data attributes of my model. Object type gets converted to String which results in an error. Or in other words: When I try to store an object that contain arrays dynamoose reads and writes it as string values instead of a map. Any explanation for it? I searched for this issue here already and found some discussion about it but no solution. So maybe we can finish this entire topic here and find a solution?

@bart When you first create an issue the first line says Not filling out ALL of the relevant fields in this issue will cause your issue to be closed.
I'm closing this issue. Please help us help you by following our process so that we don't waste time going back and forth about the important details regarding issues on GitHub.

But sometimes it just makes no sense. Just wanted to help. I'll use @aws/dynamodb-data-mapper which works as expected. Cheers


chore: sets correct link for the travis build status

Proposed changes

Types of changes

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Refactoring (improve a current implementation without adding a new feature or fixing a bug)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Build (changes that affect the build system)
[x] Docs (documentation only changes)
[ ] Test (adding missing tests or fixing existing tests)
[ ] Other... Please describe:

Checklist

[ ] I have read the CONTRIBUTING documentation
[ ] Lint and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

Codecov Report

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

@@          Coverage Diff          @@
##             master   #1   +/-   ##
=====================================
  Coverage         0%   0%
  Complexity        7    7
=====================================
  Files             4    4
  Lines            26   26
=====================================
  Misses           26   26

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 8de59fe...c54c525. Read the comment docs.


Move OrderSettings to Channel type

What I'm trying to achieve
I would like to move OrderSettings from Query and place them inside a Channel type. Same way as we have stockSettings inside Channel. The proposed approach will allow us to configure order settings per channel.
Describe a proposed solution
Channel
Channel type will have a new field:
"""Represents channel."""
type Channel implements Node {
  id: ID!
  ...
 """
  Define the stock setting for this channel.

  Added in Saleor 3.7.

  Note: this API is currently in Feature Preview and can be subject to changes at later point.

  Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
  """
  stockSettings: StockSettings!
  """MANAGE_ORDERS or MANAGE_CHANNELS"""
  orderSettings: OrderSettings!
}

Permission MANAGE_ORDERS or MANAGE_CHANNELS will be required to fetch orderSettings
The channelCreate and channelUpdate mutations will get new input fields:
input OrderSettingsInput {
  """
  When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately.
  """
  automaticallyConfirmAllNewOrders: Boolean

  """
  When enabled, all non-shippable gift card orders will be fulfilled automatically.
  """
  automaticallyFulfillNonShippableGiftCard: Boolean
}

input ChannelUpdateInput {
  """
  The channel stock settings.

  Added in Saleor 3.7.

  Note: this API is currently in Feature Preview and can be subject to changes at later point.
  """
  stockSettings: StockSettingsInput
  ...

  orderSettings: OrderSettingsInput

Permission MANAGE_ORDERS or MANAGE_CHANNELS will be required to update orderSettings.
input ChannelCreateInput {
  """
  The channel stock settings.

  Added in Saleor 3.7.

  Note: this API is currently in Feature Preview and can be subject to changes at later point.
  """
  stockSettings: StockSettingsInput
  ...
  orderSettings: OrderSettingsInput

OrderSettings
The OrderSettings type already exists:
type OrderSettings {
  automaticallyConfirmAllNewOrders: Boolean!
  automaticallyFulfillNonShippableGiftCard: Boolean!
}

Mutation orderSettingsUpdate will be deprecated:
  """
  Update shop order settings.

  Requires one of the following permissions: MANAGE_ORDERS.
  """
  orderSettingsUpdate(
    """Fields required to update shop order settings."""
    input: OrderSettingsUpdateInput!
  ): OrderSettingsUpdate

The description will suggest using channelUpdate mutation to update orderSettings.
In case of calling deprecated OrderSettingsUpdate mutation, records for all channels will be updated.
The query orderSettings will be deprecated:
orderSettings: OrderSettings

The query will return results for first channel in alphabetical order.
In the case of using the deprecated mutation orderSettingsUpdate and deprecated query orderSettings the returned data will always be correct.
Other solutions I've tried and won't work
I was also thinking about extending a Shop type, but Channel sounds better, as we already have there a stockSettings.

LGTM 🎉


metric tags, to be able to track which domains where failing during t…

…he LetsEncrypt domain validation

Coverage remained the same at 60.046% when pulling adabe18c905cb4a9fe4a44f3a9e710e07cdf63d4 on hosseinsh:better-error-handling-dyn into 5c1bc72af895297c9fb30b44002903dd90b0e16a on Netflix:master.


Documentation for Contributing is Missing

The "How to contribute" link at the bottom of the contributing.md, links to a page that has either been removed or hasn't been created yet

Contributing Fixes
If you are interested in fixing issues and contributing directly to the code base, please see the document How to Contribute.

Thanks for your report.  We are working on a documentation scrub right now for 1.0 and we will address this gap.  If you've having trouble building or running DevSkim you can use this thread to ask questions. #150

Created the initial page for contributions in the wiki. More updates to come as the documentation refresh is completed.


same-as should be a built in property

To more explicitly support merging and resouces having multiple identities introduce '_sameas'.
This is less about the name but more about what semantics are ascribed to it. At some level it just means that the representation being viewed is composed of these other representations, that these subjects are in fact all the same, and that any one of these values can be used to retrieve a single resource.

Added "_sids" property.


parsing error for immediate-mode (backquote) expressions containing quoted equals ("=")

Reported by andrew wittenberg on 19 Sep 2009 21:42 UTC
Apparently immediate-mode (backquotes) thinks any "=" inside a quoted string indicates an immediate-mode option, when it should just interpret the string as a string.
        NOAA/PMEL TMAP
        FERRET v6.203
        Linux(g77) 2.4.21-32 - 06/26/09
        19-Sep-09 17:39

yes? say `"+" EQ " "`
 !-> MESSAGE/CONTINUE 0
0
yes? say `"=" EQ " "`
 **ERROR: command syntax: options: "P=prec","B=bad","W=width","ZW=zero-width" or "R=return-item"
          MESSAGE/CONTINUE `"=" EQ " "`

Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/1690

Comment by andrew.wittenberg on 19 Sep 2009 21:43 UTC
Of course, a workaround is use LET to define a variable first, and then evaluate that variable with the backquotes.

Comment by andrew.wittenberg on 10 Mar 2010 17:25 UTC
#1690 closed as a duplicate of #1469.


Subtitles

I like your program is very fast, but I see a problem does not rename the subtitles .srt, .ssa, .ass. There would be a way for you to include in future versions that renames the subtitles as well? otherwise excellent your work.

Glad you like it.
I have not thought about external subtitles so far, will look into it once I find some time.
In the meantime you can use this workaround:

Change the included file types setting to match the file extension of your subtitles
Open and rename your subtitles as if they were video files

Glad you like it.
I have not thought about external subtitles so far, will look into it once I find some time.
In the meantime you can use this workaround:

Change the included file types setting to match the file extension of your subtitles
Open and rename your subtitles as if they were video files

Thanks @andreaswilli


Minor clarification to the 'Calling a CDS Service' section (fixes #304)

Fixes #304

@brettmarquard - I like your first suggestion; I'll go with that!

@brettmarquard - After looking at this some more I blended your second suggestion along with a few tweaks of my own. Can you let me know if this wording is to your liking?


Is there any option for displaying custom tool-tip for whole row on mouse-over?

Hi,
i'm trying to display tool-tip over the slickGrid row, for that i made one div and displaying it on 'onMouseEnter'. But problem with positioning because tool-tip is overflowing the screen, so result giving horizontal scroll which is not nice to see the page.
So, is there any other way to do achieve this?
Thanks,
Malli.

my repo has an example for built in and jQueryUI tooltips. You can probably adapt that fairly easily,


feat(style): use Microsoft YaHei font-family

like #30 said

Codecov Report

Merging #48 into dev will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev      #48   +/-   ##
=======================================
  Coverage   76.15%   76.15%
=======================================
  Files         177      177
  Lines        4677     4677
  Branches       96       96
=======================================
  Hits         3562     3562
  Misses       1035     1035
  Partials       80       80

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 ddd5b0e...1798d34. Read the comment docs.

close #30


Initial actions PR

Per @yzguy's issue https://github.com/github/octodns/issues/425

This looks good and seems to pass. Will rm the travis bits and merge one reviewed.

Fixes https://github.com/github/octodns/issues/425


AssertionError when building element with workspace after clearing cache

See original issue on GitLab
In GitLab by [Gitlab user @TheRealMichaelCatanzaro] on May 1, 2018, 19:40
After deleting my ~/.cache/buildstream, I hit this assertion error when building glib-networking (for which I have an open workspace). BuildStream should be robust to this situation:
[00:00:02][????????][build:core/glib-networking.bst      ] BUG     Build

    An unhandled exception occured:

    Traceback (most recent call last):
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/_scheduler/job.py", line 320, in _child_action
        result = self._action_cb(element)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/_scheduler/buildqueue.py", line 34, in process
        element._assemble()
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 1409, in _assemble
        self.stage(sandbox)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/buildelement.py", line 165, in stage
        self.stage_dependency_artifacts(sandbox, Scope.BUILD)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 666, in stage_dependency_artifacts
        old_dep_keys = self.__get_artifact_metadata_dependencies(workspace.last_successful)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 2350, in __get_artifact_metadata_dependencies
        artifact_base, key = self.__extract(key)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 2302, in __extract
        return (self.__artifacts.extract(self, key), key)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/_artifactcache/ostreecache.py", line 105, in extract
        assert rev, "Artifact missing for {}".format(ref)
    AssertionError: Artifact missing for gnome/core-glib-networking/851a17f63e24689c382960ffd56c3efb872e7e97c6533836bd5d4abbe02aba40

In GitLab by [Gitlab user @juergbi] on May 3, 2018, 18:51
This is a regression from incremental workspace build support.

In GitLab by [Gitlab user @TheRealMichaelCatanzaro] on May 3, 2018, 19:38
More regressions:

If the build directory does not exist, BuildStream does not create it
If the build directory exists but does not contain ninja.build, BuildStream does not create it

In GitLab by [Gitlab user @TheRealMichaelCatanzaro] on May 12, 2018, 19:19
Anyway, the expected behavior here should be to just try building again if the artifact is missing from the artifact cache. Create the build directory, if needed, and rerun CMake.

In GitLab by [Gitlab user @TheRealMichaelCatanzaro] on May 16, 2018, 16:28

More regressions:

If the build directory does not exist, BuildStream does not create it

If the build directory exists but does not contain ninja.build, BuildStream does not create it

I reported #399 for this.

In GitLab by [Gitlab user @TheRealMichaelCatanzaro] on May 22, 2018, 00:01
Looks related:
[--:--:--][????????][build:core/epiphany.bst             ] START   Staging dependencies
[00:00:14][????????][build:core/epiphany.bst             ] BUG     Build

    An unhandled exception occured:

    Traceback (most recent call last):
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/_scheduler/job.py", line 320, in _child_action
        result = self._action_cb(element)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/_scheduler/buildqueue.py", line 34, in process
        element._assemble()
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 1442, in _assemble
        self.stage(sandbox)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/buildelement.py", line 165, in stage
        self.stage_dependency_artifacts(sandbox, Scope.BUILD)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 712, in stage_dependency_artifacts
        update_mtimes=to_update)
      File "/home/mcatanzaro/.local/lib/python3.6/site-packages/buildstream/element.py", line 646, in stage_artifact
        os.utime(os.path.join(stagedir, f), times=(cur_time, cur_time))
    FileNotFoundError: [Errno 2] No such file or directory

In GitLab by [Gitlab user @juergbi] on Sep 24, 2018, 17:40
Duplicate of #357?

Duplicate of #357


offset out of bounds (offset=1000, max_matches=1000) Error

For some strange reason I'm getting the following offset out of bounds error when sphinx is loading additional results:
ruby "SELECT  FROM `clip_core` WHERE MATCH('drama') AND `sphinx_deleted` = 0 ORDER BY `id` desc LIMIT 1000, 1000; SHOW META" after error: offset out of bounds (offset=1000, max_matches=1000) - SELECT  FROM `clip_core` WHERE MATCH('drama') AND `sphinx_deleted` = 0 ORDER BY `id` desc LIMIT 1000, 1000; SHOW META
Initially it worked fine but I suppose as more data was added to the DB and more users began to search through various pages of data, we hit the limit. We've upped the max_matches to 200k in the sphinx.conf file, and whilst this seems to help the second page of data STILL isn't loading.
Any help here would be awesome!!

Sorry we fixed it, we have paginated the results twice which caused the second issue!


Add support to https://areena.yle.fi/podcastit (please)

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting a new site support request
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that none of provided URLs violate any copyrights or contain any DRM to the best of my knowledge
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and am willing to share it if required

Region
Finland
Example URLs

Single audio: https://areena.yle.fi/podcastit/1-71022852
Playlist: https://areena.yle.fi/podcastit/1-71022727

Provide a description that is worded well enough to be understood
I can't download audio using command:
yt-dlp -x https://areena.yle.fi/podcastit/1-71022852 --audio-format mp3
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', 'https://areena.yle.fi/podcastit/1-71022856']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [4d9231208] (pip)
[debug] Python 3.10.13 (CPython arm64 64bit) - macOS-14.4.1-arm64-arm-64bit (OpenSSL 3.3.1 4 Jun 2024)
[debug] exe versions: ffmpeg 7.0.1 (setts), ffprobe 7.0.1
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.02.02, mutagen-1.47.0, requests-2.32.3, sqlite3-3.43.2, urllib3-2.2.1, websockets-13.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1830 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp)
[generic] Extracting URL: https://areena.yle.fi/podcastit/1-71022856
[generic] 1-71022856: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] 1-71022856: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://areena.yle.fi/podcastit/1-71022856
Traceback (most recent call last):
  File "/Users/ttt1/.pyenv/versions/3.10.13/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py", line 1626, in wrapper
    return func(self, *args, **kwargs)
  File "/Users/ttt1/.pyenv/versions/3.10.13/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py", line 1761, in __extract_info
    ie_result = ie.extract(url)
  File "/Users/ttt1/.pyenv/versions/3.10.13/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 740, in extract
    ie_result = self._real_extract(url)
  File "/Users/ttt1/.pyenv/versions/3.10.13/lib/python3.10/site-packages/yt_dlp/extractor/generic.py", line 2526, in _real_extract
    raise UnsupportedError(url)
yt_dlp.utils.UnsupportedError: Unsupported URL: https://areena.yle.fi/podcastit/1-71022856

Looks like it would be fairly simple to add support:
diff --git a/yt_dlp/extractor/yle_areena.py b/yt_dlp/extractor/yle_areena.py
index ef9e96804..c0a218e2f 100644
--- a/yt_dlp/extractor/yle_areena.py
+++ b/yt_dlp/extractor/yle_areena.py
@@ -10,7 +10,7 @@

 class YleAreenaIE(InfoExtractor):
-    _VALID_URL = r'https?://areena\.yle\.fi/(?P<id>[\d-]+)'
+    _VALID_URL = r'https?://areena\.yle\.fi/(?P<podcast>podcastit/)?(?P<id>[\d-]+)'
     _GEO_COUNTRIES = ['FI']
     _TESTS = [
         {
@@ -77,7 +77,7 @@ class YleAreenaIE(InfoExtractor):
     ]

     def _real_extract(self, url):
-        video_id = self._match_id(url)
+        video_id, is_podcast = self._match_valid_url(url).group('id', 'podcast')
         info = self._search_json_ld(self._download_webpage(url, video_id), video_id, default={})
         video_data = self._download_json(
             f'https://player.api.yle.fi/v1/preview/{video_id}.json?app_id=player_static_prod&app_key=8930d72170e48303cf5f3867780d549b',
@@ -103,8 +103,11 @@ def _real_extract(self, url):
                     'name': sub.get('kind'),
                 })

-        kaltura_id = traverse_obj(video_data, ('data', 'ongoing_ondemand', 'kaltura', 'id'), expected_type=str)
-        if kaltura_id:
+        if is_podcast:
+            info_dict = {
+                'url': video_data['data']['ongoing_ondemand']['media_url'],
+            }
+        elif kaltura_id := traverse_obj(video_data, ('data', 'ongoing_ondemand', 'kaltura', 'id', {str})):
             info_dict = {
                 '_type': 'url_transparent',
                 'url': smuggle_url(f'kaltura:1955031:{kaltura_id}', {'source_url': url}),
@@ -114,13 +117,11 @@ def _real_extract(self, url):
             formats, subs = self._extract_m3u8_formats_and_subtitles(
                 video_data['data']['ongoing_ondemand']['manifest_url'], video_id, 'mp4', m3u8_id='hls')
             self._merge_subtitles(subs, target=subtitles)
-            info_dict = {
-                'id': video_id,
-                'formats': formats,
-            }
+            info_dict = {'formats': formats}

         return {
             **info_dict,
+            'id': video_id,
             'title': (traverse_obj(video_data, ('data', 'ongoing_ondemand', 'title', 'fin'), expected_type=str)
                       or episode or info.get('title')),
             'description': description,

though we might want to investigate if podcasts ever have a manifest_url, or if media_url is ever relevant to non-podcasts


Add Ethfinex Nectar token

Etherscan: https://etherscan.io/token/0xcc80c051057b774cd75067dc48f8987c4eb97a5e
Project website: https://ethfinex.com
Twitter: https://twitter.com/ethfinex
Facebook: https://www.facebook.com/ethfinex
Reddit: https://www.reddit.com/r/ethfinextelegram
Telegram: https://t.me/CryptoComOfficial
Github: https://github.com/ethfinex

@estebanmino apologies, done

Hi @plutoegg, there is no many activity on the network. I would recommend you to check out our watchAsset  feature to get users to track you token. Let me know your thoughts!


enlightened award

threshold for standing still + higher than everyone elses. possibly more stats for depth

Implemented new stat timeStillPreTP, all that's left is to compare values at the end of a run (assuming no extra stats).

Done for standing still threshold, can open new issue if specific ideas for more stats arise


[Question] Can I use the same CosmosDB or Table Storage account to store data pertaining to multiple bots?

Assuming that I have a company that wants several chatbots, does it make sense to use a single CosmosDB database or a single Azure Table Storage to store state data of multiple chatbots? Is this approach reasonable or should I have a database for each chatbot?

You can do it either way.  Many people have multiple instances of their data store and many people use the same data store.  Records are stored with bot Id, user Id, and conversation Id as the key. so it is completely up to you.  The only piece that may lean you one way or another would be how much traffic your bot(s) will be getting with respect to the performance of your data store.  Hope this helps

@JasonSowers Thank you for the information!

How to connect the Cosmos DB to Bot and fetch answers ?


error: 'struct file_config_data' has no member named 'cb'

Hello, I am currently using the deprecated firebaseEsp32.h library and wanna migrate into this new library, I tried running the update example found at (examples/RealtimeDatabase/Async/Callback/Update/Update.ino) and I got the following error:
Note: My Arduino IDE was installed in my one-drive folder so I moved the folder to a different directory and reinstalled the esp32 board and platform core, that did not solve the error, I even deleted Arduino IDE completely and reinstalled it in the following location ("C:\Users\username\AppData\Local\Programs\Arduino IDE")
error message:
In file included from c:\Users\abdus\Desktop\Arduino\libraries\FirebaseClient\src/FirebaseClient.h:67,
from C:\Users\abdus\AppData\Local\Temp.arduinoIDE-unsaved2024629-15584-1kpaijc.fjto\sketch_jul29a\sketch_jul29a.ino:34:
c:\Users\abdus\Desktop\Arduino\libraries\FirebaseClient\src/cloud_storage/CloudStorage.h: In member function 'void CloudStorage::sendRequest(AsyncClientClass&, AsyncResult*, AsyncResultCallback, const String&, const GoogleCloudStorage::Parent&, file_config_data*, const GoogleCloudStorage::BaseOptions*, GoogleCloudStorage::uploadOptions*, const GoogleCloudStorage::ListOptions*, GoogleCloudStorage::google_cloud_storage_request_type, bool)':
c:\Users\abdus\Desktop\Arduino\libraries\FirebaseClient\src/cloud_storage/CloudStorage.h:470:31: error: 'struct file_config_data' has no member named 'cb'
470 |             if (file && file->cb && file->filename.length())
|                               ^~
exit status 1
Compilation error: exit status 1

You should read this statement before posing the issue.
This library was intensively test before release using CI to check the compilation error.
For your case, your library installation is not complete.
Please remove library and re-install library.

Note: My Arduino IDE was installed in my one-drive folder so I moved the folder to a different directory and reinstalled the esp32 board and platform core, that did not solve the error, I even deleted Arduino IDE completely and reinstalled it in the following location ("C:\Users\username\AppData\Local\Programs\Arduino IDE")

Didn't you know that you cannot install Arduino IDE and Arduino library in Microsoft's OneDrive folder?
Microsoft's OneDrive folder is the sandbox or virtual folder that the real path is not what you have seen.


That said, I got kinda lazy, and these things have to be addressed:

I didn't cut out unlit layers for them, even though they would benefit greatly from them.
I didn't port any outside of the ones I would see immediate use for in Slatern.
They all use the wrong maintenance panel sprite. Right now it's a stock one, whereas Bay's vending machines have unique maintenance panel sprites.

Also of note is that I cut out multi-directional variants of the sprites so they're purely front facing.

Pretty sure this is fixed by #1549 , closing.


[1.0.0/pufferd] Versioning

I propose the PufferPanel rewrite follow the Semantic Versioning (http://semver.org/) style for versioning to add better compatibility, add support for a future auto-updater, and generally make the setup less confusing. Now is the perfect time to start, seeing as it's a major release (fully breaking) and any subsequent update would be minor or bug fixing.

Hey,
Pretty sure that was already the plan.

Always good to make it an issue so no one forgets it. I’d like to implement an automatic updater (think a nice banner telling you there’s an update and a button that can guide you through the process of database updates) but if bug fixes required database changes and the updater didn’t take that into account… better to stress SemVer than accidentally forget.

We are focusing on this, because 0.8 should not have happened the way it did. It was a very poor decision by the main dev to do it that way, and it is why we are starting from 1.0.0 now.

Closing since this is a non-issue and was already planned.


vfredsum should grant more implementation flexibility

The current draft says: "Each operator can either perform an exact addition, or a floating-point addition according to the RISC-V IEEE scalar floating-point specification and with the currently active floating-point dynamic rounding mode."
@jhauser-us points out that "Implementations would have much more flexibility if we allowed each operator to return not just one of those two results (exact or IEEE-rounded) but also any real number in between."
I'm inclined to agree.  This proposal does not reduce the accuracy of the instruction, and it allows the implementation to play more tricks.  I've reasoned that the difficulty of testing these instructions would not be materially increased, because the current definition basically mandates that any testing strategy either compute the error bounds and admit a range of real numbers, or must use inputs for which any partial sum is exact.  In either case, this proposal doesn't exacerbate the testing effort.

On second thought, I believe we need a different version than I first suggested.  Among the many other possible implementations of VFREDSUM, I believe we should want to allow one that performs an ordinary floating-point summation tree in wider precision, e.g. summing single-precision values in double-precision, before rounding the final result back to single-precision.  Neither the current draft text nor my original suggestion above allows this.  (Although my original suggestion provides a lot of freedom, it doesn't permit a higher-precision rounding to go in the opposite direction, up versus down, than would occur when rounding at the nominal precision, a situation that occurs quite easily when the rounding mode is to-nearest.)
I now propose to replace this sentence in the draft:

Each operator can either perform an exact addition, or a floating-point addition according to the RISC-V IEEE scalar floating-point specification and with the currently active floating-point dynamic rounding mode.

With this (or equivalent text):

Each operator first computes an exact sum as a RISC-V scalar floating-point addition with infinite exponent range and precision, then converts (rounds) this exact sum to a floating-point format with range and precision each at least as great as the element floating-point format indicated by SEW.  A different floating-point range and precision may be chosen for the result of each operator.

And replace this sentence:

The root node in the tree must produce an IEEE result of the appropriate SEW.

with

The rounded result from the root node in the tree is converted (rounded again) to the standard floating-point format indicated by SEW.

With this, I'm proposing to explicitly allow a double rounding of the final result.  In order for a simple double-precision summation tree to be valid for summing single-precision, the double rounding has to be accepted.  It's useful also for other possible implementations, and adds almost nothing to the worst-case error, especially when summing more than a couple of elements.
With my proposed new text, it's no longer necessary to explicitly allow exact addition for the summation operators, because you get exact addition simply by making the floating-point range and precision of an operator result sufficiently large.

This further relaxation seems beneficial to me, since it allows the reuse of a DP reduction tree on systems that want to optimize primarily for DP.
And once again, I don't think this relaxation makes portable testing of these instructions any harder than it already is.

Can you prepare a PR?


Adding for Noun's student

Noun is an open university in Nigeria. With domain name noun.edu.ng

@hemhemoh I am sorry, the domain noun.edu.ng is removed from our trusted domains list because it was abused in the past. If you are the student of this school, please enroll to GitHub Student Developer Program. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).


re-fix #151

After #156, fix_self_references! replaces original self-referencing
Symbol with the un-canonicalized version of it, so that JET never uses
Module object in CodeInfo level.
That's especially because Module object is prohibited in module usage
expressions.
It turns out that the replaced Symbol can be something like
var"Main.##JETVirtualModule##", and then abstract interpretation will
report false errors, just because it's not a valid global-ref.
This PR fixes it by only using symbolic replacements in module usages,
and keep to use Module object in other parts.

Codecov Report

Merging #159 (8bc89d8) into master (b05a4b1) will increase coverage by 0.30%.
The diff coverage is 98.07%.

@@            Coverage Diff             @@
##           master     #159      +/-   ##
==========================================
+ Coverage   80.59%   80.90%   +0.30%
==========================================
  Files          11       11
  Lines        1314     1330      +16
==========================================
+ Hits         1059     1076      +17
+ Misses        255      254       -1

Impacted Files
Coverage Δ

src/virtualprocess.jl
97.85% <98.00%> (+0.55%)
:arrow_up:

src/JET.jl
65.67% <100.00%> (-0.84%)
:arrow_down:

Continue to review full report at Codecov.

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


Bump up the MIOpen version to 2.14 (after cutting the rocm-rel-4.4 branch)

Bump up the MIOpen version to 2.14 (after cutting the rocm-rel-4.4 branch)

Practice as completely mimic previous bumps #984


I'm disabling the flaky test test_argo_serve_abort_when_server_start_failed

WHY are these changes introduced?
A Ruby test failed as part of a PR that didn't modify any Ruby code.
WHAT is this pull request doing?
I'm disabling the test. I'll refrain from creating an issue to fix it because it's logic that we no longer use in the CLI 3 so it doesn't make sense investing in fixing it.
How to test your changes?
CI should be green.
Measuring impact
How do we know this change was effective? Please choose one:

[x] n/a - this doesn't need measurement, e.g. a linting rule or a bug-fix
[ ] Existing analytics will cater for this addition
[ ] PR includes analytics changes to measure impact

Checklist

[ ] I've considered possible cross-platform impacts (Mac, Linux, Windows)
[ ] I've considered possible documentation changes
[ ] I've made sure that any changes to dev or deploy have been reflected in the internal flowchart.

mm this doesn't seem to be the test that failed :D I think you want
  test_populate_if_no_shop                                        FAIL (0.03s)


add organisation question to EQ+D questions

Adds organisation question to beginning of equality and diversity question journey.

There's a failing test in - src/pages/submissions/[submissionId]/equality-and-diversity/[grantBeneficiaryId]/organisation.page.test.tsx


All DateTime properties are clearly marked as UTC

Addresses #1262.
I went through all our public DateTime properties and made sure that the documentation comments clearly state that the properties are in UTC.
In the case where a property can be set by a user, the comment states that it "should" be UTC, whereas if it's set by our library the comment states that it's "always" in UTC.
Some of the properties have setters that convert DateTimes to UTC, so I added a different comment for these that explains this behavior.

Documentation page for DateTime usage has been added here:
https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/wiki/How-are-DateTime-values-treated%3F

/azp run


Typo in readme

elasticsearch_indices_indexing_index_time_seconds_total
counter
1
Total index calls

elasticsearch_indices_indexing_index_total
counter
1
Cumulative index time in seconds

I believe it should be vice-versa

you're right. Thanks!


Lorempixel.com is down

The image generator generates random images correctly, but lorempixel.com has been down for a few days now.
http://lorempixel.com/
Is it possible to pull images from another source?

for quick solution, I have edited the file in my vendor vendor/fzaninotto/faker/src/Faker/Provider/Image.php, line 33 -34
something like:
 $baseUrl = "https://placeimg.com/";
 $url = "{$width}/{$height}/any";

and just width and height would work.

there is a discussion on another package that uses lorempixel about alternatives
here is the link


[5.0] Add whereNot & whereNotLoose to Collection

We can improve this function to accept array as parameter.

I really don't like this whereNotLoose stuff. Just feels meh.

@taylorotwell I'm still hoping for this one day :stuck_out_tongue:

@JosephSilber I hope too, this is very useful.


avoid wifi denials

01-04 20:57:06.329  1847  1847 I ueventd : type=1400 audit(0.0:199): avc: denied { read } for name=wlan_mac.bin dev=sda73 ino=784934 scontext=u:r:ueventd:s0 tcontext=u:object_r:vendor_data_file:s0 tclass=file permissive=1
01-04 20:57:06.329  1847  1847 I ueventd : type=1400 audit(0.0:200): avc: denied { open } for path=/data/vendor/wifi/wlan_mac.bin dev=sda73 ino=784934 scontext=u:r:ueventd:s0 tcontext=u:object_r:vendor_data_file:s0 tclass=file permissive=1
01-04 20:57:06.329  1847  1847 I ueventd : type=1400 audit(0.0:201): avc: denied { getattr } for path=/data/vendor/wifi/wlan_mac.bin dev=sda73 ino=784934 scontext=u:r:ueventd:s0 tcontext=u:object_r:vendor_data_file:s0 tclass=file permissive=1
01-04 22:49:10.749   844   844 I cnss-daemon: type=1400 audit(0.0:195): avc: denied { search } for name="wifi" dev="sda73" ino=784902 scontext=u:r:wcnss_service:s0 tcontext=u:object_r:wifi_vendor_data_file:s0 tclass=dir permissive=1
01-04 22:49:30.709  1774  1774 I wpa_supplicant: type=1400 audit(0.0:197): avc: denied { search } for name="wifi" dev="sda73" ino=784902 scontext=u:r:hal_wifi_supplicant_default:s0 tcontext=u:object_r:wifi_vendor_data_file:s0 tclass=dir permissive=1
Following CAF LA.UM.7.3.r1-06600-sdm845.0
Signed-off-by: David Viteri<EMAIL_ADDRESS>

Since you have a device running wcnss, can you check whether it accesses hostapd_data_file and wpa_data_file?
I granted those in 3b87ba2d because I was getting rid of wifi_vendor_data_file to instead use AOSP labels but had no way of checking if they're actually used.

No hostapd or wpa denials here it was only trying to search for wlan.bin under data/vendor/wifi ...

@jerpelea I will update this PR later when at home

rebased

@alviteri Can you please check if https://github.com/sonyxperiadev/device-sony-sepolicy/pull/439 is correct then? Thanks!

exactly I am using akari with aosp as second dd device and when in tethering it never access or use data/vendor/wifi/hostapd .... even hostapd folder doesn't exist ... selinux wants wlan_mac.bin


SQL syntax?

Question about pandera
How to specify in SQL syntax here, for example:
salary DECIMAL(28,8)

hi @miriam-z can you provide a more context on what you're trying to achieve? Currently pandera doesn't support validating SQL tables

@miriam-z I'm not very familiar with the pycountry package, so I'm not entirely certain what each value in the Currency and Country looks like. It would help to (a) show a minimally reproducible code example of what a sample dataframe looks like that you're trying to validate, along with a high-level description of your use case.
To use custom data types, two approaches I can currently think of are:

Build a custom data type with Pandera Data Types
Use the object data type and register a custom check using the extension API and an associated strategy.

How to generate test fake data to pass or fail the schema?

Since you also want to generate synthetic data, I'd recommend approach (2), @jeffzi let me know if you have other ideas. The new pandera type system doesn't currently support custom strategies, though we might want to look into how to support that.
Once you have a minimally repro. example in this thread we can help you out with a more concrete code implementation.

How to convert schema into Dataframe and append additional Columns to either side of the original Dataframe?

To clarify, pandera allows users to specify the Type of a dataframe, it's not the DataFrame object itself. If you want to modify the DataFrameSchema. I'm assuming from your question that column order matters, since you want to insert columns at the beginning of the schema?
Currently pandera only supports adding columns to the end with add_columns.
I'd be open to an insert_columns method, though this would have to be a community-contributed feature, let me know if this is something you'd be willing to contribute @miriam-z !
As a workaround, you could do something like:
original_schema = pa.DataFrameSchema({
    "col": pa.Column()
})

new_schema = pa.DataFrameSchema({
    "new_col_at_beginning": pa.Column(),
    **original_schema.columns,
    "new_col_at_end": pa.Column(),
})

The first argument of pandera.Column must be a data type compatible with pandas, which is not the case for pycountry objects. As @cosmicBboy said, you could use the pandas object type to store pycountry objects in a DataFrame (option 2.). However, if your objective is to export to csv, I'd convert those objects to a string or integer depending on the attribute (name, code, etc.) you're interested in. It will also be much easier to handle a simple type with standard pandas functions.
Here is an example where I check against currency codes listed in Currency.alpha_3, using built-in checks. Note that you just need to call .example() to generate a dataframe that satisfies the schema.
import pandera as pa
import pycountry

schema = pa.DataFrameSchema(
    {
        "USD Currency": pa.Column(
            str,
            checks=pa.checks.Check.eq(
                pycountry.currencies.lookup("usd").alpha_3
            ),
            required=True,
        ),
        "Local Currency": pa.Column(
            str,
            checks=pa.checks.Check.isin(
                [currency.alpha_3 for currency in list(pycountry.currencies)]
            ),
            required=True,
        ),
    }
)

df = schema.example(size=3) # generate fake data
schema.validate(df) # verify fake data is valid
#>   USD Currency Local Currency
0          USD            SYP
1          USD            ARS
2          USD            XOF

Pandera can only generate valid examples. You'd need to modify the valid dataframe or create a second schema for failing examples.
@cosmicBboy re:

Build a custom data type with Pandera Data Types

In my view, pandera Data Types check the native data type (so far native = pandas/numpy dtypes). They are not meant to create URL, Country, etc. data types. For that purpose, I think users can create generic functions that return a pre-built Column. e.g.:

def CurrencyCode(**kwargs) -> pa.Column:
    # would need to reject data type in kwargs + append extra checks
    return pa.Column(
        str,
        checks=pa.checks.Check.isin(
            [currency.alpha_3 for currency in list(pycountry.currencies)]
        ),
        **kwargs
    )
 # ^ simply call CurrencyCode() instead of pa.Column in schema definition.

We could have pre-defined shortcuts for common columns (URL, Path, etc.) or explain that trick in a cookbook. Let me know what you think.

@cosmicBboy and @jeffzi Thank you, I added in the first question a sample of csv
pycountry.countries.lookup(s).alpha_2 returns US
pycountry.currencies.lookup(s).alpha_3 returns USD

Exception has occurred: IndexError

That's indeed a bug. Your check was raising a LookupError() that does not have a message, and pandera did not handle that case graciously. I just submitted a fix (#613). That will resolve your other issue #605 as well.
Keep in mind that a check must return a boolean or a Series of booleans. Moreover,  by default the input will be a Series whereas pycountry.countries.lookup(s) is expecting a string. I'd recommend reading the checks documentation for a full explanation and examples.

So we validate the input CSV, and then once transformed, we need to validate the transformed schema again, is that normal best practice?

Yes, typically you would wrap your transformations in functions and validate the input and output of those transformations. That ensures data is valid at each step of your pipeline. Decorators are available to make that process smoother.

Checks are vectorized by default, meaning that s is a series:
pa.Check(lambda s: pycountry.countries.lookup(s).alpha_2)

So you can either map over it:
pa.Check(lambda s: s.map(lambda x: pycountry.countries.lookup(x).alpha_2))

Or use element_wise=True to turn it into a scalar check
pa.Check(lambda x: pycountry.countries.lookup(x).alpha_2, element_wise=True)

Though this check as-is doesn't return a boolean value, something like this would be a valid check
pa.Check(lambda x: pycountry.countries.lookup(x).alpha_2 == "US", element_wise=True)

# or

pa.Check(lambda x: pycountry.countries.lookup(x).alpha_2 in {"US", "FR", ...}, element_wise=True)