Support email OTP

Preflight Checklist

[X] I could not find a solution in the existing issues, docs, nor discussions
[X] I have joined the ZITADEL chat

Describe your problem
Hi guys!
Are there any plans to support email OTP in the near future? I'm referring to 6-digit OTP codes, not Magic Links. We've had lot of people express dislike for Magic Links, mainly because people prefer to get OTP codes from their phones when logging into desktop apps. Magic Links make that UX impossible.
Also, Magic Links don't play nicely with PWAs. Even Apple mentions it in their recent announcement about Web App (PWA) support and suggests both email OTPS and Passkeys as 2 alternatives. See timestamp 7:35: https://developer.apple.com/videos/play/wwdc2023/10120/. Unfortunately Passkeys aren't an option for everyone due to compatibility reasons.
Describe your ideal solution
I understand email OTPs might not be the right choice for things like financial institutions but they're the best all-round option for B2C platforms that want to enforce 2FA by default. The only "enforced" 2FA regular consumers aren't annoyed by is email-based.
We really wanted to use Zitadel for our SaaS but we're probably going with our framework's built-in auth instead for this reason. But I thought I'd check just in case this was on the horizon for Zitadel.
Version
No response
Environment
Self-hosted
Additional Context
No response

Hei @binaryfire
There is already an issue for this: https://github.com/zitadel/zitadel/issues/6099
Its about having one time code for authentication. email would just be one channel, sms could be another.
There is no ETA yet, but it is in the product backlog. We generally prioritize based on the customer and community requests. So if you would like to see it implemented please upvote or comment on the issue.
I will close this issue here to avoid duplicates

Hi @hifabienne. Great, thanks! I'll follow there.

Hi @hifabienne. It seems the issue you linked is related to OTP as an alternative login method. I was referring to email codes for MFA (i.e. after users have correctly entered their username and password, they are emailed a 6-digit code). It's what Slack, Microsoft etc. use for "default" MFA when a user hasn't enabled TOTP MFA.
Sorry, I wasn't very clear in my comments above! Are there any plans to add this to Zitadel? Consumers are already quite used to this flow because many of the big companies use it.

Hei @binaryfire
Thanks for the clarification. There is also an issue for that, I could have linked both already before.
So this is about the One time code as a second factor: https://github.com/zitadel/zitadel/issues/6100
In regard of ETA and time line, its the same as with the issue mentioned above.
So please add your comment/upvote there.


Let EditorialStatus written into CSV by adding the fieldToCsv function in BulkMapping in BulkAd

When we use BulkFileReader to read a TextAd in csv file which was written by BulkFileWritter, we found that EditorialStatus could not be got, but this status is meaningful for us to use.
So we create a pull request.

Editorial reasons are already provided. I have added an example here: https://github.com/bing-ads-sdk/BingAds-Java-SDK/commit/e92588604a58bdcb0c41261867862afca2a19977
Please let me know if you have any questions.

Thanks! The change makes sense, but currently breaks unit tests. Let's check getEditorialStatus() for null and return null in this case (otherwise .value()).

I may have misunderstood the original intent of this pull request, so I'll ask you to clarify. If you want the ad editorial status or editorial codes / reasons, they are already available via bulk download. Otherwise are you trying to write editorial status to a file? Its not clear why you want to write a value that is read-only (upload would ignore it), so please clarify the use case - if that is what you are asking for. Thanks!

Let me explain why we need this.
When we download all objects via bulk download function, you guys gave us a Iterator to get the objects. We don't want to use this objects immediately, instead we are going to store these objects somewhere using your BulkObjectWriter.
But unfortunately current implementation will not write the EditorialStatus into file, so when I use BulkStreamReader to read the objects, I can't get EditorialStatus.

OK, understood. The BulkServiceManager class already provides downloadFileAsync. The purpose is as you described i.e. to download the file immediately, and access the contents later. Have you tried this?
// Submit the download request, and the results file will be downloaded to the specified local file.
File resultFile = BulkService.downloadFileAsync(
downloadParameters,
progress,
null).get();
System.out.printf("Download result file: %s\n", resultFile.getName());
// If you are storing the file to be read later, take note of the file types.
// For example if you set LastSyncTimeInUTC to null, the contents of the file
// represent a full download.
BulkFileReader fullDownloadReader = new BulkFileReader(
resultFile,
ResultFileType.FULL_DOWNLOAD,
DownloadFileType.CSV);
for(BulkEntity entity : fullDownloadReader.getEntities()){
if(entity instanceof BulkTextAd){
System.out.printf("EditorialStatus: %s\n", ((BulkTextAd) entity).getTextAd().getEditorialStatus());
}
}
Does this help?
Best regards,
Eric

The key point for my pull request is not how to correctly read the value from a result file. The point is when I use the writer to write some value into file, I could not get the original value I wrote into that file. The writer and the reader are not compatible and consistent.

Thanks for submitting this pull request. It was integrated with version 9.3.2.


[WIP] allow building spark gpu docker images

What changes were proposed in this pull request?
Enhance bin/docker-image-tool.sh to allow building GPU images. See https://issues.apache.org/jira/browse/SPARK-26398.
How was this patch tested?
Docker images are built manually and verified through docker run.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

I'm mostly following the current structure. There are a few things that can be done to simplify this and lessen the maintenance burden:

As I mentioned in the JIRA issue, if we are willing to switch to Ubuntu, both CPU and GPU images can share the same Dockerfile, with an argument for different base images.
Perhaps it's an overkill to have separate JVM/Py/R images, they can be combined into one.
Spark probably should publish official images to, say, docker hub, so end users can just pull the images directly or use them as base.

Hi @RongGu there's some complications around this. Publishing to docker images as an ASF project is a bit complicated because of GPLd code in the image, I've been meaning to follow up on this but life has been kind of busy. The separate images do seem a bit silly I agree, but the overhead of having a combined image could be non-trivial (e.g. shipping Python to every worker when it's not required.)
I agree with @felixcheung that adding more image types gives us more maintenance burden, if we could simplify this down (maybe have param inside of the other docker files) making it easier for end users to deploy GPU workloads does seem important.
I know @ifilonenko has given a lot of thought about these issues so I'd really value his opinion here.

To be honest, I'm a little wary of the prospect of publishing docker images, not just because of licensing issues. It also means we're on the spot to keep those images up-to-date, e.g. because of security updates in the base images. I generally see the dockerfiles in the distro as "templates" that people could customize to their needs and should manage / publish in their own environments.
That being said, if we could parameterize things it could be a simple enhancement. Is the base image the only thing that changes in the gpu dockerfiles?

@vanzin yes more or less. Since Ubuntu and Alpine use different package managers, the setups are slightly different. If we are willing to use Ubuntu as the base, then I think we can just use one set of dockerfiles and swap out the base image as an arg. Should I give it a try and update this PR?

Swapping the base is a non-trivial change, and if it's what we want to do Spark 3 would probably be the right time to do that but I know some folks have strong opinions about making light-weight base images which Ubuntu might make more challenging (e.g. @ifilonenko @mccheah )?

Maybe while we're discussing this on list we can give this PR a [WIP] tag so folks know to skip it?

Is there any benefit in keeping this PR open until SPARK-24655 is sorted out?
I'm pretty sure we don't want to maintain multiple docker images in the Spark repo.

I'm going to close this for now. Let's focus on defining what images should be before going too crazy changing how many combinations are maintained in the Spark repo.


Update defaults for RATE_LIMIT_TOKEN_REFRESH

What kind of change does this PR introduce?
Change the defaults forRATE_LIMIT_TOKEN_REFRESH from 30 to 150 to allow for more token refreshes and also to match what is offered on the hosted platform.

@J0 is it necessary to change the default here if we're already defaulted to 150 on the hosted platform?

@J0 is it necessary to change the default here if we've already defaulted to 150 on the hosted platform?

I guess it causes confusion. Let's equalize the defaults as much as possible.

Yup  it's not necessary but would reduce potential confusion when devs cross reference against the codebase for rate limit numbers. Ideally we (devs) should refer to the config at api layer but it would help if it's in sync with GoTrue
Impetus behind the issue is here: https://supabase.slack.com/archives/C022071RB2L/p1699357674755729


Visual Design for Available and Installed Items in Menu

🎨 Visual Design Request
Available and Installed Items in Menu

🎯 Core Requirements

display the currently selected item when menu is open and closed
indicate the current selection in the dropdown list
indicate if any of the items in the dropdown list are already installed
support showing both the primary and secondary package versions
support a unique set of dropdown list items per row

🍆 Non-requirements
🥅 Acceptance Criteria

[ ] Visual Design Spec submitted (link)
[ ] Visual Design Spec reviewed by design team
[ ] Visual Design Spec reviewed by dev team

A few different options


[RisingWave] remove the "Aggregate Functions" panel

Description
Given that RisingWave doesn't support Aggregate Functions as well as pg_catalog.pg_aggregate, clicking into this panel will pump up errors. Please remove this panel if possible.
If I understand correctly, the method supportsAggregates in PostgreServerRisingWave should returns false.
https://github.com/dbeaver/dbeaver/blob/devel/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/impls/PostgreServerRisingWave.java#L129-L132
DBeaver Version
Version <IP_ADDRESS>403091004
Operating System
13.0.1 (22A400)
Database and driver

Database name: RisingWave
Driver name: postgres-jdbc 42.7.2

Steps to reproduce

Connect to a local RisingWave

Double-click the panel "Aggregate functions"

The error below will appear

ERROR: Failed to prepare the statement

Caused by:
  Feature is not yet implemented: pg_catalog.pg_aggregate is not supported, please use `SHOW` commands for now.
`SHOW TABLES`,
`SHOW MATERIALIZED VIEWS`,
`DESCRIBE <table>`,
`SHOW COLUMNS FROM [table]`

Tracking issue: https://github.com/risingwavelabs/risingwave/issues/1695

Additional context
No response

Hello @neverchanje
Thanks for the report!


Create index.html

Version 2 being obsolete. I close the ticket.
Feel free to use version 3. Thank you!

we already have a documentation?

we already have a documentation?

Yes, there are still parts to finish. But there are already a lot of things to create a game
https://docs.rpgjs.dev

Yes, there are still parts to finish. But there are already a lot of things to create a game
https://docs.rpgjs.dev

Nice

Nice


B 21668 main

INT PR2
INT pr 1

Commit discrepancies

ad4727c
Main bf37476 does not match int cherry pick 5fab721
remove exception for oconus-oconus
Main 857c45f does not match int cherry pick  65ec8f0
remove odd dup
Main 20d1154 does not match int cherry pick 9396a35

Might be worth making a clean branch

that would explain the weird circle fails...

Additional discrepancies
put it back
put that back
put that back, reset test coverage
2 decimals
Main https://github.com/transcom/mymove/pull/14360/commits/416357f82ed49adfe7924591d1133247c5fec3f8 does not match int cherry pick https://github.com/transcom/mymove/pull/14230/commits/9c63021cc9a69868fc79e97af88c77da3e82e006
add import


New script to add optional columns in public schema

This is an idea for a workaround of the missing column problem.

Closed this PR to try a different idea.


Refactor k-NN documentation

Issue #, if available:
Description of changes:
This PR refactors and extends the documentation for k-NN. I broke up the documentation into several different sections. I also moved a lot of content in the k-NN README and repo to here. In the future, I believe all usage information should be located in this repository. I will submit a PR to k-NN repo removing a lot of the usage documentation.
I marked in WIP because I will need painless extension documentation from @VijayanB. I will remove WIP status once I add that documentation.
I also believe I messed up some of the math formulas and other markdown elements. Please provide corrections where I may have gone wrong. Also, any other suggestions are appreciated as well.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

I added painless documentation from #381
@aetter, @keithhc2, @VijayanB, @vamshin could you all please review?


normalizing snarky yojson serializers to match kimchi common

Closes #12591

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me


xorg.libXt: 1.2.0 -> 1.2.1

Motivation for this change
https://lists.x.org/archives/xorg-announce/2021-January/003070.html
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS

[x] Fits CONTRIBUTING.md.

@ofborg eval

@ofborg eval

What needs to be done to get this merged?

@ofborg eval


Bugfix - Failure due duplicated records in statistic tables

https://github.com/Sheridan/smartctl_exporter/issues/3

Hi @lahwaacz
Thanks for your comment, I completely agree with you.
Frankly speaking I'm not looked too careful at the origins of those values. The goal was to fix it quick (and apparently slightly dirty) 😁
I'll review them more carefully on the weekend.

closing for now


How to enable editable.remove?

How do I enable remove option so I can delete items from the timeline? I've tried editable: {remove: true } but nothing happens.

That's indeed the correct way: editable: {remove: true}. I'm not sure why this doesn't work in the angular-directive.

I had a * {overflow-x: hidden;} for a different reason, so .vis-item{overflow-x:visible !important;} fixed it, thanks.


Social login provider options don't show up in register

With a social login provider enabled, go to register.
No social login provider is displayed.
It shows up in the login view.

Fixed in https://github.com/aspnet/AspNetCore/pull/7002


testNotEqual Not Working

Challenge Name
https://www.freecodecamp.com/challenges/comparison-with-the-inequality-operator#?solution=%2F%2F Setup
function testNotEqual(val) {
  if (val !%3D '99') { %2F%2F Change this line
    return "Not Equal"%3B
  }
  return "Equal"%3B
}

%2F%2F Change this value to test
testNotEqual(10)%3B

Issue Description
Use (val != "99")
Ctrl-Enter
Browser Information

Browser Name, Version: Chrome
Operating System: Windows 10
Laptop

Your Code
// Setup
function testNotEqual(val) {
if (val != '99') { // Change this line
return "Not Equal";
}
return "Equal";
}
// Change this value to test
testNotEqual(10);
Screenshot

Your if statement should include a number not a string. Please use the Help chat room for getting challenge related help. Happy Coding!


create! and save! don't throw errors with mongo_mapper + sorcery

Not sure if this is specific to mongo_mapper or not, but when Sorcery is in place calling save! will not throw an error.
When I removed Sorcery from the project, save! and create! work as expected.  Don't have any more information at this point - is this a known issue?

Maybe it's related to this pull?
https://github.com/NoamB/sorcery/pull/91
https://github.com/kbighorse/sorcery/commit/b93260df5ca0700e2b3086f375b9e9694fd8bf60#L0R16


Sub-commands help truncation in upper-level command help.

This example:
import click

@click.group()
def cli():
    """Top-level spam."""
    pass

@cli.command()
def eggs():
    """Second-level spam: spam, spam, spam, spam, spam, spam! Lovely spam!
    Wonderful spam! Lovely spam! Wonderful spam!
    """
    pass

if __name__ == '__main__':
    cli()

used together with Click 6.2,  will produce:
$ python click_test.py
Usage: clitest.py [OPTIONS] COMMAND [ARGS]...

  Top-level spam.

Options:
  --help  Show this message and exit.

Commands:
  eggs  Second-level spam: spam, spam, spam, spam,...

Notice ellipsis in the end and truncated help for eggs command - it was made by Click, not by me.
How to avoid that?

Hi you can pass the help text as short_help like
@cli.command(short_help="Second-level spam: spam, spam, spam, spam, spam, spam! Lovely spam!     Wonderful spam! Lovely spam! Wonderful spam!")

I came across the same issue. I was checking the code and if a short_help is not defined it restrict the help length to 45 characters. If it is longer than 45 it adds the ellipsis in the end and truncate the string.
Why is it defined to 45 characters ?
Also, if it has to restrict to 45 characters, wouldn't be short_help instead of help ?
It looks like the purpose of help and short_help are inverted.

@mitsuhiko While this was closed more than 4 years ago, I cannot ask myself why it was closed without any explanation as it clearly looks like a valid bug in click.
The current behavior of click regarding help and short_help seems just wrong.


New ui circuit2verlog

Integrated circuit2verilog changes in the new_UI branch.

Coverage decreased (-0.1%) to 87.962% when pulling 40fb1b85b0f020308eb2f463adfd359f2f25c122 on ShobhitBehl:new_UI_circuit2verlog into acc1dffd94f36c7519d3db6f98b4699f2f7d0805 on CircuitVerse:stories/circuit2verilog.

Merged via #1889


add /host/estimatescore to estimate the host's HostDB score

This PR adds a new endpoint to the API, /host/estimatescore, enabling API consumers to get an idea of their estimated HostDB score with their host's current settings.

Latest commits add a ConversionRate field, used to indicate how often your host will be contracted by renters given the provided settings.


fix: correct affected versions in CVE-2024-4006

🗣 Description
The versions indicated by GitLab's Release and the version actually described in ADP Container are different.
ADP content is only 16.7.0 and 16.10,16.11. Fix this so that the correct version is eligible.

An issue has been discovered in GitLab CE/EE affecting all versions starting from 16.7 before 16.9.6, all versions starting from 16.10 before 16.10.4, all versions starting from 16.11 before 16.11.1 where personal access scopes were not honored by GraphQL subscriptions. This is a medium severity issue (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, 4.3). It is now mitigated in the latest release and is assigned CVE-2024-4006.

https://about.gitlab.com/releases/2024/04/24/patch-release-gitlab-16-11-1-released/

@MaineK00n thanks for the report. I'm going to merge this but be aware that changes may be overwritten once the upstream data changes push out.


QUESTION: Why scoop is not available after install?

I am new to scoop and trying to use it to automate server environment setup.
I am installing scoop via Octopus Deploy on target server. Later when attempting to run scoop install <app> it is not available as if not installed...  My script triggers new install, which fails as then it detects that it is already installed...
My Question: How scoop is being "loaded"? What could be the reason it is not being recongised after install? Octopus Deploy is using the same system account to install and run commands later...
How could I fix this - Can I force scoop load explicitly, if it is powershell module?
Thanks!

Scoop "installer" detect installed scoop via these functions. Basicly only when he found $env:SCOOP\apps\scoop folder
https://github.com/lukesampson/scoop/blob/cef103bf469e1494c35703c8411d47c88236db24/bin/install.ps1#L35-L40
https://github.com/lukesampson/scoop/blob/cef103bf469e1494c35703c8411d47c88236db24/lib/core.ps1#L90-L97
Could you share your script??

Thanks for your response. Yes, it detects the installation via the environment variable, however when attempting to call scoop it is not available so my question is how does scoop "bootstaps" its self? Is is via PowerShell profile?...

It uses custom shim inside $env:SCOOP\shims\. After scoop download all neded file it shim itself and append shims folder into path.
https://github.com/lukesampson/scoop/blob/cef103bf469e1494c35703c8411d47c88236db24/bin/install.ps1#L55-L59

That is the confirmation I was looking for - I shall check if the shims is properly added to path.

Alternatively, the issue might be because it is being run under system privileged account...


Could we have an async multiprocess-safe lock?

Hi,
Thanks for creating such an amazing lib! I'm asking this because the built-in multiprocessing module has locks which are useful for handling shared memory safely. However, obtaining the lock is a blocking operation which can be slow in some cases.
Therefore, is it possible to have an async version of multiprocessing lock?
Thanks!

https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Lock
Seems like this could be as simple as a light wrapper around the multiprocessing.Lock class with async acquire/release methods that run the underlying lock methods on a separate thread or executor, with an async context manager alternative as well.  I don't have the time to build this myself right now, but would be happy to answer questions or guide others that are interested in contributing this as a PR.

How would one go about specifying the timeout? I'm just learning about async / await but this doesn't SEEM too complex, other than the fact that it looks like a timeout needs to be explicitly calculated based on the context...

If you want to support timeouts for acquire, then that should likely involve use of asyncio.wait_for, but will also need to make sure to have extra safety checks around the underlying Lock object, so that in case the asyncio wrapper times out, but the underlying acquire succeeded, that the Lock is correctly released at the end. Unit tests covering possible behaviors will likely be critical to guaranteeing correct functionality.

@amyreese  So is there any way to share the variable between the processes? For Multiprocessing lock and Value/Queue work perfectly. In the case of aio_multiprocess, I am still struggling to share global variables among processes with lock.


Scss variable name triggers color picker

First, thank you for your great work.
Describe the bug
When using CodeMirror in Scss mode with variables, this happen if you choose a color name as variable name :

Seems we need to add to the exluded token the "variable" token.
https://github.com/easylogic/codemirror-colorpicker/blob/main/src/extension/codemirror/colorview.js#L7

Is it enough ? :)

The mode is "text/x-scss"
CodeMirror(this.$refs.editor, {
      value: this.code,
      mode: "text/x-scss",
      theme: "ambiance",
      colorpicker : {
          mode : 'edit',
          type : 'vscode'
      },
    });

@jwheatp
I released new version<EMAIL_ADDRESS>Please test it .
Thank you.

it works great, thank for you quick fix @easylogic !


Fix MANTL.io link in REAME.md

Oops, duplicates #193. Feel free to close it :)

#193 merged. But thanks nevertheless ;)


Tutorial videos for new users

I am wondering if a few short ~5 minute videos in a playlist which show a live end to end demo of integrating a data provider with pygeoapi could be very helpful once the provider instructions are solidified.

The contribution process for new users requires a fair amount of steps and is fairly technical.

I have found in many open source projects, friction getting started quickly turns off new users even if all the features are there

Many users would likely prefer to watch a short video to get oriented and then use the docs as a reference

This is an enhancement and longer term goal, not very necessary, but I think it would help drive adoption quite a bit. I am really motivated by trying to make our contribution system as user friendly as possible.

yes this is a good idea


[TISPARK-105] Support refresh lock request

Support refresh lock request so that we can use a small TTL for long-lasting transaction write

/run-all-tests tikv=pr/4831

/run-all-tests tikv=pr/4831

/run-all-tests tikv=pr/4831

Close due to unsupported TiDB behavior of resolve lock.


Is it possible to output variable in use whilst the copy function is looping?

[Enter feedback here]

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

ID: 160a060d-7dc1-5826-8beb-f47097d0928f
Version Independent ID: cc8a11cf-df37-97e9-bd0a-8c8ddd5037c7
Content: Copy Task - MSBuild
Content Source: docs/msbuild/copy-task.md
Product: visual-studio-windows
Technology: msbuild
GitHub Login: @ghogen
Microsoft Alias: ghogen

@Tractorboy99 -- thank you for your question. This repo is solely for documentation issues, and this seems product-related. Consider these resources:

Ask a question or find an answer on the Microsoft Q&A page for Visual Studio.
Check the Visual Studio MSDN Forum.
Stack Overflow


⚠ ClamAV has degraded performance

In d92db19, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 196 ms

Resolved: ClamAV performance has improved in a5317c6 after 6 minutes.


Consider splitting the protocol implementations into another crate

Right now, this crate contains an implementation of HTTP 1.1. However, one of my issues with hyper is that all of the protocol code is welded to the I/O code, and it's generally very hard to separate them if you want to do something with just the protocol code. For example, if I wanted to write my own HTTP implementation but using a synchronous API instead of the ring-based API, it would be preferable to use an HTTP protocol implementation that's already in use by well-established pieces of software in the ecosystem rather than duplicating time and effort by reimplementing my own.
See this page for more information on this idea. A success story currently in use in the Rust ecosystem is x11rb-protocol, which is currently in use by x11rb as well as my own implementation of X11, breadx.
I'd like to make sure this crate goes in that direction. It would involve taking the code currently in the h1 module and splitting the parts that deal with the protocol out into another crate. If this is desired, I can implement this.

I'm aware of the sans-io philosophy and I appreciate it, but it's outside the scope of this project for now. It essentially turns all the logic into a state machine, and for now I'd just like to get h1+h2 working as fast as possible on top of io-uring, and I might reconsider separating the protocol/IO bits later.
For context, I took a sans-io approach in https://github.com/fasterthanlime/rc-zip and it is a LOT of boilerplate. State machines are really verbose in Rust.
I'm not saying it will forever be this way, but I just don't want to focus on this for now (nor do I want to focus on reviewing PRs going in this direction for now).

Just gonna go ahead and close this issue as long as I'm not planning on doing that - closed, but not forgotten.
I think potentially the h1/h2 parser parts might be extracted in other crates, but in the short term that's a higher maintenance burden. They're neatly in their own respective modules for now, they could be made generic over the input type and extracted later.
The h2 server logic might be made IO-independent later, right now it works as an event loop, but none of the flow control / prioritizing is done yet, so I don't understand the problem well enough to do sans-IO for now.


Iris incompatibility

The shaders has not compatibility with Iris, the shader support for Sodium (Fabric)
The shader itself acts like default shader when loaded.

I've added Iris compatibility in my fork: https://github.com/akemin-dayo/minecraft-ps1-shaders
I've also submitted PR #4, so perhaps my changes will be merged upstream here too.

Added in https://github.com/ckosmic/minecraft-psx/pull/4


Ported Propel pull request #236 to Propel2.

Let's try this again.  Addresses Issue #97.

Oh, you need to rebase your PR btw.

ping @abrobston

Two year-end project deadlines have me spinning at the moment... sorry for the neglect.  I'll get to this as soon as I can.


Fix i18n guide link, fix need(s) updating plural

What kind of changes does this PR include?

Changes to the docs site code

Description

Fixes broken link to i18n guide.
Selects the correct plural form of need(s) updating based on the number of pages.

LGTM, and passed the Hippo test!  💅


Add test-id's for VM Error States Test Cases

Signed-off-by: Kedar Bidarkar<EMAIL_ADDRESS>
What this PR does / why we need it: Add test-id's for VM Error States Test Cases
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer: Add test-id's for VM Error States Test Cases
Release note:

NONE

Thanks @kbidarkar !
/lgtm
/retest

/retest

/retest

/approve

/hold
lets wait for https://github.com/kubevirt/kubevirt/pull/6280 to get in. We have a an issue with a sig-network macvtap test

/retest

/hold cancel

/cherrypick release-0.44


EdenTreaty seems to work only with chained calls

Hello, thank you for your work !
I really like the eden treaty feature but i found something strange.
When we are not directly chaining Elysia handlers mapping, errors seem to occur with the eden treaty configuration. As if the type inference did not work properly.
Maybe i am missing something !
Thanks for your work.

Thank you @JoeHillyard for your answer, you are right, and yes it works well with plugins !

Since the issue seems to have been solved, and there is no further communication, I'm closing the issue.
Feels free to reopen this issue if the problem stills persists.


Renaming a column of the table provided in UI Page 2

@QQ-Sortiz Regarding the table provided in UI Page 2,
there is currently a column named "Background Functional Group".
The name of this column should be changed into: "Biotic Resource".
Many thanks!

Changes were implemented. Kindly check.

Thanks a lot; I can now close this issue.


Keyboard accessibility

Loading https://webstatus.dev/ and hitting TAB repeatedly ends us cycling between two items in the sidebar, both of which get two tab stops. Focusing something else like the search field and tabbing through eventually cycles around to the same place and gets stuck in the sidebar menu.

Thanks for reporting this @foolip !
This is definitely a bug.

Experimenting to figure out what is happening, I noticed a few interesting things, which might be clues.
First, using the shift-TAB repeatedly does navigate to all locations including the page content, but in reverse order, and it does not get stuck in the sidebar items.
Second, there are two sl-trees in the sidebar which both have a tabindex that changes between -1 and 0 as the items are visited.   When visiting the "Features" item, the first sl-tree tabindex is set to -1, and when tabbing out to the "Report an issue" item in the second tree, the first sl-tree tabindex is changed to 0 and the second sl-tree tabindex is changed to -1.
Third, this changing of the tabindex value also happens when shift-TABbing, but one more oddity: When shift-TABbing from the first item on the page content back to the last sidebar item, if I then hit TAB, it does go back to the first item in the page content.  But if I shift-TAB twice, then TABbing forward does get stuck in the same loop.


Update link to bookshelfjs

Link to http://bookshelf.js was broken, it is now http://bookshelfjs.org

Thanks @harianus


cannot update brew

brew update seems to be broken for me.
brew update
/usr/local/bin/brew: fork: Resource temporarily unavailable
/usr/local/bin/brew: fork: Resource temporarily unavailable
/usr/local/bin/brew: fork: Resource temporarily unavailable
/usr/local/bin/brew: fork: Resource temporarily unavailable
/usr/local/bin/brew: line 47: /usr/local/Library/Homebrew/brew.sh: No such file or directory

You need to restart your machine.


Fix #338 Using os.writev() instead of os.write(b.join())

Please don't submit a PR that fails the tests and has typos in it. At the very least run it against your test program with and without drain().

@gvanrossum I have fix typo, and checked spped:
Before my patch:
without drain(): 4.5 sec
with drain():      0.2 sec
After my patch:
without drain(): 0.2 sec
with drain():      0.2 sec

I guess you have to mock os.writev too. Time to learn something!

BTW great news on the speed!

@gvanrossum
Yes, I understand your fully. Have updated PR tests are fixed, but with ugly hack to overcome @mock.patch('os.writev') limitation....see comments

I don't follow. Does the real os.writev() modify its buffer argument? Or the mock one?

@gvanrossum, in short code is:
buf = [1,2,3]
writev(buf) # < mock remembers REFERENCE to buf, not contents.
buf.pop()

Note, that writev was called with [1,2,3], but mock see (in assert) that buf is [2,3]

@socketpair Here's my attempt to tame the mock: https://github.com/1st1/asyncio/commit/5b8e2ddee4d6049877aefbe9464c48144939d077

@1st1 I think the most convenient way is to merge my PR in current state, and after that, merge you PR.
Is it suitable workflow ?

@socketpair You can just incorporate my change into your PR. Please add a comment to patched_os_writev explaining why we need that craziness.

@1st1 @gvanrossum
Sorry, please don't merge PR. I have checked performance. Using just expanding bytearray is much faster. C is not Python. :(
So please wait, I will revert everything and make bytearray in pipes.
Program used to benchmark:
#!/usr/bin/env python3.5

import asyncio
import os

async def handle_echo(rs, ws):
    for i in range(30):
        ws.write(b'x' * (10*1024*1024))
    print('writer all completely, drainig')
    await ws.drain()
    print('drainig complete')
    ws.close()

async def test_read_arch(rs, ws):
    s = 0
    while True:
        d = await rs.read(65536)
        if not d:
            break
        s += len(d)
    print('Read %d bytes completely' % s)
    ws.close()

async def amain():
    server = await asyncio.start_server(handle_echo, '<IP_ADDRESS>', 8888)
    (rs, ws) = await asyncio.open_connection('<IP_ADDRESS>', 8888)
    server.close()
    await server.wait_closed()

    await test_read_arch(rs, ws)

def main():
    loop = asyncio.get_event_loop()
    loop.run_until_complete(amain())

if __name__ == '__main__':
    main()

This is very strange. Using bytearray means more memory allocations and copy calls. From what I can see, writev implementation correctly uses buffer protocol, thus avoiding any extra memory work. What platform you're running your benchmark? What are the numbers?

Honestly I'm not that surprised that bytearray performs better. Resizing a
byte array is one of the fastest things you can do in CPython (because
realloc() handles the copy for you).

Hi @socketpair! Any progress on this PR?

I'm online, will continue soon. I spent last week in another country, now I returned back to home, and today is a first working day at my job.

Sure, no rush.  3.5.2 will happen relatively soon, would be nice to have this reviewed and merged before that.

great news! Now I know why bytearray was faster.
Now, my code is even faster than bytearray variant! since it true zerocopy!  Could you please fix the code style to 79 cars per line?

Now, I making commit for writelines optimisation. Please review current code.

I've left some feedback.

Also, Python3.5 does not support sendmmsg(). If it will, I can also improve datagram transport

Also, Python3.5 does not support sendmmsg(). If it will, I can also improve datagram transport

You're welcome to write a patch. Or to at least create an issue (if it's not already there) on bugs.python.org.

oops. Sorry for the tests. Will fix

Okay, tests are fixed. I introduce new function, used only in tests. Is it right thing ?

Added streams becnhmarking tool. Results:
Original asyncio:
bench_pipes: 5 buffers by 10.00 MB (with intermediate drains): 2.39 seconds (20.93 MB/sec)
bench_pipes: 5120 buffers by 0.01 MB (with intermediate drains): 0.17 seconds (295.10 MB/sec)
bench_sockets: 5 buffers by 10.00 MB (with intermediate drains): 0.18 seconds (275.94 MB/sec)
bench_sockets: 5120 buffers by 0.01 MB (with intermediate drains): 0.12 seconds (431.48 MB/sec)
bench_pipes: 5 buffers by 10.00 MB (without intermediate drains): 12.42 seconds (4.02 MB/sec)
bench_pipes: 5120 buffers by 0.01 MB (without intermediate drains): 13.65 seconds (3.66 MB/sec)
bench_sockets: 5 buffers by 10.00 MB (without intermediate drains): 0.20 seconds (250.48 MB/sec)
bench_sockets: 5120 buffers by 0.01 MB (without intermediate drains): 0.16 seconds (310.07 MB/sec)

Patched version:
bench_pipes: 5 buffers by 10.00 MB (with drain): 0.13 seconds (370.73 MB/sec)
bench_pipes: 5120 buffers by 0.01 MB (with drain): 0.14 seconds (347.25 MB/sec)
bench_sockets: 5 buffers by 10.00 MB (with drain): 0.11 seconds (457.13 MB/sec)
bench_sockets: 5120 buffers by 0.01 MB (with drain): 0.11 seconds (436.75 MB/sec)
bench_pipes: 5 buffers by 10.00 MB (without drain): 0.11 seconds (465.24 MB/sec)
bench_pipes: 5120 buffers by 0.01 MB (without drain): 0.15 seconds (335.80 MB/sec)
bench_sockets: 5 buffers by 10.00 MB (without drain): 0.11 seconds (465.32 MB/sec)
bench_sockets: 5120 buffers by 0.01 MB (without drain): 0.10 seconds (495.36 MB/sec)

Some good progress on this PR, Mark!

So, left only tests on new functionality. Will make them soon, but not today.
Please review carefully. It is essential part of asyncio, and this PR is not so small. Hope I do right things.

Mark, I did a quick review. Will have to spend more time with the patch later. BTW, could you please upload the latest benchmark numbers?

BTW, could you please upload the latest benchmark numbers?

Never mind, I've run them myself. Very impressive. The performance of asyncio is closer to uvloop with this PR (even faster for 5120 buffers, something I'll have to fix ;)

This pull request uses sendmsg, not writev.  Am I correct?
If so, how about changing title of this pull request?

@methane title is changed. Both functions are really fixed

@1st1 Please review again, and say me what to fix, since I fixed everything known, as I think, including test. (I have also checked code coverage in PyCharm)

@1st1 In another PR I want try to merge pipes code and socket code. Today these codes are just copy-pasted, and this is bother me a lot.

@1st1 Please review again, and say me what to fix, since I fixed everything known, as I think, including test. (I have also checked code coverage in PyCharm)

Please also check that you have no lines longer than 79 characters.  I've seen a few earlier.

@1st1 In another PR I want try to merge pipes code and socket code. Today these codes are just copy-pasted, and this is bother me a lot.

It would depend on the size of that PR, but maybe we'll do that after 3.5.2.

Well, I have checked line lengths using this:
git diff upstr/master HEAD asyncio | egrep '^[+].{80,}'

Should be 79 per PEP 8, no?

@1st1 test show that no lines having 80 symbols :). So, all lines added have 79 symbols or less.

@1st1 https://github.com/ogrisel/python-appveyor-demo/blob/master/appveyor.yml allows to check under windows. Or I'm wrong ?

Yep.  Good idea to add it, I'll take a look later.

@1st1 I move ot to separate issue.

@1st1 any progress on this PR? Should I fix something ?

@1st1 @gvanrossum @methane bump. I want this to be merged :)

@socketpair yeah, I'll give it another review soon. Sorry, I've a lot on my plate right now.
@haypo would you like to take a break from hacking on CPython internals and co-review this patch?  It's pretty big and I'm a bit afraid to push it to 3.5.2 alone.

Only one thing that I afraid with this patch - is ability to totally destroy internal state of the stream object when passed buffers changed externally while still not written by the stream. It was not documented earlier if that is allowed, but it is changed. Only one cause of such behaviour - is performance. Unfortunatelly Python have neither copy-on-write buffers nor API for locking buffers.

Also, someone should port these changes to WIndows-implementation. I will not even try to do that.

 Python 3.4 for windows have no sendmsg() ?!

How to fix tests? behaviour of internal logic is different for Windows and Linux. It would be mess of code. Please advise me.

Python for Windows have no sendmsg() ?

Looks like you have to detect that and provide a fallback code that uses send.

YAY! tests passed! But wait. During fixing tests I have added if sys.platform == 'win32' and 3.5 python Succeeded, but 3.4 fail! seems Python3.4 HASE sendmsg.  Will investigate.
Also I have rebased and fix conflicts.

That was VERY strange bug that I can not understand. And don't want to investigate. Everything works as expected now. Please review and merge.

@1st1 @methane @gvanrossum any progress? Seems everything known is fixed, including Windows issues.

I'll give this PR a final review soon.  We've missed this PR for 3.5.2 anyways, so there is no rush to have this committed.

ping

ping

Sorry, Mark, I'm busy with other things.  This is quite an intrusive change and it has to be merged with extra care.  And we have plenty of time before 3.6.

@1st1 I can split PR to small parts. After each part, everything will be consistent. Should I do that ?

@1st1 I can split PR to small parts. After each part, everything will be consistent. Should I do that ?

How do you want to split it?
Actually, I was just looking at this PR again, and I think it's ready.  I need to spend another hour playing with the code, but I'd say it's almost there.

I think .sendto() and .write() should data = bytes(data) to avoid pitfalls.
If data is bytes already, there is no performance penalty.
If data is bytearray or memoryview, user can reuse buffer to avoid penalty.

@arthurdarcet can you benchmark streams using included tool (in that PR) on Mac OS X ?

@socketpair sure, do you have some code i could run?

@socketpair I did it.
https://github.com/python/asyncio/pull/385#issuecomment-234536614

I have an idea: add to write functions parameters gift=True (or, maybe gift=False in order to save compatibility if that was never guaranteed). Inspired by http://man7.org/linux/man-pages/man2/vmsplice.2.html  (SPLICE_F_GIFT)

I feel it's a premature optimization.

I've benchmarked on Ubuntu 16.04, with slightly modified bench_streams.py.
master branch (bytearray buffer) is faster for smaller (~500 bytes) messages.
master branch:
bench_sockets: 10000000 buffers by 10 bytes : 11.32 seconds (8.42 MiB/sec)
bench_sockets: 5000000 buffers by 20 bytes : 5.72 seconds (16.67 MiB/sec)
bench_sockets: 2000000 buffers by 50 bytes : 2.37 seconds (40.22 MiB/sec)
bench_sockets: 1000000 buffers by 100 bytes : 1.26 seconds (75.42 MiB/sec)
bench_sockets: 500000 buffers by 200 bytes : 0.70 seconds (135.37 MiB/sec)
bench_sockets: 200000 buffers by 500 bytes : 0.37 seconds (256.61 MiB/sec)
bench_sockets: 100000 buffers by 1000 bytes : 0.26 seconds (370.33 MiB/sec)
bench_sockets: 50000 buffers by 2000 bytes : 0.20 seconds (474.92 MiB/sec)
bench_sockets: 20000 buffers by 5000 bytes : 0.16 seconds (580.86 MiB/sec)
bench_sockets: 10000 buffers by 10000 bytes : 0.15 seconds (620.15 MiB/sec)
bench_sockets: 5000 buffers by 20000 bytes : 0.15 seconds (631.98 MiB/sec)
bench_sockets: 2000 buffers by 50000 bytes : 0.15 seconds (649.65 MiB/sec)
bench_sockets: 10000000 buffers by 10 bytes (with intermediate drains): 22.57 seconds (4.22 MiB/sec)
bench_sockets: 5000000 buffers by 20 bytes (with intermediate drains): 11.29 seconds (8.45 MiB/sec)
bench_sockets: 2000000 buffers by 50 bytes (with intermediate drains): 4.52 seconds (21.09 MiB/sec)
bench_sockets: 1000000 buffers by 100 bytes (with intermediate drains): 2.31 seconds (41.31 MiB/sec)
bench_sockets: 500000 buffers by 200 bytes (with intermediate drains): 1.19 seconds (80.05 MiB/sec)
bench_sockets: 200000 buffers by 500 bytes (with intermediate drains): 0.52 seconds (183.04 MiB/sec)
bench_sockets: 100000 buffers by 1000 bytes (with intermediate drains): 0.30 seconds (320.99 MiB/sec)
bench_sockets: 50000 buffers by 2000 bytes (with intermediate drains): 0.19 seconds (514.17 MiB/sec)
bench_sockets: 20000 buffers by 5000 bytes (with intermediate drains): 0.12 seconds (814.84 MiB/sec)
bench_sockets: 10000 buffers by 10000 bytes (with intermediate drains): 0.09 seconds (1013.89 MiB/sec)
bench_sockets: 5000 buffers by 20000 bytes (with intermediate drains): 0.08 seconds (1152.17 MiB/sec)
bench_sockets: 2000 buffers by 50000 bytes (with intermediate drains): 0.08 seconds (1257.04 MiB/sec)

socketpair:writev branch:
bench_sockets: 10000000 buffers by 10 bytes : 15.59 seconds (6.12 MiB/sec)
bench_sockets: 5000000 buffers by 20 bytes : 7.84 seconds (12.16 MiB/sec)
bench_sockets: 2000000 buffers by 50 bytes : 3.17 seconds (30.07 MiB/sec)
bench_sockets: 1000000 buffers by 100 bytes : 1.61 seconds (59.39 MiB/sec)
bench_sockets: 500000 buffers by 200 bytes : 0.85 seconds (111.82 MiB/sec)
bench_sockets: 200000 buffers by 500 bytes : 0.38 seconds (247.81 MiB/sec)
bench_sockets: 100000 buffers by 1000 bytes : 0.23 seconds (419.86 MiB/sec)
bench_sockets: 50000 buffers by 2000 bytes : 0.15 seconds (651.97 MiB/sec)
bench_sockets: 20000 buffers by 5000 bytes : 0.10 seconds (946.71 MiB/sec)
bench_sockets: 10000 buffers by 10000 bytes : 0.08 seconds (1131.09 MiB/sec)
bench_sockets: 5000 buffers by 20000 bytes : 0.08 seconds (1236.96 MiB/sec)
bench_sockets: 2000 buffers by 50000 bytes : 0.07 seconds (1324.88 MiB/sec)
bench_sockets: 10000000 buffers by 10 bytes (with intermediate drains): 26.38 seconds (3.61 MiB/sec)
bench_sockets: 5000000 buffers by 20 bytes (with intermediate drains): 12.92 seconds (7.38 MiB/sec)
bench_sockets: 2000000 buffers by 50 bytes (with intermediate drains): 5.34 seconds (17.87 MiB/sec)
bench_sockets: 1000000 buffers by 100 bytes (with intermediate drains): 2.38 seconds (40.15 MiB/sec)
bench_sockets: 500000 buffers by 200 bytes (with intermediate drains): 1.24 seconds (77.00 MiB/sec)
bench_sockets: 200000 buffers by 500 bytes (with intermediate drains): 0.55 seconds (174.32 MiB/sec)
bench_sockets: 100000 buffers by 1000 bytes (with intermediate drains): 0.31 seconds (311.23 MiB/sec)
bench_sockets: 50000 buffers by 2000 bytes (with intermediate drains): 0.19 seconds (498.30 MiB/sec)
bench_sockets: 20000 buffers by 5000 bytes (with intermediate drains): 0.12 seconds (804.88 MiB/sec)
bench_sockets: 10000 buffers by 10000 bytes (with intermediate drains): 0.09 seconds (1005.35 MiB/sec)
bench_sockets: 5000 buffers by 20000 bytes (with intermediate drains): 0.08 seconds (1141.88 MiB/sec)
bench_sockets: 2000 buffers by 50000 bytes (with intermediate drains): 0.08 seconds (1258.54 MiB/sec)

And, seems, I know why. Python build iov array every time :(
Seems, we should test on real use cases. Actually, it will be not such big buffers with count of 10 :

writev:
pros:

true zero copy
slightly faster
use syscall that was intended exactly for that
cons:
writev is not supported in Windows
adds restrictions on passing of mutable buffers
complex and fragile code

bytearray
pros:

much simplier
do not require hack for Windows
cons:
slightly slower

@gvanrossum @1st1 @methane
I can not choose by myself. :( please help me to make decision :)

Another cons of writev: TypeError may happen in _write_ready(), not write().
Checking "bytes-like" object without copy is very hard in pure Python.
I think following code is same to PyObject_GetBuffer(data, &view, PyBUF_SIMPLE),
but I'm not sure.
mv = memoryview(data)
if mv.itemsize != 1 or not mv.contiguous:
    raise TypeError

bytearray += data raises TypeError when data is not bytes-like object.

My preference is, use bytearray() in pure Python.  But make it replacable.
Someone can implement more smart buffer like below in C.
def __init__(self):
    self.queue = deque()

def __iadd__(self, data):
    if type(data) is bytes and len(data) > 200:
        self.queue.append(data)
        return
    if not self.queue or type(self.queue[-1]) is bytes:
        self.queue.append(bytearray())
    self.queue[-1] += data

Copy-pasting here:
small data:
bytearray:
bench_sockets: 10000000 buffers by 10 bytes : 11.32 seconds (8.42 MiB/sec)
bench_sockets: 1000000 buffers by 100 bytes : 1.26 seconds (75.42 MiB/sec)

writev:
bench_sockets: 10000000 buffers by 10 bytes : 15.59 seconds (6.12 MiB/sec)
bench_sockets: 1000000 buffers by 100 bytes : 1.61 seconds (59.39 MiB/sec)

large data:
bytearray:
bench_sockets: 100000 buffers by 1000 bytes : 0.26 seconds (370.33 MiB/sec)
bench_sockets: 10000 buffers by 10000 bytes : 0.15 seconds (620.15 MiB/sec)
bench_sockets: 2000 buffers by 50000 bytes : 0.15 seconds (649.65 MiB/sec)

writev:
bench_sockets: 100000 buffers by 1000 bytes : 0.23 seconds (419.86 MiB/sec)
bench_sockets: 10000 buffers by 10000 bytes : 0.08 seconds (1131.09 MiB/sec)
bench_sockets: 2000 buffers by 50000 bytes : 0.07 seconds (1324.88 MiB/sec)

@gvanrossum @1st1 What do you think about all that ?

I understand, that simplicity of code is important thing. In real use cases (i.e. small amount of data and small count of chunks) both implementations give the same result.

Mark, I'm closing this PR. I think we'd want to have vectorized writes in 3.7, so when you have a new patch please open a new PR.


Question about depth_prior_network_path and db_path

Hello, thanks to this excellent project.
I have encountered some problems when I try to reproduce the project. Could you please tell me how to set the "--depth_prior_network_path " of run_nerf.py? (I have downloaded the pretrained depth completion model from the link provided by the author, and then unzip it to get a file folder "Archive")
What's more, I also want to know how to get the "scannet_sift_database.db" of step 1.
Thanks for your reply.  (Maybe the issue seems a little bit silly lol)

Same issue here. Have you solved it?


meaning of unique_identifier

Hi,
what for is unique_identifier used (beside detecting collisions)? It's cumbersome for me to create them, can I use UUID for it?

Hi !
This unique_identifier is what is used by ripgrep to find where the plugin was defined in the configuration files. Initially I used an automatic way that would find where the function is being called using some debug functions, but then it wouldn't work with packer_compiled.lua, so I went with this unique identifier. Of course, it can be whatever you want, as long is there are no collisions and that it's defined in the function call (i.e not passed via a variable).

Thank you. Now i understand.
Probably you should add --fixed-strings here:
https://github.com/lazytanuki/nvim-mapper/blob/c602a070153cc3be9be85ba2e1927b0551ddffc2/lua/telescope/_extensions/mapper/utils.lua#L34
How frequently is this rg started?
It would be nice to have an options to turn it off.

Ripgrep is only called once when invoking the Telescope and I can't use fixed strings because it uses a regex to find all the identifiers at once.

Then it has to be as it is and I simply have to avoid regexp special chars in unique_identifier :)
I think we can close the case.


Use selenium undetected-chromedriver instead of the standard selenium webdriver?

Hello, I recently learned about the existence of undetected-chromedriver.
Would it be possible to use this as as the main webdriver with helium instead of the default one?
If so can anyone point me in the right direction code-wise?
Thank you

If it follows the driver implementation then it should work as any other available driver. Some of the functions may not work since I do not know what those patches do to the driver implementations.
Check https://github.com/mherrmann/selenium-python-helium/issues/5 and https://github.com/mherrmann/selenium-python-helium/issues/33

Like @dntzbgh said, it should work like here. Just tried it and its all good, allowed me to finally log into google without the detection.


Unknown custom element:

Using the latest version of vue, bulma and buefy.
Also put the Datepicker exactly in my code as described in the documentation.
import Vue from 'vue'
import Buefy from 'buefy'
import 'buefy/lib/buefy.css'

Vue.use(Buefy)

and
<b-field label="Select a date">
    <b-datepicker
        placeholder="Click to select..."
        icon="today">
    </b-datepicker>
</b-field>

What is missing?

Removed node_modules folder and did npm install. After that error message was gone. Sorry for bothering.


contrib/libvirt: don't delete the image

now that we have a more intelligent image downloading this
is no longer necessary
Signed-off-by: Maximilian Meister<EMAIL_ADDRESS>

Thanks 👍


Blocks aren't ticked in non-overworlds in 1.16.1

We updated our Minecraft server to 1.16.1 yesterday, and all worked well, or so we thought... The problems arose when people started to go to the Nether.
Lava and Sand weren't working. They were very fast with making flying machines in the Nether to mine ancient debris, and although the flying machines worked, normal redstone did not.
So, this morning I went on an investigation to see if there were conflicting plugins. I made a copy and removed everything until there was just Multiverse-Core left. It still didn't work. As a sanity check I also rebuilt Spigot. But it didn't work. So I also removed Multiverse, changed the world in server.properties to be the ones of our new survival and it worked.
After this I also tried in the end if things work.
So the problems we found so far are:

Fluids aren't updated
Gravity-affected entities aren't updated
Redstone isn't updated

Fluids and gravity affected blocks not working

Redstone not working

Thank you for taking the time to investigate the issue. This is very concerning! I'll see if I can replicate this and figure out what's wrong!

Seconding this issue. I've done the same tests in the nether both in newly generated chunks and 1.15.2 imported chunks and I've gotten the same results.
I also saw at least one other person on the dev.bukkit page mentioning the same issues.

I was able to replicate this behaviour, although, only in non-main worlds. Is that the behaviour you've both experienced? Or are the main worlds also broken?

Yep, main world seems to work fine, it's just extra worlds where it doesn't work

Yeah, same situation with me. The main world normal nether and end work fine, but for nether and end of the extra worlds have the issue.

Since it only happens on non-main worlds, I'm going to mark this as unrelated to MV, but will continue to investigate.

@nicegamer7 I do beg to differ as it only happens to non-main worlds

I have the same problem, I let the Nether and End generate over MC I have no problems. I generate it with "/mv create world_nether1 nether" or "/mv create world_the_end1 end" is the world buggy and nothing ticks

Same here. This issue is not unrelated to MV. It only happens when MV is loaded, so clearly it has everything to do with MV.

Thanks for reporting everyone. I forwarded the issue to Spigot and it's been fixed in the latest version, so make sure to use Spigot's BuildTools to get it! I tested it myself and everything seems to be working. I'll keep this open until someone confirms it's working on their end.
Here's the fix if anyone's interested.

Yep, the issue seems to be fixed. I testing on the latest papermc 1.16.1
[16:23:49 INFO]: This server is running Paper version git-Paper-3 (MC: 1.16.1) (Implementing API version 1.16.1-R0.1-SNAPSHOT)
[16:23:49 INFO]: Checking version, please wait...
[16:23:51 INFO]: You are running the latest version

you can get papermc at: https://papermc.io/ci/job/Paper-1.16/
Just replace your spigot.jar with the paper one and use that to start your server.

Awesome, thanks to everyone who participated :)


[REQ] add a (GH-compliant) license file

Hi there, 1st of all thanks for your cool work !
Since we've "doxed" it in our HyMPS project (under the AUDIO \ DAWs page \ Web/online subsection), can you please add a "GH-compliant" license file ?
Expliciting licensing terms is extremely important to let other devs (and not only) understand how to reuse/adapt/modify your code in other open projects and vice-versa.
Although it may sounds like a minor aspect, license file omission obviously causes an inconsistent generation of the relative badge too:

(badge-generator URL: https://flat.badgen.net/github/license/edu-flores/treackter-daw/?label=LICENSE)
Anyway you can easily set a "compliant" one through the GH's license wizard tool.
Last but not least, let us know how - in your opinion - we could improve categorization/sorting of collected projects in order to push their evolution by favouring collaborations between developers (and not only).
Thanks in advance.

Thanks, just added the license


Clean up: quantitative value

MINOR changes:

improved instructions
establish alphabetical order
establish correct order within a property

MAJOR changes:
none
SPECIAL ATTENTION:
none

@UlrikeS91 depending on what we decide for the QVA we should potentially also reevaluate the instructions here again


added --unwrap-response-data to unwrap the data item from the response

This is trying to solve #267.
Please let me know if this approach fits with your project.

Hello @laktak !
Thanks for this PR with the nice feature!
Please make changes for axios-http-client eta template too

@js2me I tried to add it according to the axios documentation.
I've tested the fetch implementation but I'm not using the axios client. Could you add some tests?

@laktak forget to change index.d.ts file ?

@laktak forget to modify index.d.ts file ?

Yes, I'm using the CLI version and did not notice that it had one.


Reduce duplicate md link check

Description
We are using gaurav-nelson/github-action-markdown-link-check@v1 to perform md link check. According to https://github.com/gaurav-nelson/github-action-markdown-link-check/tree/v1, the max depth by default is set to -1 which  means check all levels. Thus, when a duplicate dir levels are provided, it will actually cause duplicate check on the same files multiple times.
Here is the current behavior:
# current logic
➜  find regtests regtests/client/python/docs regtests/client/python .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' -exec markdown-link-check '{}' --config .github/workflows/check-md-link-config.json -q ';'

# current file count after removed the exec part
➜  find regtests regtests/client/python/docs regtests/client/python .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' | wc -l
     515

# Current file count after removed duplicate files
➜ find regtests regtests/client/python/docs regtests/client/python .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' | sort | uniq | wc -l
     206

Here is the fixed one:
# new command without the exec part
➜ find regtests .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' | wc -l
     206
# show no diff in the file captured
➜ find regtests regtests/client/python/docs regtests/client/python .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' | sort | uniq > 1
➜ find regtests .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' | sort | uniq > 2
➜ diff 1 2
➜

Also, I added helm as another directory to check (not necessary as file-path already checked for README.md. However, looking at folder-path, we are specifying all dirs except the one which we want to skipped (e.g. site used by hugo), it may be consistent for this.
Lastly, there is a missing separate for file-path for the last element
Type of change
Please delete options that are not relevant.

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

How Has This Been Tested?
I tested this locally via ack:
➜ act -j markdown-link-check
...
| Using markdown-link-check configuration file: .github/workflows/check-md-link-config.json
| USE_QUIET_MODE: yes
| USE_VERBOSE_MODE: no
| FOLDER_PATH: regtests, .github, build-logic, polaris-core, polaris-service, extension, spec, k8, getting-started
| MAX_DEPTH: -1
| CHECK_MODIFIED_FILES: no
| FILE_EXTENSION: .md
| FILE_PATH: CHAT_BYLAWS.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md, README.md, SECURITY.md
| + find regtests .github build-logic polaris-core polaris-service extension spec k8 getting-started -name '*.md' -not -path './node_modules/*' -exec markdown-link-check '{}' --config .github/workflows/check-md-link-config.json -q ';'
| + set +x
| + find . -type f '(' -wholename CHAT_BYLAWS.md -o -wholename CODE_OF_CONDUCT.md -o -wholename CONTRIBUTING.md -o -wholename README.md -o -wholename SECURITY.md ')' -not -path './node_modules/*' -exec markdown-link-check '{}' --config .github/workflows/check-md-link-config.json -q ';'
| + set +x
| =========================> MARKDOWN LINK CHECK <=========================
|
| [✔] All links are good!
|
| =========================================================================
[Check Markdown links/markdown-link-check]   ✅  Success - Main gaurav-nelson/github-action-markdown-link-check@v1
[Check Markdown links/markdown-link-check] Cleaning up container for job markdown-link-check
[Check Markdown links/markdown-link-check] 🏁  Job succeeded

Checklist:
Please delete options that are not relevant.

[x] I have performed a self-review of my code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] If adding new functionality, I have discussed my implementation with the community using the linked GitHub issue

Thanks @MonkeyCanCode for the fix!


register missing accessor

Merge base version

MC Version: 20w14infinite
SpeedRunIGT Version: 14.1

Changes
add missing DoubleOptionSliderWidgetAccessor to mixin file to fix mixin processor crash when changing settings

regression in https://github.com/redlime/speedrunigt/commit/8ac56b7c97d4ee41c32158522870d323a5cf7926


[BUG] Observer.sun_set_time returns "--"

Hi,
I've experienced the error where sun_set_time method does not return a valid time. Hence, all my further calculations fail. By slightly modifying the time or the observer site, it seems to not be happening, but it is not something I can predict automatically.
Python version: 3.8
Astroplan version: 0.8
Astropy version: 4.3.1
Reproducible with this code:
from astroplan import Observer
import astropy.units as u
from astropy.time import Time

observer_site = Observer(latitude=-24.6272, longitude=-70.4042,
                         elevation=u.Quantity(2518, unit="m"))
time = Time(2459537.461248769, format="jd")
sunset = observer_site.sun_set_time(time, which="next")

This problem makes the plot_air_mass method fail with an exception because it cannot find the datetime of the sunset, as it is NaN. That is the root cause that triggered my issue.
Regards,
Martín.

Hi Martín,
This occurs when the Sun does not rise above the horizon within the twenty-four hours following the specified reference time. The code you've placed above raises the warning:
WARNING: TargetNeverUpWarning: Target with index 0 does not cross horizon=0.0 deg within 24 hours [astroplan.observer]

which indicates this exception as the source of the problem. This problem occurs for the time that you've supplied because the nearest sun set time is 2459537.4612224135, which is nearly the same exact time that you're querying. You shouldn't run into this problem if you query nearly any other time that is >a few minutes a way from the precise time of a sunset. For example, if you center your near local noon, this error won't arise.
Does that help?

Hello,
I guessed so. The problem is that all of this is part of an automated code calling plot_air_mass and I'm interested in precise timings. That is, I think that such an exception from sun_set_time should probably be handled within the plot_air_mass method somehow, because it can receive a list of times from which I don't know which one caused the exception that broke the method. I could handle it though. To me you can close the issue.
Regards.


Add files via upload

All credit to @deffcolony

Thanks but don't contribute to main or py-dev since they aren't being worked on anymore.
Everything has been moved to v4-dev.


test: Add a T factory example program

Codecov Report
Attention: Patch coverage is 37.50000% with 30 lines in your changes missing coverage. Please review.

Project coverage is 91.42%. Comparing base (60d921a) to head (e0e7b4e).

Files
Patch %
Lines

examples/t_factory.py
37.50%
30 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #360      +/-   ##
==========================================
- Coverage   91.92%   91.42%   -0.50%
==========================================
  Files          46       47       +1
  Lines        5201     5249      +48
==========================================
+ Hits         4781     4799      +18
- Misses        420      450      +30

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Form violates Applicative law

Applicative "identity" law states pure id <*> v == v, but Form violates it.
This is because its (<*>) instance adds incFormId between the two actions. As a result, pure id <*> v executes v with the incremented FormId.
I think (<*>) doesn't have to do incFormId. Instead, functions like Generalized.input should call incFormId just before they get input for themselves, because it is they who need to generate new FormIds. So, incFormId, getFormInput and getFormId might as well be atomic.

I suspect you are correct.

Thanks for reply!
I'm not in a hurry, so I'll wait :)


GH-32206: [C++] GcsFileSystem::Make should return Result

What changes are included in this PR?
GcsFileSystem::Make now returns Result, with corresponding header & test changes.
Are these changes tested?
Unit tests executed & passed.
Are there any user-facing changes?
None known.

GitHub Issue: #32206

Found issues with this PR. Will re-open new one.


Made proxy_buffers and proxy_buffer_size configurable

Converted proxy_params to j2 template
Added logic to populate proxy_params j2 template and create proxy_params file using environment variables

Thanks for the changes, @mayankmendix .
The only thing that's left is squashing your commits into one.

Commits squashed to one. Thanks for the review comments @markbastiaans.


Identify Phosim Catalog entry for each forced photometry

@jbkalmbach and @drphilmarshall I am trying to understand this issue. Are we looking for filenames of the phosim Instance catalogs, or are we looking for objects in the catalogs?


Batcher sort comparison

I learned today that @sklam has a batcher sort algorithm for the dask gpudataframe.  I would be curious to see how this compares to Dask.dataframe's current shuffle algorithms.
Any time/interest in collaborating on this @sklam?

All you need to do is adapt sort_delayed_frame  and _compare_frame in https://github.com/gpuopenanalytics/dask_gdf/blob/22bb4c39715121612a8df0b3b9fa792ee01fdaad/dask_gdf/batcher_sortnet.py


API Management Service Editor*

Is this doc outdated a bit?
"API Management Service Editor*" - "* The Service Editor role will be available after we migrate all the admin UI from the existing publisher portal to the Azure portal. The Content Manager role will be available after the publisher portal is refactored to only contain functionality related to managing the developer portal."
I believe that the legacy publisher portal is migrated. Are role definitions described in the page still valid?

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

ID: 7f6c6659-7532-1696-7875-b4bf01d3862e
Version Independent ID: ad6e75d0-691f-a08b-e5f0-3f94cbf68fdf
Content: How to use Role-Based Access Control in Azure API Management
Content Source: articles/api-management/api-management-role-based-access-control.md
Service: api-management
GitHub Login: @vladvino
Microsoft Alias: apimpm

Hello @zojovano,
Thank you for your feedback! We will review and update as appropriate.

Hello @zojovano,
Thank you for your feedback! We have assigned this issue to the author to review further and take the next course of action.

Apologies for long delay responsing to this issue. The role definitions in this article were updated since the time you reported this issue and should be up to date. If you want to discuss this further with community experts, I suggest using Microsoft Q&A. Thanks for taking the time to raise this issue!
#please-close


TypeError: validator.isValid is not a function

Description
Basically whenever I try to run jsonwebtoken.sign() in typescript it gives me an error. Running the code in a simple javascript code runner works perfectly fine.
I have been trying to debug this for a couple of days now, can't seem to figure it out.
Reproduction
Link to code I am working with: https://github.com/tonykaram1993/typescript-express-starter/blob/e6975e805f7f5b332e389d723d63a5641959ce15/src/services/authentication.services.ts#L64
The error log and a couple of log messages above it so you are able to see what is passed:
[watch]
[watch]
[watch] 2:42:24 PM - Found 0 errors. Watching for file changes.
[server] info: Server is running at https://localhost:5000
[server] info: Connected to MongoDB! [mongodb://localhost:27017/typescript]
[server] TKCL - JWT_TOKEN_SECRET: secretsecretsecretsecretsecretsecretsecret
[server] TKCL - data: {
[server]   email<EMAIL_ADDRESS>[server]   passwordHash: '$2b$10$E.w9gKA4KsZU1LdN0KN99eCvAyteG/.xboV.ppGoh3gmiVWsJPyIi',
[server]   salt: '$2b$10$E.w9gKA4KsZU1LdN0KN99e',
[server]   _id: new ObjectId("64cf8723a2210d51f1731e86"),
[server]   __v: 0
[server] }
[server] TKCL - settingsConfig.AUTHENTICATION.jwtTokenExpiry: 1h
[server] POST /authentication/signup 500 72.621 ms - 1051
[server] POST /authentication/signup 500 72.621 ms - 1051
[server] TypeError: validator.isValid is not a function
[server]     at /Users/tk/Repositories/typescript-starter/node_modules/jsonwebtoken/sign.js:49:22
[server]     at Array.forEach (<anonymous>)
[server]     at validate (/Users/tk/Repositories/typescript-starter/node_modules/jsonwebtoken/sign.js:41:6)
[server]     at validatePayload (/Users/tk/Repositories/typescript-starter/node_modules/jsonwebtoken/sign.js:60:10)
[server]     at Object.module.exports [as sign] (/Users/tk/Repositories/typescript-starter/node_modules/jsonwebtoken/sign.js:138:7)
[server]     at Object.generateJwtToken (/Users/tk/Repositories/typescript-starter/dist/src/services/authentication.services.js:31:45)
[server]     at signup (/Users/tk/Repositories/typescript-starter/dist/src/controllers/authentication.controllers.js:29:56)
[server]     at processTicksAndRejections (node:internal/process/task_queues:96:5)

Environment
Library version:
"@types/jsonwebtoken": "^9.0.2",
"jsonwebtoken": "^9.0.1",

Express version:
"express": "^4.18.2",
    "@types/express": "^4.17.14",

Running macOs 13.4.1 on MacBook Pro  16" M1 Pro.
Happy to answer any questions.

Bump!

Alright, so I have an update regarding this.
I have been debugging for a week now (on and off), and I found something.
When I remove the following line https://github.com/tonykaram1993/typescript-express-starter/blob/feature/authentication/src/services/authentication.services.ts#L3C1-L3C38 - basically stop using lodash in the file where jsonwebtoken.sign is called, everything works totally fine.
So importing lodash breaks jsonwebtoken? Did I do something wrong that I need to change?

Alright, so scratch everything I said. It turned out to be that when I was getting the user (at https://github.com/tonykaram1993/typescript-express-starter/blob/feature/authentication/src/controllers/authentication.controllers.ts#L50C60-L50C60), I was getting a MongoDb Document instead of a plain object.
All I did was to transform it into an object using user.toObject(). But it's weird that the error given by jsonwebtoken was not clear. I should have gotten the payload is not a plain object error instead of validator.isValid is not a function error.
I am not sure if this should be marked as resolved or if I should keep it open? I will leave that up to you guys.


[nuxt] [request error] [unhandled] [500], "yarn dev"

Environment
npx nuxi info
Reproduction
npx nuxi init < fileName >
yarn
mkcert localhost
add "dev": "nuxt dev --https --ssl-cert localhost.pem --ssl-key localhost-key.pem" in json
yarn dev
Describe the bug
when I start the certified localhost server I get a status 500 error about a fetch in fetchraw2
Additional context
No response
Logs
No response

The actual error is related to the self-signed HTTPS cert:
Error: unable to verify the first certificate
        at TLSSocket.onConnectSecure (node:_tls_wrap:1538:34)
        at TLSSocket.emit (node:events:513:28)
        at TLSSocket._finishInit (node:_tls_wrap:952:8)
        at ssl.onhandshakedone (node:_tls_wrap:733:12) {
      code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
    }

Workaround would be NODE_TLS_REJECT_UNAUTHORIZED=0


WIP feat: issue-credential service skeleton

Signed-off-by: talwinder.kaur<EMAIL_ADDRESS>

Typo in "skeleton" in the title

Not required right now


Refactoring the config system

WARNING
If you are here because I tagged you in one of the comments below, YOU DON'T NEED TO READ THIS POST. Just go read the comment where I tagged you :)

Yep, the config system strikes again. I'll try to keep it short this time. The main point is that, while the current config system works fairly well, it's quickly become a mess and difficult to maintain. For example, here are just two problems with it:

The exported dictionaries config and camera_config are ambiguous -- #283
You can't set the config when running from a file (for example when testing or making documentation) -- see #293

The plan
My plan for refactoring is the following, modified from this comment:
I want to refactor the config system so that the order of events would be the following:

A script executes import manim, which in turn executes manim/__init__.py. This can be a user scene script or our own manim/__main__.py.
In __init__.py, the first line of code is import config which executes config/__init__.py.
config/__init__.py first executes config/config.py.
In config.py, as much as possible of the config dict should be defined. In particular, all config files must be read and parsed. Also, config.py also parses the sections of the configuration corresponding to the logger, and exports them as well. All of config, camera_config, and file_writer_config are defined and exported. NOTE the logger is NOT set here.
Back in config/__init__.py, the next line it runs executes config/logger.py.
config/logger.py takes the config options exported from config/config.py and uses them to set the logger. NOTE this eliminates the need to execute _run_config twice.
Back in config/__init__.py, everything exported by config/config.py and config/logger.py is exported up to the top-level package. After this, the config subpackage should never really have to be used again (other than for importing config/logger). config/__init__.py now returns execution to the top-level __init__.py.
Back in __init__.py, here comes the split.

If the original script is a user script, then we are done and execution is returned to the user. They can then go about defining their Scene classes and ultimately rendering them.
If the original script was __main__ because manim has been called from the command line, __init__.py returns execution to __main__.main(). Now, this function must deal with parsing command line flags and then updating the global config dict. This can easily be done by implementing e.g. manim.config.parse_cli(args). Note this will remove the problem we've had in the past where config.py had to determine whether it had been called from the command line (i.e. the hacky _from_command_line function). Once the CLI flags have been parsed and the config updated, __main__.main() simply decides what to execute next, depending on the subcommand used. Thus, a big chunk of cfg_subcommands will be ported into __main__.py.

Associated PRs
This is a fairly major overhaul so I'll try to keep the PRs short and self-contained so that they are easy to review.

#340 (merged): add the tempconfig context manager for testing all of the upcoming changes. Also make Camera read the config at instance construction, not at class definition.

#376 (merged): creates a new subpackage for all the stuff related to the config system.

#397 (merged): makes all modules use the config dict as little as possible during library initialization.

Current TO DO items
This is a list of my current action items. If you wish, please comment on the plan of action:

Refactor config into a new ManimConfigDict with dynamic keys.  Can we put ALL of the logic in the keys? They would be more like properties...  For example, after setting this ManimConfigDict["save_pngs"] = True, then ManimConfigDict["write_to_movie"] should automatically be set to False. This will implement all the logic for making the output directories as well, and allow  FileWriter to just read e.g. ManimConfigDict["video_dir"] without having to build the full path every time.

After this, the tempconfig context manager would be a lot more powerful. It should also allow us to choose a config file in the middle of a session. This is direly needed for testing.

Make it so that the ManimConfigDict cannot be changed in the middle of rendering a scene.

At this point, the config system will be done (for the time being). Now we can move on to refactoring FileWriter to just receive the 'write' message every frame, and decide whether or not it will write the frame using all of the relevant config options (skip animation, save pngs, write to movie, etc). Remember: everything in FileWriter should happen independently of the renderer.  The renderer takes mobjects/transformations and converts them to pixel arrays. The FileWriter takes pixel arrays and saves them to disk. After that, it will be easier to separate the Camera from the Renderer.

Ok @ManimCommunity/core so I've been thinking hard and long about the next steps for the config system. Right now everything seems to work fine, but it's all haphazardly put together, and there are some missing features. For example:

We would like to be able to choose the config file on the fly, not necessarily choose it from the command line (#219). This is currently impossible.
There are some individual options that can be changed on the fly, using tempconfig context manager. Some are impossible, or don't even exist. For example, config['transparent'] doesn't exist. Let's say I want to set transparency mode on from my script. I cannot do this. Let's say I want to know if the user passed the --transparent flag via the command line. I cannot do this unless I parse sys.argv. Messy.
The current dict is not self-consistent. In the example above, we could just define a new key in the dict, config['transparent'], and set it to whatever the user passed via CLI. But then let's say I change config['background_opacity'] = 1. The key config['transparent'] will be True, even if the background is actually opaque. Inconsistent.
If you wanted to know what exactly does the --transparent flag do, you would have to go to two different places: first, default.cfg has a [transparent] section, and second, config.py actually uses it. Except it doesn't, you have to actually check config_utils.py, and then navigate the spaghetti code that is _parse_file_writer_config. (BTW why is transparent part of file writer config and not camera config? Weird.) Documenting the source of each config option as well as the effect is a nightmare, as config is currently just a dict, and documenting each individual key of a dict is tricky.

As you can see, there are many problems. I believe I have a way to fix all of these in a way that is (mostly) backwards compatible. Basically, we define a new class that behaves like a dict but also contains all of the information that keeps it self-consistent. I believe this is the way to go, but I wanted everyone's opinions before implementing.
Here is how that would look like:
from collections.abc import MutableMapping

class ManimConfigDict(MutableMapping):
    ALL_OPTS = ['pixel_width', 'pixel_height', 'aspect_ratio']
    def __init__(self):
        self.__dict__ = {k: None for k in ALL_OPTS}

Remember setting the __dict__ is equivalent to setting attributes, so if you define c = ManimConfigDict(), then c.pixel_width, c.pixel_height, and c.aspect_ratio are all valid.
What does this ManimConfigDict do? It behaves like a dict:
    def __getitem__(self, key):         # c['pixel_width'] returns c.pixel_width
        return self.__dict__[key]
    def __iter__(self):                 # required by MutableMapping
        return iter(self.__dict__)
    def __len__(self):                  # required by MutableMapping
        return len(self.__dict__)

This means that c['pixel_width'] just returns c.pixel_width, so this is entirely backwards compatible, as we don't have to change any code that already uses the dict syntax.
But also we don't want anyone to delete any keys, so
    def __delitem__(self, key):
        raise NotImplementedError('Deleting keys from ManimConfigDict is not allowed.')

Now here is the fun part. What happens if you set c['pixel_width'] = 10? You can totally do that, but now you have screwed the aspect ratio because you forgot to change c['pixel_height'] as well. Well, this class keeps self-consistent, roughly as follows:
    def __setitem__(self, key, value):
        self.__dict__[key] = value      # this will in turn call the properties defined later

    @property
    def pixel_width(self):
        return self.__dict__['pixel_width']

    @pixel_width.setter
    def pixel_width(self, val):
        # keep aspect ratio!
        self.__dict__['pixel_width'] = val
        self.__dict__['pixel_height'] = val / self.aspect_ratio

So now every time that you change the width, the height keeps the correct aspect. And you can do the same for the height. And you can even change the aspect ratio itself and make the width/height keep consistent.
So let's see how this solves the problems above:

Choose the config file on the fly: just read a .cfg file and set all of the attributes of c that it defines. The MutableMapping class even defines the update method for you, so you can just call c.update(dict_with_options_read_from_file) and be done.

config['transparent'] doesn't exist, and if it did, it would not keep consistent: just create a transparent property in ManimConfigDict and make it so that changing config['transparent'] changes config['background_opacity'], and vice versa.

What does the --transparent flag do, exactly? Just go to the documentation for the ManimConfigDict.transparent property. It's even online, it will have extensive examples and be type annotated.

We want it backwards compatible: ManimConfigDict just behaves like a dict, so it doesn't break legacy code. In fact, if we make this change and your scene breaks, it's probably because it wasn't keeping self-consistent. A change that actually shines a spotlight on existing bugs is a good thing, I think. (And this goes for users as well as the codebase itself.)

Because the config system is its own subpackage (#376), we just have to change one or two files in the codebase. All other files can keep using config['pixel_width'] without problem.
What do you think? Did I miss anything? Are there better ways of implementing this? Please let me know.
Please leave me an emoji here to make sure we have consensus before I go about implementing this.

Remember setting the dict is equivalent to setting attributes, so if you define c = ManimConfigDict(), then c.pixel_width, c.pixel_height, and c.aspect_ratio are all valid.
My concern with this is that we have a similar issue that the CONFIG system had/has. Because the attributes are added at runtime, will an IDE for example be able to recognize that those attributes are there?

Fair. I can manually add each config option as an attribute, set them to None, and then replace them with the corresponding property dynamically afterward. I think that'd work?

First of all, thank you for this post and taking time to do this. Everything is vert good to me.
Question tho : What if one wants to mofify the config during the process ? for example, file_writer_config['disable_caching'} is enabled when the code comes from stdlin, how could we do this after this ?
Sorry if it was said.

Question tho : What if one wants to mofify the config during the process ? for example, file_writer_config['disable_caching'} is enabled when the code comes from stdlin, how could we do this after this ?

I'm not sure I understand the question, but this sounds like exactly what tempconfig is designed to do. Otherwise, the ManimConfigDict.update() method can change the config permanently.

Fair. I can manually add each config option as an attribute, set them to None, and then replace them with the corresponding property dynamically afterward. I think that'd work?

make sure to specify their types as well, then sure

I'm not sure I understand the question, but this sounds like exactly what tempconfig is designed to do. Otherwise, the ManimConfigDict.update() method can change the config permanently.

But, when exactly tempconfig is supposed to be used ? Only by the user, right ?
Because, in my case, the change that must be done (i.e, disable_caching to True) is not temporary but rather permanently for the whole process.

Ok I see now. Then tempconfig is not what you want. What you want is to call config.update(some_dict) at the beginning of the pytest session. I'm currently working on this.

After five merged PRs, I'm ready to close this.
@ManimCommunity/tests you can now set a temporary config using tempconfig, and you can now choose a config file programatically using ManimConfig.digest_file.


UnhandledPromiseRejectionWarning

When I go into the basic directory, and try to build:
npm i
npm run dev

I get the following error (identical problem when doing npm run build).
(4)basic $ npm run dev

> svelvet-example-basic@ dev /.../svelvet/examples/basic
> svelvet

(node:16287) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'mkdir' of undefined
    at copyFile (/.../svelvet/examples/basic/node_modules/svelvet/lib/index.js:87:25)
    at concurrencyLimit (/.../svelvet/examples/basic/node_modules/svelvet/lib/index.js:155:83)
    at resolve (/.../svelvet/examples/basic/node_modules/p-try/index.js:4:10)
    at new Promise (<anonymous>)
    at pTry (/.../svelvet/examples/basic/node_modules/p-try/index.js:3:37)
    at run (/.../svelvet/examples/basic/node_modules/p-limit/index.js:23:18)
    at enqueue (/.../svelvet/examples/basic/node_modules/p-limit/index.js:32:4)
    at resolve (/.../svelvet/examples/basic/node_modules/p-limit/index.js:38:60)
    at new Promise (<anonymous>)
    at generator (/.../svelvet/examples/basic/node_modules/p-limit/index.js:38:37)
(node:16287) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 6)
(node:16287) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

This is with v0.3.0 on node v8.10.0 on linux.

I upgraded to v0.3.2 by doing
npm i
npm i -D ../../
npm run dev

but that gives the same error.

Node v10 is required for svelvet to run 👍

yes, was just returning to report that I'd just seen the message saying 'node 10 is recommended'.  I upgraded to node 12 and things are working.
If it doesn't work with node <10 then it would really help to have an error or something more emphatic and noticeable rather than a 'recommended'.


Could you check readme.md?

In readme.md,
src/pages/my-markdown-page.md
import React from 'react'
import RadarChart from './RadarChart'
import PolarChart from './PolarChart'
export default class MyComponent extends React.Component {
  render() {
    return (
      <div>
        <RadarChart />
        <PolarChart />
      </div>
    )
  }
}

But the  actual code in your source is
import MyComponent from '../components/MyComponent'

# Markdown content

these are markdown text

## React Components:

<MyComponent />

```js
function test() {
  return <MyComponent />
}

slkdjs

hey man.. this thing is still in development (to be honest it is abandoned right now because I couldn't make it work). sorry and thanks for looking.


Severe fps hit/lag near massive flowing water

Mod Version:
1.16.4 - <IP_ADDRESS>
Forge Version:
36.0.1
Description:
I installed Fluid Physics. Sometimes worldgen generate a cave at sea floor, so the water will be flowing inside the cave. Since the mod (Fluid Physics) remove infinite water system, the sea water is actually drained inside the cave, leaving an wide area of flowing water block outside the cave.
The problem is: When near a massive flowing water, my fps drop drastically to almost 0 and the flowing water sound effect from DS is stuttering and loud. My fps back to normal when i set master volume to 0, or set Dynamic Surrounding waterfall sound to 0.

Only option is to disable the waterfall effect.  That is the "Waterfall Splash" setting in the Environs config.

Only option is to disable the waterfall effect.  That is the "Waterfall Splash" setting in the Environs config.

Following up.  Disabling the waterfall effect help?

Following up.  Disabling the waterfall effect help?

Sorry, been busy so i forgot to reply.
Disabling waterfall sound is enough so i just left the effect on.
 Disabling the waterfall effect help?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OreCruncher/DynamicSurroundings/issues/656#issuecomment-767867676,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADG62DQ4NPMDUANNPOESR6LS347DHANCNFSM4WRENZMQ
.

Sorry, been busy so i forgot to reply.
Disabling waterfall sound is enough so i just left the effect on.
 Disabling the waterfall effect help?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OreCruncher/DynamicSurroundings/issues/656#issuecomment-767867676,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADG62DQ4NPMDUANNPOESR6LS347DHANCNFSM4WRENZMQ
.

Interesting.  Are you by chance using Sound Filters?

Interesting.  Are you by chance using Sound Filters?

Yes, how did you know?
lol, it just occurred to me that maybe sound filter also takes part in this.
On Wed, Jan 27, 2021 at 10:19 AM OreCruncher<EMAIL_ADDRESS>wrote:

Interesting. Are you by chance using Sound Filters?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OreCruncher/DynamicSurroundings/issues/656#issuecomment-767965856,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADG62DQVQXCTL2ZVF5PFUL3S35Z4BANCNFSM4WRENZMQ
.

Yes, how did you know?
lol, it just occurred to me that maybe sound filter also takes part in this.
On Wed, Jan 27, 2021 at 10:19 AM OreCruncher<EMAIL_ADDRESS>wrote:

Interesting. Are you by chance using Sound Filters?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OreCruncher/DynamicSurroundings/issues/656#issuecomment-767965856,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADG62DQVQXCTL2ZVF5PFUL3S35Z4BANCNFSM4WRENZMQ
.

:)  By default DS has a feature that does reverb and sound occlusion.  If you want to use Sound Filters turn off enhanced sound processing in DS.  Both running together can do things like this.

:)  By default DS has a feature that does reverb and sound occlusion.  If you want to use Sound Filters turn off enhanced sound processing in DS.  Both running together can do things like this.

So, the only solution is to pick either DS or SF then?
If DS feature overlap with SF and does completely what SF does, then i will just disable SF :/

So, the only solution is to pick either DS or SF then?
If DS feature overlap with SF and does completely what SF does, then i will just disable SF :/

You can choose to disable the enhanced sound processing of DS.  By doing that DS will not do reverb and occlusion processing.  I was working today on putting in logic that will auto-disable this processing if Sound Filters is present to prevent this type of thing.  I did notice that Sound Filters has more echo, whereas DS focuses more on reverb.  Reverb and echo are similar in some respects, but are actually different things.  Main difference is the time delta between the original sound and the subsequent repeat.  Echoes have longer periods between, whereas reverb it's much shorter.  Try out both to see which one you prefer.

You can choose to disable the enhanced sound processing of DS.  By doing that DS will not do reverb and occlusion processing.  I was working today on putting in logic that will auto-disable this processing if Sound Filters is present to prevent this type of thing.  I did notice that Sound Filters has more echo, whereas DS focuses more on reverb.  Reverb and echo are similar in some respects, but are actually different things.  Main difference is the time delta between the original sound and the subsequent repeat.  Echoes have longer periods between, whereas reverb it's much shorter.  Try out both to see which one you prefer.

Yes, both mods are really essential but to pick between either is a bit hard, honestly. But i think i will follow your advice.
So i will close this issue since this is not really a bug, but actually incompatibility with Sound Filters. Thank you for your help!

Yes, both mods are really essential but to pick between either is a bit hard, honestly. But i think i will follow your advice.
So i will close this issue since this is not really a bug, but actually incompatibility with Sound Filters. Thank you for your help!


iOS: scrolling in views with messages is slow

Since the iOS app update prior to last, scrolling in views where there are messages (inside a topic or stream) feels much more "heavy" than previously: I used to be able to "flick" the content up and scroll a significant chunk of channel contents (like you would on a Safari page). Now, it takes me maybe a screenful or two forward/backward.
This isn't so annoying when catching up on a topic, but it gets really difficult when I try to find an older message in a long-running stream (my thumbs are very nasty RSI hot spots).

We've had another report of this, here.

I reproduce this on both an iPhone XR running iOS 13 and an iPhone 7 running iOS 12.
I don't reproduce on Android -- scrolling with a "flick" gesture works great on a Pixel 4 running Android 10. So something's happening here that's specific to iOS.