/dev cannot be mounted when rootless podman-run started with -t option.

/kind bug
Description
We are in the process of refactoring the Firecracker build scripts to use Podman (or Docker)....
Unfortunately, it looks like we've hit this prior reported issue in the container run code here, obviously with podman in place of docker (wrapped):
Error: container_linux.go:349:
  starting container process caused "process_linux.go:449:
    container init caused \"open /dev/console: permission denied\"":
      OCI runtime permission denied error

The OpenSuse repo is not yet updated to 2.0.0.
Any insight into whether 2.0.0 would fix this issue?
Update: Issue still present with v2.0.0
One selling point to get the changed merged is the code path stays the same regardless of which OCI engine a user has installed for them.
Obviously we don't want to then have to justify introducing a bug workaround when trying to make Docker optional.
Steps to reproduce the issue:

Install Podman or Podman-rootless v1.9.3 (update: or v2.0.0):/usr/bin/podman run -i -t --rm \
  --volume /dev:/dev \
  --volume /usr/local/src/firecracker:/firecracker:z \
  --env OPT_LOCAL_IMAGES_PATH=/firecracker/build \
  --env PYTHONDONTWRITEBYTECODE=1 \
  fcuvm/dev:v16 chown -R 1000:1000 /firecracker/build

Describe the results you received:
Error: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"open /dev/console: permiss
ion denied\"": OCI runtime permission denied error
+ return 126

Describe the results you expected:
No error.
Additional information you deem important (e.g. issue happens only occasionally):
Reproducible
Output of podman version:
$ podman version
Version:            1.9.3
RemoteAPI Version:  1
Go Version:         go1.10.1
OS/Arch:            linux/amd64

Output of podman info --debug:
debug:
  compiler: gc
  gitCommit: ""
  goVersion: go1.10.1
  podmanVersion: 1.9.3
host:
  arch: amd64
  buildahVersion: 1.14.9
  cgroupVersion: v1
  conmon:
    package: 'conmon: /usr/libexec/podman/conmon'
    path: /usr/libexec/podman/conmon
    version: 'conmon version 2.0.16, commit: '
  cpus: 2
  distribution:
    distribution: ubuntu
    version: "18.04"
  eventLogger: file
  hostname: desktop.local.lan
  idMappings:
    gidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
    uidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
  kernel: 5.3.0-40-generic
  memFree:<PHONE_NUMBER>
  memTotal:<PHONE_NUMBER>6
  ociRuntime:
    name: runc
    package: 'containerd.io: /usr/bin/runc'
    path: /usr/bin/runc
    version: |-
      runc version 1.0.0-rc10
      commit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
      spec: 1.0.1-dev
  os: linux
  rootless: true
  slirp4netns:
    executable: /usr/bin/slirp4netns
    package: 'slirp4netns: /usr/bin/slirp4netns'
    version: |-
      slirp4netns version 0.4.3
      commit: unknown
  swapFree:<PHONE_NUMBER>
  swapTotal:<PHONE_NUMBER>
  uptime: 13h 53m 44.48s (Approximately 0.54 days)
registries:
  search:
  - docker.io
store:
  configFile: /home/<user>/.config/containers/storage.conf
  containerStore:
    number: 13
    paused: 0
    running: 0
    stopped: 13
  graphDriverName: vfs
  graphOptions: {}
  graphRoot: /home/<user>/.local/share/containers/storage
  graphStatus: {}
  imageStore:
    number: 64
  runRoot: /run/user/1000/containers
  volumePath: /home/<user>/.local/share/containers/storage/volumes

Package info (e.g. output of rpm -q podman or apt list podman):
$ apt-cache policy podman
podman:
  Installed: (none)
  Candidate: 1.9.3~1
  Version table:
     1.9.3~1 500
        500 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_18.04  Packages

Additional environment details (AWS, VirtualBox, physical, etc.):
Physical

Still happens with podman 2.0.0:
11:15 $ podman version
Version:      2.0.0
API Version:  1
Go Version:   go1.14.3
Built:        Thu Jan  1 10:00:00 1970
OS/Arch:      linux/amd64

✔ /usr/local/src/firecracker [issue-1973 L|✚ 1…1]
11:15 $ tools/devtool test -- --ignore integration_tests/performance
[Firecracker devtool] 2020-06-26 01:15:29 UTC
[Firecracker devtool] Starting test run ...
Error: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"open /dev/con
sole: permission denied\"": OCI runtime permission denied error
Error: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"open /dev/con
sole: permission denied\"": OCI runtime permission denied error

Why do you need all of /dev mounted into the container?  Do you need a specific device?
The issue is /dev/console is
ls -l /dev/console
crw--w----. 1 root tty 5, 1 Jun 18 15:50 /dev/console
Which means that the inside of a non root process is not allowed to write to it.
As a non root user if I do:
$ echo hello > /dev/console
bash: /dev/console: Permission denied
So if I do this in the container I will get the same thing.
Without the -t option podman and the oci (crun, crun) do not create /dev/console
$ podman run fedora ls -l /dev/console
ls: cannot access '/dev/console': No such file or directory
If you use the -t option, they create the console
$ podman run -t fedora ls -l /dev/console
crw--w----. 1 root tty 136, 0 Jun 26 09:25 /dev/console
If you volume mount in /dev of /dev/console it is the unwritable one
from the host
$ podman run -v /dev:/dev fedora ls -l /dev/console
crw--w----. 1 nobody nobody 5, 1 Jun 18 19:50 /dev/console
When podman attempts to create the /dev/console on top of a unwriteable  object
it blows up.
$ podman run -v /dev:/dev -t fedora ls -l /dev/console
Error: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused "open /dev/console: permission denied"": OCI runtime permission denied error

Thanks for that breakdown @rhatdan.

Why do you need all of /dev mounted into the container?

I'm still coming to grips with the build infrastructure, so can't offer more than "To be compatible with the parameters/options passed to Docker".
Sorry, I know that is not very satisfying, I'll add more as I learn more.
Right now we can workaround with sudo podman ...., but that kind of defeats the point of Podman so it won't be what we push upstream - it will allow us to continue working in the interim.
From your description the first thing to try is removing the -t option, then dig further into the fcuvm container.
Standby...

For those following at home, we're still on Podman 2.0.0...
Removing -t (--tty) results in the same error.
$ /usr/bin/podman run --user 1000:1000 --workdir /firecracker -i --rm --volume /dev:/dev --volume /usr/local/src/firecracker
:/firecracker:z --env OPT_LOCAL_IMAGES_PATH=/firecracker/build --env PYTHONDONTWRITEBYTECODE=1 fcuvm/dev:v16 cargo build --target-dir /firecracker/build/cargo_target --target x86_64-unknown-linux-musl

Error: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linu
x.go:378: setting rlimits for ready process caused \\\"error setting rlimit type 7: invalid argument\\\"\"": OCI runtime err
or

@rhatdan we believe we can now answer you question:

Why do you need all of /dev mounted into the container?

I appears it allows the group ID to be 'found'.
Remove ---volume dev:dev and we see this error:
$ /usr/bin/podman run \
    --userns=keep-id \
    --user $(id -u):$(id -g) \
    --workdir /firecracker --interactive --tty \
    --ulimit nofile=1048576:1048576 \
    --rm \
    --volume /usr/local/src/firecracker:/firecracker:z \
    --env OPT_LOCAL_IMAGES_PATH=/firecracker/build \
    --env PYTHONDONTWRITEBYTECODE=1 fcuvm/dev:v16 bash

groups: cannot find name for group ID 1000
1000@82d566fd503c:~$

In case anyone else encounters this issue:
We got a rootless and privilege-free run working by:

Removing --tty
Removing --volume dev:dev
Adding: --userns=keep-id

Because we are retro fitting Podman to a workflow (script) using Docker we introduced a oci_engine_arg_init function that inserts --userns=keep-id when grep podman <<<${oci_engine} is true.
This seems as small price to pay for Podman name-spacing compared to the Docker daemon setup for user name-spacing- if I'm reading the Docker docs correctly.
I believe the instructions below will work with Docker (minus --userns=keep-id), so I'll leave to @rhatdan to reopen this if you believe there is an issue to be addressed.
  There are issues to be handled because of rootless support.
If you would like to open a PR to update the troublshooting.md file it would be welcome.  But I am not sure there is common
enough problems in your issue.


Instrument catalog with prometheus metrics

Hey, I just made a Pull Request!
This PR adds Prometheus metrics to the catalog. Metrics are optional to enable.
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[ ] All your commits have a Signed-off-by line in the message. (more info)

Hey @jhaals - I was just discussing with a colleague these couple days that maybe we should hide this behind (yet another) interface. I know Prometheus is a pretty common standard, but just wondering if we want to directly mandate that we'd only emit Prometheus metrics.
Not sure what the API surface is going to look like in that case though. What's your knee-jerk reaction?
(For us it's not too much a problem, we use Datadog. But we were thinking about implementing metrics and figuring that directly writing Datadog-coupled code in Backstage would probably be a no-no.)

Hi @lowjoel,
Great question, we initially planned to with OpenTelemetry to allow more exporters but the project is just too early in development to be able to use.
Creating a pluggable API surface in backstage would be a slippery slope and we hope to use library like OpenTelemetry to solve that for us. At least initially we are planning to keep metrics somewhat internal until we've gained enough confidence. We will definitely have a hard time supporting multiple providers, Prometheus is at this point of time the standard for CNCF projects. From my understanding the datadog-agent support scraping metrics endpoints. Another alternative could be to create your own InstrumentedProcessingEngine that simply delegates to the DefaultProcessingEngine

Yeah. I'm perfectly OK with using Prometheus since Datadog supports it. Just wondering what the thought process is behind. If Backstage is comfortable with prom-client then we might as well just anoint that as standard and make sure every plugin uses it.

@lowjoel We just really want some metrics for the catalog to drive the development, and don't want to be blocked on creating a perfect or even good enough metrics solution. What we're adding here is highly experimental and will most likely be replaced in the future.

@lowjoel We just really want some metrics for the catalog to drive the development, and don't want to be blocked on creating a perfect or even good enough metrics solution.

Perfectly reasonable.

What we're adding here is highly experimental and will most likely be replaced in the future.

Then this leads to the question, would this be something that you'd provide an upgrade path for, or are you expecting deployments to not use this? We have had the exact same desire to know what's happening in our system, and we'd like to figure out the options available.

Btw., very cool to see this. This is one topic that is blocking us from migrating to the new backend. This is quite similar to what we have internally for the old backend. Looking forward to this 🙂

@lowjoel It's likely that we'll make this at least a little bit stable so that we can have the community try it out and report back some results. Should be a good way of seeing how the catalog performs in various setups and iron out any issues. We do have some obvious stuff to deal with coming out of our internal testing first tho :grin:

+1 for using OpenTelemetry eventually. There are already exporters for most major vendors and libraries (including Datadog and Prometheus). This means the OpenTelemetry protocol/libraries can be the abstractions themselves.

One thing that we were really missing was a complete solution in opentelemetry corresponding to Histogram and Summary. If you have experience that helps us get on opentelemetry sooner rather than later, any and all input is welcome!

Sorry, only started evaluating OT more deeply just recently. Haven't got to an actual proof of concept yet. However, I do see the JavaScript client library should have a metrics histogram aggregator. https://github.com/open-telemetry/opentelemetry-js/issues/927

One thing that we were really missing was a complete solution in opentelemetry corresponding to Histogram and Summary. If you have experience that helps us get on opentelemetry sooner rather than later, any and all input is welcome!

Yeah, we made similar experience. While we committed to go with opentelemetry in the long term internally, we have the issue that it just isn't delivering what we need yet. And it's hard to add that in the exporter to prometheus.

Seems there are some loose ends around this part still in discussion - https://github.com/open-telemetry/opentelemetry-specification/issues/982

Hi @wasadigi, as most of the metrics are experimental there hasn't been much documentation created around this from my experience. At one time this was integrated into the backend-common but then removed, thankfully they included instructions on how to add them back which might help you out: https://github.com/backstage/backstage/blob/master/packages/backend-common/CHANGELOG.md#040


CreateTearsheet: resize event is not firing

What will this achieve?
The resize detector isn't working currently which is causing responsive issues when the view all toggle is turned on. The resize detector is being used to measure the length of the dividing line between sections, currently the onResize event is only fired once which means the measurement of the divider line is going to be incorrect (causing layout issues) as soon as the browser is resized.
If browser is shrunk:

If browser width is increased (note: divider line does not extend to end of section):

This is fixed now


Add Cinchoo ETL

ETL/Cinchoo ETL - Cinchoo ETL
ETL Framework for .NET (Read / Write CSV, Flat, Xml, JSON, Key-Value formatted files)

Wrong pull request - the commit doesn't represent what's in the PR


Rendering large files cuts off text rendering in window at 66,667 lines

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: Version: 1.86.0-insider
OS Version: Ubuntu, Linux x64 6.6.0-14-generic

Steps to Reproduce:
Version: 1.86.0-insider
Commit:<PHONE_NUMBER>4e4c0fddbc1b3b728013744ae90840
Date: 2024-01-15T05:35:41.138Z
Electron: 27.2.1
ElectronBuildId: 26149897
Chromium: 118.0.5993.159
Node.js: 18.17.1
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 6.6.0-14-generic
GNOME: 45.3, X11
System Memory: 64GiB

You can find the large file in the bug report here: https://github.com/KhronosGroup/Vulkan-Hpp/blob/main/vulkan/vulkan_structs.hpp

@alexdima looks like previously reported here as well:
https://github.com/microsoft/vscode/issues/202444
Maybe the referenced file can help in the new repro.

/duplicate and should be fixed in tomorrow's Insiders

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


[Test Scenario]: Cloud Masthead with Authentication

Engineering info:

Innovation Team engineer: @andy-blum
Innovation Team JIRA Ticket: https://jsw.ibm.com/browse/HC-2407
DPO consulting engineer:

Component and test scenario title
Masthead - Cloud
Test scenario steps
Masthead - Cloud

This component is marked behind a feature flag and it's available to preview via the experimental deploy preview.
Enable this component locally

Edit your .env file and add this line DDS_CLOUD_MASTHEAD=true.

This is a follow-up issue to https://github.com/carbon-design-system/carbon-for-ibm-dotcom/issues/8133 once, the work outlined in this feature request has been addressed/merged https://github.com/carbon-design-system/carbon-for-ibm-dotcom/issues/8033.
Authentication

Emulate the return of _dl.ddo.user.segment.isCloudLoggedOn in the window object - see (https://github.com/carbon-design-system/carbon-for-ibm-dotcom/pull/8149/files#diff-4d335d7e7137c49adbed103940aad93a66985e57608311a93400fe972323c5b9R12)
Once authenticated, ensure that the "Console" CTA button is visible and links out to https://cloud.ibm.com.
Ensure that the "Profile" button returns menu items. The amount doesn't matter as this content might be adjusted over time - https://github.ibm.com/webstandards/ibm-dotcom-translations/blob/master/translations/cloud-masthead/usen.json#L1527

Marking this issue as canceled as there's no real way to load in the IBM DDO (Digital Data Object) that will render the correct authenticated status within the Cloud Masthead. Also, we already have a mock test defined for this authentication process within the services package (see link).


ConfigRegistry is not thread safe

In Wirl.Core.Application the object FConfigRegistry is not thread safe. It's a simple TObjectList without CriticalSection or anything else.  the thread safe equivalent to FConfigRegistry is TWiRLConfigClassRegistry.Instance

All WiRL registries are not thread safe and I think we doesn't change this behavior in the next releases. Generally the registry are used on the application startup in the mail thread. Using a critical section is not a good idea because you can have many simultaneous threads reading the registries and a critical sections serialize all these threads.
Probably we can use TMultiReadExclusiveWriteSynchronizer but I'm not sure if it is worth the effort.


Retrieve group of settings

Let's say you have bunch of settings like this:
'notifications.setting1'
'notifications.setting2'
'notifications.setting3'
'something.setting1'
'something.setting2'
'something.setting3'

Would it be possible to retrieve all the settings that start with notifications ?

$model->settings()->get('notifications')


Capture dbt variables

It would be nice to store the dbt variables passed to a run as a json in the database. Something like the functionality dbt artifacts provides https://github.com/brooklyn-data/dbt_artifacts . This would allow us to pass correlation ids etc to dbt and have it in a table for that dbt run and link it to processes / services that triggered the run.

Began working on it in this pull request.

Merged!


[stable/kube-state-metrics] Change name of container argument from namespace to namespaces

What this PR does / why we need it:

Change container argument from 'namespace' to 'namespaces' to align official documentation:
https://github.com/kubernetes/kube-state-metrics/blob/master/docs/cli-arguments.md#available-options
Change value in Values.yaml for defining namespaces from 'namespace' to 'namespaces'.

@fiunchinho
@tariq1890
@mrueg
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @tariq1890

/hold

Thank you, I didn't notice that I was in the master branch checking for the arguments.


langchain: enable chat-memory to save compound types

Description: Saving ChatMemory requires Message(content) to be a string.
When using output parsers (eg: Json/Pydantic), the output returns as a dictionary and throws exception.
This change allows saving of any output using any subtype of BaseChatMemory.  Adjusted related type-hints.
Issue: 6761
Dependencies: None
Twitter handle: None

im not a super fan of hiding this logic inside this function. there could be multiple keys, only one of which should be saved as chat history.


Merge multiple

Hi, thanks for the extension, I was wondering if there's a way to merge files, for example a @ import('some other js file path'), something like code kit has
Thanks

Hi @nam-co, at the moment no and I didn't have plans to add this. I tend to use include.js for loading multiple files. I will add it to the wish list and have a think about how this could be implemented. Someone expressed interest in creating a codekit plug-in, might be one to watch https://twitter.com/bdkjones/status/1304158421336207360


re-translate the Description

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@Rosalyn0403
Thanks for your PR. May I suggest making some improvements as following？

Please kindly consider not mixing traditional Chinese characters and simplified Chinese characters. We accept both traditional and simplified Chinese, however, please try not to mix them in one article. In the edits you made, most of them are in simplified Chinese, but there are a few traditional Chinese characters in the same paragraph. For example, "一些在线的颜色挑选工具利用视觉模拟来呈現不同类型的色盲類型所看見的颜色之間有何不同".

In terms of maximizing the accessibility of freeCodeCamp for the greatest number of people, we should try and use Simplified Chinese characters.

I would like to suggest changing this sentence, "除了在线对比度检查计算器外，这些都是很好的资源。". The original English text, "These are great resources in addition to online contrast checking calculators." is better translated as “包括在线对比度检查计算器， 这些都是很好的资源。” to properly convey its meaning.

@ziweidream @dingjy94 I would suggest closing this PR as stale.

Hi @Rosalyn0403
As there has been no response from your end for a while, we are closing this PR.
Feel free to request this PR to be reopened or create a new PR, if you still wish to make the changes you originally added plus any additional change requests asked of you.  Also, remember to update your fork, so you have the latest version of master in case it has changed significantly.
Happy Coding!


Break instead of return+callback for (should_stop or limit_batches) condition to keep the logic consistent in train_loop and val_loop

What does this PR do?
This is a similar change to the change merged a couple of days ago PR 17873
The train_epoch_end callback still gets called this way so that's no problem, and i think that keeping the "break" logic in both the train_loop and the val_loop is desirable.

Fixes #<issue_number>

Before submitting

Was this discussed/agreed via a GitHub issue? (not for typos and docs)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together?
Did you make sure to update the documentation with your changes? (if necessary)
Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
Did you list all the breaking changes introduced by this pull request?
Did you update the CHANGELOG? (not for typos, docs, test updates, or minor internal changes/refactors)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing, make sure you have read the review guidelines. In short, see the following bullet-list:

Reviewer checklist

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

wrong code uploaded --> https://github.com/Lightning-AI/lightning/pull/17962


User registration and management

Use user service
Allow user to create account
Allow admin to manage users
(optional) send activation email

Maybe integrating it with keycloak would be also an option.


Feature: Open path of saved files

Added feature for showing folder for saved files when saving a new file from the menu "File->Save As...".
This PR was added after discussion in #2216.
Questions I'd like to discuss:

Will this be a nice feature without annoyance of too many popup notifications?
We could also show an option for opening the saved file in the default Windows app. However, the file is already opened inside of sqlops after saving, maybe this is enough?

Preview:

@AlexFsmn thanks for splitting up the PRs!  My personal opinion is that the prompt on save seems a bit "chatty".  For example, I don't think it is very common for a user to want to open a directory immediately after saving a file (not that it's never the case, just not the most common case).  Also, there is a command File: Reveal in Explorer that appears to do the same thing, so the user could always run that directly after saving if that is the desired action.
I'll chat with our PMs to get additional perspectives, but my initial thoughts are to not take this change.  I did merge your other related PR though 😄.
@yualan or @vickyharp do you have any thoughts on this proposed change?

@AlexFsmn after discussing during triage we're not going to take this change.  Thanks for opening the PR.  Please let me know if you'd like more details regarding the discussion.  It's basically aligned with my previous comment.


Fix demodata generation for orders

1. Why is this change necessary?
This fixes a bug in the order generation which causes it to fail with the following exception message: Shipping method with id "..." not found.. This is due to the sales channel context for the generation being selected randomly which may contain a different shipping method than the order blueprint configured at the start of the generation.
2. What does this change do, exactly?
Previously, data was just copied from the order blueprint to the currently created cart. Now data is copied and the shipping method is changed to fit the one in the currently used sales channel context
3. Describe each step to reproduce the issue or behaviour.
Try to generate several orders with multiple sales channels and shipping methods.
4. Please link to the relevant issues (if any).
https://issues.shopware.com/issues/NEXT-17712
5. Checklist

[x] I have written tests and verified that they fail without my change
[x] I have squashed any insignificant commits
[x] I have created a changelog file with all necessary information about my changes
[x] I have written or adjusted the documentation according to my changes
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-19033
Please use this issue to track the state of your pull request.

Thanks for your contribution! :blue_heart: :tada:


Custom fields

Hi
do you have any plans on upgrading custom fields ?
class PostCode(str):

    @classmethod
    def __get_validators__(cls):
           yield cls.validate

    @classmethod
    def validate(cls, v):
       ...

Can you show me some expected input / expected transformations?

@Kludex well hard to tell... I'm just comparing docs for v1 and v2 - that does not look like a trivial case:
class PostCodeAnnotation:

    @classmethod
    def __get_pydantic_core_schema__(
        cls, _source_type: Any, _handler: GetCoreSchemaHandler
    ) -> core_schema.CoreSchema:
        return core_schema.no_info_after_validator_function(
            cls.validate,
            core_schema.str_schema(),
        )

    @classmethod
    def __get_pydantic_json_schema__(
        cls, schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler
    ) -> JsonSchemaValue:
        json_schema = handler(schema)
        json_schema.update(
            # simplified regex here for brevity, see the wikipedia link above
            pattern='^[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$',
            # some example postcodes
            examples=['SP11 9DG', 'W1J 7BU'],
        )
        return json_schema

    @classmethod
    def validate(cls, v: str):
        m = post_code_regex.fullmatch(v.upper())
        if m:
            return f'{m.group(1)} {m.group(2)}'
        else:
            raise PydanticCustomError('postcode', 'invalid postcode format')

PostCode = Annotated[str, PostCodeAnnotation]

What would be the input for this expected code?

it's from official docs:

custom field in v1
custom field in v2

For the __modify_schema__, we could:

Find the FunctionDef named __modify_schema__, and save the second argument name (e.g. field_schema).
If field_schema.update is found, then add field_schema = handler(schema) in the first line after the FunctionDef, and return field_schema in the last line.
If field_schema.update is not found, add a TODO note telling to update manually.

For the __get_validator__, I think is a bit more complicated... Would it be safe to assume core_schema.no_info_after_validator_function on every code source? 🤔

I think it is not auto solvable problem as in __get_validators__ you can return all sort of things and have multiple validators which does not look like a case for __modify_schema__ ...
@samuelcolvin @dmontagu @hramezani maybe pydantic should have some backwards(deprecated) compatible approach to custom fields ?
overall to me custom fields feels very low-level implementation - I am not able to remember it without looking at examples :)
Maybe there should exist some simpler approach for 80+%  of use cases, like:
class PostCode(str):

    @classmethod
    def __pydantic_validate__(cls, v):
           if v not in UK_DATABASE_CALL:
                   raise ValidationError
           return v

which should atomatically add needed modify_schema guts

There is a simpler approach for 80% of the use cases:
from annotated_types import Predicate  # or `pydantic.PlainValidator`, etc.

PostalCode = Annotated[str, Predicate(lambda v: True if v in UK_DATABASE_CALL else False)]

Hence why this section comes before the __get_pydantic_core_schema__ section.
For what it's worth to get multiple validators in __get_pydantic_core_schema__ you can either use a chain validator:
from typing import Any, Callable, Dict, Iterable, List

from pydantic_core import CoreSchema, core_schema

from pydantic import (
    TypeAdapter,
    GetCoreSchemaHandler,
    GetJsonSchemaHandler,
)
from pydantic.json_schema import JsonSchemaValue

class PostalCode(str):
    @classmethod
    def __get_pydantic_core_schema__(
        cls, _source_type: Any, _handler: GetCoreSchemaHandler
    ) -> core_schema.CoreSchema:
        val_func_schemas: List[CoreSchema] = []
        for validation_function in getattr(cls, '__get_validators__', lambda: ())():
            val_func_schemas.append(core_schema.no_info_plain_validator_function(validation_function))
        return core_schema.chain_schema(val_func_schemas)

    @classmethod
    def __get_pydantic_json_schema__(
        cls, schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler
    ) -> JsonSchemaValue:
        json_schema = {'type': 'string'}
        modify_schema = getattr(cls, '__modify_schema__', None)
        if modify_schema is not None:
            json_schema = modify_schema(json_schema) or json_schema
        return json_schema

    @classmethod
    def __get_validators__(cls) -> Iterable[Callable[..., Any]]:
        yield cls.validate1
        yield cls.validate2

    @classmethod
    def validate1(cls, v: str) -> str:
        return v * 2

    @classmethod
    def validate2(cls, v: str) -> str:
        return v[:5]

    @classmethod
    def __modify_schema__(cls, field_schema: Dict[str, Any]) -> Dict[str, Any]:
        # __modify_schema__ should mutate the dict it receives in place,
        # the returned value will be ignored
        field_schema.update(
            # simplified regex here for brevity, see the wikipedia link above
            pattern='^[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$',
            # some example postcodes
            examples=['SP11 9DG', 'w1j7bu'],
        )
        return field_schema

ta = TypeAdapter(PostalCode)
assert ta.validate_python('abc') == 'abcab'
assert ta.json_schema() == {'examples': ['SP11 9DG', 'w1j7bu'], 'pattern': '^[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$', 'type': 'string'}

I guess bump-pydantic could insert some version of this automatically. The one thing I don't think is trivial to figure out automatically is the json_schema = {'type': 'string'}. I think Pydantic V1 just brute forced this by iterating through the bases and trying to generate a schema for each base and just returning the first one, which is obviously supper buggy but I guess works in very simple cases. The thing is those very simple cases are now better served by the Annotated[str, ...] pattern so we don't want to encourage it.

@adriangb

There is a simpler approach for 80% of the use cases:
from annotated_types import Predicate  # or `pydantic.PlainValidator`, etc.

PostalCode = Annotated[str, Predicate(lambda v: True if v in UK_DATABASE_CALL else False)]

but this is not something you can automate with a bump-pydantic tool (too complex)
I think the best solution would be to introduce some meta class into pydantic that will help transition from v1 to v2

class V1CustomField:
    ... magic with metaclasses ...

# then finally all you will have to do to migrate v1 to v2 is to add extra parent class:

class PostCode(str, V1CustomField): # <--- !!!

    @classmethod
    def __get_validators__(cls):
           yield cls.validate

    @classmethod
    def validate(cls, v):
       ...

Then we have to carry that metaclass around until V3. And in V3 we'll need a compatibility metaclass for the compatibility metaclass, right?

Then we have to carry that metaclass around until V3. And in V3 we'll need a compatibility metaclass for the compatibility metaclass, right?

I feel some sarcasm here :) but no - you make it with deprecation warning and remove in v3
there are already bunch of deprecated code - https://github.com/pydantic/pydantic/tree/main/pydantic/deprecated

It’s definitely something to consider. We can always add it in the next minor release.


'NoneType' object has no attribute 'shape'

i have update instantid and comfyui but it not works

What kind of checkpoint are you using? InstantID only works with SDXL

ok,sdxl is fine.thanks


Contract deploy error

When i use "flow project deploy --network=testnet" i get
Deploying 3 contracts for accounts: emulator-account,testnet-account
Kibble error
KittyItems error
KittyItemsMarket error
❌ Failed to deploy all contracts

@DubovkaE Can you provide a bit more context?
This probably means that you haven't properly exported the environment variable to your shell, as mentioned here:
https://github.com/onflow/kitty-items#save-your-keys

Closed by #82


Time Series Notebook

Big Picture / Structural Things

[x] I think we need to motivate the idea of "why time series is important" more (e.g. its ubiquity, common use cases, why a non time-series model falls short on time series data, etc). Perhaps this will be done in lecture, but it's always good to be more verbose in the notebook too.
[ ] For each model, it would be valuable to describe (at least at a high level) how it works, its use cases, and its weaknesses. Good to compare them too.
[ ] I'm a little lost on what the notebook is trying to achieve ultimately. What is the key learning the student should take away from this notebook? At this point it seems to be more about "being able to use ZORI to predict CPI" than the bigger picture - an introduction into time series.

Specific Things

[ ] Good to provide legend/key for column names when introducing ZORI table. I’d at least define what ZORI meant (even if you took it from Zillow’s website)
[ ] Will answer cells be provided?
[ ] Not super clear to me what question 1b is trying to get at. What does manipulate data mean here? Like do you want a scatter plot of ZORI against CPI?
[ ]  I think my plots’ date axis (x axis) is coming out with too many values that it’s unreadable. I’d add a call xticks to fix this (you can also make it a ‘learning opportunity’ by adding a cell to talk about this kind of EDA in the notebook)
[ ] I think it would be good to motivate more why we use a seasonal model first, but to be honest I don’t see much seasonality in the CPI data…
[ ] When plotting both CPI and ZORI together, I would first index them relative to 100 first (e.g. taking the first date as 100) so they’re on the same scale. If you log, I’m wondering why it’s done except for comparison reasons; is it mathematically sound?

Goals of notebook/outline:

Intro time series
Intro zori

manipulate/munge dataset? too advanced for class?
plot data

intro cpi

plot

modeling/darts

why normal regression/tools don't work on time series
correlation/checking relevence etc
arima
other models? prophet
nhits

want to introduce more coding/modeling overall


new country pages

-created a new country page [draft] and added layers from ED.info to replace the current external study
-deleted the Congo country page (no entries)

@shakythesherpa The checks (lint, test, validateConfig) were not running on Pull Requests issued from a fork. I fixed this and updated this branch. All tests pass, and you should be able to merge the PR yourself. Can you check if that's the case?

@olafveerman  I am able to merge the pull request now.  Do you know how long it takes to see the change on the staging website?

@olafveerman  confirming the merge request was successful and i am now able to see all the updates on the staging website. Thanks!


RDKShell API v3

updates
updates
updates
scale and initial animation support
initial event support
key handling, key metadata, inactivity, and animation updates
support for launching native applications and suspend and resume (RDK-28720)
suspend and resume updates
[RDK-28197] updates for inactivity timer RFC
initial support for app lifecycle management
updates
updates for RDK-29085
updates to launch
RDK-29085
updates for memory, events, and configuration (RDK-29085) (#192)

updates for memory, events, and configuration (RDK-29085)

updates

include the launch type and also support for callsign

https://jenkins.code.rdkcentral.com/job/github-triggered/2935/ started

https://jenkins.code.rdkcentral.com/job/build-component-rdk-next/19836/ started.

build-rpi-hybrid-refapp-rdk-next Console Log uploaded to Gist URL: https://gist.github.com/9bfaec2a50347758d6336be109a48906

build-rpi-mc-wpe-rdk-next Console Log uploaded to Gist URL: https://gist.github.com/0c8dd27ae64bfcc7cb80098fc200aa39

build-rpi-hybrid-wpe-rdk-next Console Log uploaded to Gist URL: https://gist.github.com/90afbe176c707993286ba6734354e77f

https://jenkins.code.rdkcentral.com/job/github-triggered/2972/ started

https://jenkins.code.rdkcentral.com/job/build-component-rdk-next/19918/ started.

build-rpi-mc-wpe-rdk-next Console Log uploaded to Gist URL: https://gist.github.com/797c8f7b3272084c05cdfdce6c93067c

build-rpi-hybrid-wpe-rdk-next Console Log uploaded to Gist URL: https://gist.github.com/5a6cd7b24b000092b07239627c1c7869

build-rpi-hybrid-refapp-rdk-next Console Log uploaded to Gist URL: https://gist.github.com/521adc366b339d9b7a7d1c5b79e74e59


install pyquil qvm and compiler

The Rigetti Getting Started guide requires the pyQuil QVM and Compiler.
These changes provide cells for installing, running, and verifying those dependencies.

Unsure how to resolve the notebook failure. I've run check/nbformat --apply locally before pushing.

It does look like the notebook checks are failing (in getting started?).  Maybe try updating master and re-running the tests?  Once that is resolved, this looks fine to merge.

I've seen this error before (https://github.com/nteract/papermill/issues/519) -- that's why we are pinning ipykernel to 5.3.4. Can you try to revert the metadata changes in the notebook?

🏳 ... These checks passed locally on MacOSx. For now, I've just removed Rigetti from the notebook tests.


Docs: Fix small typo's in configuration.md

Typo fixed.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.

Hello @yuzroz,
thank you for submitting this typo fix. I've merged your contribution as 7cbafa4ec58abc7e338e33bef16a84ef1d8a5ff2 (master) and 7cbafa4ec58abc7e338e33bef16a84ef1d8a5ff2 (v0.15.docs).
Cheers,
Digitalcraftsman


run doesn't return stdout

Summary
When calling ffmpeg.run, the stdout part of the tuple is None, despite stdout being filled with output from ffmpeg.

Fixed in ce84a5e76062dc70575ca43073f702c138c01996


task/192-cleanup-pylint-output

A lot of it is documentation stuff, which I really should fix, but there are a
few things that are not. I should be able to get pretty close to 10/10 I think.

OBE.


[BUG] - ServiceBusSessionReceiver creation intermittently throwing ServiceBusConnection has already been closed and cannot perform the requested operation error.

Library name and version
Azure.Messaging.ServiceBus 7.17.2
Describe the bug
ServiceBusSessionReceiver  intermittently throwing ServiceBusConnection has already been closed and cannot perform the requested operation error.
DEBUG log
An exception occurred while creating a ServiceBusSessionReceiver (Namespace '', Entity path ''). Error Message: 'System.ObjectDisposedException: ServiceBusConnection has already been closed and cannot perform the requested operation.
Object name: 'ServiceBusConnection'.
   at Azure.Core.Argument.AssertNotDisposed(Boolean wasDisposed, String targetName)
   at Azure.Messaging.ServiceBus.ServiceBusConnection.ThrowIfClosed()
   at Azure.Messaging.ServiceBus.ServiceBusReceiver..ctor(ServiceBusConnection connection, String entityPath, Boolean isSessionEntity, ServiceBusReceiverOptions options, String sessionId, Boolean isProcessor, CancellationToken cancellationToken)'

Expected behavior
It should not produce this random errors
Actual behavior
Logs fill up with errors that are not errors
Reproduction Steps

Create Service Bus Topic subscription with session enabled
Create ServiceBusClient using Microsoft.Extensions.Azure.
Create CreateSessionProcessor using ServiceBusClient
Request StartProcessingAsync from created session processor.

Environment
No response

I also have same issue.
In AutoFacModule.cs
I assigned
builder.RegisterType().As();
In Startup.cs
builder.RegisterType()
.As()
.As()
.As()
.As()
.AsSelf()
.SingleInstance();

I also have same issue
Registered ServiceBusFacade as a singleton
builder.RegisterType()
.As(IPubSubServiceBus)()
.As()
.As()
.As()
.AsSelf()
.SingleInstance();


JSON names which cosist of digits separated by dots cannot be processed

From<EMAIL_ADDRESS>on August 27, 2012 15:14:22
What steps will reproduce the problem? 1. JSON output: {"foo.bar": {"0.2.0": "test"}}
2. REST-assured code example: get("/rest").jsonPath().get("'foo.bar'.'0.2.0'").toString();
3. Error: No signature of method: java.util.HashMap.0.() is applicable for argument types: (java.lang.Integer) values: [2] What is the expected output? What do you see instead? "test" value should be returned. What version of the product are you using? On what operating system? 1.6.2 Please provide any additional information below.
Original issue: http://code.google.com/p/rest-assured/issues/detail?id=195

From<EMAIL_ADDRESS>on August 27, 2012 23:32:22
I've now (hopefully) fixed this in trunk. Please validate it by depending on 1.6.3-SNAPSHOT after having added the following maven repo:
<repositories>
<repository>
<id>sonatype
<url> https://oss.sonatype.org/content/repositories/snapshots/ <snapshots />
</repository>
</repositories>

From<EMAIL_ADDRESS>on August 27, 2012 23:32:36
Status: Fixed

From<EMAIL_ADDRESS>on August 28, 2012 00:47:48
Unfortunately, I'm currently getting the following error: "Failed to parse the Object document"
The error occurs even if I try to get only the first item 'foo.bar'(but it works for 1.6.2).

From<EMAIL_ADDRESS>on August 28, 2012 01:51:56
Can you provide the JSON where you get this error?

From<EMAIL_ADDRESS>on August 28, 2012 03:44:49
Looks like the issue is reproducible for any JSON.
This one for example:
baseURI = "https://www.googleapis.com";
port = 80;
String n = get("/plus/v1/people?key=AIzaSyCXW3uoEp3WpBj2mBSyop6OCLsOb80gN-I&query=Anna&language=en").jsonPath().get("etag").toString();

From<EMAIL_ADDRESS>on August 28, 2012 03:45:56
But how does the JSON document looks like that you get back from the server?

From<EMAIL_ADDRESS>on August 28, 2012 03:55:30
attached
Attachment: JSON.txt

From<EMAIL_ADDRESS>on August 28, 2012 04:14:34
Little clarification.
By "the issue is reproducible for any JSON" I've meant NOT the initial issue #195 , but the error "Failed to parse the Object document", which indicates that some basic mechanism was broken during the fix.
If you need the initial JSON to reproduce the issue #195 , here it is:
{"some.people-web": {"0.1.0": {"pub": {"$meta.json": {"dependencies": ["one","two","three"]}}}}}
and the code to parse it:
get("/rest").jsonPath().get("'some.people-web'.'0.1.0'").toString();
Sorry for misleading.


readme: file is a binary dependency

retest this please

I'm merging this as-is w/o CI approval since it's a one line doc change.


copilot is an unknown source name

I installed according to the instructions. (~/.config/githubcopilot exists)
{ 'zbirenbaum/copilot.lua',
    config = function()
      require("copilot").setup()
    end, },
  { 'zbirenbaum/copilot-cmp',
    after = { "copilot.lua", "nvim-cmp" },
  },

...

lvim.builtin.cmp.sources = {
  { name = "copilot", group_index = 2 },
  { name = "nvim_lsp", group_index = 2 },
  { name = "path", group_index = 2 },
  { name = "luasnip", group_index = 2 },
}

Both plugins seem to be installed, but :CmpInfo produces
# ready source names
- path
- luasnip
- nvim_lsp:sumneko_lua

# unused source names
- buffer

# unknown source names
- copilot

It would be nice, if the two plugins copilot.lua and copilot-cmp would list steps to verify installation, as I am not even sure where to file this issue.

I have the same issue..

This should be fixed as of today. Can you check to see if it's reproducible still?

It would be nice, if the two plugins copilot.lua and copilot-cmp would list steps to verify installation, as I am not even sure where to file this issue.

As a general rule, if LspInfo shows copilot up and running, copilot.lua is working fine. There are rare exceptions to that rule, which would likely show up in your lsp logfile.
If CmpStatus is giving unexpected information, then its likely a copilot_cmp issue.
What seems to be the cause of this was a rare exception to the first rule, wherein microsoft made some changes to the backend that caused some difficult to diagnose problems while I've been quite busy with graduation stuff. Thankfully one of the users in copilot.lua came out with a PR after discovering a parameter that is now required. Very sorry for any frustration this may have caused.

Very sorry for any frustration this may have caused.

No worries mate. : )
Unfortunately, with the minimal configuration I specified above, the issue persists. LspInfo does not show copilot. This means it is a copilot.lua issue. Should I refile there?

Very sorry for any frustration this may have caused.

No worries mate. : ) Unfortunately, with the minimal configuration I specified above, the issue persists. LspInfo does not show copilot. This means it is a copilot.lua issue. Should I refile there?

Yeah keep this closed and open a new post there. Before that though, try loading copilot.lua on "InsertEnter" and see if that helps. I noticed you don't lazy load at all and you might be hitting some unknown race condition.

@crisidev I fixed it. As I use Lunar Vim, I had to change the package manager path.
require("copilot").setup {
    plugin_manager_path = "/home/miki/.local/share/lunarvim" .. "/site/pack/packer",
}

Also, for some reason the cmp configuration does not work if it is run as a packer config argument, it has to be outside it. The entire config looks something like this:
lvim.plugins = {
...
  { "zbirenbaum/copilot.lua",
    event = { "VimEnter" },
    config = function()
      vim.defer_fn(function()
        require("copilot").setup {
          plugin_manager_path = "/home/miki/.local/share/lunarvim" .. "/site/pack/packer",
        }
      end, 100)
    end,
  },

  { "zbirenbaum/copilot-cmp",
    after = { "copilot.lua", "nvim-cmp" },
    config = function()
    end
  },
}

vim.builtin.cmp.sources = {
  { name = "copilot", group_index = 2 },
  { name = "nvim_lsp", group_index = 2 },
  { name = "path", group_index = 2 },
  { name = "luasnip", group_index = 2 },
}

Don't forget to quit lvim, PackerSync, PackerCompile and quit again.

Nice!! It works perfectly!


How to: Multiple projects simultaniously

In the documentation I read that running multiple projects in parallel should not be a problem. So what I did is to only change the traffic settings. The two projects look like this:
Project 1:
  traefik:
    image: traefik
    restart: unless-stopped
    command: -c /dev/null --web --docker --logLevel=INFO
    ports:
      - '8000:80'
      - '8080:8080'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Project 2:
  traefik:
    image: traefik
    restart: unless-stopped
    command: -c /dev/null --web --docker --logLevel=INFO
    ports:
      - '8001:80'
      - '8081:8080'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

I can start them both but they are not responsive. When I go to either http://drupal.docker.localhost:8000 or http://drupal.docker.localhost:8001 it takes a while and then I get a gateway timeout.
Is there anything else I need to adjust?

Do you use docker-sync as an external volume? If yes, try to rename the volume for one of the projects

I'm on Linux (Ubuntu 16.04) and I'm not using docker-sync. Anything else I could try?

I've updated instructions for multiple projects http://docs.docker4drupal.org/en/latest/multiple-projects/

@csandanov thanks a lot, I'm starting to get the idea. A couple of pieces seem to be missing though. Let's have a look into the nginx service definitions:
  nginx:
    image: wodby/drupal-nginx:6-1.10-2.0.0
    restart: unless-stopped
    depends_on:
      - php
    environment:
      NGINX_BACKEND_HOST: php
    volumes:
      - ./:/var/www/html
    labels:
      - 'traefik.backend=nginx'
      - 'traefik.port=80'
      - 'traefik.frontend.rule=Host:drupal.docker.localhost'

Changing the traefik.backend label is documented and I understand what that's for.
I wonder if I also need to modify the traefik.frontend.rule? Currently all projects are configured to use the same domain drupal.docker.localhost but then I can't imagine how traefik should be able to route traffic to the right nginx container. Does each project require an individual domain name then?
And another question is about the dependencies, here e.g. the php container. Do I have to name those containers differently for each project as well? Or does docker-compose handle that such that the PHP container in project 1 is only known to other containers in the same project?

@jurgenhaas you should update traefik.backend label as described in the instructions to make the backend for traefik unique per project. We add stand-alone traefik container to networks of each project.

Great, thanks. I've built a Composer plugin around this to easily configure our internal development environments for each project and this is working really nicely these days.

Would it work if other projects are not using traefik for reverse proxy?
For example if you have docker containers that were not put together with docker4drupal or even non drupal projects in docker containers.
What settings should we put in traefik.yml file to properly route local domain hosts to those project while keeping them all running at the same time and on the same port (80 or 8000)?

@alesrebec sorry, I don't get your use case, sounds like a question about how traefik works, I recommend to read their docs https://docs.traefik.io/, it's quite simple

I need to get back to this one as I'm running into trouble when multiple projects are up at once. In general, it works really well. I do have a stand-alone container for Traefik and then for each Drupal project a set of containers that do the actual work. My problem is that every other request to one of the development sites gets delivered by a different set of containers.
Here is the setup:
Traefik:
version: '2'
services:
  traefik:
    image: traefik
    restart: unless-stopped
    command: '-c /dev/null --web --docker --logLevel=DEBUG'
    networks:
      - project1
      - project2
    ports:
      - '8000:80'
      - '8080:8080'
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
networks:
  project1:
    external:
      name: project1_default
  project2:
    external:
      name: project2_default

Then, each of the two projects have a compose file with the Nginx configured like this:
  nginx:
    image: wodby/drupal-nginx:8-1.10-2.0.0
    restart: unless-stopped
    depends_on:
      - php
    environment:
      NGINX_BACKEND_HOST: php
      NGINX_SERVER_ROOT: /var/www/html/web/
    volumes:
      - ./:/var/www/html
    labels:
      - 'traefik.backend=nginx'
      - 'traefik.port=80'
      - 'traefik.frontend.rule=Host:project1.docker.localhost'

Now, if all three environments are up and running and I go to http://project1.docker.localhost:8000 it does happen that the Nginx from project2 is handling that request. I was under the impression that with this setup, Traefik would proxy each such requests to project1 always. Any idea what could be wrong?

@jurgenhaas you should change 'traefik.backend=nginx' to 'traefik.backend=project1_nginx_1' if the folder where you have the docker-compose.yml file is named 'project1'.
Same for 'project2', you need to have 'traefik.backend=project2_nginx_1' as traefik.backend and of course a different traefik.frontend.rule host.
I made it work, but the documentation is not clear enough to set it up the first time.

Oh great. Yes that solves the problem. Thanks @alesrebec for pointing that out.

@alesrebec we'll be glad if you suggest improvements for these instructions, I agree it might be better

OK, here it is for review. Updated multi-project doc page.
https://github.com/alesrebec/docker4drupal/blob/alesrebec-patch-1/docs/multiple-projects.md
Pull Request created.

@alesrebec thanks so much for your input!

For those looking for the current location of the relevant docs page: https://docker4drupal.readthedocs.io/en/latest/multiple-projects/

Thanks all for the instructions, but won't this break CI and multi-developer workflows? It may be convenient for me to deploy a multi-site traefik container with a .yml file in a parent directory, but that directory exists outside of the git repo of each site. When deploying the site through CI, I won't necessarily want to use a multi-site hierarchy and if I share the repo with other project devs, they will need to configure a unique version of docker-compose and then traefik.yml.
I would prefer that these instructions offer the current solution and also a self-contained solution where multiple sites can be run in parallel even if doing so has performance compromises. For example, generating a unique container for each site.

@jraviotta I think this is not partially true.
I have multiple projects and only one traefik.yml file, that I never edit after initial setup.
My traefik.yml:
version: '2'

services:
  work_traefik:
    image: traefik
    restart: unless-stopped
    command: -c /dev/null --web --docker --logLevel=DEBUG
    networks:
      - codebase
    ports:
      - '80:80'
      - '443:443'
      - '8080:8080'
      - '3306:3306'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

networks:
  codebase:
    external:
      name: codebase_default

and each of my projects comes in structure:
- project1
-- codebase
--- docker-compose.yml
- project2
-- codebase
--- docker-compose.yml
- project3
-- codebase
--- docker-compose.yml
- project4
-- codebase
--- docker-compose.yml

Each of the projects falls under same network afterwards. and it makes no problem to use it that way.

@irmantasp thanks for the suggestion. I'll try it out and report back.

Is there a way to have a custom domain for development environments, rather than always use http://x.docker.localhost ? For example http://x.projectname.dev ?
extending traefik container command to include --docker.domain=projectname.dev does not help...

@irmantasp you can set the 'domain' in your docker-compose, in the traefik.frontend.rule line.
e.g. - 'traefik.frontend.rule=Host:mylocalsite.dev'
I haven't changed a thing in my traefik.yml

current location of docs: https://wodby.com/stacks/drupal/docs/local/multiple-projects/

New URL.
https://wodby.com/docs/stacks/drupal/local/#running-multiple-projects

Hi. Anybody knows what's hostname should I use to connect to the drupal from another container in case when I'm using Single port method (https://wodby.com/docs/stacks/drupal/local/#single-port) for the traefik.
Previously in standard docker4drupal I've used curl http://nginx to connect to the drupal from my testing container, but with multiproject setup it seems it doesn't work.

Heh) I should anwer myself. I forgot to add (I'm using vanilla drupal) ^nginx$ entry to the trusted_host_patterns param within settings.php

http://docs.docker4drupal.org/en/latest/multiple-projects/

https://wodby.com/docs/1.0/stacks/drupal/local/#running-multiple-projects

project1
-- codebase
--- docker-compose.yml
--- traefik.yml

Can you please share me working example of this?
docker-compose file and trafiek.yml file code
Thanks.


Don't show diffs by default

file resources in this module should set show-diff to false by default, since there is a high likelihood that files rendered by this module contain secrets

Would it make sense to use Sensitive where possible? That way it automatically gets redacted if needed.

Given the very generic template, I don't immediately see how one would do that.

EPP has special handling for Sensitive so if a users pass in any Sensitive instead of plain String I'd expect it to already do that.


Adding animation effects in the website

Description of the enhancement. ✍🏻
I will add animation effects in different sections of the website so that the website looks more dynamic and attractive to the user
Describe briefly how you would implement this enhancement.
Some steps to implement this enhancement-
1. Step 1
2. Step 2
3. Step 3

Screenshots Example (if applicable)
No response
Additional information
No response
Contributor terms

[X] I agree to follow the Contributing Instructions

Adding effects such as fade-left and fade-right animations in the text,divs and paragraphs of the website in an ordered way


Add Markdown files genotypes

The construction of the genotypes is not very self explanatory and therefore needs a lot of documentation. To not overfill the source code this should be outsourced to markdown files (one for each model generator genotype).

Implemented


dynamically-selected sidebar ?

I'm working on a content architecture scheme where I (hope to):

Retain the "Products" dropdown in the topnav.
Set up each product's (and an "All Products") landing page to display a workflow (in the knowledge-base format).
The sidebar will be product/version specific, with the workflow phases as the top-level entries in the sidebar, and applicable doc titles (for the given product or version) being the 2nd-level entries in the sidebar.

On each product/version landing page, each phase in the workflow will have a link to the applicable tags_ page.
The problem is, that same tags page will be used in a variety of circumstances (multiple landing pages from the Products dropdown, multiple landing pages from an additional "Versions" dropdown, etc.), and so the sidebar entries need to change based on the current product/version that's selected.
Is this all achievable? I started this question thinking that my only issue was needing to have a dynamically-selectable sidebar, but then realized that there are lots of things that I'm looking to have dynamically determined (if I'm not to go crazy defining tags and sidebars for all possible permutations of product/version). So I might need to rethink all this.
After all, Jekyll is a "static" site generator!

I'm closing this issue because I've rethought some of the site architecture, and the devs with whom I'm working (I'm the tech writer) are going to make some local code changes to their existing Jekyll code (which isn't this documentation-theme-jekyll).


Nice but 1 little problem

The component css styling can not be used, style overrides in the component are just ignored. Must make styling in application.css, otherwise: tnx, working like a charm :)

Thanks for our feedback.
Styling in Angular 2 is a very broad topic so in this article I was concentrating mainly on Material Design integration part. You can get more details on styling here.

Tnx. Figured out that all that you put in the css that is visible without the MDL enhancement is working without any problem. Everything that appers after the MDL enhancement (for example the menu item in the layout navigation) is ignored when in the component's css (simple example: background color). So I have to put every MDL stuff there for the moment. Will look at a solution after I am finished with my Angular 2 learning session :D


Service imports empty when consuming iascable as library

When trying to consume any service using import  from import { <SERVICE_NAME>Api } from '@cloudnativetoolkit/iascable'; e.g. CatalogLoaderApi I'm getting:
Request GET /automation/catalog/boms failed with status code 500. TypeError: this.catalogLoader.loadCatalog is not a function
    at /workspace/ascent-bff/dist/helpers/services.helper.js:79:32
    at new Promise (<anonymous>)
    at ServicesHelper.fetchCatalog (/workspace/ascent-bff/dist/helpers/services.helper.js:76:16)
    at /workspace/ascent-bff/dist/helpers/services.helper.js:131:42
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

It looks like the CatalogLoaderApi (and any other api) are empty they are not bound to their corresponding implementation (in that case CatalogLoader) which is weird because I clearly see it in the built code in build/esm/index.js:
{bind: CatalogLoaderApi, to: CatalogLoader}

@seansund FYI, to fix this I exported implementation classes again <SERVICE_NAME> instead of <SERVICE_NAME>Api in index.ts files and I'll release beta.13 if you know how to fix this so I can use <SERVICE_NAME>Api instead I'll be able to revert back to those pretty quickly


Fixed loading issue of woq model with parameters

Type of Change
bug fix
No API changed
Description
Fixed loading issue of woq model with parameters
Expected Behavior & Potential Risk
load woq models successfully with some parameters,such as 'use_auth_token', 'revision'..., and so on.
How has this PR been tested?
Local tested

Optimize UT failed due to baseline issues.


feat(generic): add Shuffle

What?
add Shuffle
Why?
It's on the todo list
How?
using rand.Shuffle

Codecov Report
Base: 97.93% // Head: 97.94% // Increases project coverage by +0.01% :tada:

Coverage data is based on head (f2dfb7d) compared to base (7530717).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #70      +/-   ##
==========================================
+ Coverage   97.93%   97.94%   +0.01%
==========================================
  Files           7        7
  Lines         970      975       +5
==========================================
+ Hits          950      955       +5
  Misses         14       14
  Partials        6        6

Impacted Files
Coverage Δ

generic.go
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


History

Setup or portable version of the app?
Portable
Steps to reproduce

Open any manga.
Close it and open another chapter or manga.

Test File - TESTTE~1.ZIP
✔ Expected Behavior

Explained in #69 and below comments.
To record all read chapters.
And latest read chapters at the top.
And manga, chapter titles to respect margins.

❌ Actual Behavior

Only records latest record and deletes the previous record.
Clips through the margins.

https://user-images.githubusercontent.com/116664905/228768769-3ad10d0a-615c-450b-be44-98ed978b0f5a.mp4

Only records latest record and deletes the previous record.

Thats because there's a option to disable chapter recording. #74


[HOLD for payment 2024-03-29] [Performance] Chat Switch Improvement Part 1

Coming from this proposal from @hurali97
### Problem/Solution:
On Android, switching a chat takes noticeable time and doesn’t offer a good user experience. Benchmarking the main on a Mid-range android device gives us the following metrics:
Main: 7616, 7628, 7639, 7643, 7649 = 7635 ms
These durations are recorded on a debug build so we can assume that in production it’ll be shorter but that doesn’t guarantee good user experience, especially on low-end/ mid-range device. After investigating, the areas we find that this is one of the most complex piece to improve, so let’s start with what’s rather doable.
LHNOptionList  leverages withCurrentReportID which adds to the rendering time and also re-rendering of the list when currentReportID is changed. The ideal solution is to put useCurrentReportID directly in the OptionRowLHNData since currentReportID is being used to evaluate isFocused prop for this component. We can save that process and do it where it’s needed to not render other parts of React tree.
When user taps on OptionRowLHNData the user navigates to the ReportScreen in that period a few unnecessary Onyx calls are being made:
First up is ComposeWithSuggestion where draft is set to false, even if it’s already set to false. Because in SilentCommentUpdater we call updateComment on mount.
Next, InteractionManager can be used to offload the work that happens before the user navigates to the ReportScreen. We can delay that work until the navigation is completed so that the user doesn’t feel that onPress is stuck.
Whole reportAction is being passed to ReportActionItem and it only uses some properties from it, so it makes sense to make it light weight and then pass it to ReportActionItem . The same concept is applied to ReportActionsList which now uses light weight report object.
Finally, there were handful unnecessary re-renders happening down the tree due to inline objects and functions :no_entry_sign:
After all these improvements following is the results on debug build on the mid-range android device:
Android: 4221, 4137, 4102, 4096, 4160 = 4143.2 ms
So there’s about 3500 ms reduction in the total time, giving us around 4143.2 ms ( as compared to 7635 ms ), from when user taps on the OptionRowLHN and until the report is visible. There’s still room for improvement in this area and we will try to follow up on this with another PR.
As of now, as part of the investigation we also created the PR here, which will be ready for review after some cleanup and failing tests 🙏
P.S: some of the changes are already present in PR so they will be removed from this PR once the mentioned PR is merged.
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b6dca257065e9f96
Upwork Job ID:<PHONE_NUMBER>026690048
Last Price Increase: 2023-12-11

Still working on this

The PR had to be reverted

@allroundexperts is this warning an error or valid?

This is valid. We have discovered a small UI issue.

I see one of the PR is merged into production. I think the automation is off here, it looks like there is another related PR in the review process. I think we should hold off on payments until then but keep me posted @allroundexperts.

@allroundexperts - we are all set here and there are no other PRs to wait for - right?

https://github.com/Expensify/App/issues/38966#issuecomment-2019846492

Looks like this work, and the below PR might be responsible for this

https://github.com/Expensify/App/pull/38255

Is this a bug that is already being considered and worked on? Or planned to be addressed in the future?

@allroundexperts - can we get an update for @mallenexpensify? I need to confirm if we should handle in another GH and continue with the payment process here. Thanks!

@allroundexperts 👀 on the above plz

I think we can go ahead with payment on this one, the PR has been complicated and we already had second iteration on it. I have bumped the PR authors to look into that issue and review the proposals.

With @mountiny's feedback, here is the payment summary:

External issue reporter - N/A
Contributor that fixed the issue - @hurali97 payment handled by partner
Contributor+ that helped on the issue and/or PR - @allroundexperts $500

Upwork Job: N/A
Extra Notes regarding payment: There is regression which typically results in a decrease in pay. After reviewing this GH, these changes were complex. I'm suggesting leaving the bounty amount at the standard rate.

@alexpensify , added is due payment via NewDot, to make it clear I have the below saved as a textexpander, to help keep things consistent.
Contributor: @ paid $ via Upwork
Contributor+: @ paid $ via NewDot

Noted!

$500 approved for @allroundexperts


Config settings

Added configuration settings to the main file and a set time function.  However, since the plugin doesn't 'activate', I couldn't get the settings to show up properly.
https://discuss.atom.io/t/configuration-vars-dont-show-up/14480

Try pulling latest master. I have removed the activationCommands from package.json https://github.com/apigarage/atom-pomodoro-app/commit/7be5e3876c519dee57b2fed30d689de82d52b184#diff-b9cfc7f2cdf78a7f4b91a753d10865a2L8. Now, the package should be loaded on start of Atom.

Hmm. Something strange is occurring. Upon further investigation, the settings view isn't working correctly with pomorodo.
https://github.com/MajinBui/atom-pomodoro-app/blob/config-settings/lib/index.coffee#L5-L17
When these lines are simply copied into the ascii-art package for testing, they show up in the settings menu for it.

However, it does not appear anywhere in atom's section.  In fact, not even the ReadMe file is being read.

Seems like, your solution is working. haven't tried it on my machine, yet. This is another crazy week for me, but will look into it again on next weekend. #crossingmyfingers.

I'll play around with the base code as well, but otherwise I wish you good luck.

I fixed it.  The issue was a on the package.json file where the "name" key had to be exactly the same as the project folder name.  Always the small typos that get you.

That's a very good catch. I was trying to follow a guideline where they ask us to not use atom in their plugin names. May be, we can rename things later on.
The code is perfect. Just one comment regarding: do we need seconds in the settings or not? IMO, we don't, but I am okey if you have strong preferences for seconds.
Happy to merge the code as soon as you get back. Well done :) :).

I'd prefer it without seconds as well haha. I'll change it up in a few.

Done.


Reachability overlay isn’t removed when connection works again

I just got into a state where the “Could Not Reach Artsy” alert was laid over the window, but once the connection came back it was never removed. I could still change tabs and see that the app worked.
We have 1 review from a user that might be about this issue:

Never "connects" to Internet
The one and only message I get consistently is that Artsy cannot connect to the Internet. No way that resolve it. Besides, it is a false message anyway.

I didn’t find any steps yet to reproduce it, but hopefully looking at the code will shed enough light on this.

Yup I am getting it every time I tap the heart

Apparently you are supposed to tap the overlay and will go away. Not sure if I had tried that and it stayed on screen or not.
In any case, it’s not very clear what action the user is supposed to take. Why don’t we use a normal alert view for this?

The overlay could be removed but no content ever loaded.
Katarina

On Jul 13, 2015, at 7:30 AM, Eloy Durán<EMAIL_ADDRESS>wrote:
Apparently you are supposed to tap the overlay and will go away. Not sure if I had tried that and it stayed on screen or not.
In any case, it’s not very clear what action the user is supposed to take. Why don’t we use a normal alert view for this?
—
Reply to this email directly or view it on GitHub.

@katarinabatina What about removing this pseudo alert view completely and replace it with a normal iOS alert with an OK button? It makes it clear how to dismiss the alert, that it’s completely dismissed before doing anything else with the app, and any future (and now) layout issues (#615).

if we were able to cache data so there was something to look at, I would probably prefer going with a more minimal banner that just says
"no internet connection" but I dont think we're close to having offline caching yet correct?

if we were able to cache data so there was something to look at

I think that in most cases where this view is shown, there actually is content being shown, it’s just that the last action you wanted to perform didn’t succeed due to connection issues. It’s also just as dismissible as any other alert, just slightly prettier, but with the downside that people don’t necessarily know it’s an alert or that they have to tap it.
In case there’s no connection and no content loaded yet (on app launch) the other view is shown instead: https://github.com/artsy/eigen/issues/624#issuecomment-120898058

but I dont think we're close to having offline caching yet correct?

Nope.

Moving to #644.


Output is incorrectly shown in the Records value equality code sample

In code sample 2:
Since records works on the concept of value equality, after assigning a new value at the 0th index of PhoneNumbers array in the instance of the person1 object, while testing the equality, the output will be False.
person1.PhoneNumbers[0] = "555-1234";
Console.WriteLine(person1 == person2); // output: True (this will be False and not True as shown in this page)
Kindly verify and update.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2273625e-4548-2d59-bc67-3a2d7a66c113
Version Independent ID: 43afd68c-d036-8516-f112-fe9da047da44
Content: Records - C# Programming Guide
Content Source: docs/csharp/programming-guide/classes-and-structs/records.md
Product: dotnet-csharp
Technology: csharp-fundamentals
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

Closing this issue as it is incorrectly raised.
Since the 3rd positional parameter (PhoneNumbers string array) is instantiated separately and then assigned to both the Person objects.
As arrays works via reference, both person object will refer to the same instance and modifying it in either place will affect both, that way, the output while testing the value equality will be True as indicated in the page. No modification is necessary.


Improve documentation for dapr init --slim

Improve documentation for dapr init --slim, the documentation should include how to configure components and run placement service. Without this documentation its difficult for users to setup correct dev env and they run into issues like this

@amanbha There is part about enabling actors in the Howto for self-hosted Dapr without docker containers. https://github.com/dapr/docs/tree/master/howto/self-hosted-no-docker#enabling-actors
If needed we might need to improve the docs more. I would probably move this to the docs repo with a Note to add a link in CLI's Readme.

Thats great @mukundansundar yes making it more discoverable from cli would be good here.

Closing this issue for now as there is documentation available here -> https://docs.dapr.io/operations/hosting/self-hosted/self-hosted-no-docker/


Add a setting to control the position of notification pop ups

The new notifications pop open at the lower right corner of the editor.  Some command palette actions pop these up with a button that I need to click on to proceed.  In these cases, I have to move my mouse from the top center of the window down to the bottom right corner of the window.
One such example is the "Git: Delete branch" command.  I have to click on the branch I want to delete from the drop down selector, then click the notification button far away in the corner to confirm the delete.  If I am deleting multiple branches at a time (because I'm finally cleaning up my local state 😜) I have to move the mouse back and forth a ton of times so now I use a terminal for this task instead.
It would be nice to have an option that lets me decide where I want the notifications to appear.  I would choose the top right corner to reduce mouse movement.

I'll narrow this issue down to make the delete branch popup a modal one, which it should be anyways.

I'm trying to repro, but don't get any such popup after selecting a branch to delete. The branch is instantly deleted. I'm on Mac OS X 10.11.16, vscode version 1.21.1


AIP-6788 Optional PVC storage_class_name

Also any chance of extending the @resources tests to include an assertion on this?

Are we going to update documentation or add a comment somewhere explaining what a storage class is and why it is needed here? Might also be helpful to add in the concern from Devex. Would be worth adding cause for me to understand I have to reference the Devex thread and also look up storage class kubernetes documentation.

+1 for @aaron-arellano 's request to add reference, so that we know why this feature is needed retrospectively.

Shall we default storage class to EBS for volumes, instead of creating a new field here?
The request was "DevEx is requesting we expose the storage_class_name for PVCs", should it be exposed as a label on the pod, instead of as a filed on SDK user side?

@aaron-arellano I added comments and link to the AIP-6788 bug in the code
@alexlatchford I updated the resourcs_flow.py test to use the new volume_type.  It is not easy to determine the PVC type attached (without using the k8s client), however the test itself would fail if the volume_type cannot be attached, so no need to assert.
@aaron-arellano regarding our Sphynx documentation: as per the thread, we'll evaluate how this works with ZNN, then determine whether to update the default storage class for all, and whether to expose the volume_type to our customers (we can keep it hidden).
thank you!


20241216-neptyne

master changed a little bit; my changes are not a real problem for code; only dockerfile chnged ....


⚠ LPDM Handbook (hosted on Divio) has degraded performance

In a5e3327, LPDM Handbook (hosted on Divio) (https://repohubdev.tk) experienced degraded performance:

HTTP code: 500
Response time: 6363 ms

Resolved: LPDM Handbook (hosted on Divio) performance has improved in 80a3a05.


Programmatically grant VM access

The instructions on this page indicate how to acquire the secrets from the Key Vault via MSI for a VM that's been configured for such access, but only gives instructions for performing that configuration with the portal itself. I would suggest that there should also be a link under "Grant your VM access to a Secret stored in a Key Vault" to https://docs.microsoft.com/en-us/powershell/module/azurerm.keyvault/set-azurermkeyvaultaccesspolicy?view=azurermps-6.13.0#examples in order to show how to programmatically grant this access in addition to manually granting it through the Portal.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b6ae37a8-0a93-e077-d15f-50d2d0d6aa99
Version Independent ID: 41e1b28a-704d-431c-5dc8-9cbf063f9cc3
Content: Use a Windows VM system-assigned managed identity to access Azure Key Vault
Content Source: articles/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-nonaad.md
Service: active-directory
Sub-service: msi
GitHub Login: @MarkusVi
Microsoft Alias: markvi

@WhitWaldo Thank you for your query. We will check it with the engineering internally and let you know accordingly.

I have created a backlog item to track this.
#please-close


Release other coco pre-trained models

Hi, do you have the plan to release other coco pre-trained modes that are converted from the official repo? Or maybe the convertion code? Thanks!

Thanks for your work! I currently see phi=3, still wait for phi=6 though :)


JSON.stringify breaks indentation

When hijacking deps for templates support or workspace support! Since we stringify and parse, the indentation of the user's package json breaks and becomes like this:
{"name":"example-1","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":"","license":"ISC","dependencies":{"playground-a":"https://fc530866.stackblitz-cr.pages.dev/stackblitz-labs/pkg.pr.new/playground-a@d51ad5a","playground-b":"https://fc530866.stackblitz-cr.pages.dev/stackblitz-labs/pkg.pr.new/playground-b@d51ad5a"}}

Is there any alternative? Maybe we can use Regex?

Niceee, how would we edit the file without breaking indention?

pkg-types is using confbox which will handle indention

I just love that! Let me know if you'd like to send a PR for this.

Continuous Releases are only available in Github Actions.

Since I can't test it locally show me a way to test and make a PR

yea that makes sense, you can just open a pr and try pushing and logging 😄 so don't worry about the spam! would that be good?


reducer inside aggregate_temporal_period, data not passed

Not sure if this issue belongs to here or to openeo-processes-dask.
Packages version:
openeo_pg_parser_networkx.__version__
'2023.4.1'
openeo_processes_dask.__version__
'2023.4.0'

Trying to use aggregate_temporal_period returns me this error, apparently the data parameter is not passed correctly to the reducer?
ProcessParameterMissing: Error: Process Parameter data was missing for process median
Full stack trace below:
Deserialised process graph into nested structure
Running process load_local_collection
kwargs: {'id': <class 'str'>, 'spatial_extent': <class 'NoneType'>, 'temporal_extent': <class 'NoneType'>}
--------------------------------------------------------------------------------
Running process aggregate_temporal_period
kwargs: {'data': <class 'xarray.core.dataarray.DataArray'>, 'dimension': <class 'str'>, 'period': <class 'str'>, 'reducer': <class 'functools.partial'>}
--------------------------------------------------------------------------------

Walking node root-df8d3644-6bd7-4fbe-abc6-d791858a6a6a
Walking node linearscalerange1-6ba14a7b-08d8-4b48-9dad-2cfd773c8ce3
Walking node aggregatetemporalperiod1-df8d3644-6bd7-4fbe-abc6-d791858a6a6a
Walking node median1-0ab19f01-dc76-40e3-a08c-4d38573e33f7
Walking node loadcollection1-df8d3644-6bd7-4fbe-abc6-d791858a6a6a

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File ~\Miniconda3\envs\sap\lib\site-packages\openeo_pg_parser_networkx\graph.py:357, in OpenEOProcessGraph._map_node_to_callable.<locals>.node_callable(parent_callables, named_parameters, *args, **kwargs)
    355 try:
    356     # If this node has already been computed once, just grab that result from the results_cache instead of recomputing it.
--> 357     return results_cache.__getitem__(node)
    358 except KeyError:

KeyError: 'aggregatetemporalperiod1-df8d3644-6bd7-4fbe-abc6-d791858a6a6a'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
File ~\Miniconda3\envs\sap\lib\site-packages\openeo_pg_parser_networkx\graph.py:357, in OpenEOProcessGraph._map_node_to_callable.<locals>.node_callable(parent_callables, named_parameters, *args, **kwargs)
    355 try:
    356     # If this node has already been computed once, just grab that result from the results_cache instead of recomputing it.
--> 357     return results_cache.__getitem__(node)
    358 except KeyError:

KeyError: 'median1-0ab19f01-dc76-40e3-a08c-4d38573e33f7'

During handling of the above exception, another exception occurred:

ProcessParameterMissing                   Traceback (most recent call last)
Input In [16], in <cell line: 1>()
----> 1 result_median = cube_scaled.execute()

File ~\Miniconda3\envs\sap\lib\site-packages\openeo\rest\datacube.py:1959, in DataCube.execute(self)
   1957 def execute(self) -> dict:
   1958     """Executes the process graph of the imagery. """
-> 1959     return self._connection.execute(self.flat_graph())

File ~\Miniconda3\envs\sap\lib\site-packages\openeo\local\connection.py:95, in LocalConnection.execute(self, process_graph)
     88 """
     89 Execute locally the process graph and return the result as an xarray.DataArray.
     90
     91 :param process_graph: (flat) dict representing a process graph, or process graph as raw JSON string,
     92 :return: a datacube containing the requested data
     93 """
     94 process_graph = as_flat_graph(process_graph)
---> 95 return OpenEOProcessGraph(process_graph).to_callable(PROCESS_REGISTRY)()

File ~\Miniconda3\envs\sap\lib\site-packages\openeo_pg_parser_networkx\graph.py:353, in OpenEOProcessGraph._map_node_to_callable.<locals>.node_callable(parent_callables, named_parameters, *args, **kwargs)
    351 # The node needs to first call all its parents, so that results are prepopulated in the results_cache
    352 for func in parent_callables:
--> 353     func(*args, named_parameters=named_parameters, **kwargs)
    355 try:
    356     # If this node has already been computed once, just grab that result from the results_cache instead of recomputing it.
    357     return results_cache.__getitem__(node)

File ~\Miniconda3\envs\sap\lib\site-packages\openeo_pg_parser_networkx\graph.py:370, in OpenEOProcessGraph._map_node_to_callable.<locals>.node_callable(parent_callables, named_parameters, *args, **kwargs)
    362             arg_sub.access_func(
    363                 new_value=results_cache[source_node], set_bool=True
    364             )
    366         kwargs[arg_sub.arg_name] = self.G.nodes(data=True)[node][
    367             "resolved_kwargs"
    368         ].__getitem__(arg_sub.arg_name)
--> 370 result = prebaked_process_impl(
    371     *args, named_parameters=named_parameters, **kwargs
    372 )
    374 results_cache[node] = result
    376 return result

File ~\Miniconda3\envs\sap\lib\site-packages\openeo_processes_dask\process_implementations\core.py:82, in process.<locals>.wrapper(positional_parameters, named_parameters, *args, **kwargs)
     79 logger.warning(f"kwargs: {pretty_args}")
     80 logger.warning("-" * 80)
---> 82 return f(*resolved_args, **resolved_kwargs)

File ~\Miniconda3\envs\sap\lib\site-packages\openeo_processes_dask\process_implementations\cubes\aggregate.py:107, in aggregate_temporal_period(data, reducer, period, dimension, **kwargs)
    101     raise NotImplementedError(
    102         f"The provided period '{period})' is not implemented yet. The available ones are {list(periods_to_frequency.keys())}."
    103     )
    105 resampled_data = data.resample({applicable_temporal_dimension: frequency})
--> 107 return resampled_data.reduce(reducer, keep_attrs=True)

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\groupby.py:1201, in DataArrayGroupByBase.reduce(self, func, dim, axis, keep_attrs, keepdims, shortcut, **kwargs)
   1190     return ar.reduce(
   1191         func=func,
   1192         dim=dim,
   (...)
   1196         **kwargs,
   1197     )
   1199 check_reduce_dims(dim, self.dims)
-> 1201 return self.map(reduce_array, shortcut=shortcut)

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\resample.py:257, in DataArrayResample.map(self, func, args, shortcut, **kwargs)
    214 """Apply a function to each array in the group and concatenate them
    215 together into a new array.
    216
   (...)
    253     The result of splitting, applying and combining this array.
    254 """
    255 # TODO: the argument order for Resample doesn't match that for its parent,
    256 # GroupBy
--> 257 combined = super().map(func, shortcut=shortcut, args=args, **kwargs)
    259 # If the aggregation function didn't drop the original resampling
    260 # dimension, then we need to do so before we can rename the proxy
    261 # dimension we used.
    262 if self._dim in combined.coords:

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\groupby.py:1104, in DataArrayGroupByBase.map(self, func, args, shortcut, **kwargs)
   1102 grouped = self._iter_grouped_shortcut() if shortcut else self._iter_grouped()
   1103 applied = (maybe_wrap_array(arr, func(arr, *args, **kwargs)) for arr in grouped)
-> 1104 return self._combine(applied, shortcut=shortcut)

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\groupby.py:1123, in DataArrayGroupByBase._combine(self, applied, shortcut)
   1121 def _combine(self, applied, shortcut=False):
   1122     """Recombine the applied objects like the original."""
-> 1123     applied_example, applied = peek_at(applied)
   1124     coord, dim, positions = self._infer_concat_args(applied_example)
   1125     if shortcut:

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\utils.py:186, in peek_at(iterable)
    182 """Returns the first value from iterable, as well as a new iterator with
    183 the same content as the original iterable
    184 """
    185 gen = iter(iterable)
--> 186 peek = next(gen)
    187 return peek, itertools.chain([peek], gen)

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\groupby.py:1103, in <genexpr>(.0)
   1061 """Apply a function to each array in the group and concatenate them
   1062 together into a new array.
   1063
   (...)
   1100     The result of splitting, applying and combining this array.
   1101 """
   1102 grouped = self._iter_grouped_shortcut() if shortcut else self._iter_grouped()
-> 1103 applied = (maybe_wrap_array(arr, func(arr, *args, **kwargs)) for arr in grouped)
   1104 return self._combine(applied, shortcut=shortcut)

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\groupby.py:1190, in DataArrayGroupByBase.reduce.<locals>.reduce_array(ar)
   1189 def reduce_array(ar: DataArray) -> DataArray:
-> 1190     return ar.reduce(
   1191         func=func,
   1192         dim=dim,
   1193         axis=axis,
   1194         keep_attrs=keep_attrs,
   1195         keepdims=keepdims,
   1196         **kwargs,
   1197     )

File ~\Miniconda3\envs\sap\lib\site-packages\xarray\core\variable.py:1947, in Variable.reduce(self, func, dim, axis, keep_attrs, keepdims, **kwargs)
   1943     if isinstance(axis, tuple) and len(axis) == 1:
   1944         # unpack axis for the benefit of functions
   1945         # like np.argmin which can't handle tuple arguments
   1946         axis = axis[0]
-> 1947     data = func(self.data, axis=axis, **kwargs)
   1948 else:
   1949     data = func(self.data, **kwargs)

File ~\Miniconda3\envs\sap\lib\site-packages\openeo_pg_parser_networkx\graph.py:370, in OpenEOProcessGraph._map_node_to_callable.<locals>.node_callable(parent_callables, named_parameters, *args, **kwargs)
    362             arg_sub.access_func(
    363                 new_value=results_cache[source_node], set_bool=True
    364             )
    366         kwargs[arg_sub.arg_name] = self.G.nodes(data=True)[node][
    367             "resolved_kwargs"
    368         ].__getitem__(arg_sub.arg_name)
--> 370 result = prebaked_process_impl(
    371     *args, named_parameters=named_parameters, **kwargs
    372 )
    374 results_cache[node] = result
    376 return result

File ~\Miniconda3\envs\sap\lib\site-packages\openeo_processes_dask\process_implementations\core.py:65, in process.<locals>.wrapper(positional_parameters, named_parameters, *args, **kwargs)
     63         resolved_kwargs[k] = named_parameters[arg.from_parameter]
     64     else:
---> 65         raise ProcessParameterMissing(
     66             f"Error: Process Parameter {arg.from_parameter} was missing for process {f.__name__}"
     67         )
     68 else:
     69     resolved_kwargs[k] = arg

ProcessParameterMissing: Error: Process Parameter data was missing for process median

Sorry, I didn't see this - please tag me if I don't respond in time!
Could you please attach the process graph you were trying to parse? Then I can have a look!

I attach a notebook showing the error. Let me know if this is enough @LukeWeidenwalker
test_aggregate_temporal.zip

Ah, this was indeed a bug in aggregate_temporal_period, fixed with https://github.com/Open-EO/openeo-processes-dask/commit/03676a51d7ab4bea559d4465b21123991f57bc3f.


Creation of application following API spec

We have a new API Spec to follow.  This is appears to be a new application and does require changes in the main application.
It has the following functions:

[GET] "/latest", returns latests messages
[POST] "/register", different from the other main application as it does not return a rendered template.
[GET] "/msgs", returns some messages.
[GET, POST] "/msgs/", get messages for user or post new messages for them
[GET, POST] "/fllws/", get follows for user or follow new user

Implementation of this should probably wait until after the main application is up and running as it will use many of the same functions.
Hosting of this application probably needs to be on another port, as it also uses the "register" and we cant add a "/api" before. Maybe we can host it on api.*.* for this and the main application on www

Rest of following this spec requires the website to display messages and follows, before routing can happen.

I dont think it should return a view.


added mongodb plugin

KTOR-5271 Add MongoDb plugin

Could you try with the new YAML / separate source file format?
Examples include: SSE, CSRF
I could also provide a migration script for the JSON file, that has been on my TODO list for some time now.

It looks like this could also go under a new group "org.mongodb" with a separate group.yaml, similar to how the postgres one is organized.

Looks like there's a compilation issue with your snippet:
/mnt/agent/work/69bf223698a8ad7f/plugins/server/org.mongodb/mongodb/2.2/CarsSchema.kt:22:75: Unresolved reference: serializer

Oh, I got confused by seeing the CI passing but I think it was my branch because the trigger is broken 😅

Something weird going on with the commit history and diff now after re-basing...... ❓


Make long test execution opt-out instead of opt-in

This matches what swift-syntax is doing and ensures that new contributors run all tests by default.

@swift-ci Please test

They increase parallel testing from 18s to 40s, IIRC. So, quite significant.

In terms of environment variable, I do actually prefer namespaced (SOURCEKIT_LSP_*).

Which other long tests should it be skipping? I actually like having the exact same name for swift-syntax and sorucekit-lsp. Plus, it’s shorter to type without the prefix.

They increase parallel testing from 18s to 40s, IIRC. So, quite significant.

Oof. Still, probably fine since if you're actually working on it often you can add the environment variable.

Which other long tests should it be skipping?

Who knows, people don't necessarily just work on our projects 😅. It could be that some other random project uses an environment variable with the same name too. Plus if I had a random environment variable in my .*rc and it was called SKIP_LONG_TESTS I would later wonder what on earth it's for (yeah yeah I could add a comment for it).

Oof. Still, probably fine since if you're actually working on it often you can add the environment variable.

Yes, it’s not that bad that we definitely always want to skip them. Skipping them is really just an optimization for faster local iteration times if you know what you’re doing IMO.

Who knows, people don't necessarily just work on our projects 😅. It could be that some other random project uses an environment variable with the same name too. Plus if I had a random environment variable in my .*rc and it was called SKIP_LONG_TESTS I would later wonder what on earth it's for (yeah yeah I could add a comment for it).

Hmm, I never considered setting them as environment variable in my shell profile. Is that something you would do? What we suggest is that you either set them as SKIP_LONG_TESTS=1 swift test or in the Xcode scheme and in both of these cases it’s not ambiguous at all.

Let’s keep without until it causes real-world ambiguities or issues.


Payment Gateways

Good day.
The 5 Payment Gateways in PH7 CMS is not supported in South Africa.
One of the preferred gateways in South Africa is  PayFast.
Is there a Bank Transfer / Wire gateway available ?
Kind Regards
Doep Du Plessis

Hi there @EaglecoastHosting ,
Thanks very much for your message! Unfortunately, at the moment this is not supported. There was already a similar request a little while ago, and my reply was: https://github.com/pH7Software/pH7-Social-Dating-CMS/issues/526#issuecomment-488922355