Repeated, Interleaved Tags in XML

This is a follow-up from here. I would like to know if you consider this a bug. I suspect that this is particular to XML which allows repeated tags.
The following fails to de-serialize with Serde.
<Xml>
    <field1 name='a'/>
    <field2 name='b'/>
    <field1 name='a'/>
</Xml>

Note how field1 is repeated but with field2 interleaved. (See linked issue 1 for complete example including version numbering.)
Error:
Error: Custom("duplicate field `field1`")',

Is there something that can be done with this in serde? Or is there anything that can be done to fix this on the quick_xml side?
The workaround is extremely cumbersome.

I have run into the same issue(also a quick-xml user), where duplicate field name is actually expected for collecting into a vec, but the values are different.
<material name="mtr_head" render_template="solid_mask" unique="true" version="2">
    <diffuse_texture file="units/pd2_dlc_ami/masks/ami_01/ami_01_df" />
    <bump_normal_texture file="units/pd2_dlc_ami/masks/ami_01/ami_01_nm" />
    <variable value="0" type="scalar" name="alpha_ref" />
    <reflection_texture file="units/payday2/matcaps/matcap_plastic_df" />
    <material_texture file="units/payday2/masks/shared_textures/patterns/pattern_no_color_no_material_df" />
    <variable value="0 0 0" type="vector3" name="tint_color_a" />
    <variable value="0 0 0" type="vector3" name="tint_color_b" />
    <variable value="1" type="scalar" name="material_amount" />
</material>

This has worked well, up until running into a file with contents above where a stray variable field appears earlier, causing the same duplicate field error. It seems to parse the first field(s), until that is interrupted, and a subsequent sequence will raise the error instead of collect into the same vec.
Probably not of much value, but related serde rust structs:
#[derive(Debug, Deserialize, PartialEq, Default)]
struct Material {
    name: String,
    unique: Option<bool>,
    render_template: String,
    version: u8,

     // filters via custom deserializer for `_texture` suffix entries
     #[serde(flatten, deserialize_with = "de_texture")]
     textures: HashMap<String, Texture>,

    // Collects `variable` entries and through some `From` impl, converts to HashMap,
    // grouping related variables
    #[serde(rename = "variable", default)]
    variables: VarHash, // Could just be `Vec<Variable>` for this example
}

#[derive(Debug, Deserialize, PartialEq, Default)]
struct Variable {
    name: String,
    #[serde(rename = "type", default)]
    _type: String,
    value: String,
}

// Vec<Variable> => HashMap<String, <HashMap<String, String>> => HashMap<String, Vars>
#[derive(Debug, Deserialize, PartialEq, Default)]
#[serde(from = "Vec<Variable>")]
pub struct VarHash(HashMap::<String, Vars>);

I have shared on the linked quick-xml issue(https://github.com/tafia/quick-xml/issues/177) that I have worked around the issue for my data with two similar deserializers implemented for visit_map as the enum workaround isn't practical for my data source and gets in the way more.
If you don't have many fields(mine are variable fields otherwise fields with a specific suffix), then it's probably a better approach. In the case of variable, I would have expected it to be unnecessary, rename = "variable" should be able to collect all instances in the same manner as my deserializer did by filtering through all children?

I don't think there is any other easy way to work around this issue, it may be a limitation/feature of serde.
So to answer the first question, I don't consider it a bug and while I don't like to need to resort to workarounds I don't have anything better to propose for now.

I came across this issue multiple times now, I have tried to solve it.
I implemented my own deserializer. And got it working! :smiley:
I also tried implementing a derive macro. And after a lot of trail and error I got it working.
The result is not pretty, but you can find it here:
https://github.com/ralpha/serde_deserializer_best_effort
(it will probably not solve your problem, but might help you)
I included both the manual implementation and the derive trait.
The code could be so much nicer if it was included in the serde crate.
But I was not very familiar with writing macro's before this.
(A good thing that compilers course from a few year ago came in handy :wink: )
I don't know if this behavior could be implement in this or the serde crate/repo.
TL;DR: Solved it, but with its limitation: https://github.com/ralpha/serde_deserializer_best_effort
Also other linked issues:
https://github.com/RReverser/serde-xml-rs/issues/55
https://github.com/serde-rs/serde/issues/690

I have been looking into this a bit more.
I looked at the serde-xml-rs code and the serde code.
(this paragraph is unrelated to the topic)
I tried to run and change it locally got some errors when compiling. Simplified the https://github.com/ralpha/serde_deserializer_best_effort code a bit for this local test and git clone the serde and serde-xml-rs repo. If I can run it locally I could try to implement a solution.
error[E0283]: type annotations needed
  --> src/main.rs:84:21
   |
84 | fn read_xml_file<C: serde::de::Deserialize<'_> +  DeserializeOwned>
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for type parameter `C`
   |
   = note: cannot resolve `C: _IMPL_DESERIALIZE_FOR_RootNotWorking::_serde::Deserialize<'static>`
   = note: required by `_IMPL_DESERIALIZE_FOR_RootNotWorking::_serde::Deserialize`

But looking at the Serde code a bit more.
The error (when using #[derive(Deserialize)]) is generated by https://github.com/serde-rs/serde/blob/29be721f7929bc2a8f33c6e1d28225346558afd5/serde_derive/src/de.rs#L2428
So if we could do a test just before this line and check if the type we are trying to give a new value to is of a collection type, or just Vec<>, HashMap<>,... we can add the value to the list instead of giving an error.
We know the type of the field at compile-time so this could be resolved by the compiler (when generating this code)
let deser_name = field.attrs.name().deserialize_name();
let field_type = field.ty; // <--------- Adding this line, for example --------------

let visit = match field.attrs.deserialize_with() {..}

There are a few ways we could do this, here are 2 options:
Option 1
Do a test if the type implements the Extend trait (this include most of the wanted types). Although I'm not sure if or how this could be done (at compile-time or run-time). Maybe something like this: https://stackoverflow.com/a/30275713/2037998 We could generate the additional code for the check only if the type support the Extend trait. (if we can check this at compile time)
Option 2
This option is easier (but might be considered dirtier?). This is how I approached it in my proof of concept above. I added a new trait for all deserializible types ( DeserializeBestEffortTypes in my code ) We then know that all types have this trait (this could be the Deserialize<'de>) we can then add a new function (add_deserialized_data for example) to this trait.
This can be done in https://github.com/serde-rs/serde/blob/29be721f7929bc2a8f33c6e1d28225346558afd5/serde/src/de/mod.rs#L531 (Or somewhere that might fit better.) We can then implement this for every type (String, u32, ...) where it does exactly the same as it does now. And for Vec<>,... where we add the item to the list.
(code example here: https://github.com/ralpha/serde_deserializer_best_effort/blob/master/src/deserialize_best_effort.rs)
We know that every type has this trait and can thus call the function to add the value.
So we can do this:
__Field::#name => {
    if let Some(#value) = #name {
        if #value.deserialize_extendable(){ // check added to not change current behavior
              #value.add_deserialized_data(#visit);
        }
        return _serde::export::Err(<__A::Error as _serde::de::Error>::duplicate_field(#deser_name));
    }else{
        #name = _serde::export::Some(#visit);
    }
}

This could also allow behavior like what serde_with does now, but build in. Depending on how deserialize_extendable() and add_deserialized_data(#visit) are implemented.
This behavior could even be hidden under a new Container attributes to not break old code with manual implementations of Deserializer if that is a big concern.
This quickly gets complicated if you are not to familiar with code, so sorry if it is not clear.

XML has always been a poor fit for Serde in my experience. I'll go ahead and close this because I think it would be better for the ecosystem if we build strongly typed XML libraries on a separate derive macro dedicated to XML, rather than pursuing XML-oriented features in Serde's traits and derives (this is far from the only such missing piece).

Duplicate Interleaved tags is also a problem in JSON.
For example:
{
    "field1": "a",
    "field2": "b",
    "field1": "c",
}

Duplicate tags are allowed: https://stackoverflow.com/questions/21832701/does-json-syntax-allow-duplicate-keys-in-an-object
So this should also be allowed.
This might seem as a issue that does not come up. But I had this issue with a Wireshark export in: https://github.com/serde-rs/json/issues/652 And later with interleaved tags in Wireshark. Did not report it as I solved it with this https://github.com/ralpha/serde_deserializer_best_effort. But that is more of a hack then a solution.
And just our of curiosity:

this is far from the only such missing piece

What are the pieces are you referring too?

it would be better for the ecosystem if we build strongly typed XML libraries on a separate derive macro dedicated to XML

What do you suggest, just a fork of Serde that is changed for this (any maybe other xml) behavior? Or would you suggest starting with something totally different?


Perform Audit of Streaming Service Unit Tests

As an ECMPS developer, I want to review all existing unit tests to ensure they are all good well-written tests that serve a purpose.

[ ]  Remove/Modify any unit tests that the audit has determined are "bad" tests

[ ] Comment in this ticket any files that have had unit tests removed as a result of this audit

All tests in the repo have been reviewed and found to be good tests.
There were no broken tests in the repo.


Support multiple service names

For example - a name per ear/war file. Maybe implement some lazy discovery process that gets name through the request data.
Do we want to support setting service name through public API as well?

Closing - duplicate of https://github.com/elastic/apm-agent-java/issues/136


No break format

Add formatting function to prevent text from being line wrapped.

Hyphenation is not enabled, so the  tag has no effect anyway.


3rd party: Vendor golang.org/x/net/html

This commit vendors the golang.org/x/net/html package.
Signed-off-by: Mark Ryan<EMAIL_ADDRESS>

Coverage decreased (-0.005%) to 64.496% when pulling 6c706461449a73b054c10491dbaa058a531f93e8 on markdryan:vendor-html into 6dd13020d87b16a11b468099be0b76a1fc75aa4d on ciao-project:master.

Coverage decreased (-0.005%) to 64.496% when pulling 28c77bc1c757295ef8ac2fb043c4aadfd2ce8e06 on markdryan:vendor-html into 6dd13020d87b16a11b468099be0b76a1fc75aa4d on ciao-project:master.


[top/dv] Fix back propagation of non-lockstep inputs in lockstep test

The input ports of the ibex_core module are defined as logic without an explicit net type. According to the standard, simulation tools are thus supposed to model these inputs using a var type. However, it turns out that some tools collapse input ports into a single object to reduce the number of assignments to improve simulation performance. As a result, glitches inserted to inputs of the non-lockstep core may propagate back and also change the input of the lockstep core. If this happens, both cores are glitched simultaneously without any alerts firing.
To avoid this, we also glitch the corresponding input of the ibex_lockstep instance to the opposite value. The ibex_lockstep instance is embedded inside prim_buf cells across which glitches don't progagate back. Also, the delay lines are embedded inside the ibex_lockstep instance. It's thus fine to apply the glitch simultaneously.

does this mean we have decided against the approach of either doing local assignments or adding var to the port declaration?

@tjaychen we had discussed in SCA/FI subgroup and found this way to cope w/o changing the design (see SCA/FI subgroup summary. seems like the best trade-off to us bc. required changes are limited to DV env.
@vogelpi successfully tested this - Thanks! :)


puppet: Always use TLS certificates for postgres

TLS should never be optional.
Testing Plan: Inspection.  Remove the stanzas from zulip.conf post-deploy.

I think we can only make these required in the zulip_ops context; for self-hosted Zulips servers, authentication is done not via postgres certificates but instead the password or peer authentication methods.  So we need some sort of setting for "are we using postgres authentication" that can be enabled in the zulip_ops::postgres_appdb context.


Refactor the Run upload process

Refactor the process such that runs and related datasets get created/persisted synchronously whereas the datasets processing (label values calculation and so on) is deferred to the async process by making use if the dataset-even queue

Fixes Issue
Fixes https://github.com/Hyperfoil/Horreum/issues/1976
Changes proposed
This change proposes to slightly update how the Run upload is managed, moving from a completely sync process to a hybrid one.
The process can be summarized as follow:

Persist the Run and any related dataset in the same transaction (if everything goes fine obv).
Once run and datasets are flushed, send dataset events to the dataset-event queue to process label values (and change point detection and so on) asynchronously.

TODOs/Open points:

[ ] What to do with the datastore uploads, should we follow the same process even if more than 10 runs are passed?
[ ] Change the API to always return 202 if the process succeeded with the runId that was created.
[ ] Adapt tests
[ ] Adapt the UI

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.

The behavior will change as follows:

Uploading a new Run

If datastore has more than 10 runs, all of them will be processed async and the api will return 202 with empty array
If less than 10 runs, the process will persist the runs and their datasets and it will queue up the datasets recalculation such that they will be processed async . The API will return the list of run ids.

Given that the transform() method is getting called by other processes, I if isRecalculation is set to true (which is not the case for new Run upload) the datasets recalculation is getting processed sync.

Given that with the new implementation, uploading a run is not fully synchronous anymore, I had to change some tests in order to explicitly recalculate the labelValues.
Moreover I create a different in memory resource for AMQ such that we can skip processing events in the AMQ broker if not actually required, especially because they will throw errors as they are not running in the same transaction of the test

Sorry, I should have mentioned that is just for testing purposes, see horreum-backend/src/test/java/io/hyperfoil/tools/horreum/test/AMQPInMemoryResource.java such that all tests that do not require or that they don't check async processing can use that. This will avoid to see some exceptions during the tests that are "expected" but that can cause confusion

ok, thanks for clarifying

I had to add https://github.com/Hyperfoil/Horreum/pull/2172/commits/e7f469d78b13213da1126431dfd1f37db727dd41 after rebasing because I had adapt the new tests that have been created in master to the new logic (status code actually)


anchor tag (Link to External Pages with Anchor Elements) not letting me proceed

Challenge Link to External Pages with Anchor Elements has an issue.
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36.
Please describe how to reproduce this issue, and include links to screenshots if possible.
 But your code is incorrect.
GitHub Issues are for reporting bugs on the website only.
Please use the Help chat room for getting challenge related help.
Happy Coding!

I keep getting no response from.....


Revert remove save shows

This PR reverts a change where the Saved button was removed from all instances of the Show Item Row component.
Now the button is only removed from this component on the Show Card in the Global Map view.

nice!

Ace 👍


nix-shell can't be run

Describe the bug
Failing to start nix-shell in Fish shell and bash
> nix-shell -p python3                                                                                The program ‘clear’ is currently not installed. It is provided by
several packages. You can install it by typing one of the following:
  nix-env -iA nixos.busybox
  nix-env -iA nixos.ncurses
  nix-env -iA nixos.ncurses5
  nix-env -iA nixos.toybox

>  nix-shell
error: getting status of '/home/mudrii/default.nix': No such file or directory

> type clear
clear is /run/current-system/sw/bin/clear

> clear -V
ncurses 6.1.20190112

To Reproduce
Steps to reproduce the behavior:

Just run nix-shell

Expected behavior
Getting inside nix-shell
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
 nix-shell -p nix-info --run "nix-info -m"
these paths will be fetched (0.06 MiB download, 0.31 MiB unpacked):
  /nix/store/5h35s50503spks8gkxdv3kk4szz8vx9g-bash-interactive-4.4-p23-dev
  /nix/store/qghrkvk86f9llfkcr1bxsypqbw1a4qmw-stdenv-linux
copying path '/nix/store/5h35s50503spks8gkxdv3kk4szz8vx9g-bash-interactive-4.4-p23-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/qghrkvk86f9llfkcr1bxsypqbw1a4qmw-stdenv-linux' from 'https://cache.nixos.org'...
 - system: `"x86_64-linux"`
 - host os: `Linux 5.4.17, NixOS, 19.09.2036.c49da6435f3 (Loris)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.2`
 - channels(root): `"home-manager-19.09, nixos-19.09.2036.c49da6435f3, unstable-20.03pre212208.8130f3c1c2b"`
 - channels(mudrii): `"home-manager, unstable-20.03pre196836.1c40ee6fc44"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

I'm going to close this as expected behavior. The nix-shell is meant to provide an environment identical to the one used for nix-build, which means bash is used.
For what you seem to want to do, use nix run instead, e.g.:
nix run nixpkgs.python3

As a work-around you could start bash and then nix-shell, and for convenience create a wrapper script that execs.

bash-4.4# nix-shell -p nix-info --run "nix-info -m"
this path will be fetched (0.00 MiB download, 0.00 MiB unpacked):
/nix/store/74dgx0ijqh94qmjs27285ywj10nkgvwb-nix-info
copying path '/nix/store/74dgx0ijqh94qmjs27285ywj10nkgvwb-nix-info' from 'https://cache.nixos.org/'...

system: "aarch64-linux"
host os: Linux 5.10.104-linuxkit
multi-user?: yes
sandbox: no
version: nix-env (Nix) 2.9.2
channels(root): ""
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixpkgs


Support for JWE and JWS

Introduces support for JWE and JWS.
JWE and JWS implementation assumes string payload instead of map of strings, to allow for more scenarios where the payload may not be a json structure (e.g. JWE containing a JWS compact as payload)

This extension is deprecated. In the meantime, k6 supports webcrypto, it is advisable to use it in new tests.
If you need this extension because of your old tests or if you want to continue development, feel free to fork it.


Vac auth error

I'm getting vac auth error in matchmaking everytime, why ?

Verify ur game files.
Relog ur Steam Account
Done

i know that, but in competitive you cant reconnect after a vac auth error...
I think that the reason of this error is the recoil based fov... Can someone fix it?

bro lol just use vac bypass loader. it fixed all errors for me

i'm being game banned in all of my accounts without use aimbot or wallhacks... :/

i got banned in my first match using osiris

use sazinjector, vac bypass, and protect your dll with vmprotect. it shouldn't be happened

i used my own injector, all vmprotected
i was getting game banned cuz of my phone number, sorry for my mistake


Paginate: Customizable buttons.

please add this:

if the its ajax paginate then scroll up after going to the next page
add paginate button on top and bottom (optional)

please add this:

if the its ajax paginate then scroll up after going to the next page
add paginate button on top and bottom (optional)

Thank you @yanivz we'll consider it for future versions: https://github.com/unaio/una/issues/3064


Adding sliding window attention support in cuDNN SDPA API

@superbobry @kaixih could you guys help take a look?

LGTM.

@superbobry all comments addressed, could you take another look? Thanks!


CREATE DEDICATED PAGES FOR 3 DESTINATIONS OF TRIP PACKAGES  #enhancement

Describe the bug
The buttons of [Santorini ,Aegean Sea],  [Machu Picchu ,Peru] , [Grand Canyon National Park ,Arizona]  does not work on-click, I
want to add dedicated pages for them as they are in display without view all. Later i may put issue to create more pages for the rest of the places.
Also I want to fix the pricing review section and testimonial section both needs some alignment.
Expected behavior
For the alignments the section images are partially trimmed (**goes down) or the heading of the below section is partially visible when visited by the nav links
Screenshots (Mandatory)

Are you contributing under any open-source program ?

JWOC 2024

@ratnojitsaha JUST make the different pages for the 3 places by clicking on the "book now" button in this issue
I am assigning you

@apu52 sure

@apu52  sry for the delay from my side haven't worked on it yet, someone in my family passed away. I understand the importance of quick updates. Please consider an extension of 2 days, will submit u by day after tommorrow.

@apu52 sry for the delay from my side haven't worked on it yet, someone in my family passed away. I understand the importance of quick updates. Please consider an extension of 2 days, will submit u by day after tommorrow.

Take as much time as you want . Don't worry . Don't take any pressure. Just go ahead

please Assign it to me

@apu52,  Should I change anything please check
Here is a sample for one of the destinations (Santorini ,Aegean Sea.)
***THE NEXT & PREV buttons changes the pics of the destinations
***THE  CHECKOUT button takes to the PAYMENT.html page!!

@apu52 okay


How to change the port 5000 (Deploy with docker)

Hi,
It would be appreciated if you can let me know how i can use different port then 5000.
I tried to change it but its only work with 5000 Port
Steps I took
I ran the docker command with different port
I Updated the dockerfile to expose 5001 not workrd
I have build the images locally with specifying another port
None of above working.
Look forward to hear from you.
Thanks,
Sk

Have you tried passing -p 5001:5000 to docker run?
docker run -it -p 5001:5000 codait/max-text-sentiment-classifier

Hi,
Thanks for your reply. I tried above but the app still running with port 5000

This is what's happening in the container. The app still opens Port 5000, but Port 5000 in the container has now been mapped to Port 5001 on the host. If you try to connect to localhost:5001 from your host, it should work.


table cleanup

@v-kents,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

globalization/index.md
:white_check_mark:Succeeded

globalization/input/text-rendering.md
:white_check_mark:Succeeded

globalization/locale/number-formatting.md
:white_check_mark:Succeeded

globalization/locale/paper-size.md
:white_check_mark:Succeeded

globalization/locale/units-of-measurement.md
:white_check_mark:Succeeded

globalization/localizability/isolate-localizable-resources.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


New entry submission

Hi, I want to submit an entry to the list under the puzzle section.

1000 levels of Sokoban (source, app) by Jackson Kwok

Thanks.

Excellent, many thanks!


Navajo forms of Ą and Ę need small caps form

The fonts have a Navajo form for Ą and Ę with centered ogonek, but miss the small caps variants of the letters.

assign it to myself to contact the contractor and see if they can fix this.

Fixed by latest update, #97


Request: create pip-installable package

Hi all, very excited about your work! I spoke to Dan and Avery earlier today.
Small feature request: can you make your code installable (i.e. include a setup.py or similar)? I'm evaluating Clay as part of a decent-sized existing application and this would make using it a lot easier. Would be great if it was on PyPI too!

In general, the process would involve:

Ensuring that the pyproject.toml file is correctly configured with the project metadata and dependencies.
Building the package using the poetry build command which creates a distribution file (e.g., a .whl or .tar.gz file).
Registering for an account on PyPI if you haven't already.
Publishing the package to PyPI using the poetry publish command, which uploads the distribution file to the PyPI repository.


Add a commit hook to generate a list of calendar propers

Related: #76, #210, #201, #121

I propose to auto-generate calendar propers from the calendars in the romcal codebase using a commit hook.
I suggest to create a commit hook using the script below.
Note that the script below is a WIP. It definitely can be improved in many ways. Some of these improvements depend on other things (like localisation of celebration cycle names, titles, calendar names). Below I list potential improvements of the script, which might be dealt/implemented in separate issues/PRs. Also note that the TODO list is quite verbose. :smiley:
The current (initial) version of this script:

works with English and Slovak locales only (Latin would work if dayjs would include Latin locale, which I hope is on the way with merging PR iamkun/dayjs#966). The reason behind this is that currently only those locales are supported which contain all strings localised;
does not process celebrations.ts;
presumes that either the calendar configuration is defined entirely in the particular calendar or it is not defined in the particular calendar at all and then the calendar configuration from general.ts is used; this might cause an issue, but should not, because when we use calendar configuration, we should always define every option (key) in it.

TODO:

[ ] also localise terms like liturgical colour, rank, date, celebration, title (both in singular and plural, probably even both nominative and genitive), as well as the values from localeConfig constant from the script;
[ ] add another mandatory key to celebration definition and to the output JSON) which would contain human-readable string that would define the celebration date (note that we might want to localise the verbose ones):

fixed dates: {year}-01-01 (Note: This one might be omited altogether, because this can be simply parsed from the current date definition. However, it might be easier to implement in this script if even for fixed dates this would be filled in);
fixed dates that are relative to other celebrations: Monday after Pentecost Sunday;
fixed dates that are moved to different dates when they ocur with celebrations of higher rank: {year}-03-25; moved to Monday after First Sunday of Easter when ocurs either with Palm Sunday or is in the Holy Week;

[ ] add a column with changes (in celebration definition) in comparison with the GRC (aka GRC change type):

IMHO the easiest way to accomplish this is to add another mandatory key (e.g. changeType) to all celebration definitions with the following possible values (the values might be changed as required, however the key value must be an array, as there might be more than one change):

date moved;
rank lowered;
additional title(s);
removed title(s);
celebration dropped;

it might be even better if we could localise these values (as all and any other user-facing value/string);

[ ] currently, the script relies on the order the celebrations are defined in calendar; we might want to sort them (order by date, but there would be two groups: celebrations with [semi-]fixed dates and celebrations which date depends on other celebration);
[ ] add calendar metadata object (in calendar files) that would contain the following information (also available in the output JSON):

calendar name constant (e.g. GENERAL_ROMAN_CALENDAR);
localised calendar name (e.g. General Roman Calendar in English);
validation information:

validated [Boolean]:

if the calendar was validated;

validationSourceType ['official' | 'unofficial']:

if the calendar was validated (validated), what type of source was used to validate it;

validationSourceName [String]:

if the calendar was validated (validated), what is the name of the source (e.g. Missale Romanamu, ed. typ. tertia, Roman Missal, ed. typ. tertia, decree, AAS, Notitiae, diocese [even if the source is from the liturgical commission of that diocese], other);

validationSourceUrl [String]:

if the calendar was validated (validated) and if the source is available online, provide the URL address here;

[ ] list holydays of obligation per proper (blocked by #76)
[ ] process celebration.ts file when generating GRC Proper; or even better: move those celebrations into general.ts (see #210);
[ ] add patronage titles when there are implemented (either into Ranks column or in a separate column; see #201);
[ ] liturgical colours are currently obtained from the celebration definition (and therefore not all colours are output in the table), however, when #121 is implemented, we need to find a different way to gather the colours;
[ ] we might want to improve format the MD table (I did not do anything major with it yet, as right now I wanted to demostrate what I mean by creating calendar propers);
[ ] I would suggest to rename the source key used in celebration definitions to something else, as IMHO a source should be the source from where we got the celebration metadata.
[ ] use fallback locales as in romcal:

currently, the script does not use any fallback language, that is: when a string is not localised, it would output undefined;

[ ] we might want to get the configuration from general.ts data (stored in memory/variable), not directly from file;
[ ] maybe someone can find a better way to create a JSON from calendar files (see lines 173-179 in the script file; it starts with removeLinesBefore variable definition);
[ ] @emagnier: Is the default celebration cycle temporale? If yes, we could output it by default (i.e. when cycles object is empty).

Example output of the script using code from PR #213 is uploaded to romcal Wiki, as it contains 502,651, while GitHub permits maximum 65,536 characters in a comment.

create_propers_from_cals.js
/*
 * Generate all calendar propers using romcal data
 *
 * author:  Tukusej’s Sirs
 * date:    4 October 2020
 * version: 0.1
 *
 * Install dependencies: `npm install fs tablemark dayjs`
 */

// Modules
const fs = require('fs')
const tablemark = require('tablemark')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)

// Constants
const repoRoot = '/home/ts/git/c10n/romcal_ts'  // TODO: Change this as required
const outFile = './test.md'  // TODO: Change this as required
const calPath = repoRoot + '/src/calendars'
const l10nPath = repoRoot + '/src/locales'
// TODO: Currently only those locales are supported which are localised for 100 %
// Note: It works as expected with Slovak locale (as it contains all strings from `en.ts`)
// Note: It doesn't work with Latin locale, because currently we miss the Latin locale in `dayjs` (currently, I wait when my PR will be merged); otherwise this work work just like English or Slovak locale
const locale = 'en'
// This is used to get the fixed date from the date definition more easily
const year = new Date().getFullYear()

// Set the locale for `dayjs`
// Note: This is used to get the fixed date from the date definition more easily
require('dayjs/locale/' + locale)
dayjs.locale(locale)

// Define the definite article
// TODO: Add this (somehow) to l10n files in romcal codebase
const localeConfig = {
   // Note: All keys should be defined in all locales (use empty string for `definiteArticle` if it is not available in a particular locale)
   en: {
      // TODO: Use lowercase `the` (or any other article) in l10n files and uppercase the first letter (or all letters) when needed
      definiteArticle: 'The',
      // Format that `dayjs` understands
      dayMonthFormat: 'D MMMM',
      celebrationName: 'Celebration name',
      rank: 'Rank',
      date: 'Date',
      liturgicalColors: 'Liturgical color(s)',
      titles: 'Title(s)',
      celebrationCycle: 'Celebration cycle',
      lookupSource: 'Lookup source',
      isPrioritized: 'Is prioritized?',
      grcChangeType: 'GRC change type'
   },
   sk: {
      definiteArticle: '',
      dayMonthFormat: 'D. MMMM',
      celebrationName: 'Názov slávenia',
      rank: 'Stupeň',
      date: 'Dátum',
      liturgicalColors: 'Liturgické farby',
      titles: 'Tituly',
      celebrationCycle: 'Cycklus slávenia',
      lookupSource: 'Zdroj vyhľadávania',
      isPrioritized: 'Je prioritizovaná?',
      grcChangeType: 'Druh zmeny (VRK)'
   }
}

// Table header used by `tablemark`
// Note: Table header should be in format that is accepted by `tablemark`
// Note: `tablemark` accepts the following format too: `{ name: 'column name', align: 'center' },`
const tableHeader = [
   localeConfig[locale].celebrationName,
   localeConfig[locale].rank,
   localeConfig[locale].date,
   localeConfig[locale].liturgicalColors,
   localeConfig[locale].titles,
   localeConfig[locale].celebrationCycle,
   localeConfig[locale].lookupSource,
   localeConfig[locale].isPrioritized
   // localeConfig[locale].grcChangeType
]

// Define the 'preface' to the propers
// TODO: Localise this 'preface'
const tablePreface = '## List of calendar propers\n\nThis list of calendar propers is automatically generated with each commit that lands into romcal codebase. Its primary purpose is to make it easier for non-technical persons (like liturgists) to proof the propers of any calendar without any code knowledge (e.g. where are the celebrations defined in the romcal codebase or how to read and proof the date definition if it is actually correct).\n\nIf you find any (even potential) error in the propers, please raise an [issue](https://github.com/romcal/romcal/issues/new).\n\n\n\n### Data that this list is composed of\n\n1. Calendar propers are listed in alphabetical order with one exception: the General Roman Calendar is put to before other (particular) propers.\n\n2. _Calendar configuration_ currently contains the following configurations:\n\n   - if the _Epiphany of the Lord_ is celebrated on Sunday;\n   - if the _Ascension of the Lord_ is celebrated on Sunday;\n   - if the _Most Holy Body and Blood of Christ_ is celebrated on Sunday.\n\n3. Note that some particular calendars does not have calendar configuration set. In that case, we use the configuration from the General Roman Calendar. The _source_ of calendar configuration is noted before the calendar configuration.\n\n4. Calendar proper itself is typeset in a table with the following columns:\n\n   - `Celebration name`;\n   - `Rank`;\n   - `Date`:\n      - either a fixed date (e.g. `1 January`) or date dependent on another celebration (e.g. `Thursday after Pentecost Sunday`) or a more verbose definition (when a celebration is moved to what date);\n   - `Liturgical color(s)`:\n      - it usually contains only one color, but on _All Souls_, the _Third Sunday of Advent_ and the _Fourth Sunday of Lent_ contains two colours separated by a comma and a space (i.e. `, `);\n   - `Title(s)`:\n      - for celebrations of saints and blesseds, here we list their titles;\n   - `Celebration cycle`:\n      - it can be either _Temporale_ or _Sanctorale_;\n   - `Lookup source`:\n      - `TODO`;\n      - it can be _celebrations_;\n   - `Is prioritized?`:\n      - if it is set to _true_, it will take priority over celebrations that ocur on the same date.\n\n\n### Calendar propers\n\n'

// Create a list of calendars with `general.ts` being the first (all other calendars listed in alphabetical order)
let calendarsList = fs.readdirSync(calPath)
calendarsList = calendarsList.filter(item => !(/(^(general\.ts|index\.ts|test\.ts)$)/g).test(item));
calendarsList.unshift('general.ts')

// Get locale data
// TODO: Use fallback languages for missing strings.
let enL10nData = getL10nDataObj(l10nPath + '/' + locale + '.ts')

// Write `tablePreface` to `outFile`
fs.writeFileSync(
   outFile,
   tablePreface, {
      encoding: 'utf8',
      flag: 'w'
   }
)

for (let calendar of calendarsList) {
   // Get calendar data
   let calDataObj = getCalDataObj(calPath + '/' + calendar)

   // Create Markdown table for the calendar
   let markdownTable = createMarkdownTable(calDataObj)

   // Write calendar proper to `outFile`
   // TODO: Localise calendar names within romcal codebase
   let calProper = '\n' + '  ' + calendar + '\n\n'
   calProper += 'Calendar configuration source: **' + calDataObj.calConfig.configSource + '**.\n\n'
   calProper += localeConfig[locale].definiteArticle + ' _' + enL10nData.celebrations.epiphany + '_ is celebrated on Sunday: **' + calDataObj.calConfig.epiphanyOnSunday + '**.\n\n'
   calProper += localeConfig[locale].definiteArticle + ' _' + enL10nData.celebrations.ascension + '_ is celebrated on Sunday: **' + calDataObj.calConfig.ascensionOnSunday + '**.\n\n'
   calProper += localeConfig[locale].definiteArticle + ' _' + enL10nData.celebrations.corpus_christi + '_ is celebrated on Sunday: **' + calDataObj.calConfig.corpusChristiOnSunday + '**.\n\n'
   calProper += markdownTable
   calProper += '\n'

   // This prevents adding two final newlines
   if (calendarsList[calendarsList.length - 1] != calendar) {
      calProper += '\n'
   }

   // Write calendar proper to `outFile`
   fs.writeFileSync(
      outFile,
      calProper, {
         encoding: 'utf8',
         flag: 'a'
      }
   )
}

/**
 * Gets the calendar data in JSON object
 *
 * @param      {string}  cal     Calendar file with path
 *
 * @returns    {object}  Calendar data
 */
function getCalDataObj(cal) {
   let calData = fs.readFileSync(cal, 'utf8')
   let ascensionOnSunday, corpusChristiOnSunday, epiphanyOnSunday

   // Get calendar configuration
   let configTest = calData.match(/const defaultConfig: RomcalConfigInCalendarDef \| undefined = undefined;/)

   if (configTest != null && configTest[0] == 'const defaultConfig: RomcalConfigInCalendarDef | undefined = undefined;') {
      // TODO: Get the configuration from `general.ts` data, not directly from file
      let calGeneral = cal.replace(/[^/]*\.ts$/, 'general.ts')
      let calDataGeneral = fs.readFileSync(calGeneral, 'utf8')

      // TODO: Instead of `general.ts` use localised name of the calendar (e.g. `Proper of General Roman Calendar`)
      configSource = 'general.ts'
      ascensionOnSunday = calDataGeneral.match(/(?<=ascensionOnSunday: )[^,]*/)[0]
      corpusChristiOnSunday = calDataGeneral.match(/(?<=corpusChristiOnSunday: )[^,]*/)[0]
      epiphanyOnSunday = calDataGeneral.match(/(?<=epiphanyOnSunday: )[^,]*/)[0]
   } else {
      // TODO: Instead of (e.g.) `philippines.ts` use localised name of the calendar (e.g. `Proper of the Philippines`)
      configSource = cal.match(/[^/]*\.ts/)[0]
      ascensionOnSunday = calData.match(/(?<=ascensionOnSunday: )[^,]*/)[0]
      corpusChristiOnSunday = calData.match(/(?<=corpusChristiOnSunday: )[^,]*/)[0]
      epiphanyOnSunday = calData.match(/(?<=epiphanyOnSunday: )[^,]*/)[0]
   }

   // Convert the calendar file to JSON string
   // TODO: Is there a better way to create a JSON from calendar files?
   let removeLinesBefore = calData.replace(/[\s\S]*const _dates: Array<RomcalLiturgicalDayInput> = /m, '')
   let removeLinesAfter = removeLinesBefore.replace(/];[\s\S]*/m, ']')
   let quoteConstants = removeLinesAfter.replace(/(Ranks.[A-Z_]*|LiturgicalColors.[A-Z_]*|Titles.[A-Z_]*|CelebrationsCycle.[A-Z_]*)/g, "'$1'")
   let doubleQuoteDateValues = quoteConstants.replace(/(date: )((\(\(|dayjs|await)[\s\S]*?(\)(?=,$)|\(year\)|\)\(\))(?![; ]))/gm, '$1"$2"')
   let removeComments = doubleQuoteDateValues.replace(/\/\/.*/g, '')
   let removeNewlines = removeComments.replace(/\n/g, ' ')
   let splitByDoubleQuotes = removeNewlines.split('"')

   // Replace single quotes within date value with double quotes
   for (let i=0; i < splitByDoubleQuotes.length; i++) {
      if (i%2 == 1) {
         splitByDoubleQuotes[i] = splitByDoubleQuotes[i].replace(/'/g, '"')
      }
   }

   let joinWithSingleQuotes = splitByDoubleQuotes.join("'")

   // Create and return JSON object with calendar data
   let json = eval('(' + joinWithSingleQuotes + ')')

   // Push calendar configuration into JSON object
   json.calConfig = {}
   json.calConfig.configSource = configSource
   json.calConfig.ascensionOnSunday = ascensionOnSunday
   json.calConfig.corpusChristiOnSunday = corpusChristiOnSunday
   json.calConfig.epiphanyOnSunday = epiphanyOnSunday

   return json
}

/**
 * Gets the locale data in JSON object
 *
 * @param      {string}  locale     locale file with path
 *
 * @returns    {object}  Locale data
 */
function getL10nDataObj(locale) {
   let l10nData = fs.readFileSync(locale, 'utf8')

   // Convert the locale file to JSON string
   let removeLinesBefore = l10nData.replace(/[\s\S]*export default /m, '')
   let removeLinesAfter = removeLinesBefore.replace(/ as RomcalLocale;[\s\S]*/m, '')

   // Create and return JSON object with locale data
   return eval('(' + removeLinesAfter + ')')
}

/**
 * Create markdown table
 *
 * @param      {object}  json    JSON object containing celebration definitions
 *
 * @returns    {string}  Markdown table with calendar proper
 */
function createMarkdownTable(json) {
   let mdTableObj = new Array()

   for (let i=0; i < json.length; i++) {
      let celebration = json[i]
      mdTableObj[i] = {}

      // TODO: add additional column: GRC change type

      for (let key in celebration) {
         switch(key) {
            case 'key':
                  if (celebration.source == 'celebrations') {
                     mdTableObj[i].celebrationName = enL10nData.celebrations[celebration.key]
                  } else {
                     mdTableObj[i].celebrationName = enL10nData.sanctoral[celebration.key]
                  }
               break
            case 'rank':
                  let rank = celebration.rank.replace(/Ranks\./, '')
                  mdTableObj[i].rank = enL10nData.ranks[rank]
               break
            case 'liturgicalColors':
                  let litColsOutput = ''

                  if (Array.isArray(celebration.liturgicalColors)) {
                     for (let i=0; i < celebration.liturgicalColors.length; i++) {
                        if (i != 0) {
                           litColsOutput += ', '
                        }

                        let liturgicalColors = celebration.liturgicalColors[i].replace(/LiturgicalColors\./, '')
                        litColsOutput += enL10nData.liturgicalColors[liturgicalColors]
                     }
                  } else {
                     let liturgicalColors = celebration.liturgicalColors.replace(/LiturgicalColors\./, '')
                     litColsOutput += enL10nData.liturgicalColors[liturgicalColors]
                  }

                  mdTableObj[i].liturgicalColors = litColsOutput
               break
            case 'cycles':
                  // TODO: Ask @emagnier if there the default celebration cycle is temporale; if yes, we could output it by default (i.e. when `cycles` object is empty)
                  let celebrationCycle = celebration.cycles.celebrationCycle.replace(/CelebrationsCycle\./, '')
                  // TODO: Use the following line when cycles are localised
                  // mdTableObj[i].celebrationCycle = enL10nData.celebrationCycle[celebrationCycle]

                  mdTableObj[i].celebrationCycle = celebrationCycle
               break
            case 'metadata':
               // TODO: Ask @emagnier if there are currently any othe metadata types besides `titles`

               let titlesOutput = ''

               for (let i=0; i < celebration.metadata.titles.length; i++) {
                  if (i != 0) {
                     titlesOutput += ', '
                  }

                  let title = celebration.metadata.titles[i].replace(/Titles\./, '')
                  // TODO: Use the following line when titles are localised
                  // titlesOutput = enL10nData.titles[title]
                  titlesOutput += title
               }

               mdTableObj[i].titles = titlesOutput
               break
            case 'date':
                  switch (true) {
                     case /^dayjs\.utc\(`\${year}-[0-9]+-[0-9]+`\)$/.test(celebration.date):
                     mdTableObj[i].date = eval('(' + celebration[key] + ')').format(localeConfig[locale].dayMonthFormat)
                        break;
                     case /^await.*/.test(celebration.date):
                        mdTableObj[i].date = celebration[key].replace(/[\s\S]*=> {*\s*([\s\S]*}*)\)(\(year\)|\(\))[\s\S]*/, '$1').replace(/  +/g, ' ')
                        break;
                     case /^\(\(\).*=> {/.test(celebration.date):
                        mdTableObj[i].date = celebration[key].replace(/[\s\S]*Dayjs => {\s*([\s\S]*)}\)[\s\S]*/, '$1').replace(/  +/g, ' ')
                        break;
                     case /^\(\(y: number\)[\s\S]*else.*/.test(celebration.date):
                        mdTableObj[i].date = celebration[key].replace(/[\s\S]*=> {*\s*([\s\S]*else[\s\S]*?return [\s\S]*})[\s\S]*}\)(\(year\)|\(\))[\s\S]*/, '$1').replace(/  +/g, ' ')
                        break;
                     case /^\(\(y: number\).*/.test(celebration.date):
                        mdTableObj[i].date = celebration[key].replace(/[\s\S]*=> {*\s*([\s\S]*}*)}?\)(\(year\)|\(\))$/, '$1').replace(/  +/g, ' ')
                        break;
                     default:
                        mdTableObj[i].date = celebration[key].replace(/  +/g, ' ')
                  }
               break
            case 'source':
                  mdTableObj[i].lookupSource = celebration[key]
               break
            case 'prioritized':
                  mdTableObj[i].isPrioritized = celebration[key]
               break
            default:
               mdTableObj[i][key] = celebration[key]
         }
      }
   }

   // Make sure all columns will be present in the Markdown table
   // Note: If a table does not a particular column in any row, it won’t be output. The following commands make sure that the first row (after the header row) contains all the columns (although some of them might be empty).
   if (mdTableObj[0]['celebrationName'] == null) {
      mdTableObj[0]['celebrationName'] = ''
   }

   if (mdTableObj[0]['rank'] == null) {
      mdTableObj[0]['rank'] = ''
   }

   if (mdTableObj[0]['date'] == null) {
      mdTableObj[0]['date'] = ''
   }

   if (mdTableObj[0]['liturgicalColors'] == null) {
      mdTableObj[0]['liturgicalColors'] = ''
   }

   if (mdTableObj[0]['titles'] == null) {
      mdTableObj[0]['titles'] = ''
   }

   if (mdTableObj[0]['celebrationCycle'] == null) {
      mdTableObj[0]['celebrationCycle'] = ''
   }

   if (mdTableObj[0]['lookupSource'] == null) {
      mdTableObj[0]['lookupSource'] = ''
   }

   if (mdTableObj[0]['isPrioritized'] == null) {
      mdTableObj[0]['isPrioritized'] = ''
   }

   return tablemark(mdTableObj, {columns: tableHeader})
}

With all the changes in the TS branch, now I think that the generation of propers should be ported to TypeScript, because the celebration metadata can be inherited or generated by a script  and therefore they are not within a single which could be processed.
Therefore I think we need a romcal option (just like year or locale) using which one could generate proper for either one or more or all calendars supported by romcal.


production.php missing?

[x] I've read the guidelines for Contributing to Roots Projects
[x] This request isn't a duplicate of an existing issue
[x] I've read the docs and followed them (if applicable)
[x] This is not a personal support request that should be posted on the Roots Discourse community

Description
The production.php is missing from config/environments/ in the repository. It would be nice to have a basic configuration for disabling error display, file mods, etc.

As of https://github.com/roots/bedrock/pull/380, application.php is production by default. Then development, staging, whatever are environments where you make the minimum amount of deviations from production in order to make your life easier.
Before, if you somehow messed up setting WP_ENV to "production", the behavior was fail-open. Now it's fail-safe where it will default to production settings if you mess up.


add Gitter chat room

Please add a Gitter chat room to enable contact with the contributors.

#83

@Mauvedia Tip: If you don't want me to re-open issues you close, please wait until the fixes are merged to close the issues. ;)

PR are issues hence why I always close what I consider redundant issues.
I thought that once a PR is initiated the discussion needs to continue there.
That's my way of handling things. I guess you prefer separating general discussions from the code review itself.

PR are issues hence why I always close what I consider redundant issues.

PRs are a way of reviewing and discussing a specific implementation.

I thought that once a PR is initiated the discussion needs to continue there.

Discussion of the specifically proposed implementation happens there, but what if you need to close the PR in favor of a different solution? You have to re-open the issue to continue tracking?

That's my way of handling things.

Maybe so, and I appreciate your help and input, but I'm the project maintainer, and I need to be able to track open issues at a glance, and I can't do that if you keep closing them prematurely. =)

@Mouvedia Another tip: if you add text like Closes #6999 to the issue description, it will automatically close the issue after the fix is merged.

@Mouvedia Another tip: if you add text like Closes #6999 to the PR description, it will automatically close the issue after the fix is merged.

Now that's the way to go.


Add max_alt_alleles option to schema generation

Sometimes we do want to clip.
Probably the right thing to do here is to add a min_value and max_value values to the column schemas, and to np.clip() the values during sanitise.

Note that there are numerous thorny issue to deal with here, as we may not want to just keep the first k alleles but the k most frequent. Except for PL fields (for which we need local alleles anyway, #185) it doesn't see to cause too much problems, so I'm not sure this is much of a priority. Going to leave open for now, but we should probably close this issue after a while if nobody comes along with a compelling use-case.


zoom sensitivity in L.geoJson

Is it possible to style geojsons differently depending on zoom level? For example I am using L.circleMarker and want the radius to be relative to the zoom level (small radius at low zoom, large radius at high zoom). By default it renders with a fixed radius independent of zoom level. I want to do the same with the weight property.

You might want to do something like:
map.on('zoomend', function(){
   var radius = (map.getZoom() > 15) ? 10 : 5;
   myCircleLayer.setradius(radius);
}

I will give this a go, thanks @IvanSanchez

Just for posterity, I was able to do
map.on("zoomend", () => {
  myCircleMarkerLayer.getLayers().forEach((circle) => {
    circle.setRadius(someFunctionOf(map.getZoom(), circle));
  });
});


Fixes to has_one relation.

hey, thanks, can you explain the testcase where the previous code didn't work?

@antpaw when has_one points to belongs_to relation with polimorphic update to all the found records broke my db.


Prevent redirect_back_or_to redirecting to XHR requests?

Is there a simple way to prevent redirect to XHR GET requests to be stored in the session[:return_to_url]?

#747 Should fix that. In the meantime I use a this monkey patch in my application_controller.rb:
  # monkey patch for Sorcery gem
  def require_login
    unless logged_in?
      session[:return_to_url] = request.url if Config.save_return_to_url && request.get? && !request.xhr?
      send(Config.not_authenticated_action)
    end
  end

Fixed by https://github.com/NoamB/sorcery/pull/747


change recipe format to rattler-build

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe/recipe.yaml) and found some lint.
Here's what I've got...
For recipe/recipe.yaml:

The top level meta key schema_version is unexpected
The homepage item is expected in the about section.

For recipe/recipe.yaml:

noarch: python recipes should almost always follow the syntax in our documentation. For the host section of the recipe, you should almost always use python {{ python_min }}.* for the python entry. You may need to override the python_min variable if the package requires a newer Python version than the currently supported minimum version on conda-forge.
noarch: python recipes should almost always follow the syntax in our documentation. For the run section of the recipe, you should almost always use python >={{ python_min }} for the python entry. You may need to override the python_min variable if the package requires a newer Python version than the currently supported minimum version on conda-forge.
noarch: python recipes should almost always follow the syntax in our documentation. For the test.requires section of the recipe, you should almost always use python ={{ python_min }} for the python entry. You may need to override the python_min variable if the package requires a newer Python version than the currently supported minimum version on conda-forge.
License is not an SPDX identifier (or a custom LicenseRef) nor an SPDX license expression.

Documentation on acceptable licenses can be found here.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally.
The following suggestions might help debug any issues:

Is the recipe/{meta.yaml,recipe.yaml} file valid?
If there is a recipe/conda-build-config.yaml file in the feedstock make sure that it is compatible with the current global pinnnings.
Is the fork used for this PR on an organization or user GitHub account? Automated rerendering via the webservices admin bot only works for user GitHub accounts.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11727028878.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally.
The following suggestions might help debug any issues:

Is the recipe/{meta.yaml,recipe.yaml} file valid?
If there is a recipe/conda-build-config.yaml file in the feedstock make sure that it is compatible with the current global pinnnings.
Is the fork used for this PR on an organization or user GitHub account? Automated rerendering via the webservices admin bot only works for user GitHub accounts.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11727236504.

@conda-forge-admin please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally.
The following suggestions might help debug any issues:

Is the recipe/{meta.yaml,recipe.yaml} file valid?
If there is a recipe/conda-build-config.yaml file in the feedstock make sure that it is compatible with the current global pinnnings.
Is the fork used for this PR on an organization or user GitHub account? Automated rerendering via the webservices admin bot only works for user GitHub accounts.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11727879312.

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally.
The following suggestions might help debug any issues:

Is the recipe/{meta.yaml,recipe.yaml} file valid?
If there is a recipe/conda-build-config.yaml file in the feedstock make sure that it is compatible with the current global pinnnings.
Is the fork used for this PR on an organization or user GitHub account? Automated rerendering via the webservices admin bot only works for user GitHub accounts.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11727910378.

@conda-forge/core can you help me why the build consistently fails with the new v1 recipe format proposed by the prefix.dev team? The reason in the logs seems to be that no recipe file is found. I have done everything that was written in the instructions, but for some odd reason conda-smithy only looks for meta.yaml file, not noticing the recipe.yaml file. I believe the recipe.yaml file is correct; I created it using the conda-recipe-manager tool, and validated it manually as well according to the relevant CEP.

Did you already change the build tool in the conda-forge.yml file?

the [docs on prefix.dev|https://prefix.dev/blog/rattler_build_on_conda_forge] did not mention I needed to, but I would appreciate your input:
github:
  branch_name: main
  tooling_branch_name: main
conda_build:
  error_overlinking: true
conda_forge_output_validation: true

good point, just found the relevant docs on conda-forge docs page. thanks! I guess that will be the culprit.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/recipe.yaml) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe/recipe.yaml:

noarch: python recipes should almost always follow the syntax in our documentation. For the host section of the recipe, you should almost always use python ${{ python_min }} for the python entry. For the run section of the recipe, you should almost always use python >=${{ python_min }} for the python entry. For the test.requires section of the recipe, you should almost always use python ${{ python_min }} for the python entry. You may need to override the python_min variable in the conda_build_config.yaml/variants.yaml if the package requires a newer Python version than the currently supported minimum version on conda-forge.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally.
The following suggestions might help debug any issues:

Is the recipe/{meta.yaml,recipe.yaml} file valid?
If there is a recipe/conda-build-config.yaml file in the feedstock make sure that it is compatible with the current global pinnnings.
Is the fork used for this PR on an organization or user GitHub account? Automated rerendering via the webservices admin bot only works for user GitHub accounts.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11730025722.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe/recipe.yaml) and found some lint.
Here's what I've got...
For recipe/recipe.yaml:

The top level meta key schema_version is unexpected

For recipe/recipe.yaml:

noarch: python recipes should almost always follow the syntax in our documentation. For the host section of the recipe, you should almost always use python ${{ python_min }} for the python entry. For the run section of the recipe, you should almost always use python >=${{ python_min }} for the python entry. For the test.requires section of the recipe, you should almost always use python ${{ python_min }} for the python entry. You may need to override the python_min variable in the conda_build_config.yaml/variants.yaml if the package requires a newer Python version than the currently supported minimum version on conda-forge.


Initial commit, testing if branch can be created

this is just a test

This is just a test to check if PR can be created, closing it


libevent replacement with libev

libev has a few advantages over libevent:

It scales better (see http://libev.schmorp.de/bench.html), which could come into play for handling very large numbers of connections (unlikely to make a difference for other situations).
It supports better loop instrumentation and interception via check/prepare/idle watchers. This is actually my current motivation; I would like to instrument the loop duration and delay, generating histograms - libevent doesn't support this today based on my evaluation.
We can avoid taking a pthread lock during the event loop.

Downsides include:

We still need evbuffer support, so will need to link against both libev and libevent.
We are perturbing a core part of the Envoy I/O model. This might have stability and performance implications (hopefully for the better..).
We would need to more I/O outselves, e.g. replacing uses of evconnlistener.

Open questions:

Should we also evaluate and consider https://github.com/libuv/libuv?
What about Windows support? Apparently IOCP doesn't work great in libev (or libevent), https://stackoverflow.com/questions/8042796/libev-on-windows says it is select based.

CC @sesmith177 @tonya11en @mattklein123 @envoyproxy/maintainers

Makes sense to me to investigate, though I am definitely concerned about the regression risk. If we go down this rode, I would recommend doing this incrementally, for example by starting with getting rid of evconnlistener usage (should be easy).

What about Windows support?

IIRC right now on Windows we are using the BSD socket compat APIs so IOCP doesn't matter very much (since we now do manual buffer operations). In the future if perf on Windows matters I think we would likely develop a dedicated IOCP based transport socket?

In a previous project I worked on, I found that libev had some serious problems on mac, and was barely usable for windows.
I also used libuv. It had much better cross-platform support, but the IO model treats everything as IOCP. This makes windows support work really well, but it meant a lot of code changes to accommodate that.
Note that my experience with both of these is from 5 years ago, so things may have changed.

@ggreenway I think libev has not changed much in several years. Neither has libevent. Most of the active development these days is on libuv due to the NodeJS dependency.
My understanding is that libuv started life as a common frontend for libev (on POSIX) and IOCP (Windows). As a result, if we port to either libev or libuv, I think adding the other shouldn't be too hard. For example, libuv also has the idle/prepare/check watcher model in its event loop.
So, my current thinking is to make it easy enough that we can support libev or libuv as a build time or CLI option, and we can evaluate how well these EVs end up working in practice on the platforms we support.

I'm digging deep into my memory, but here's my recollection:
IO readiness (kqueue/epoll) can be emulated in terms of an IOCP-based API, but IOCP cannot be emulated in terms of a readiness-based API. So libuv uses an IOCP-style API, which looks much different from normal BSD-sockets. All socket operations can be async, and have a completion callback. This has effects on the lifetime of various objects.
I ported some software from libev to libuv (to add "good" windows support). It was a large undertaking. The APIs were not similar enough to make supporting both at the same time attractive.

Having recently ported our libev based framework to libUV, some of the advantages are:

portability
better API
good support for timers, signals etc

One thing I found a bit annoying was that the API doesn’t expose read and write ready events separately.
-Jojy

On Nov 6, 2018, at 8:06 AM, Greg Greenway<EMAIL_ADDRESS>wrote:
I'm digging deep into my memory, but here's my recollection:
IO readiness (kqueue/epoll) can be emulated in terms of an IOCP-based API, but IOCP cannot be emulated in terms of a readiness-based API. So libuv uses an IOCP-style API, which looks much different from normal BSD-sockets. All socket operations can be async, and have a completion callback. This has effects on the lifetime of various objects.
I ported some software from libev to libuv (to add "good" windows support). It was a large undertaking. The APIs were not similar enough to make supporting both at the same time attractive.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/envoyproxy/envoy/issues/4952#issuecomment-436308155, or mute the thread https://github.com/notifications/unsubscribe-auth/ABjzZZeND1eQAO_UtqtXGDHI_VOsU8KIks5usbOhgaJpZM4YMZWA.

@htuch Right now, our fork does not have any significant changes from the current Envoy event loop.  This causes an issue because Envoy expects edge-triggered behavior, but libevent on Windows only supports level-triggering. This causes the write-ready callbacks to trigger every time through the event loop, wasting a whole bunch of CPU. There is not an issue on the read side, since we always read all the data that's available.
If we correctly understand how http://docs.libuv.org/en/v1.x/poll.html works (having never used the library) it appears to be level-triggered? In that case, the changes required to make this work on Linux/OSX would probably also help out on Windows, since now the event loop would trigger in the same manner on both.
So, we don't have any special attachment to libevent and think that switching to libuv should be fine. While it may be the case that IOCP are required in the future, we have not made it to that point yet.
BTW, we do not work at Microsoft, we are from Pivotal.

@sesmith177 can you share your complete WiP again in some PR? Will https://github.com/envoyproxy/envoy/pull/4970 break you? I'd like to understand how SOCKET and the listen/accept/descriptor watch all interoperate on Windows in your port.

Here's our current WIP: https://github.com/greenhouse-org/envoy/tree/windows-linux-build
We don't think #4970 would break us. Currently, we use typedef to handle the int / SOCKET difference, though that will probably change by the time we get it upstream (see #4828)

@htuch we'll give it a look -- hopefully we end up in the "much easier/better" bucket

@htuch The Envoy interface to VPP will be through a library we will link into Envoy, called VCL. VCL allows the clients (Envoy here) to set up an epoll loop for events from VPP. So libuv should be fine for that interface since it supports poll.

@htuch VCL only supports edge-triggered notifications. Also, VCL has its own poll implementation, so if there are kernel fds and vpp fds we might have to support nested epolls, or something like that. Not optimal, but not entirely sure- I'll look into it more soon.

@htuch we've had a chance to take a look at libuv on Windows (specifically uv_stream_t and uv_fs_event_t).
It does appear that using libuv will fix the problem of write events constantly triggering on Windows. We were able to verify this by hacking together a version of the dispatcher that wrapped libuv instead of libevent. That said, we didn't go as far as integrating this dispatcher with the rest of Envoy -- as mentioned above, that would require a significant amount of work.
It looks like it will simplify the file-watching issues -- our Windows implementation will not have to work around the fact that libevent can only handles sockets on Windows. It also makes it possible to have one implementation of the WatcherImpl class instead of 3.
If it is decided that moving off libevent is the way to go, we would definitely like to help move it forward

@sesmith177 ack, thanks for digging into this. I actually asked Vaclav at https://envoyconna18.sched.com/event/HDdl/using-envoy-for-data-aware-traffic-routing-in-azure-service-fabric-vaclav-turecek-microsoft about this from the MSFT perspective. Their thoughts were that they had made use of libuv internally in various other places, whether it makes sense for Envoy comes down to how hard IOCP is vs. standalone IOCP in a transport socket.
I think we should keep this open in case someone has bandwidth to dig further; we have plans to hack libevent for the measurement aspects that originally motivated for now.

Related to this, I've started working on a buffer implementation that eliminates the need for evbuffer. (It looks sort of like Folly's IOBuf, but without the reference-counting.) I hope to have a PR ready for review by the end of the month.

Related to this, I've started working on a buffer implementation that eliminates the need for evbuffer. (It looks sort of like Folly's IOBuf, but without the reference-counting.) I hope to have a PR ready for review by the end of the month.

Update: I'm still working on a new buffer implementation, but it is taking longer than I expected. It turns out that there's a lot of code in both Envoy and the test suite that assumes the data in a Buffer::Instance will be split into slices in exactly the way that evbuffer does it.

The lack of libevent APIs that allow us to instrument the start/end of an iteration should be fixed one way or another.  Step 1 may be to send a PR to our friends at libevent to add hooks before and after the call to evsel->dispatch(), and at the bottom of the loop at event_base_loop: https://github.com/libevent/libevent/blob/master/event.c#L2025 .  The alternative is to go replace libevent.
The level trigger situation on Windows doesn't sound great.  There are some apparent performance issues with use of readDisable in linux to tweak fd masks when we want to stop reading that may motivate us to rely more on edge trigger behavior for reads in the future at least when read/write limits are enabled.

@antoniovicente @mergeconflict added prepare/watch-like support in https://github.com/libevent/libevent/pull/793. Is this sufficient for what you want to do or are there new hooks needed?

On the Windows side, libevent was recently given a much more scalable backend https://github.com/libevent/libevent/pull/1006 on Windows. This should ease at least some concerns regarding libevent scalability on Windows. Edge-triggering is still not supported though.

Thanks @nigriMSFT. Note I also just discussed this topic with @davinci26 who you might work with?
From Microsoft's perspective, should we assume that one way or the other we will make libevent work well on Windows? I think my overall preference would be to stay on libevent and do tactical fixes versus switching event loops unless there is a super compelling reason. cc @antoniovicente @alyssawilk

@mattklein123 yes we work together and yes I think that is a reasonable assumption

What about the process of replacement now? I do not find final conclusion here.

I think this issue should be closed.  We are not considering moving away from libevent at this time.


SBS 'ERROR: Unable to download XML: <urlopen error [WinError 10060]'

Checklist

[x] I'm reporting a broken site support
[x] I've verified that I'm running youtube-dl version 2019.04.30
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar issues including closed ones

Verbose log

python -m youtube_dl -v "https://www.sbs.com.au/ondemand/video/306166851616/borgen-a-child-of-denmark"
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', 'https://www.sbs.com.au/ondemand/video/306166851616/borgen-a-child-of-denmark']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] youtube-dl version 2019.04.30
[debug] Python version 3.7.3 (CPython) - Windows-7-6.1.7601-SP1
[debug] exe versions: ffmpeg N-93755-ga5387f983d, ffprobe N-93755-ga5387f983d
[debug] Proxy map: {}
[SBS]<PHONE_NUMBER>16: Downloading JSON metadata
ERROR: Unable to download JSON metadata: <urlopen error [WinError 10060] A connection attempt failed because the connect
ed party did not properly respond after a period of time, or established connection failed because connected host has fa
iled to respond> (caused by URLError(TimeoutError(10060, 'A connection attempt failed because the connected party did no
t properly respond after a period of time, or established connection failed because connected host has failed to respond
', None, 10060, None)))
File "D:\RDUsr\bin\rt\py\v3\x64\lib\site-packages\youtube_dl\extractor\common.py", line 626, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "D:\RDUsr\bin\rt\py\v3\x64\lib\site-packages\youtube_dl\YoutubeDL.py", line 2227, in urlopen
return self._opener.open(req, timeout=self._socket_timeout)
File "D:\RDUsr\bin\rt\py\v3\x64\lib\urllib\request.py", line 525, in open
response = self._open(req, data)
File "D:\RDUsr\bin\rt\py\v3\x64\lib\urllib\request.py", line 543, in _open
'_open', req)
File "D:\RDUsr\bin\rt\py\v3\x64\lib\urllib\request.py", line 503, in _call_chain
result = func(*args)
File "D:\RDUsr\bin\rt\py\v3\x64\lib\site-packages\youtube_dl\utils.py", line 984, in http_open
req)
File "D:\RDUsr\bin\rt\py\v3\x64\lib\urllib\request.py", line 1319, in do_open
raise URLError(err)

python -m youtube_dl --version
2019.04.30

Description

It's possible to watch the video on chrome, but when downloading with youtube-dl, there's the error above...

Network issue on your side.

Hi, why would it be "Network issue on your side." (my side) if I can watch the movie on chrome? Isn't that a bit illogical? (thanks everyone for youtube-dl by the way)

Being able watching in Chrome means nothing. Chrome may be configured to use proxy, vpn plugin, etc. As already said network is not available from command line on your side. wget, curl and other won't work as well.


Mobile - Show incorrect withdrawal information of the Bifrost liquid staking when all accounts mode

Describe the task
Show incorrect withdraw information of the Bifrost liquid staking when all accounts mode

Check with address:

5CFh4qpiB5PxsQvPEs6dWAhzgAVLHZa8tZKxeE9XsHBg4n9t
5CAfi6MtzQBcw8iPniwxW8S8YHKEbGbqk8xSm6K9NzxxxLh7

@ThaoNguyen998 please check this issue again
=> I remember this issue was resolved in webrunner v1.2.22

Version test: v1.1.81(433)
Device test: IP 13
Can't reproduce this issue -> Close issue
Check with account:

15tge4dhLYenMCU9SpW5R8NZV1y4W4eJ91bmAEyNA6TCmhsv
5Cf9V61adqFFCVimge6pa2vST5QwWjHdDAFNP9tu58VyuaZ7


currentState in Stateful mixin conflicts with Ember Component property name

Using the Stateful mixin in a component results in the error "Uncaught TypeError: this.currentState.legacyPropertyDidChange is not a function", as reported at emberjs/ember.js#11374

Thanks for letting me know!

No problem! How about renaming it to fsmCurrentState, to be consistent with fsmStates, fsmEvents etc.?

@AndyPyeSC Yes, that makes the most sense to me. We did some work a while ago for sniffing out an existing currentState property and adding ours only if an existing one didn't exist, to fix this issue while maintaining backwards compatibility. You are the second person to report this issue so I think it's time to fix it. I'll make it happen as soon as I can.

@heycarsten That's great, thanks! I've made my own changes in andypyesc/ember-fsm@2d25e719b4edd3240f34adade9f2c82c1c31381c but I'm guessing that's too simplistic for what you're looking to achieve - I just wanted to get something working for an experiment I'm working on.

This would really help. I unfortunately can't use ember-fsm with my component until this is resolved. :(

+1

Hey @AndyPyeSC, I decided to just merge this in with @tobsch's changes, thanks for your contribution.

Great, thanks!


Downloading python from behind corporate proxy fails to download in uv but works with wget and rye

uv
RUST_LOG=uv=trace uv --native-tls python install 3.11 --no-cache

DEBUG uv 0.5.4
TRACE ld path: /lib64/ld-linux-x86-64.so.2
TRACE stdout output from `ld`: ""
TRACE stderr output from `ld`: "/lib64/ld-linux-x86-64.so.2: missing program name\nTry '/lib64/ld-linux-x86-64.so.2 --help' for more information.\n"
TRACE Tried to find musl version by running `"/lib64/ld-linux-x86-64.so.2"`, but failed: Could not find musl version in output of: `/lib64/ld-linux-x86-64.so.2`
TRACE Tried to find libc version from possible symlink at "/lib64/ld-linux-x86-64.so.2", but failed: Failed to find glibc version in the filename of linker: `/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2`
TRACE stdout output from `ldd --version`: "ld.so (Debian GLIBC 2.36-9+deb12u8) stable release version 2.36.\nCopyright (C) 2022 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions.\nThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE.\n"
TRACE Found manylinux 2.36 in stdout of `ldd --version`
TRACE Checking lock for `/home/akglover/.local/share/uv/python` at `/home/akglover/.local/share/uv/python/.lock`
DEBUG Acquired lock for `/home/akglover/.local/share/uv/python`
TRACE Found existing installation cpython-3.12.6-linux-x86_64-gnu
TRACE Found existing installation cpython-3.9.20-linux-x86_64-gnu
DEBUG No installation found for request `Python 3.11`
DEBUG Found download `cpython-3.11.10-linux-x86_64-gnu` for request `Python 3.11`
DEBUG Using request timeout of 30s
TRACE Handling request for https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
TRACE Request for https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz is unauthenticated, checking cache
TRACE No credentials in cache for URL https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
TRACE Attempting unauthenticated request for https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
cpython-3.11.10-linux-x86_64-gnu ------------------------------     0 B/20.22 MiB                                                       DEBUG Downloading https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz to temporary location: /home/akglover/.local/share/uv/python/.cache/.tmpWo6eia
DEBUG Extracting cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
cpython-3.11.10-linux-x86_64-gnu ------------------------------ 12.20 MiB/20.22 MiB                                                     TRACE Attempting to retry error: ExtractError("cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", Io(Custom { kind: UnexpectedEof, error: TarError { desc: "failed to unpack `/home/akglover/.local/share/uv/python/.cache/.tmpWo6eia/python/lib/python3.11/ensurepip/_bundled/pip-24.0-py3-none-any.whl`", io: Custom { kind: UnexpectedEof, error: TarError { desc: "failed to unpack `python/lib/python3.11/ensurepip/_bundled/pip-24.0-py3-none-any.whl` into `/home/akglover/.local/share/uv/python/.cache/.tmpWo6eia/python/lib/python3.11/ensurepip/_bundled/pip-24.0-py3-none-any.whl`", io: Custom { kind: UnexpectedEof, error: "unexpected end of file" } } } } }))
TRACE Cannot retry error: not a reqwest error
error: Failed to install cpython-3.11.10-linux-x86_64-gnu
  Caused by: Failed to extract archive: cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
  Caused by: failed to unpack `/home/akglover/.local/share/uv/python/.cache/.tmpWo6eia/python/lib/python3.11/ensurepip/_bundled/pip-24.0-py3-none-any.whl`
  Caused by: failed to unpack `python/lib/python3.11/ensurepip/_bundled/pip-24.0-py3-none-any.whl` into `/home/akglover/.local/share/uv/python/.cache/.tmpWo6eia/python/lib/python3.11/ensurepip/_bundled/pip-24.0-py3-none-any.whl`
  Caused by: unexpected end of file
DEBUG Released lock at `/home/akglover/.local/share/uv/python/.lock`

rye
rye toolchain fetch<EMAIL_ADDRESS>-v

target dir<EMAIL_ADDRESS>download url: https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-pgo%2Blto-full.tar.zst
Downloading<EMAIL_ADDRESS>Checking checksum
Unpacking
Downloaded<EMAIL_ADDRESS>
wget
wget https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz

--2024-12-09 13:28:29--  https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
Resolving github.com (github.com)... <IP_ADDRESS>
Connecting to github.com (github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/162334160/bc9e9129-99c7-4349-b9d9-0d423765697a?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20241209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241209T192638Z&X-Amz-Expires=300&X-Amz-Signature=d217e3df5b2776df29cc2c970250f40489934119c2fc641228a91937cd953d88&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz&response-content-type=application%2Foctet-stream [following]
--2024-12-09 13:28:29--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/162334160/bc9e9129-99c7-4349-b9d9-0d423765697a?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20241209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241209T192638Z&X-Amz-Expires=300&X-Amz-Signature=d217e3df5b2776df29cc2c970250f40489934119c2fc641228a91937cd953d88&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 21205300 (20M) [application/octet-stream]
Saving to: ‘cpython-3.11.10+20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz.1’

cpython-3.11.10+20241016-x86_64-u  60%[====================================>                         ]  12.28M  1.52MB/s    in 8.1s

2024-12-09 13:28:37 (1.52 MB/s) - Read error at byte 12876058/21205300 (Error in the pull function.). Retrying.

--2024-12-09 13:28:38--  (try: 2)  https://objects.githubusercontent.com/github-production-release-asset-2e65be/162334160/bc9e9129-99c7-4349-b9d9-0d423765697a?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20241209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241209T192638Z&X-Amz-Expires=300&X-Amz-Signature=d217e3df5b2776df29cc2c970250f40489934119c2fc641228a91937cd953d88&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcpython-3.11.10%2B20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz&response-content-type=application%2Foctet-stream
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 21205300 (20M), 8329242 (7.9M) remaining [application/octet-stream]
Saving to: ‘cpython-3.11.10+20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz.1’

cpython-3.11.10+20241016-x86_64-u 100%[+++++++++++++++++++++++++++++++++++++========================>]  20.22M  19.1MB/s    in 0.4s

2024-12-09 13:28:39 (19.1 MB/s) - ‘cpython-3.11.10+20241016-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz.1’ saved [21205300/21205300]

Just a guess but it seems like the read gets corrupted, wget and/or rye retries / resumes but uv doesn't?

Are you seeing this consistently? Like every time?

I'm a little surprised we aren't retrying there... we do have retries setup, but I guess something is being lost because it's technically an extraction error? I'd have to find a way to reproduce it.

Yes it's happening consistently across multiple machines and OSs

I'll look into it, though it seems not-great that your proxy is consistently failing :)

Oh trust me I very much agree :). I'm working internally on diagnosing the root proxy issue so no worries if you want to close this issue.

Na all good, we should be retrying here! I'm just worried that I'll have trouble emulating the exact error.


Improve Error Messages

Because of the deferred action of commands, errors don't come with good stack traces. We should have #[track_caller] on all functions so we get, at least, the call site.
In addition, a feature/flag to enable callstacks for easier debugging.

I'm going to mark this as closed for now, as the information is available, just errors haven't been populated yet.


Resolving variables in external files

This change lets the user navigate to the definition of variables defined in other files (which are linked by the Resource keyword)

Hi there! Is someone reviewing/testing/merging this?

@MikeBeardman I think you change looks good.  The one question I have is all the code that you removed.  For example 'in keyword/file' variable resolution and linking used to work and doesn't anymore.  Just wondering if something was off in what I am doing.
I think the solution is to keep the previous code and also your code.  I can handle this, but just thought I would mention it.

Hey mtrubs, thanks for merging.. And apologies for disabling your in keyword feature. It was unclear to me what the code was doing.  I looking forward to making further contributions in future, and will be a bit more careful regarding existing features.

No worries. Thanks for contributing.
On Jul 4, 2015 2:44 AM, "MikeBeardman"<EMAIL_ADDRESS>wrote:

Hey mtrubs, thanks for merging.. And apologies for disabling your in
keyword feature. It was unclear to me what the code was doing. I looking
forward to making further contributions in future, and will be a bit more
careful regarding existing features.
—
Reply to this email directly or view it on GitHub
https://github.com/millennialmedia/intellibot/pull/89#issuecomment-118471194
.


UI for iPad and Mac are different?

Your demonstration for using the Plugin seems to have a different UI than what I see on the iPad Air plugin panel. Is that by design? I can not make out what the selections are, but I’m sure they are relevant to the usage of the plugin.
Mac-

IPad-

Hi @davebhc71,
What you're seeing in my demo images are part of my own Obsidian UI.
The icons are for default Obsidian features, e.g. backlinks, tags, outline, and so on.
These aren't part of the plugin.
Best regards,
Christian

Thank you for the reply. Have you had any time for addressing the issue I submitted in #41, where the images of the Podcasts are severely distorted when viewed in a Pinned sidebar pane of an 11” iPad? Thanks in advance for your consideration!On Nov 15, 2022, at 2:15 AM, Christian Bager Bach Houmann @.***> wrote:
Hi @davebhc71,
What you're seeing in my demo images are part of my own Obsidian UI.
The icons are for default Obsidian features, e.g. backlinks, tags, outline, and so on.
These aren't part of the plugin.
Best regards,
Christian
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>


Python debugger fails in Insiders Build

Issue Type: Bug
Install the latest development build of the Python extension from here

Create a python file with the following code:
print("Hello world")
Create a launch.json file and add a configuration section for Python Experimental

        {
            "name": "Python Experimental: Terminal (integrated)",
            "type": "pythonExperimental",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        },

Start debugging and it will work
Try debugging once again, and it will just hang.
Reload VS Code and debugging works once again, but only once

No such issues in VS Code stable.
Basically debugging works only once in VS Code Insiders.
VS Code version: Code - Insiders 1.23.0-insider (d801331ca874c03372fccc804c089e234e771b2b, 2018-04-28T09:45:21.724Z)
OS version: Windows_NT x64 10.0.16299

System Info

Item
Value

CPUs
Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz (8 x 3492)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: unavailable_softwarevideo_decode: enabledvideo_encode: enabledvpx_decode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
31.92GB (14.85GB free)

Process Argv
C:\Program Files\Microsoft VS Code Insiders\Code - Insiders.exe

Screen Reader
no

VM
0%

Extensions (10)

Extension
Author (truncated)
Version

vscode-eslint
dba
1.4.8

githistory
don
0.4.0

EditorConfig
Edi
0.12.1

tslint
eg2
1.0.28

MagicPython
mag
1.0.12

python
ms-
2018.4.0-beta

vsliveshare
ms-
0.2.547

debugger-for-chrome
msj
4.3.0

typescript-hero
rbb
2.3.2

vscode-icons
rob
7.23.0

Further info:

This works on Mac, and Linux
Seems to be a problem only on Windows (tested on Windows 10)

Found that this was caused by VS Live Share.
Should have disabled all extensions, never would have thought that other extensions could also break debuggers.


Shotgun spread increase.

This is another test to reduce shotgun lethality in long halls. A lot of the mid range consistency of shotguns seems to stem from spread of pellets. This should again nerf the shotgun at extreme ranges while allowing for them to dominate point blank compared to rifles.

About the PR

Increased shotgun spread by 7 degrees to test live.
Why / Balance

Shotguns are still very strong at mid/long range and tweaking damage further will cause shotguns to lose dominance point blank versus SMGs,
Technical details

I changed an value
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Probably not.
Changelog

:cl:

tweak: Changed shotgun spreads to be less consistent in long hallways.

22 degrees might be a little too much but feels about right I think?

Is there video to show the differences?

A screenshot with the gun overlay would be appreciated.

 I'll close it for now and reopen it later once I get them (might be a couple of days due to work).

you can just set it to draft :trollface:


Enhance Style/FormatString's autocorrection

This PR enhances Style/FormatString's autocorrection when using known conversion methods whose return value is not an array.

Before submitting the PR make sure the following are checked:

[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
[x] Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.

Might be a good idea to document the autocorrection logic, so users know what to expect.

Sure! I've updated the document.


Excluded components still have warnings like "xxx has naming conflicts with other components, ignored"

Describe the bug
I'm using vue3, and config unplugin-vue-compoents as below
module.exports = defineConfig({
  configureWebpack: {
    plugins: [
      Components({
        exclude: [/[\\/]nodes[\\/]/],
      }),
    ]
  },

But npm run serve still has those warning or somethings
[unplugin-vue-components] component "SourceNode"(x:/xxxx/src/components/nodes/SourceNode.vue) has naming conflicts with other components, ignored.
Reproduction
create two components with the same name, one under the components folder, one under the components/nodes folder, then config this plugin with exclude: [/[\/]nodes[\/]/]
System Info
vue: 3.2.47
unplugin-vue-components: 0.22.12
@vue/cli: 5.0.8

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

you can set
directoryAsNamespace: true


Block reinstall if crds are still pending to be deleted

With #775 reinstalling elemental-operator with helm results in a broken installation. This change is to prevent reinstalling CRDs if there are still instances pending to be deleted.
This will prevent from having silently broken installations. This is the same issue as in #515

For full reference other approaches were considered at a time by having some pre-delete hook to run a cleanup logic https://github.com/rancher/elemental-operator/pull/536 This could be an option to try to automate cleanup of an uninstalling operation, feels a bit hacky and error prone, I would not consider it for now, referencing it here in case we need it. In such case the current PR would still be needed as a sanity check.


Add support for mi 9

Same problem as #166

Ad support for Mi 9
What is not working
A: None of custom kernels
What exactly you would like to have / do.
A: Android Keyboard Gadget, what should I do?

Duplicates are not good

yes i know, but otherwise it won't get noticed

I get notified about every new issue, but since this project is in deep
maintenance mode (I don't want to say abandoned, but yeah), you're on your
own. And anyway, if I don't own the same device, or don't care to void the
warranty by rooting it, there's not much I can do.
On Wed, 30 Oct 2019, 21:40 eliashuber02<EMAIL_ADDRESS>wrote:

yes i know, but otherwise it won't get noticed
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/pelya/android-keyboard-gadget/issues/167?email_source=notifications&email_token=AABF5QGYXY7EZHLTA3TVKJDQRHPMNA5CNFSM4I2IJ3U2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECVQSCI#issuecomment-548079881,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABF5QCD6AFQ3RWVBI2TRDLQRHPMNANCNFSM4I2IJ3UQ
.

well that is sad, it would've been nice if there would've been 'official' support for the mi 9, well then i already got an alternative

I'd love to have some kind ultra cheap Android device that's available
everywhere, so I could maintain only one version of the kernel and just
tell people to go buy it  instead of building ten different kernels. The
closest thing to that is Amazon Fire tablet, but it's not available
worldwide, and it's price is still not exactly throwaway money.
On Wed, 30 Oct 2019, 21:52 eliashuber02<EMAIL_ADDRESS>wrote:

Closed #167 https://github.com/pelya/android-keyboard-gadget/issues/167.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/pelya/android-keyboard-gadget/issues/167?email_source=notifications&email_token=AABF5QDIWYLQZPFAXL34U7DQRHQXHA5CNFSM4I2IJ3U2YY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOURNRB6I#event-2757431545,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABF5QDPLBAYFKCK4GGBDRLQRHQXHANCNFSM4I2IJ3UQ
.

another idea I have would be a ultra cheap bluethooth device you connect your phone to and then connect, said the device to the pc.
that way you would only have to maintain that cheap device
but I don't really have an idea what you could use for that

http://inputstick.com/ ?

yea basically