Discourse: fill in "About the Documentation category"

The pinned about page for the Documentation category still has the template placeholder:
https://discuss.python.org/t/about-the-documentation-category/5499

(Replace this first paragraph with a brief description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters.)

Use the following paragraphs for a longer description, or to establish category guidelines or rules:

Why should people use this category? What is it for?

How exactly is this different than the other categories we already have?

What should topics in this category generally contain?

Do we need this category? Can we merge with another category, or subcategory?

Let's update it.

There are talks about enabling GH Discussions -- I think we should synchronise the welcome / about messages for both if possible.
Ideally, we'd also clarify if discuss. and Discussions are for different things, or just two equivilent fora for people who prefer one or the other.
A

So, what do we want there? I started a pad here: https://hackmd.io/BBXNZe6aTXq28LqpkIWfhw

I suggest shipping it and closing this ticket. Any further improvements can be made in the normal course of things.
That said, a question and a minor suggestion. First, should the Discourse be a place to discuss the actual documentation content? Or should that be in tickets? I presume translations are similar.
Second, perhaps mention the "who". The Discourse is for anybody that feels a part of docs contribution, including consumers giving feedback.

I suggest shipping it and closing this ticket. Any further improvements can be made in the normal course of things.

Changing this is annoying without a Discourse admin on board, so I'd rather take some time in getting something we all agree on.

First, should the Discourse be a place to discuss the actual documentation content? Or should that be in tickets?

I reworded it to use tickets for issues “which don't need wide discussion”.

I presume translations are similar.

I added a link to the list of individual translations, and noted that this is a good place to organize a new translation.

[name=CAM,  in the pad] Going to need an update very soon now that the BPO -> GH move is imminent

I'm pretty sure there'll be a redirect.

I've posted the draft in Discourse thread.

I made a few additional copyedits to fix a couple grammar and phrasing issues, link to the PEPs like the other two, and reword "consumers" to "readers" which is much friendlier, more appropriate and widely understood.

I'm pretty sure there'll be a redirect.

Yeah, though the linked text explicitly says "bugs.python.org".

This is done! Thanks for the input, everyone!

Thanks for the taking the initiative on this, @encukou !


Add: IRR-TV [FI/RU]

Channel Name
IRR-TV
Alternative Names (optional)
No response
Network (optional)
No response
Owners (optional)
No response
Country
FI
Subdivision (optional)
No response
City (optional)
Kerava
Broadcast Area
c/FI;c/RU
Languages
fin;rus
Categories (optional)
general
NSFW
FALSE
Launched (optional)
No response
Closed (optional)
No response
Replaced By (optional)
No response
Website (optional)
https://irr-tv.fi/
Logo
https://i.imgur.com/FIlutht.png
Notes
No response

Not sure if it has to do something with Russia and anything besides religion
https://fi.wikipedia.org/wiki/IRR-TV

fwiw, it seems to be a cultural channel

Not sure if it has to do something with Russia and anything besides religion https://fi.wikipedia.org/wiki/IRR-TV

It's mainly targeted to Russian audiences (or at least it collaborated/worked with them) by what the Wiki seems to tell.

So far I haven't seen a single TV show from them in Russian.

Well spotted, Belleza: remove the rus lang tag then?

So far I haven't seen a single TV show from them in Russian.

I don't believe they'll air shows in Russian, but it's more about showing Russians that also speak Finnish some Russian stuff.

Borked translation, but the message is clear lol. From https://irr-tv.fi/irr-tv/

Found out a similar PR was opened for the same channel, containing the same info. Closing this as dupe.


smtp settings

Can we add an option to configure SMTP settings (server, port, authentication, ssl etc.)?

Hi marekk1717,
Please create a support ticket for this enhancement.


Parameter values sent when neither specified or required

Given an operation with with name $op and two path parameters $arg1 and $arg2 and two optional query parameters n and start I am making something like the following call:
❯ restish $name -v $op $arg1 $arg2
DEBUG: Configuration: map[app-name:restish config-directory:/home/ben/.restish rsh-filter: rsh-header:[] rsh-no-cache:false rsh-no-paginate:false rsh-output-format:auto rsh-profile:default rsh-query:[] rsh-raw:false rsh-server: rsh-verbose:false server-index:0]
DEBUG: Checking API entrypoint http://localhost:8888/
DEBUG: Loading token from cache.
DEBUG: Checking http://localhost:8888/openapi.json
DEBUG: Loading token from cache.
DEBUG: Making request:
GET /some/path/$arg1/foo/$arg2?n=0&start=0 HTTP/1.1

...

Neither n nor start are required by the api nor supplied to the cli, and yet they are being filled in and sent. It's not the end of the world, but it is mildly inconvenient as it means I can't test my own parameter defaulting.

Thanks for the fix!


nixos/stub-ld: init module

Description of changes
Adds a new nixos option, enabled by default, which installs a stub ELF loader in the default FHS location. This stub simply prints out an informative error message when invoked, giving new users better feedback when they attempt to use binaries not compiled for nixos.
Closes #208187.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Priorities
Add a :+1: reaction to pull requests you find important.

Should the message be shorter, with a link to a more in-depth discussion online, perhaps in the nixos manual?
Should I mention nix-autobahn and/or nix-alien?

Should I mention nix-autobahn and/or nix-alien?

Not sure, are these common tools one would use? (As in: Is the tool known and used by many or is it just "one of many tools available")
One sentence saying something about these tools being available might be good.

Should the message be shorter, with a link to a more in-depth discussion online, perhaps in the nixos manual?

I would move parts about packaging to the manual and just link to a new section in the manual. And from that section link to the relevant parts of packaging. Since packaging is usually more complicated then "just run this".
2. Write a nix expression for the program to package it
         yourself. Read more in the manual <link>

Hmm, should I add a new section to the nixpkgs manual? Or perhaps just link to https://nix.dev/tutorials/packaging-existing-software?

@NixOS/documentation-team may want to weigh in here.

@mic92 As the maintainer of nix-ld, any comments on adding libDir to the platform attrset, how this interacts with nix-ld, or how this is implemented, generally? Should I change the nix-ld module to use libDir in this PR as well?

@tejing1 we already have a chapter about fhs in the works here: https://github.com/NixOS/nixpkgs/pull/264433 hopefully merged soon.

In my opinion we need some error message that explains that the wrong linker.
I don't think we need to explain the technical reasons, but we need something better that "foo: file does not exist".
I'm fine with linking to a resource that explains the details. But this resource needs to be in place "forever".
If we decide to link somewhere, we have to commit to this and maintain the resource for a very long time.
I am clearly against advertising third party tools from the error on the terminal, though when linking to a more thorough explanation of the problem, we can mention those as ways to work around, perhaps comparing with pros and cons.

Possible risk: a script might previously detect that a global loader doesn't exist and then do something that makes it work on NixOS. Such a script will break because it will follow its FHS-style dynamic linking code path, leading to the supposedly friendly error message.

Regarding the detection issue: Yeah, I don't think there's anything we can do about that. If they're specifically doing something to detect and handle NixOS, though, I think it's not too bad for them to have to change their detection code.
The disabling thing is fundamental to doing this with tmpfiles.d since it simply doesn't clean up after itself, and must affect nix-ld as currently implemented, too. If we want to not litter when the option is changed, we may have to resort to a custom activation script like is used for /bin/sh, except more complicated because it has to handle the disabled case, too.
Given that, maybe having a generic low level option to specify the FHS ld.so implementation is best. Then this module and the nix-ld module can both set it. If we do keep track of the state, I'd actually prefer to do it in /lib//lib64 alongside the file, so that the state dies together with the file in ephemeral root setups and the like.
Do we really want to support a manually-installed ELF loader on NixOS to any significant degree? I think supplying an option so a user can put any file they want there through configuration should be enough, and would simplify the activation script implementation. We certainly don't respect it if someone puts their own file in place of /bin/sh, and you can't even turn that behavior off. No one seems to mind.

I rewrote it to use activation scripts (modeled after the one for /usr/bin/env) instead of tmpfiles.d rules, and also made the activation scripts shared between stub-ld and nix-ld through an intermediate option. So there's now also an option users can use to put any file they like in that location. The 32bit stub is also now still installed even when nix-ld is enabled, and the 32bit message doesn't suggest nix-ld, as it can't help for such executables.

Could you disable it in nixos/modules/profiles/minimal.nix?

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/2023-11-28-nixpkgs-architecture-team-meeting-46/36171/1

Currently writing a nixos test for this, and in addition to checking that the links are added and removed correctly, I also want the test to actually run an FHS binary and check that the message is printed to stderr. I'm not sure what FHS binary I should use in the test, though.
I want something small, simple, dynamically linked, and available via a highly stable permalink for x86_64, i686, and aarch64 architectures. I have been using releases of rustic for local testing, but if I'm going to hardcode them into a nixos test, I'd like to look harder for something better.
Anyone have a suggestion? Is there a compiled version of gnu hello out there at a stable download location? Is there a way to produce an FHS binary with nixpkgs I don't know about?

@tejing1 How about ripgrep: https://github.com/BurntSushi/ripgrep/releases/tag/14.0.3

@tejing1 We have binary packages, so perhaps you could just execute the src of one of those. I'm not sure whether we have any that will definitely stay a binary package. firefox-bin could conceivably stay around.

Pushed the test using rustic as a test executable for now. Will change if I find a better option.

I’m really happy to see this out, I have been waiting that for so long. Just a few questions/remarks:

you mentioned a link to documentation. I personally like to put enough information (notably nix-ld-related stuff) in the error message, but indeed details about how to package a binary might be helpful. I made a quite detailed answer here (that got quite some attention), feel free to use if it can help somehow.
Is there any reason we don't directly use nix-ld by default, printing the above error message if, e.g. NIX_LD_ENABLE is not configured? This way the user could directly enable it with export NIX_LD_ENABLE=true without changing purity.

@tobiasBora /bin/bash is a separate issue; it has nothing to do with the dynamic linker really.
https://discourse.nixos.org/t/add-bin-bash-to-avoid-unnecessary-pain/5673

@tejing: I guess it make sense, thanks for the explanation.
@tejing1 Well it is different in term of technical solution, but not so much in term of problem (people often use a loader/binary at some hardcoded PATH, and get an obscure error in NixOs when using that path). I did mentioned the ideas I had in this thread, without getting any objection. I'm not saying that it should be addressed in this PR (let's solve one problem at once), but that it would be cool to have at some points to provide a better user experience.

Regarding /bin/bash:

The error message in this situation is already much clearer:

$ echo '#!/bin/bash' > foo
$ chmod u+x foo
$ ./foo
zsh: ./foo: bad interpreter: /bin/bash: no such file or directory

Shebangs are a much more well-known part of the linux userspace environment, so users are far more likely to understand the problem enough to start solving it just from that error message. They ls /bin and realize it really isn't there. That prompts further questions and googling, and they get answers about how nixos is different here.
It isn't just bash. It's a plethora of different interpreters that you'd need to supply endpoints for (python, python3, ruby, node, etc), just to show an error message. An error message that's far less necessary because of the above points.

I guess we just have different definitions of user-friendliness. I tend to like clear errors that do not require googling. For instance, just googling "/bin/bash: no such file or directory" points you to this, and the first two answers are like the script was created in windows and an extra \r has been added at the end of the line, which is clearly not the case. An error like:
Error: Nix made the choice not to provide /bin/bash to limit impure side effects. If you want to use bash, either:
- use `/usr/bin/env bash`
- set `export NIX_ENABLE_BIN_BASH=true`
- set `some.options.to.enable.bin.bash = true;` in your configuration.nix,
- or package your script properly in a nix derivation [link to doc].

would more closely match what I call user friendly (and to be honest , I agree that it is weird to provide /usr/bin/env bash but not /bin/bash but it is another question)

I don't think we meaningfully disagree about what is and isn't user-friendly, just about how valuable that is compared to other things we'd be trading off to get it.

@ofborg test stub-ld
Am I missing a step in the code that should make ofborg automatically run this test? Or is this the expected thing to do?

It might not be doing that since this is a draft MR? You should probably open it anyways since this PR is certainly at the point where it's "ready for review" with its 6 reviewers ;)

@Atemu I’m not sure to understand, are you in favor of removing completely the error message in favor of a link, or do you want both the current message + a link?
Personally, I’d be in favor of adding both if such a resource were existing, but I’d be against removing the current message that I find short and helpful (notably, mentioning nix-ld is a good point since it is by far the simpler solutions for people not wanting to learn how to package stuff in NixOs). A link alone has several issues: first it requires an additional level of indirection, it requires internet, takes time to load (especially on slow connections given the huge size of the manual), is harder to spot in logs, and quite often it ends up being a 404 error…

I think the docs team is already doing a decent job with redirects, so 404s shouldn't be a problem.
Message can be improved when a page is written.

https://nixos.org/manual/nixpkgs/stable/#part-stdenv and https://nixos.org/manual/nixpkgs/stable/#chap-language-support exist and cover the basics.

I'm really looking for something that covers the same points I do in the message. Both of those resources almost exclusively assume you're building from source, just like the nix.dev tutorial does, and a very common reason people are trying to run downloaded binaries is because it's a proprietary program and downloading a binary is the only option they're given. I want to highlight that approaches exist for that case, too.

If you've already gone through the effort of doing that, why not just add it as section to the manual instead and link it?

The bewildering nature of this for a new user has tremendous stop energy. I feel like having solutions immediately present in the message mitigates that significantly. Short error messages are great for "oh, oops" problems. This is a very different category.

The manual even has CI checks that all mentioned options actually exist, what you described is less of an issue if this piece of documentation was in the manual rather than embedded into a binary file.

I think you missed the point on this. The link won't necessarily go to the version of the manual matching the version of nixpkgs the user is running from.

@tejing1 Could you PR this to https://nix.dev/ (source)? Probably somewhere under Guides would fit well.

Rebased to fix merge conflict in release notes.
@infinisil I'm not fully clear what you're asking for.

There seem to be two subjects which probably require separate guides: "how to run non-nix executables on nixos," and "packaging approaches when source is not available." Did you want me to write them both? Just one? Which?
Did you mean to imply that the message here should also be shortened to the point of mostly just being a link to those guides on nix.dev? I think the message should summarize the 4 possible solutions, even if that information is available elsewhere. Clearly some disagree and some agree. I don't want to dig my feet in on the issue too much, but I think it deserves a bit more discussion, still.

There seem to be two subjects which probably require separate guides: "how to run non-nix executables on nixos," and "packaging approaches when source is not available." Did you want me to write them both? Just one? Which?

The former. Pretty much just the text from the error message, but on nix.dev.

Did you mean to imply that the message here should also be shortened to the point of mostly just being a link to those guides on nix.dev? I think the message should summarize the 4 possible solutions, even if that information is available elsewhere. Clearly some disagree and some agree. I don't want to dig my feet in on the issue too much, but I think it deserves a bit more discussion, still.

Hmm I personally think we should avoid duplicate information when possible. In this case especially because nix.dev and the error message can easily get out of sync. So I'd prefer having more or less just a link to nix.dev in the error message.

Hmm I personally think we should avoid duplicate information when possible. In this case especially because nix.dev and the error message can easily get out of sync. So I'd prefer having more or less just a link to nix.dev in the error message.

But isn't it sometimes interesting to have out of sync messages? For instance if in NixOs 24.11 they introduce a new nix.new-ld option, then someone running NixOs 23.11 would get an error when enabling this option. Which means that we would need to add in the page "if you run XXX if you run YYY" which makes it quite unclear for the user. In my opinion, a simple message specific to your own NixOs version that you can easily copy/paste seems simpler for the user… and updating nix.dev once in a while does not seem too hard either, especially if we add comments in the source saying "make sure to update this other message". (@Atemu I checked, and the message is small enough to be read without scrolling on usual terminals. But I agree that the part on how to create a package is maybe not necessary.)
Also, I guess we should at some point put a full documentation for packaging binaries (my own "doc") and generic derivations (my other own "doc") Would this mean that we would have 3 pages in nix.dev:

the small error message
the long doc "how to run binaries"
the longer doc "how to create derivations"
? By the way, would you like me to submit the above answers I wrote to nix.dev (the one for generic derivations is more polished, I would certainly need some work to make the second doc less messy), or do you prefer to come up with your own (or maybe another one is already in the process of being written?).

(Oh, I just realized that nix.dev is now official? Good to know!)

But isn't it sometimes interesting to have out of sync messages? For instance if in NixOs 24.11 they introduce a new nix.new-ld option, then someone running NixOs 23.11 would get an error when enabling this option. Which means that we would need to add in the page "if you run XXX if you run YYY" which makes it quite unclear for the user. In my opinion, a simple message specific to your own NixOs version that you can easily copy/paste seems simpler for the user…

That is a valid argument, I don't think it's a big problem though. It's very common to see fragments like "introduced in Version XXX" in documentation.

Also, I guess we should at some point put a full documentation for packaging binaries (my own "doc") and generic derivations (my other own "doc") Would this mean that we would have 3 pages in nix.dev:
1. the small error message

I don't think that should be part of nix.dev.

2. the long doc "how to run binaries"

:100:

3. the longer doc "how to create derivations"

That would be great, there is already a tutorial on this, but if there's anything else to teach we should extend this one or have another one.

By the way, would you like me to submit the above answers I wrote to nix.dev (the one for generic derivations is more polished, I would certainly need some work to make the second doc less messy), or do you prefer to come up with your own (or maybe another one is already in the process of being written?).

Those are very extensive, it would be great to incorporate them into the official documentation! Submitting them as a draft PR would be good as a first step, the docs team can then give feedback.
Ideally take a look at the existing landscape on nix.dev to get a feel for it, especially the sections under Contributing Documentation

Ok thanks. I still prefer the idea of putting a mini-doc in the error message to help people to quickly find the solution (e.g. if they don't have internet and forgot the name of the command steam-run to type, they can still continue to use their computer without booting another OS), and to provide better resilience to 404  errors… but I can understand that it is slightly easier to maintain. I just prefer to put the burden on the devs rather than on the user, but anyway, this is not so important. What matters is that this gets merged soon, I'm afraid now that it will stay forever in the state "waiting to write the nix.dev doc" ^^'

Pretty much just the text from the error message, but on nix.dev.

the small error message

I don't think that should be part of nix.dev.

I'm lost now: aren't these two messages in contradiction? By small error message, I mean the ~10 lines message from the current PR, not a 4 pages documentation.

Submitting them as a draft PR would be good as a first step, the docs team can then give feedback.

Good idea. I'll try to find some time at some points, and study the structure a bit more.

@tobiasBora @infinisil and I mean to put the current message (pretty much as-is) on nix.dev and only leave a "small" message (as in: ~a single line/sentence) telling the user briefly what's wrong with a link to the full message.
A quick "you can't run regular binaries here" can often be enough for a user to realise that what tried do do couldn't work. If they've been through this before, they'll just retry with steam-run etc. If they haven't, they've got the link as a jump-off point.

Ah, ok. I missed some of the nuance of what you were asking. You didn't want me to write a full guide, just put this text, largely unmodified, on nix.dev, in a location whose primary purpose is to be a landing point for people encountering this error.

PR to nix.dev made: nixos/nix.dev#832
Once that PR is merged, I'll change this one to link to it. I don't like it as well, but that does seem to be the direction the consensus is going.

The link target is up on nix.dev, so I've changed the message.

@zimbatm Would be good to know what you're evaluating, because I can't see any immediate connection to this PR!

I can't share the code, but I'll see if I can extract a smaller repro.

I can't share the code, but I'll see if I can extract a smaller repro.

I have seen errors like this. It looks to me like a flake parts error.

How to completely remove this without any traces? It's breaking setups with custom loaders, and just disabling the stub-ld option does not seem to help (it somehow returns inside of systemd units).

I didn't include a way to turn off the ldso.nix module entirely, as my assumption was that any custom setups could provide their own files to the environment.ldso and environment.ldso32 options to declaratively set up their own loaders, as this PR changed the nix-ld module to do. Is that not enough for your usecase for some reason?

For $reasons I'm setting this stuff up in activation scripts on work machines, and trying to fit that back into derivations is going to be messy. Frankly I just don't have the time or motivation for these kinds of changes at the moment, so I'm reverting my nixpkgs for now.
For what it's worth, disabling this via disabledModules also doesn't work easily, because options related to the ldso module are used outside of it.
I understand the motivation behind this and it's of course a good idea to make an easy declarative setup available for simple use-cases, but - as is my usual criticism - things like this should always provide an escape hatch.

The simplest solution would probably be to disable ldso.nix with disabledModules, then add a module that creates dummy environment.ldso and environment.ldso32 options to quiet the errors.

This seems to work fine:
{ lib, modulesPath, ... }:
{
  disabledModules = [ (modulesPath + "/config/ldso.nix") ];
  options.environment.ldso = lib.mkOption { type = lib.types.unspecified; };
  options.environment.ldso32 = lib.mkOption { type = lib.types.unspecified; };
}

I must unfortunately say that the assumption that there exists a working 32bit variant of the package set for 64-bit x86 systems is inaccurate.
There should be an option to disable the 32-bit ldso even when running on x86-64 systems.

There should be an option to disable the 32-bit ldso even when running on x86-64 systems.

There is. environment.ldso32 = null;

There is. environment.ldso32 = null;

That still evaluates pkgsi686Linux via libDir32 in the tmpfiles rules.

Ugh. I'm not sure it's feasible to make that option such that the module cleans up after itself when the option is changed.
How about this:

Add a pair of options to control the path of ld.so used, which default to /${libDir}/${ldsoBasename} we're currently using.
Make those options nullable, and if they are null, produce no tmpfiles rule at all.
Make those options hidden, as they should be very rarely used and have the annoying caveat that altering them leaves mess behind, which we can also note in the description.

Or, generalize the isx86 check into some kind of tryEval magic to figure out if the 32-bit platform is actually supported?
for reference:
nix-repl> pkgsi686Linux
error:
       … while evaluating the attribute 'pkgsi686Linux'

         at /home/yuka/proj/nixpkgs/pkgs/top-level/stage.nix:222:5:

          221|     # Used by wine, firefox with debugging version of Flash, ...
          222|     pkgsi686Linux = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then nixpkgsFun {
             |     ^
          223|       overlays = [ (self': super': {

       … while calling the 'throw' builtin

         at /home/yuka/proj/nixpkgs/pkgs/top-level/stage.nix:232:12:

          231|       };
          232|     } else throw "i686 Linux package set can only be used with the x86 family.";
             |            ^
          233|

       error: i686 Linux package set can only be used with the x86 family.

nix-repl>

$ nix repl --system x86_64-linux
nix-repl> pkgsMusl.pkgsi686Linux
error:
       … while evaluating the attribute 'pkgsi686Linux'

         at /home/yuka/proj/nixpkgs/pkgs/top-level/stage.nix:222:5:

          221|     # Used by wine, firefox with debugging version of Flash, ...
          222|     pkgsi686Linux = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then nixpkgsFun {
             |     ^
          223|       overlays = [ (self': super': {

       … while evaluating a branch condition

         at /home/yuka/proj/nixpkgs/pkgs/stdenv/booter.nix:99:7:

           98|     thisStage =
           99|       if args.__raw or false
             |       ^
          100|       then args'

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: unsupported platform for the pure Linux stdenv

nix-repl>

It feels like the design is still being fleshed out.
Given how core the change is, that it's blocking many users, and that it has been two months, we should consider reverting. Not permanently, but that way, you have time to figure this out while also not blocking other users.


Gridded products api port

Still needs tests, but going to go ahead with this as-is since I'm going to try something fancy with our tests for this project that warrant their own PR.


Feat: prepare rename request

Implements the Prepare Rename Request.
The request handler is essentially a CTRL + C, CTRL + V of the rename request's beginning (can be seen here), but instead of showing an error message, it just returns null on most cases. I wanted to isolate the logic into a function (something like fn can_rename_node (node: &Node, bfile: &ParsedCode) -> bool) and reuse both in the Rename handler and the Prepare Rename Handler, but couldn't think of a good way to abstract it. So I'll just create this lazy PR and wait for feedback from the maintainer.

Thanks~


refactor: add NeoRadio and NeoRadioButton

Thank you for your contribution to the KodaDot - One Stop Shop for Polkadot NFTs.
👇 __ Let's make a quick check before the contribution.
PR Type

[ ] Bugfix
[ ] Feature
[x] Refactoring

Context

[x] Related #5852
[x] copied buefy radiobutton implementation https://github.com/buefy/buefy/blob/dev/src/components/radio/RadioButton.vue

Copilot Summary

🤖 Generated by Copilot at 3e98ea9
Replaced b-radio-button components with custom NeoRadioButton components in the gallery and radio select components, and removed unused radio buttons from the series table component. Added the code and documentation for the NeoRadioButton component to the @kodadot1/brick library.

🤖 Generated by Copilot at 3e98ea9

We are the NeoRadio, we are the new sound
We break the chains of b-field, we burn the old code down
We rise from the @oruga-ui/oruga, we mix in our own style
We are the NeoRadioButton, we rock the gallery wild

seems like there is some issue with npm registry. retrying the pipeline


running biapy after pip install

Hi
Great package and I love the modularity of it as well as the ease of getting it up and running.
So, I've followed the isntructions to pip install Biapy.
Now, when I want to run the training via command line, it looks like I can only run it via
python -u main.py  ?
You can make it executable by adding the entry under project.scripts .
https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#creating-executable-scripts
This way, we wouldn't need to clone the repo again to run biapy even after pip install.
Cheers
Pradeep

Hi,
Thank you so much for your suggestion. You can also run it by importing and calling BiaPy through python code, which I understand is the goal of the link you provided (tell me if I'm wrong and if there is any other advantage on doing what you suggested). For instance, you can use BiaPy also like below:
from biapy import BiaPy
biapy = BiaPy('/content/config.yaml', result_dir=output_path, name="name", run_id=1, gpu=0)
biapy.run_job()

Actually, that way of running BiaPy is the one used in the notebooks we provide.
Cheers,

Hi
Thanks, I should have been clear.
The goal is to run it from the command line and not from a notebook.
With pip install, once the package is installed there is no easy way to run from command line directly. As you mention 'command line' in the documentation, the expectation would be the ability to call BiaPy from the terminal directly.
For example instead of
python main.py --config
this would
look like
biapy --config
Also, if I have to clone the git repository directly, then there is no point in a pip install.
The other advantage is users will  run the most stable release (pip) if we can call from command line.
For example, I ran a pip install and still had to clone the GitHub repo to run BiaPy in the command line and then ran into this issue: https://github.com/BiaPyX/BiaPy/issues/74
Moreover, this will make it easier for users to run BiaPy, and share environments too.
Cheers
Pradeep

Hi,
I understand that you want to run BiaPy through command line. I suggested executing it through a Python script as this approach doesn't necessitate cloning the repository after installation via pip (which is your concern). Also, when installing it with pip and using the way I described the user will be using the newest stable release. That option is also integrable in any external code that want to use BiaPy.
We didn't have the need of creating a binary to run it but, if you will be more comfortable having that option, I will have that in mind and do/test it as soon as possible.
Thank you so much for your interest improving the library!

@danifranco
Thanks for the reply.
Btw, I'm in no means trying to be pushy. I just thought it was a standard thing to do for running software via CLI,  hence my request.
Is editing the project.toml file to call BiaPy directly the same as creating a binary? I just want to make sure I'm using the right terminology here.
I'll execute it from a script directly using the code you've suggested.
, as that pretty much does what I want.
Thanks for your help and appreciate the effort in maintaining this software.
Cheers
Pradeep

Hello again,
Once we can have your double check that percentile norm is working (as discussed in forum.sc thread) I will create a new version of BiaPy (3.3.16) and hopefully have the binary as your suggestion in this issue. I added in the last commit changes to generate it: hope I did it correctly 🤞 .
Cheers,

Just pushed the biapy package in PyPI creating the binary to run it through the CLI as you were proposing.
Feel free to close the issue or I will do it in a few weeks.
Cheers,


Upgrading the Android gateway may cause apps using this library to crash

If an Awala app is collecting parcels when the gateway is upgraded, it'll crash with the following:
2021-04-05 14:58:44.538 8544-8883/tech.relaycorp.ping E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
    Process: tech.relaycorp.ping, PID: 8544
    tech.relaycorp.relaynet.bindings.pdc.ServerConnectionException: Connection was closed abruptly
        at tech.relaycorp.poweb.PoWebClient.wsConnect$poweb(PoWebClient.kt:290)
        at tech.relaycorp.poweb.PoWebClient$wsConnect$1.invokeSuspend(Unknown Source:12)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
     Caused by: java.io.EOFException
        at okio.RealBufferedSource.require(RealBufferedSource.kt:201)
        at okio.RealBufferedSource.readByte(RealBufferedSource.kt:210)
        at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
        at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
        at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

I think we should wrap ServerConnectionExceptions around an exception provided by this library, so that app developers can handle such exceptions.

I wasn't able to reproduce the issue. The only place that exception is thrown is from inside Awaladroid ReceiveMessages#collectParcels and we're already handling ServerException there, a superclass of ServerConnectionException of the crash log. And, that scenario is covered by a test.
We only collect parcels when we're notified on the ping app. And this call should be safe GatewayClient.receiveMessages().collect(receivePong::receive) since that only subscribes to a stream of parcels that we receive, but it's not the stream collecting the parcels. Since it's disconnected from the stuff that might fail when connecting with the Gateway, developers won't need to re-subscribe to it.


Crash in realloc

This is 0eb0241.
With Remember last search term enabled repeatedly and quickly launching QS and closing via alt+w results in a crash.
Same crash happens with quicklaunch-1.7-1-x86_64.hpkg.
	thread 45411: build app list
		state: Exception (General protection fault)

		Frame		IP			Function Name
		-----------------------------------------------
		0x7f3400d37af0	0x665443d0cf	realloc + 0x2f
			Disassembly:
				realloc:
				0x000000665443d0a0:           4885ff  test %rdi, %rdi
				0x000000665443d0a3:     0f84b7000000  jz 0x665443d160
				0x000000665443d0a9:               55  push %rbp
				0x000000665443d0aa:           4889e5  mov %rsp, %rbp
				0x000000665443d0ad:             4155  push %r13
				0x000000665443d0af:             4154  push %r12
				0x000000665443d0b1:               53  push %rbx
				0x000000665443d0b2:           4889fb  mov %rdi, %rbx
				0x000000665443d0b5:         4883ec08  sub $0x8, %rsp
				0x000000665443d0b9:           4885f6  test %rsi, %rsi
				0x000000665443d0bc:     0f84ae000000  jz 0x665443d170
				0x000000665443d0c2:         488b57f8  movq -0x8(%rdi), %rdx
				0x000000665443d0c6:           4885d2  test %rdx, %rdx
				0x000000665443d0c9:     0f84ab000000  jz 0x665443d17a
				0x000000665443d0cf:           8b4a04  movl 0x4(%rdx), %ecx <--

			Frame memory:
				[0x7f3400d37ac0]  ....6...........   b8 a9 f8 e7 36 11 00 00 00 14 00 00 00 00 00 00
				[0x7f3400d37ad0]  (...6....{..4...   28 1f e3 e7 36 11 00 00 80 7b d3 00 34 7f 00 00
				[0x7f3400d37ae0]  .{..4....3F.....   00 7b d3 00 34 7f 00 00 89 33 46 fc d7 01 00 00
		0x7f3400d37b10	0x1d7fc463384	BList::_ResizeArray(int) + 0x54
		0x7f3400d37b30	0x1d7fc463593	BList::AddItem(void*) + 0x33
		0x7f3400d37da0	0x2089cbe1132	MainWindow::_BuildAppList() + 0x4e2
		0x7f3400d37db0	0x2089cbe1304	MainWindow::_AppListThread(void*) + 0x4
		0x7f3400d37dd0	0x66543b3107	thread_entry + 0x17
		00000000	0x7f3835788258	commpage_thread_exit + 0

I have some WIP fixing locking of the app list that I hope will fix this. May be able to test it later today.

Thanks @lonemadmax !
I'll either postpone the upcoming release until you create the PR, or - if you can find the time within a week or something - do the fThreadId-waiting you suggest.

Your choice. Depending on how much you want to review before that release, the big one is #53 and the quick one is f14f1c15599ea5450222f9b0a2db8a998e0ccf61.


Make the LeetPath Website Responsive

Description
The LeetPath website currently does not adapt well to different screen sizes and devices. This makes it difficult for users to navigate and interact with the site on mobile phones, tablets, or smaller screens. To improve the user experience, we need to make the website fully responsive.
Requirements

Header and Navigation

Ensure the navigation bar collapses into a hamburger menu on smaller screens.
Adjust logo and navigation items for proper alignment and spacing.

Main Content

Optimize text, images, and other components to resize and reflow gracefully for all pages.
Ensure proper spacing and alignment for pages like the homepage, problem lists, signin, signup and user profile.

Acceptance Criteria

Use only Tailwind CSS (Pure CSS only when required)
The website is fully functional and visually appealing across all major devices and screen sizes.
No horizontal scrolling or overflow issues.

hey I'm interested in this issue can you assign it to me ? @amri-tah

Hey @MithileshwaranS, you've been assigned this issue under Amrita Winter of Code! Please ensure to raise a PR by 8/01/2025, or it will be reassigned to someone else. Best of luck! 🫡


ConnectionState functionality in GetBuilder to handle waiting time

First of all: I really love your package and want to say you a big thanks for your good work!
Is your feature request related to a problem? Please describe.
From FutureBuilder StreamBuilder we know the ConnectionState. So we can wait until the data has been loaded. I would love this functionality also for GetBuilder. I will show you the problem in a code example.
I have an app for creating virtual guestbooks. I created a variable in a controller on which I want to save the current guestbook when the user clicks to one on the ListView:
final currentGuestbook = Guestbook().obs
When a user clicks on an specific guestbook in my ListView I update the variable:
guestbookController.currentGuestbook.value = guestbook;
And here in the detail screen I want to retrieve the object from guestbookController.currentGuestbook:
Obx(() {
  return Positioned(
      bottom: Get.height / 15,
      child: Container(
        alignment: Alignment.center,
        width: Get.width,
        child: Text(
          guestbooksController
              .currentGuestbook.value.title, // Here
          textAlign: TextAlign.center,
          style: Get.theme.textTheme.headline1.copyWith(
              color: Get.theme.colorScheme.onPrimary),
        ),
      ));
}),

The problem: For 1-2 seconds the page shows me an error because the value.title is not defined. After 1-2 seconds it shows the correct value.
Describe the solution you'd like
What about a ConnectionState functionality to be sure that the values from the controller are loaded as well? How we know that from FutureBuilder or StreamBuilder.
If such a functionality already exists - I'm sorry. I read the entire documentation and I don't found anything like this.
Thanks in advance for reading.

Hello @drosa88 , in my opinion this would not be possible. FutureBuilder watches only one stream, while GetBuilder, Getx and Obx can watch multiple streams (.obs).
You have to create your own "ConnectionState" for each .obs you want to watch.
See an example here (enum Status):
https://github.com/jonataslaw/getx/blob/master/example/lib/pages/home/presentation/controllers/home_controller.dart

See an example here (enum Status):

It looks ugly.
Why not to create some extension for Future which will keep its status? So I can use a Future<CasesModel> cases.obs syntax. And some analogue of FutureBuilder (maybe ObxFutureBuilder is a good name) which can check the status of the observed Future. See also my issue https://github.com/jonataslaw/getx/issues/722, I raised the same problem.

Hi @drosa88 and @subzero911,
Wow, this new feature was created using StateMixin, released in version 3.15.0 of GetX.
In the example that exists in the package repository, you will see how to use it.

You don't need this, just use StateMixin or GetNotifier for that purpose, it's very easy and simple:
// Use StateMixin<YourModel>
class HomeController extends GetxController with StateMixin<CasesModel> {
  HomeController({this.homeRepository});

  /// inject repo abstraction dependency
  final IHomeRepository homeRepository;

  /// When the controller is initialized, make the http request
  @override
  void onInit() {
    super.onInit();
    // show loading on start, data on success
    // and error message on error with 0 boilerplate
    homeRepository.getCases().then((data) {
      change(data, status: RxStatus.success());
    }, onError: (err) {
      change(null, status: RxStatus.error(err.toString()));
    });
  }
}

on View:
controller.obx((state) => Text(state.name))

By default, a CircularProgressIndicator is showed on loading, and Text Widget is showed on error. You can made custom widgets:
controller.obx((state) => Text(state.name), onError: Text('your message'), onLoading: Text('loading...'))

You can use any widget on onError and onLoading
To change Status: change('your new data', status: RxStatus.success())
To send a error message:  change(state, status: RxStatus.error('your error message'))
Loading And Error are auto, change onError and onLoading only if you need custom widgets
Well, I'm closing it

Hi, how exactly do i know what state change controller.obx is listening to if i have more than one method. Using your example, say we have two methods i the repository
`
@override
void onInit() {
super.onInit();
homeRepository.getCases().then((data) {
  change(data, status: RxStatus.success());
}, onError: (err) {
  change(null, status: RxStatus.error(err.toString()));
});

homeRepository.getFalseCases().then((data) {
change(data, status: RxStatus.success());
}, onError: (err) {
change(null, status: RxStatus.error(err.toString()));
});
}
what state wouldcontroller.obx((state) => Text(state.name))` be referring to in my view.

Hi, how exactly do i know what state change controller.obx is listening to if i have more than one method. Using your example, say we have two methods i the repository
`
@override
void onInit() {
super.onInit();
homeRepository.getCases().then((data) {
  change(data, status: RxStatus.success());
}, onError: (err) {
  change(null, status: RxStatus.error(err.toString()));
});

homeRepository.getFalseCases().then((data) {
change(data, status: RxStatus.success());
}, onError: (err) {
change(null, status: RxStatus.error(err.toString()));
});
}
what state wouldcontroller.obx((state) => Text(state.name))` be referring to in my view.

@mtkgeek it seems to me that StateMixin is for a single network call only. So 1 controller - 1 state.
For 2 or more states you would use the same workaround with ConnectionState for each of network calls.

@mtkgeek it seems to me that StateMixin is for a single network call only. So 1 controller - 1 state.
For 2 or more states you would use the same workaround with ConnectionState for each of network calls.


Beta: (LOW) Think about accessors interface

I think i should add type constrain for parent (EntityInterface), do we need to pass container instead of ODM/ORM?

Need ideas.

To think before beta release.

i simply removed weird embeddable interface


SCMProvider needs initial onDidChange event to render anything

Tests #23311

Steps:
-register an SCM provider with resources and groups
Observer: the provider renders nothing in the UI
You need to eventEmitter.fire(provider); in our activation.

This has changed with the latest SCM API changes.


Use pre-commit.ci instead of Github action

Is your feature request related to a problem? Please describe.

currently we are using a Github action to run our pre-commit hooks on the CI, when we open-source the project we should me to using pre-commit.ci

Not planned to be done in the near future


run-time exception with McMaster.Extensions.CommandLineUtils

I'm able to compile a program that uses McMaster.Extensions.CommandLineUtils (version 2.2.5) like so:
public static Task<int> Main(string[] args) => CommandLineApplication.ExecuteAsync<MyProgram>(args);

private async Task<int> OnExecuteAsync()
{
    return 0;
}

...but when I run the program, I crash like this:
>MyProgram.exe --help
Unhandled Exception: System.TypeInitializationException: A type initializer threw an exception. To determine which type, inspect the InnerException's StackTrace property. ---> System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1, Func`2) + 0x1f1
   at MyProgram!<BaseAddress>+0x4ee9a
   at MyProgram!<BaseAddress>+0x133670

   --- End of inner exception stack trace ---
   at MyProgram!<BaseAddress>+0x133724
   at MyProgram!<BaseAddress>+0x133550
   at McMaster.Extensions.CommandLineUtils.Conventions.ConstructorInjectionConvention.Apply(ConventionContext) + 0x48
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Builder.McMaster.Extensions.CommandLineUtils.Conventions.IConventionBuilder.AddConvention(IConvention) + 0x3b
   at McMaster.Extensions.CommandLineUtils.ConventionBuilderExtensions.UseDefaultConventions(IConventionBuilder) + 0xfa
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute[TApp](CommandLineContext) + 0xb6
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](CommandLineContext) + 0xc
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](IConsole, String[]) + 0xa4
   at MyProgram.MyProgram.<Main>(String[]) + 0x13
   at MyProgram!<BaseAddress>+0x1a34aa

Same code works fine if not natively compiled.

McMaster.Extensions.CommandLineUtils has its own dependency injection framework. The dependency injection frameworks do not work great with CoreRT AOT compilation currently. They require rd.xml file to describe types that will be needed by the dependency injection framework at runtime. https://github.com/dotnet/corert/tree/master/samples/WebApi has an example how to add rd.xml file.
In this case, you can start by adding <Assembly Name="McMaster.Extensions.CommandLineUtils" Dynamic="Required All" /> to rd.xml. It will make everything in McMaster.Extensions.CommandLineUtils available to reflection. It is probably not necessary to add everything (doing so bloats the native binary), but it has may make things just work.

Thanks, @jkotas - that gets me a little bit further.  I now fail like this:
MyProgram.exe --help
Unhandled Exception: System.TypeInitializationException: A type initializer threw an exception. To determine which type, inspect the InnerException's StackTrace property. ---> System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1, Func`2) + 0x1f9
   at MyProgram!<BaseAddress>+0x2c0db0
   at MyProgram!<BaseAddress>+0x8d48c6
   at MyProgram!<BaseAddress>+0x8d4331

   --- End of inner exception stack trace ---
   at MyProgram!<BaseAddress>+0x8d441d
   at MyProgram!<BaseAddress>+0x8d40b6
   at McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider.GetParser(Type) + 0x2b
   at McMaster.Extensions.CommandLineUtils.Conventions.OptionAttributeConventionBase`1.AddOption(ConventionContext, CommandOption, PropertyInfo) + 0x7a2
   at McMaster.Extensions.CommandLineUtils.Conventions.OptionAttributeConvention.Apply(ConventionContext) + 0x138
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Builder.McMaster.Extensions.CommandLineUtils.Conventions.IConventionBuilder.AddConvention(IConvention) + 0x4b
   at McMaster.Extensions.CommandLineUtils.ConventionBuilderExtensions.UseOptionAttributes(IConventionBuilder) + 0x40
   at McMaster.Extensions.CommandLineUtils.ConventionBuilderExtensions.UseAttributes(IConventionBuilder) + 0xb8
   at McMaster.Extensions.CommandLineUtils.ConventionBuilderExtensions.UseDefaultConventions(IConventionBuilder) + 0x5a
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute[TApp](CommandLineContext) + 0x177
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](CommandLineContext) + 0x31
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](IConsole, String[]) + 0x9d
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](String[]) + 0x42
   at MyProgram.MyProgram.Main(String[]) + 0x23
   at MyProgram.MyProgram.<Main>(String[]) + 0x2b
   at MyProgram!<BaseAddress>+0xbaec0f
   at MyProgram!<BaseAddress>+0xbaec9f

Looking at the code that fails, there's a bunch of reflection going on in there - I've tried adding quite a few additional assemblies to rd.xml (System.ComponentModel*, System.Collections*, System.Globalization*, System.Reflection*, etc.), but I haven't managed to get past this one.

Hi,
I'm experiencing a similar issue. I'm using MacMaster.Extensions.CommandLineUtils v2.3.1 and Microsoft.DotNet.ILCompiler v1.0.0-alpha-27418-01.
My Program class looks like this:
static int Main(string[] args)
{
    return CommandLineApplication.Execute<Program>(args);
}

int OnExecute(CommandLineApplication app)
{
    // ...
}

and I'm using this rd.xml file:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
    <Assembly Name="McMaster.Extensions.CommandLineUtils" Dynamic="Required All" />
  </Application>
</Directives>

I'm not getting the TypeInitializationException, probably because I'm not using an async Main(). However, I'd say that our root reason is the same because this is the exception I get:
Unhandled Exception: EETypeRva:0x00D22560(System.Reflection.MissingRuntimeArtifactException): MakeGenericMethod() cannot create this generic method instantiation because the instantiation was not metadata-enabled: 'McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider.GetParser<System.String>()' For more information, please visit http://go.microsoft.com/fwlink/?LinkID=616868
   at Internal.Reflection.Core.Execution.ExecutionEnvironment.GetMethodInvoker(RuntimeTypeInfo, QMethodDefinition, RuntimeTypeInfo[], MemberInfo) + 0x148
   at System.Reflection.Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon.GetUncachedMethodInvoker(RuntimeTypeInfo[], MemberInfo) + 0x50
   at System.Reflection.Runtime.MethodInfos.RuntimeMethodInfo.get_MethodInvoker() + 0xa8
   at System.Reflection.Runtime.MethodInfos.RuntimeNamedMethodInfo`1.MakeGenericMethod(Type[]) + 0x104
   at McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider.GetParser(Type) + 0x47
   at McMaster.Extensions.CommandLineUtils.Conventions.OptionAttributeConventionBase`1.AddOption(ConventionContext, CommandOption, PropertyInfo) + 0x37d
   at McMaster.Extensions.CommandLineUtils.Conventions.OptionAttributeConvention.Apply(ConventionContext) + 0xb0
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Builder.McMaster.Extensions.CommandLineUtils.Conventions.IConventionBuilder.AddConvention(IConvention) + 0x3c
   at McMaster.Extensions.CommandLineUtils.ConventionBuilderExtensions.UseAttributes(IConventionBuilder) + 0xe6
   at McMaster.Extensions.CommandLineUtils.ConventionBuilderExtensions.UseDefaultConventions(IConventionBuilder) + 0x13
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute[TApp](CommandLineContext) + 0xc2
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute[TApp](IConsole, String[]) + 0xb8
   at watchdog!<BaseAddress>+0x6741af

You see, the method McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider.GetParser(Type) is present in both our stack traces.
Looking at the exception message, I tried to explicitly include McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider.GetParser<System.String>()
in my rd.xml. However, I have no idea how to achieve that. I tried this:
  <Application>
    <Assembly Name="McMaster.Extensions.CommandLineUtils" Dynamic="Required All">
      <Type Name="McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider" Dynamic="Required All">
      </Type>
    </Assembly>
    <Assembly Name="mscorlib" />
  </Application>
</Directives>

and this:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
    <Assembly Name="McMaster.Extensions.CommandLineUtils" Dynamic="Required All">
      <Type Name="McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider" Dynamic="Required All">
        <Method Name="GetParser">
        </Method>
      </Type>
    </Assembly>
    <Assembly Name="mscorlib" />
  </Application>
</Directives>

But none of them made any difference. Then, I tried this:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
    <Assembly Name="McMaster.Extensions.CommandLineUtils" Dynamic="Required All">
      <Type Name="McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider" Dynamic="Required All">
        <Method Name="GetParser">
          <GenericArgument Name="System.String,mscorlib" />
        </Method>
      </Type>
    </Assembly>
    <Assembly Name="mscorlib" />
  </Application>
</Directives>

I had to look at https://github.com/dotnet/corert/blob/master/src/ILCompiler/src/RdXmlRootProvider.cs to avoid the System.NotSupportedExceptions I got. It seems that the troubleshooters such as https://dotnet.github.io/native/troubleshooter/method.html aren't useful, and I had to use GenericArgument inside Method despite not being listed as available child tag in the schema.
The rd.xml above produced this on compile time:
EXEC : error : Exception of type 'System.Exception' was thrown. [C:\path\to\my\project.csproj]
  System.Exception: Exception of type 'System.Exception' was thrown.
     at ILCompiler.RdXmlRootProvider.ProcessMethodDirective(IRootingServiceProvider rootProvider, ModuleDesc containingModule, TypeDesc containingType, XElement methodElement)
     at ILCompiler.RdXmlRootProvider.ProcessTypeDirective(IRootingServiceProvider rootProvider, ModuleDesc containingModule, XElement typeElement)
     at ILCompiler.RdXmlRootProvider.ProcessAssemblyDirective(IRootingServiceProvider rootProvider, XElement assemblyElement)
     at ILCompiler.RdXmlRootProvider.AddCompilationRoots(IRootingServiceProvider rootProvider)
     at ILCompiler.Compilation..ctor(DependencyAnalyzerBase`1 dependencyGraph, NodeFactory nodeFactory, IEnumerable`1 compilationRoots, ILProvider ilProvider, DebugInformationProvider debugInformationProvider, DevirtualizationManager devirtualizationManager, Logger logger)
     at ILCompiler.ILScannerBuilder.ToILScanner()
     at ILCompiler.Program.Run(String[] args)
     at ILCompiler.Program.Main(String[] args)

I thought that maybe I forgot to specify the generic type parameter in the method signature, so I tried this instead:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
    <Assembly Name="McMaster.Extensions.CommandLineUtils" Dynamic="Required All">
      <Type Name="McMaster.Extensions.CommandLineUtils.Abstractions.ValueParserProvider" Dynamic="Required All">
        <Method Name="GetParser`1">
          <GenericArgument Name="System.String,mscorlib" />
        </Method>
      </Type>
    </Assembly>
    <Assembly Name="mscorlib" />
  </Application>
</Directives>

And then I got a NullReferenceException:
EXEC : error : Object reference not set to an instance of an object. [C:\path\to\my\project.csproj]
  System.NullReferenceException: Object reference not set to an instance of an object.
     at ILCompiler.RdXmlRootProvider.ProcessMethodDirective(IRootingServiceProvider rootProvider, ModuleDesc containingModule, TypeDesc containingType, XElement methodElement)
     at ILCompiler.RdXmlRootProvider.ProcessTypeDirective(IRootingServiceProvider rootProvider, ModuleDesc containingModule, XElement typeElement)
     at ILCompiler.RdXmlRootProvider.ProcessAssemblyDirective(IRootingServiceProvider rootProvider, XElement assemblyElement)
     at ILCompiler.RdXmlRootProvider.AddCompilationRoots(IRootingServiceProvider rootProvider)
     at ILCompiler.Compilation..ctor(DependencyAnalyzerBase`1 dependencyGraph, NodeFactory nodeFactory, IEnumerable`1 compilationRoots, ILProvider ilProvider, DebugInformationProvider debugInformationProvider, DevirtualizationManager devirtualizationManager, Logger logger)
     at ILCompiler.ILScannerBuilder.ToILScanner()
     at ILCompiler.Program.Run(String[] args)
     at ILCompiler.Program.Main(String[] args)

I got the same if I used GetParser`1[[System.Object,mscorlib]] as the method name.
Is there anything else that I could try out? What is the proper way to enable metadata for that generic method?

Is there anything else that I could try out?

Try using GetParser as the method name. The generic arity suffix is used for types only.
Alternatively, you can consider using command line parser that is more AOT friendly, e.g. https://github.com/dotnet/command-line-api.

Unfortunately I already tried that... I got a System.Exception() with no message, you can see the trace in my previous comment. Or did I miss something in that one?
I'll look into the link you proposed, thanks!

I'm pretty sure it's matching the non-generic version of the GetParser method. Not being able to specify overloads is a known limitation.
No RD.XML should be needed once we merge #6987. It should work if you build the repo yourself with that change. We can't merge it yet because it causes CI to fail (it makes us discover generic CoreFX tests we weren't running before). With any luck, I'll get to it this weekend.

Thanks for the answer! I'll stay tuned to the new releases then, I appreciate your feedback 😃


How create pdf searchable from image?

Its possible make a pdf searchable from image by coding?

Check out #193, in short you need to install the latest prerelease since the current stable release doesn't have the functionality. Here's a usage example taken from the test cases:
 public void CanRenderResultsIntoPdfFile()
{
	var resultPath = TestResultRunFile(@"ResultRenderers\PDF\phototest");
	using (var renderer = ResultRenderer.CreatePdfRenderer(resultPath, DataPath)) {
		var examplePixPath = this.TestFilePath("Ocr/phototest.tif");
		ProcessFile(renderer, examplePixPath);
	}

	var expectedOutputFilename = Path.ChangeExtension(resultPath, "pdf");
	Assert.That(File.Exists(expectedOutputFilename), $"Expected a PDF file \"{expectedOutputFilename}\" to have been created; but non was found.");
}

private void ProcessFile(IResultRenderer renderer, string filename)
{
	var imageName = Path.GetFileNameWithoutExtension(filename);
	using (var pix = Pix.LoadFromFile(filename)) {
		using (renderer.BeginDocument(imageName)) {
			Assert.AreEqual(renderer.PageNumber, -1);
			using (var page = _engine.Process(pix, imageName)) {
				var addedPage = renderer.AddPage(page);

				Assert.That(addedPage, Is.True);
				Assert.That(renderer.PageNumber, Is.EqualTo(0));
			}
		}

		Assert.AreEqual(renderer.PageNumber, 0);
	}
}

Hello,
first of all i have to give you a lot of thanks for your hard work.
I tested this and Works fine.
Regards

I must misunderstand the API.  An incomplete PDF is generated by the following example.  Where did I go wrong?
using (IResultRenderer renderer = Tesseract.ResultRenderer.CreatePdfRenderer(@"Output", @"Data\tessdata\"))
{
     using (renderer.BeginDocument("PDF Test"))
     {
           string configurationFilePath = "Data";
           using (TesseractEngine engine = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndCube))
           {
                   string tifFile = @"C:\example.tif";
                   using (Pix img = Pix.LoadFromFile(tifFile))
                   {
                         using (Page page = engine.Process(img))
                         {
                             renderer.AddPage(page);
                         }
                   }
           }
}

The thing that was apparently keeping my original example from working was it did not provide a second parameter to the engine’s Process method:
using (Pix img = Pix.Loa```
dFromFile(tifFile))
{
using (Page page = engine.Process(img, "PDF Test"))  NEEDS SECOND PARAMETER.
{
renderer.AddPage(page);
}
}

Hi Charles,
I can't get this function to work.
Throws invalidopertation, due to this statement being = 0 in the BeginDocument method
if (Interop.TessApi.Native.ResultRendererBeginDocument(Handle, titlePtr) == 0)
Code I'm testing is as follows.
 public void ConvertToPDF()
        {
            using (IResultRenderer renderer = Tesseract.ResultRenderer.CreatePdfRenderer(@"E:\Convert\output", @"./tessdata"))
            {
                using (renderer.BeginDocument("test"))
                {
                    string configurationFilePath = @"./tessdata";
                    using (TesseractEngine engine = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndCube))
                    {
                        using (var tifFile = new Bitmap(@"E:\Convert\Page-1.tif"))
                        {
                            using (var img = PixConverter.ToPix(tifFile))
                            {
                                using (var page = engine.Process(img, "test"))
                                {
                                    renderer.AddPage(page);
                                }
                            }
                        }
                    }
                }
            }
        }

Hello Doug,
I was experiencing the same problem you're describing. The pdf renderer needs some font files, the documentation says these are probably in your tessdata folder. For me that wasn't the case, I didn't have those files. We fixed it by copying the pdf font files from the unit test directory in the develop branch of this repo. Works like charm now.

out18.pdf

Tried the searchable pdf generation in using Tesseract OCR , but generating pdf with text and images are hidden.

Included the pdf config file and pdf.ttf inside tessdata folder.

Please help me on this, why the engine is rendering a searchable pdf with text and invisible image.

 using (IResultRenderer renderer = Tesseract.PdfResultRenderer.CreatePdfRenderer(@"D:\out18", @"C:\Program Files (x86)\Tesseract-OCR\tessdata\"))                 {                     using (renderer.BeginDocument("Serachablepdftest"))                     {                         string configurationFilePath = @"C:\tessdata";                         string configfile = Path.Combine(@"C:\tessdata", "pdf");                         using (TesseractEngine engine = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndLstm, configfile))                         {                             using (var imagefile = new Bitmap(@"C:\file-page1.jpg"))                             {                                 using (var img = PixConverter.ToPix(imagefile))                                 {                                     using (var page = engine.Process(img, "Serachablepdftest"))                                     {                                         renderer.AddPage(page);                                     }                                 }                             }                         }                     }                 }

 using (IResultRenderer renderer = Tesseract.PdfResultRenderer.CreatePdfRenderer(@"D:\out18", @"C:\Program Files (x86)\Tesseract-OCR\tessdata\"))
                {
                    using (renderer.BeginDocument("Serachablepdftest"))
                    {
                        string configurationFilePath = @"C:\tessdata";
                        string configfile = Path.Combine(@"C:\tessdata", "pdf");
                        using (TesseractEngine engine = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndLstm, configfile))
                        {
                            using (var imagefile = new Bitmap(@"C:\file-page1.jpg"))
                            {
                                using (var img = PixConverter.ToPix(imagefile))
                                {
                                    using (var page = engine.Process(img, "Serachablepdftest"))
                                    {
                                        renderer.AddPage(page);
                                    }
                                }
                            }
                        }
                    }
                }``

I'm unable to load the IResultRenderer class, it seems unable to find it. Can anyone assist?

Are you using the latest prerelease?
On Sat., 3 Feb. 2018, 10:08 Kieran Maher<EMAIL_ADDRESS>wrote:

I'm unable to load the IResultRenderer class, it seems unable to find it.
Can anyone assist?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/charlesw/tesseract/issues/302#issuecomment-362735557,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPzyMf-xBlvkPq1w1AcAN6IySnKPphQks5tQ5VugaJpZM4LDx0_
.

I'm trying to test this functionality but keep running into a 'Failed to begin document' error on renderer.BeginDocument. I'm sure it's something i'm missing or doing wrong but I'm going in circles at this point. If anyone could chime in it would be helpful. I'm using charlessw sample code from Dec 5 in this thread.

Hi, ensure you're included the pdf font file in your tessdata directory and
ensure your using the latest prerelease of this project.
On Tue., 13 Mar. 2018, 03:50 mechachi<EMAIL_ADDRESS>wrote:

I'm trying to test this functionality but keep running into a 'Failed to
begin document' error on renderer.BeginDocument. I'm sure it's something
i'm missing or doing wrong but I'm going in circles at this point. If
anyone could chime in it would be helpful. I'm using charlessw sample code
from Dec 5 in this thread.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/charlesw/tesseract/issues/302#issuecomment-372380704,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPzyJnD18UcMZkDUAwD7Ht6NSO4P5Oaks5tdqdOgaJpZM4LDx0_
.

@charlesw, maybe this should be closed
I'd also like that we write the pdf to a stream rather than file location


feat: manually implement PartialEq, Eq and Hash for signals

Currently signals implement PartialEq, Eq and Hash with derive, which requires T to implement said traits.
Signals only use T in phantomdata and as such the actual implementation does not require T to implement any traits.
Manually implementing the traits would allow for any signal to use them without T having them implemented.

Note for anyone interesting in contributing: this could be done for every single reactive type (RwSignal, ReadSignal, WriteSignal, Memo, Signal) as well as StoredValue. Possibly for the Debug trait as well. rust-analyzer should even be able to fill in the most of the definitions for you...


chore(deps): upgrade dev dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-dev-dependencies-k8s-26-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 3859

Questions ?
Please refer to the Backport tool documentation


Redirecting a different page to the same domain

A few days ago I managed to make my website with fruition. I got the domain on Porkbun and followed the instructions to make my domain redirect the visitor to what I'll call "my notion page 1".
However, I realized I want my visitors to be redirected to my notion page 2 instead.
I tried remaking my steps with fruition to see if I would have any success and after several trials, I just can't seem to be able to change it...
 So how can I change the page my domain is pointing to?
Thank you

Go into your Worker in Cloudflare (Repeat the steps on the  instructions of the page, it's the place where you pasted the code).
Here's the screenshoot from the Fruition page:

There, in the code, there should be a part that is like:
const SLUG_TO_PAGE = {   '': '1a5f5721gba543tb885538ac7545e360', };
But with a different value on the numers and letters
The numbers and letters are part of the notion url, it's the last part of the url after whatever customization and naming you did in notion. So, following the example, your notion page 1 link would be something like:
https://www.notion.so/workspacename/name-of-the-page-1a5f5721gba543tb885538ac7545e360
Copy the part with seemingly random numbers and letters of your Notion page 2 into the Worker in cloudflare, replacing the ones you already have, and  click "Save and Deploy".
This should make your domain load the notion page 2 instead of notion page 1.

Thank you very much!! It did work❤


New Config Option For Weather Widget

Added raw_only to the config options for being able to display full decoded weather or just raw metar/taf or both (depends on the blade design)

Closing this :) We have the change already with latest dev


Is Wexflow still an on going project ?

everything is in the title

very nice project, wish work long time.

Yes, Wexflow is still an ongoing project.


WSL 2 Not starting

Version
Microsoft Windows [Version 10.0.22000.348]
WSL Version

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>
Distro Version
Ubuntu 20.04(maybe), Arch Linux
Other Software
PowerToys
Zoom
Cisco Webex
Cloudflare
Spotify
Windows Terminal
Glasswire
Repro Steps
Open Ubuntu.
Expected Behavior
Ubuntu to start normally, and I continue on my work.
Actual Behavior
It exits with this error.
The operation timed out because a response was not received from the virtual machine or container.
[process exited with code<PHONE_NUMBER>]
Diagnostic Logs
No response

This issue has been opened as #5092 and #4929, But none of the solutions seems to work for me. I have even tried completely uninstalling WSL, Hyper-V and all kinds of virtualisation features. But none of them works. So I thought I'd open a new issue in the hope to get my issue resolved.

/logs

I have logged it in the Feedback hub app

Could you find time to look into my issue

Thanks @Wizards-god. Can you please share the link to your feedback hub entry ?

Thanks @Wizards-god. Can you please share the link to your feedback hub entry ?

https://aka.ms/AAf6ee8 , Here is the link to my issue on Feedback Hub.

Thanks @Wizards-god.
Looking at the logs, I can see:
[   36.631216] EXT4-fs (sdc): VFS: Can't find ext4 filesystem
[   36.631819] ERROR: Mount:2683: mount(/dev/sdc, /distro, ext4, 0x0, discard,errors=remount-ro,data=ordered

Based on that, it looks like your distribution VHD is corrupted.
Can you share the content of HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss ? The path to the distribution VHD is under that key.

I did not know how to export individual keys, so just exported it and attached it here
VHD.txt

.

Ok, based on that I can see that the disk for ubuntu is in C:\\Users\\parja\\AppData\\Local\\Packages\\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\\LocalState. There should be a file named ext4.vhdx in that folder.
To recover its content the simplest I can think of would be to use wsl --mount, so something like:
wsl --mount C:\Users\parja\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx --vhd --bare

And then use fsck on the disk to try to recover its content (you can use lsblk to list the available disks)
Note that:

If you don't care about the files inside that distro, simply uninstalling and reinstalling it should work
wsl --mount --vhd is only available in WSL from the store so you'd need to install to use it

Ok, based on that I can see that the disk for ubuntu is in C:\\Users\\parja\\AppData\\Local\\Packages\\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\\LocalState. There should be a file named ext4.vhdx in that folder.
To recover its content the simplest I can think of would be to use wsl --mount, so something like:
wsl --mount C:\Users\parja\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx --vhd --bare

And then use fsck on the disk to try to recover its content (you can use lsblk to list the available disks)
Note that:

If you don't care about the files inside that distro, simply uninstalling and reinstalling it should work
wsl --mount --vhd is only available in WSL from the store so you'd need to install to use it

Thank you so much, I could recover all my files from the distro. Now it is working like before.

Happy it worked ! Closing this.


Ensure our repo cache is enabled

The repo cache in OSA creates a mesh within a deployment so that all
package installations come from our repo-server infrastructure. This
allows us to limit our download traffic to our apt mirrors and ensures
fast package installation from a local proxy. This change will improve
the overall deployment experience with or without our package mirrors.
Signed-off-by: Kevin Carter<EMAIL_ADDRESS>

@odyssey4me is it ok to use it for r14.2.0, is the mirror now complete ?

@BjoernT I don't think I understand what you're asking.
The apt repo used by RPC has been complete since r14.1.0. This patch changes the default to activate the repo cache in the repo container, but still uses the same apt repo.
If you're asking whether it's safe to use an override to enable the cache in any newton RPC-O releases, then the answer is yes.
Does that answer your question?

Yes that was the question because I noticed that this was not in place after leapfrog

@BjoernT What is this which was not in place after the leapfrog?

The availability of apt cacher NG. The vip is down and apt seems not configured to use the cache in the first place on the host. The vip is called RPC_POOL_REPO_CACHE.


Docker / singularity links are wrong in documentation

Documentation
The documentation to build the singularity  container leads to the wrong repository. I assume you want to point towards this one: https://hub.docker.com/r/deepmi/fsqcdocker. Hence:
singularity build fsqc-latest.sif docker://deepmi/fsqc:latest should become singularity build fsqc-latest.sif docker://deepmi/fsqcdocker:latest. Similar for all the following links referring to dockerhub.
If you agree, I would be happy to open a PR to correct the documentation.

Right, well spotted. Thanks for offering to correct this, please go ahead.


perf(ast): inline all ASTBuilder methods

#3295  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @Boshen and the rest of your teammates on  Graphite

Nice!


Triggering the duplicate rules when closing a case

first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, dlrs_AssetTrigger: execution of AfterUpdate caused by: System.DmlException: Update failed. First exception on row 1 with id .....................; first error: DUPLICATES_DETECTED, You're creating a duplicate Account. We recommend you to use existing Account Instead.: [] (dlrs) : []: ()
we do have other places where this error caught, we placed the code at dml operations like insert/update to bypass the duplicate rule. In the the above one we cannot able to fix it because of managed package code. Please suggest

It must be that a child record for a duplicate account is being updated/inserted/deleted, is that possible?

@saihanuman happy to re-open this if you want to discuss more.


Fixing spinner load more

Fixing issue:
https://github.com/vitmalina/w2ui/issues/2381

@vitmalina
Ok, I think I did it right this time:

fixed mquery.js in mquery project to handle TR diferrently than other elements
reverted everything about showTr() in w2ui project
made changes to query.js inside w2ui project to be the same as the on in mquery project


miniature/unresponsive window after multiple rips

I have a problem similar to [nameplate1]. After multiple rips (number varies) when I open RipMe it only opens a miniature window that I can't maximize and an icon in the task bar. When this happens I haven't found a way to use the program. The "clipboard autorip" command on the taskbar icon doesn't seem to work either.
When the history file is removed from the folder where the JAR is, it opens normally (usual window with settings, history, log and everything functionnal). This of course erases my history.
I now have 2 history.json files backed up elsewhere and no way to get the links in them back. The first one was huge so I thought this was the issue but the problem re-occured yesterday and it had max a couple dozen links in history.
In the options menu the only checked boxes I have are: Preserve order+Save album titles. I am running v1.1.4
Thanks for the program, I'm hoping this can be fixed.

Can you attach or paste the contents of the history files (the ones that cause the program to crash)? You could paste it on pastebin ...

Both notepad and word-pad give me only blank characters, no text. What do you use to open them?

Blank characters? Yikes. You could upload it to a file-sharing site. rghost.net doesn't require any login; alternatively there's dropbox, mega, mediafire, etc...
In the mean time, I pushed 1.1.6 which catches when the history file can't be loaded, warns that the file will be overwritten, and then loads the program normally.

here's the most recent one. http://rghost.net/7FlXGHZYp
I'm now running 1.1.5 with the same issue, gonna update to 1.1.6
thanks

Looks like it wrote 17kb of null characters (0x00). Looks like there's no way to recover your previous history :(
This is where the code writes the history.json file: https://github.com/4pr0n/ripme/blob/master/src/main/java/com/rarchives/ripme/ui/History.java#L130-L138
I don't see any reason why that would output a bunch of null characters... I tried loading a huge history file (thousands of entries) but the program was able to load/save as usual...

I had already pretty much abandoned all hope, guess I'll delete those empty backups.
Would it be possible to re-establish a history with the rip folder? I mostly rip on reddit  so tons of my folders are reddit_user_[insert username]

That's actually a good idea; if there's no history, the program could "divine" your history based on the directory names in the /rips/ directory.
This will require some work...

Sadly I can't help, I'm totally inept with code.
I'm already grateful for the tool you designed. However if you ever manage to implement this, it would be awesome.

I saw the case where entire files were overwritten with the same number of bytes of NUL 0x00 characters. I forget the cause but it was related to file system corruption. That was on Ubuntu running in a server cluster, and any number of things could have gone wrong there. It sounds like @patoflecloune's issue is on Windows. It might be similar or it might not.
In my case, so much of my work was damaged, the admins had to restore my entire user directory to a good backup from a week before. Still lost some work that way, but it was better than nothing. I was happy that all my code from the lost week was backed up on bitbucket for the project I was working on. College was good times...

In the meantime I think this issue can be repro'd by intentionally corrupting the history file.
Even if the file can't be saved, it's possible it's not corrupted beyond repair, maybe copy the existing file to a backup file before overwriting it?

I think it's safe to close this as a fluke client issue. Haven't seen any other complaints, but if they come up we can handle a new issue.


Add Homescreen mobile

As a User, I need a home screen to have consistent access to the asset management platform.
The home screen displays all assets.

Definition of Done

[ ] The mobile home screen is displayed on smartphones.
[ ] It's possible to scroll, if and only if the screen is too small.
[ ] The sidebar can be opened with a swipe to the right or a click on the menu icon.

Fixed the bug by adjusting application.scss with @media (max-width: $mobileDeviceCutoff) {   .navbar-collapse {     top: 56px;

The estimate for sprint 1 for this task was 8. Some testing and small adjustments still have to be done in sprint 2 and have been estimated with 5 story points.

Changelog:

Added labels to bell and human in mobile-view

As this is cross-cutting, I committed this directly on dev.

Bei mir sieht die nav bar so aus. Trotz letztem commit. Soll das so?

Vielleicht sollten die render lines in den html body?


Parser Error

I got a parser error, when I remove the line which contains {{ hugo.Generator }} everything is fine.
boris@xxxx:~/repos/selenium/site/docs_source_files$ hugo server Error: "xxxxxxx/repos/selenium/site/docs_source_files/themes/hugo-theme-learn/layouts/partials/header.html:6:1": parse failed: template: partials/header.html:6: function "hugo" not defined

I have the same error!
Hugo Static Site Generator v0.40.1 linux/amd64 BuildDate: 2018-04-25T17:16:11Z

@fritzmg, tks! But my linux version is Ubuntu 18.04 and the recommended version is 0.40.1.
https://packages.ubuntu.com/search?keywords=hugo
@ boris779, i used the version 2.3.0 and it worked (git checkout tags / 2.3.0)

@fritzmg, tks! But my linux version is Ubuntu 18.04 and the recommended version is 0.40.1.

The theme will surely not be able to support such old versions of Hugo.

@juliancesar I ran into the same issue and used the dpkg instructions from:
https://hostadvice.com/how-to/how-to-install-hugo-on-ubuntu-18-04/
And downloaded the latest Linux 64bit .deb file from: https://github.com/gohugoio/hugo/releases
With the latest release the learn theme is working great!


➕ Added a tool and 2 new profiles

What type of PR is this? (check all applicable)

[x] 🚀 Added Name
[ ] ✨ Feature
[ ] ✅ Joined Community
[ ] 🌟 ed the repo
[ ] 🐛 Grammatical Error
[x] 📝 Documentation Update
[ ] 🚩 Other

Description

Added profiles of gautamkrishnar & athul
Added tool → Dev Metrics in Readme

Add Link of GitHub Profile
ABSphreak

Changes done!

Thanks for Adding our Profile here @ABSphreak 😊


Windows: Keyboard shortcuts for window movement is broken ( Win + Right / Left Arrow)

Reported on Discord: https://discord.com/channels/417774914645262338/424012160696582144/860090626878865438 ( thanks @Apostolique)
On Windows, the Win+Right / Win + Left keys don't move the window as expected. In addition, double-clicking the titlebar isn't working correctly.
This doesn't reproduce on 0.5.6, but does reproduce on latest master. Tracked down the breaking commit to the upgrade to SDL <IP_ADDRESS>: https://github.com/onivim/oni2/pull/3624

It might be related: on macos, keyboard shortcuts using option looks broken as well (i noticed it on july 2nd after updating onivim).
in keybindings.json:
{ "key": "<D-A-Right>", "command": "workbench.action.nextEditor", "when": "editorTextFocus" },

does not work anymore (the editor stays on the current editor)
similarly, in configuration.json:
"experimental.viml": [
"inoremap <A-Left> <ESC>bi"
]

does not work anymore (the cursor does not move when the shortcut keys are pressed)

Possibly related window management issues on Windows:

Double clicking window title doesn't maximize
Window snapping doesn't trigger via

Super+Arrows
Dragging to screen edges

Maximizing onivim covers the task bar.

Windows 10, 0.5.9-nightly


Describe Istio in #3 of FT/Prometheus

Section 1 has a description.  It should be here as well, perhaps rephrased:
Istio is an ingress and service mesh within the cluster for traffic routing between the blue/green versions of our services."

outdated


Data Mining 2016 Pres Campaign Finance Data - all data moved, thus all data links broken. Still accessable..

Describe the bug
On the Experiment page "Data Mining 2016 Presidential Campaign Finance Data" at:
https://gallery.azure.ai/Experiment/Data-Mining-2016-Presidential-Campaign-Finance-Data-1
All links on the FEC web have been re-arranged, breaking all data links to the FEC on the above page.
To Reproduce
Steps to reproduce the behavior:

Go to 'above URL'
Click on 'committee linkage file, or any other link that links to data on the FEC site'
Scroll down to 'no scrolling needed if your browser displays more than about 10 lines..'
See error: usual (but custom) 404.

Expected behavior
A download of the zip file indicated in all the FEC download links. (which, BTW, are all FTP, and their FTP server is currently not even responding, I'm guessing it's part of the re-arrangement noted in a few text files..
Screenshots
Nobody at MS is dense enough to need one.
Desktop (please complete the following information):
*****These are of course irrelevant unless the FTP is just failed, but I think it's down intentionally as there are other ways offered
to access the data. (including an API)

OS: Ubuntu LTS 18.04
Browser Firefox
Version 81.0 (64-bit) (see what happens when you make up your own versioning scheme?)

Smartphone (please complete the following information):
Irrelevant also anyway, FTP fails, it fails for everyone.

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
OK, so you can get the same data (or make new http links for your page if you're all loaded with free time) by going to:
https://www.fec.gov/data/browse-data/?tab=bulk-data
and just opening whichever you want, or "Contributions by individuals"
click the 2015-2016 link for that data. All files are obvious by you original (top link above) page's name for the data.

@Cognitive-dissonance The experiment isn't a doc.  You can comment below the experiment.
#please-close


How to get last_verified_block ?

Is there a way to obtain the latest validated l1 batch height?
I can only find the latest batch number in the document, but I cannot locate the most recently validated block height.

do it anytime


Accept in form submissions should include at least "text/html"

This commit 09c0f4acd4410ca4e48d9dc89db2526a46de30d4 breaks content negotiation on the server.
Before the Accept header was text/vnd.turbo-stream.html, text/html, application/xhtml+xml - now it is only text/vnd.turbo-stream.html.
This breaks servers not explicitly coded to Turbo Streams looking at the Accept header and finding no acceptable content type.
@seanpdoyle was this intentional?

Thank you for the report!

Thank you for the report!


doc: how to deploy Cilium Operator on a Local OpenShift cluster

Hi!
TL;DR
After running Cilium on KinD, I'd like to try it on my virtualized OpenShift cluster Local OpenShift but it fails to deploy the Cilium DaemonSet because of some restrictive permissions.
Is there a documented way to deploy Cilium on a OpenShift cluster?
My problem in detail
The Cilium Pod Operator is running fine, thus I proceed to create a CiliumConfig resource with default values:
apiVersion: cilium.io/v1alpha1
kind: CiliumConfig
metadata:
  name: cilium-openshift-default
  namespace: cilium
spec: {}

Then the DaemonSet cilium is created, which already fails with the following error:
Error creating: pods "cilium-" is forbidden: unable to validate against any security context constraint:
[provider "anyuid": Forbidden: not usable by user or serviceaccount, provider restricted-v2: .spec.securityContext.hostNetwork: Invalid value: true: Host network is not allowed to be used,
spec.volumes[1]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[2]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[3]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[4]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[5]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[6]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[7]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[8]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[10]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.volumes[11]: Invalid value: "hostPath": hostPath volumes are not allowed to be used,
spec.initContainers[0].securityContext.hostNetwork: Invalid value: true: Host network is not allowed to be used,
spec.initContainers[1].securityContext.seLinuxOptions.level: Invalid value: "s0": must be s0:c26,c5,
spec.initContainers[1].securityContext.seLinuxOptions.type: Invalid value: "spc_t": must be ,
spec.initContainers[1].securityContext.capabilities.add: Invalid value: "SYS_ADMIN": capability may not be added,

I fixed this  by running oc adm policy add-scc-to-user privileged -z cilium: this made the DaemonSet deploy the only Pod (Local OpenShift is a single-Node cluster, with a master/worker Node).
Now DaemonSet Pods starts but the problem is now:
cp: cannot create regular file '/hostbin/cilium-mount': Read-only file system

Environment
Cilium
Operator Cilium 1.14.1+xdd859b7 provided by Isovalent
Local OpenShift
$ crc version
CRC version: 2.19.0+a71226
OpenShift version: 4.12.13
Podman version: 4.4.4

Do the standard install docs at https://docs.cilium.io/en/stable/installation/k8s-install-openshift-okd/ not apply because it's Local Openshift?
In any case, the Cilium agent definitely expects to be able to create a read-write hostPath volume, so if the nodes have read-only filesystems only, then that may be a problem.

After asking around however, it seems that the OSS Cilium community no longer maintains OLMs - you can contact one of the vendors listed at https://github.com/cilium/cilium-olm#cilium-olm for someone who can help you with that.

I just realized the typo in the title I wrote, I swear I did it by mistake
Thanks @youngnick I'll do as you suggested

Today I found out that the same issue arises on a “regular” (not local) cluster. I'm trying to follow this Isovalent blog post on a freshly-installed OpenShift 4.15.5, and I'm getting the exact same error message:
oc -n kube-system logs cilium-j4rgp -c mount-cgroup
cp: cannot create regular file '/hostbin/cilium-mount': Read-only file system

The reason why the “official” instructions for Cilium on OpenShift don't apply in my case, is that I want to try out CNI chaining i.e. I don't want to change the install-time CNI (if I can avoid it).

hey @domq ,
I've same issue on OCP 4.14/4.15, i gave cilium SA all permissions needed on host level but that did not fixed the issue , could you please share more details on your end , was that issue fixed for you ?


Problem in running the model

Dear authors,
Hi! When I ran the notebook given in the readme file, there is an error reported on the line "model.fit(data)" that says:
ImportError                               Traceback (most recent call last)
 in <cell line: 7>()
5
6 model = GReaT(llm='distilgpt2', batch_size=32, epochs=50)
----> 7 model.fit(data)
8 synthetic_data = model.sample(n_samples=100)
5 frames
/usr/local/lib/python3.10/dist-packages/transformers/training_args.py in _setup_devices(self)
1670         if not is_sagemaker_mp_enabled():
1671             if not is_accelerate_available(min_version="0.20.1"):
-> 1672                 raise ImportError(
1673                     "Using the Trainer with PyTorch requires accelerate>=0.20.1: Please run pip install transformers[torch] or pip install accelerate -U"
1674                 )
ImportError: Using the Trainer with PyTorch requires accelerate>=0.20.1: Please run pip install transformers[torch] or pip install accelerate -U

NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.
To view examples of installing some common dependencies, click the
"Open Examples" button below.
I tried installing the hinted packages, and it didn't help. I tried it locally, no good either. Could you please let me know what may have gone wrong with my settings or packages?
Thanks a lot!
Joel

Dear @Joel113-sys,
Please install the GReaT package like this:
!pip install be-great
!pip install --upgrade accelerate
!pip uninstall -y transformers accelerate
!pip install transformers accelerate

Hope it helps!

Hi @unnir
On following above package installation steps, I get below error on sklearn dataset import line.

I believe you have package conflicts, I suggest creating an python or conda environments specifically for GReaT. Other possibility is to reinstall python on your machine.


Role propagation

Save roles in JWT and load them into sample apps. Consider if comma-separated list of roles is maybe not ideal?

https://medusa-ui.github.io/documentation/docs/internals/security/


Add soft limit for HTTP Request URI and Header field length.

Add a default body_factory template when rejecting a request that's too long

[approve ci ubuntu]

Overall looks fine to me. Please squash the commits.

[approve ci autest]