Log libz-blitz evaluation tracker

log evaluation for 2017-05-16
For more information see the internals libz blitz thread.
This post is a wiki. Feel free to edit it.
Links

https://crates.io/crates/log
https://github.com/rust-lang-nursery/log
https://docs.rs/log

Pre-review checklist
Do these before the libs team review.

[x] Create evaluation thread based on this template
[ ] Work with author and issue tracker to identify known blockers
[ ] Compare crate to guidelines by filling in checklist
[ ] Record other questions and notes about crate
[ ] Draft several use case statements to serve as cookbook examples
[ ] Record recommendations for updated guidelines
[ ] Publish evaluation to coordination thread for review and notify reviewers

Post-review checklist
Do these after the libs team review.

[ ] Publish libs team meeting video
[ ] Create new issues and tracking issue on crate's issue tracker
[ ] Solicit use cases for cookbook examples related to the crate
[ ] File bugs to implement cookbook examples
[ ] File bugs to update guidelines
[ ] Post all approachable issues to twir call for participation thread
[ ] Update links in coordination thread

Guidelines checklist

Organization (crate is structured in an intelligible way)

[ ] Crate root re-exports common functionality ([C-REEXPORT])
[ ] Modules provide a sensible API hierarchy ([C-HIERARCHY])

Naming (crate aligns with Rust naming conventions)

[ ] Casing conforms to RFC 430 ([C-CASE])
[ ] Ad-hoc conversions follow as_, to_, into_ conventions ([C-CONV])
[ ] Methods on collections that produce iterators follow iter, iter_mut, into_iter ([C-ITER])
[ ] Iterator type names match the methods that produce them ([C-ITER-TY])
[ ] Ownership suffixes use _mut and _ref ([C-OWN-SUFFIX])
[ ] Single-element containers implement appropriate getters ([C-GETTERS])

Interoperability (crate interacts nicely with other library functionality)

[ ] Types eagerly implement common traits ([C-COMMON-TRAITS])

Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash Debug,
Display, Default

[ ] Conversions use the standard traits From, AsRef, AsMut ([C-CONV-TRAITS])
[ ] Collections implement FromIterator and Extend ([C-COLLECT])
[ ] Data structures implement Serde's Serialize, Deserialize ([C-SERDE])
[ ] Crate has a "serde" cfg option that enables Serde ([C-SERDE-CFG])
[ ] Types are Send and Sync where possible ([C-SEND-SYNC])
[ ] Error types are Send and Sync ([C-SEND-SYNC-ERR])
[ ] Error types are meaningful, not () ([C-MEANINGFUL-ERR])
[ ] Binary number types provide Hex, Octal, Binary formatting ([C-NUM-FMT])

Macros (crate presents well-behaved macros)

[ ] Input syntax is evocative of the output ([C-EVOCATIVE])
[ ] Macros compose well with attributes ([C-MACRO-ATTR])
[ ] Item macros work anywhere that items are allowed ([C-ANYWHERE])
[ ] Item macros support visibility specifiers ([C-MACRO-VIS])
[ ] Type fragments are flexible ([C-MACRO-TY])

Documentation (crate is abundantly documented)

[ ] Crate level docs are thorough and include examples ([C-CRATE-DOC])
[ ] All items have a rustdoc example ([C-EXAMPLE])
[ ] Examples use ?, not try!, not unwrap ([C-QUESTION-MARK])
[ ] Function docs include error conditions in "Errors" section ([C-ERROR-DOC])
[ ] Function docs include panic conditions in "Panics" section ([C-PANIC-DOC])
[ ] Prose contains hyperlinks to relevant things ([C-LINK])
[ ] Cargo.toml publishes CI badges for tier 1 platforms ([C-CI])
[ ] Cargo.toml includes all common metadata ([C-METADATA])

authors, description, license, homepage, documentation, repository,
readme, keywords, categories

[ ] Crate sets html_root_url attribute "https://docs.rs/$crate/$version" ([C-HTML-ROOT])
[ ] Cargo.toml documentation key points to "https://docs.rs/$crate" ([C-DOCS-RS])

Predictability (crate enables legible code that acts how it looks)

[ ] Smart pointers do not add inherent methods ([C-SMART-PTR])
[ ] Conversions live on the most specific type involved ([C-CONV-SPECIFIC])
[ ] Functions with a clear receiver are methods ([C-METHOD])
[ ] Functions do not take out-parameters ([C-NO-OUT])
[ ] Operator overloads are unsurprising ([C-OVERLOAD])
[ ] Only smart pointers implement Deref and DerefMut ([C-DEREF])
[ ] Deref and DerefMut never fail ([C-DEREF-FAIL])
[ ] Constructors are static, inherent methods ([C-CTOR])

Flexibility (crate supports diverse real-world use cases)

[ ] Functions expose intermediate results to avoid duplicate work ([C-INTERMEDIATE])
[ ] Caller decides where to copy and place data ([C-CALLER-CONTROL])
[ ] Functions minimize assumptions about parameters by using generics ([C-GENERIC])
[ ] Traits are object-safe if they may be useful as a trait object ([C-OBJECT])

Type safety (crate leverages the type system effectively)

[ ] Newtypes provide static distinctions ([C-NEWTYPE])
[ ] Arguments convey meaning through types, not bool or Option ([C-CUSTOM-TYPE])
[ ] Types for a set of flags are bitflags, not enums ([C-BITFLAG])
[ ] Builders enable construction of complex values ([C-BUILDER])

Dependability (crate is unlikely to do the wrong thing)

[ ] Functions validate their arguments ([C-VALIDATE])
[ ] Destructors never fail ([C-DTOR-FAIL])
[ ] Destructors that may block have alternatives ([C-DTOR-BLOCK])

Debuggability (crate is conducive to easy debugging)

[ ] All public types implement Debug ([C-DEBUG])
[ ] Debug representation is never empty ([C-DEBUG-NONEMPTY])

Future proofing (crate is free to improve without breaking users' code)

[ ] Structs have private fields ([C-STRUCT-PRIVATE])
[ ] Newtypes encapsulate implementation details ([C-NEWTYPE-HIDE])

Necessities (to whom they matter, they really matter)

[ ] Public dependencies of a stable crate are stable ([C-STABLE])
[ ] Crate and its dependencies have a permissive license ([C-PERMISSIVE])

Cookbook use case statements

Debug messages
Logging info/error messages
Logging levels per module
Linux syslog logging

Crate issues
(List potential issues here)
Style guide updates
(List potential updates to the style guide)
Discussion topics
(List new questions that arose from this evaluation)

First link seem point to 404

Ah yes sorry I opened this in the wrong place, there's shortly be a thread on internals to replace this.

That is a cool list. I'd be interested in copying and use it. Is there any more information about it that I could use?

Ok there's now a thread on internals as well as this thread copied there too. If you've got any questions/thoughts, please feel free to post there!

@dpc Here's the list: https://github.com/brson/rust-api-guidelines


readme updated

Was just passing through and noticed broken links in the readme.

Already updated in #27

thanks - incorporated manually


Paid Work

Hey jimmy, i have some plotly dash custom component work. Your email isn't published anymore. If you are interested please email me at<EMAIL_ADDRESS>

hi,
you can share your own dash component on plotly forum.

What i meant is i need some custom component made, are you interested in getting paid to make one for me.

no thanks, actually I am not good at front-end design.


Reintroduce Swagger Compatability

Description
Reintroduce swagger functionality that existed in v2.3.5 but was removed in v3.0.0. See<EMAIL_ADDRESS>Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
I ran a local version of the playground where swagger() gets called , but set the openapi value in the OpenApiSpec to "3.0.3" since swagger doesn't support 3.1.0 yet.
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] I have updated the CHANGELOG in the Unreleased section
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Does this... actually work? Because the changes between openapi 3.0 and 3.1 are much deeper than just flipping the version number.

It only works for openapi version <= 3.0.3. Is there a way to check the OpenApiSpec for the version that was user set? I could check the version in the function and throw an exception if swagger doesn't support it yet.
Oh, I see that kompendium v3 doesn't support OpenApi < 3.1.0, so in order to use 3.0.3 I would have to be using kompendium v2.
I suppose I can close this for now and try again when Swagger supports OpenApi 3.1.0

Yea as soon as swagger supports openapi 3.1 we will add support, but it's been over 3 years now :(
There are plenty of other openapi front ends that do support 3.1 tho

@unredundant
I think the time has come
https://github.com/swagger-api/swagger-ui/issues/8401

Wow... I thought this day would never come

#425 made issue for this


add change management policy

Fixes #184
Also:

Move CLA and CoC to /policies
Add board actions section
Move documentation about documentation to documentation.md

Re:

I'd like to discuss the format of the change management document (web format vs. print format) at a future point.

I'll make an issue for it.


When installing using MSI, set the working directory of the shortcut to the user home directory

PR Summary
Leverage the -WorkingDirectory parameter on pwsh.exe to set the initial location.
Fix https://github.com/PowerShell/PowerShell/issues/5705
PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Change is not breaking
[x] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[x] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[x] Not Applicable
OR
[ ] User-facing Documentation needed

[ ] Issue filed - Issue link:

Testing - New and feature

[x] Not Applicable or can only be tested interactively
OR
[ ] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

Your commit isn't associated with your github id.  Can you fix that?

I'd suggest addressing @iSazonov 's comment


Is it mandatory to use local models or open ai only? Cant we use litellm and use gemini or other  llms supported by litellm in this project for asking questions?

Litellm is pretty awesome project https://docs.litellm.ai/ you can check them out they support Multiple llms (50-100+) and if this is integrated with litellm then many can use other llms with api instead of running locally and accomplish there task.

thank you very much for your suggestion, we will look into whether we need to integrate litellm.


FID of VQVAE

Great work! I really liked it.
Could you provide the FID score of your multi-scale VQVAE on ImageNet? I think it was not mentioned in the paper.
Thanks.

It is about 0.9


Cyber audit support permissions

Switch security audit role commit ref to apply support:* permissions for Trusted Advisor.

Apologies, I missed the request for review. This has been implemented via another PR.


Different dependency versions across the zebra crates

Some of our Cargo.toml files have slightly different dependency versions. For example, tracing 0.1 vs 0.1.15 in:
https://github.com/ZcashFoundation/zebra/blob/main/zebra-network/Cargo.toml#L30
https://github.com/ZcashFoundation/zebra/blob/main/zebra-consensus/Cargo.toml#L21
I'm not sure what the exact impact is here, but the build seems to work. I wonder if we are compiling redundant dependencies, or slightly different dependencies.
I don't think we need to fix this issue for the alpha release. But it would be nice to fix it for stable.

I don’t think there’s anything to fix here, Cargo is already doing the right thing and unifying dependencies to the extent that is possible.
All of the version requirements in Cargo are implicitly range requirements unless otherwise specified, so “0.1” means “0.1.x” and “0.1.15” means “0.1.y where y >= 15”.  Cargo does dependency resolution on a workspace-wide basis and always selects exactly one version in each semver range.

also fwiw if you wanna check for duplicate dependencies you can run cargo tree -d. We have a few and I'd like to fix that up to minimize our build times but I don't think its urgent.

Duplicates could also result in subtle bugs, if internal details in different versions are incompatible.

One property that helps minimize that possibility is that Cargo requires a unique version in each semver compatibility range of each named dependency (so if two dependencies are possible to unify, they will be unified) and treats incompatible versions of the same named dependency as different crates (so all of their types are distinct and they are not interchangeable).

yea in my experience I've only ever had duplicate versions cause issues that showed up as compiler errors due to types mismatching. I don't think there are many version mismatches that we could run into that could have these kinds of issues. sled is the only dep that I know of that could because the diff versions could hit the same file, but we're probably never gonna accidentally duplicate sled as a dep, only the state crate should ever track it.

Sounds great, I'm going to close this ticket then.
If it is important to run cargo -d before the alpha release, let's open a separate ticket.


Stop and Delete Codespace

I'd like to be able to issue a command from within the codespace to not just stop but stop and delete the codespace.

https://github.com/github-community/community/discussions/20827


Move monte carlo and least squares minimization back into flow of fitting

Move min_fit and monte_carlo back into repo in fit_S_data.py
Add docstring
Remove differential_evolution for now.

Everything moved back into the code.


Changed Impromptu namespace to be nested under RazorEngine.Compilation....

...ImpromptuInterface

Looks good, thanks! Just one formality before merging: Can you state somewhere (Commit message or #190) that you are fine with Apache2 (see #190 for a template sentence)?

Thanks again! Will be released in 3.5.3 very soon!

Merged in https://www.nuget.org/packages/RazorEngine/3.5.3 .


S3 URL Format Issue

Hi There,
I'm not sure how to fix the issue we encountered using this package. We got 403 response but all credentials are correct. On console log, upon checking the S3 used the URL format as
post_url = "https://s3-" + ops.region + ".amazonaws.com/" + ops.bucket;
but the format on my S3 url is
post_url = "https://"+ ops.bucket +".s3-" + ops.region + ".amazonaws.com/";
do you think it's the issue why I've got 403 response all the time?
Here's the full error:
XMLHttpRequest cannot load https://s3-ap-southeast-1.amazonaws.com/ourbucket Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://oursite.c9users.io' is therefore not allowed access. The response had HTTP status code 403.
Any help are appreciated.
Thanks!

I have the same problem. Any solution?

You have to access to your S3 bucket and disable the web hosting for your bucket (in the properties panel), then you able it again and the new url will have the new structure for the endpoint. Regards.


Add functionality to map over dataset elements in both graph and eager mode.

While we can't use the MapDataset op very easily in Java, using the DatasetIterator abstraction, we can map over dataset elements using a lambda.
In Graph mode, we apply the lambda once to add new operands to the graph as the targets for each session.run(). In Eager mode, the function is applied to each returned dataset element during iteration.
Each Dataset element is represented as a list of components: List<Operand<?>>.
In this PR, I added 3 utility functions to map over such elements:

Dataset.map(Bifunction<Ops, List<Operand<?>>, List<Operand<?>> mapper) to map an element-level transform to each returned element.

Dataset.mapOneComponent(int index, BiFunction<Ops, Operand<?>, Operand<?>> mapper) to map a component-level transform to a single component of each returned element.

`Dataset.mapAllComponents(BiFunction<Ops, Operand, Operand>) to map a single component-level transform to all components of each returned element.

Looks like you fixed some of the copyrights mid-review. There are still some files without them though.

Why do the map functions take the ops as a parameter? Is there some reason it can't take a capturing lambda which pulls in the ops from the lambda's declaring scope?

The goal here is to make sure that the same environment is being used to compute the lambda result. It's unlikely that the user will be using multiple Ops objects, I agree.
The way it's written now, the DatasetIterator passes its reference to the Ops object that it saves in its constructor.
Since these various abstractions like Dataset, DatasetIterator, etc. need to use the Ops object, what I've been aiming to do is pass the object in once to the object's constructor, and never require it again in a method call.
Having the lambda here blurs the line though between in an Ops object, and using the lambda's Ops argument. I think we can go either way on this one, not a huge deal either way.

Did some experimenting, I think it makes things a little simpler to instead use Function<Operand<?>, Operand<?>> etc with a capture Ops object, rather than using BiFunction and passing in the Ops as a parameter to the map lambda. Changed the code accordingly.

@karllessard @Craigacp I refactored things a bit (moved the .map functions to the Dataset class which makes the API much more consistent!)


Training with custom datasets and labels configuration

Hello,
I would like to know about the dataset folder configuration to perform my training on detecting objects.
Something like this:

custom_dataset
--- images
------- img1.jpg
------- img2.jpg
....
--- labels
------- img1.txt
------- img2.txt
....

And about label configuration, for instance:
img1.txt
class,x,y,w,h

For detection or segmentation tasks, you can refer to mmdetection.


Add ability to complete words

@jemc My initial stub at high level api would be something along these lines:
LIST = ['delete', 'update', 'search']

reader = TTY::Reader.new

reader.completion_append_character = " "
reader.completion_proc = -> (word) { LIST.grep(/^#{Regexp.escape(word)/) }

reader.on(:tab) { reader.complete } # searches for matches
reader.on(:completion) { |matches| prompt.diplsay_matches(matches) }
# => displays selection if more than one match found

More detailed api would include:
reader.completion_append_character # Character appended to completed words
reader.completion_items  # maximum number of matched items, by default 100
reader.match_hidden_files # by default matching current directory files, by default true
reader.complete_with_tilde_expansion # expand tilde, by default false
reader.word_break_characters # The basic list of characters that signal a break between words
reader.completion_duplicates # disallow duplicates in matches, by default true

@piotrmurach - I spent some time playing with this last night, and began to think that it's hard to design an API that makes sense to add to the TTY::Reader, but is also powerful/flexible enough to do the kind of python-prompt-toolkit-like "fancy prompt" I'm going for:

So, for now what I'm doing is creating my own high-level library for "fancy prompting" that uses the low-level APIs of TTY::Cursor, TTY::Reader.read_keypress, and TTY::Screen. So far I've created some abstractions that I think are pretty nice and general, while still being powerful enough for "fancy" purposes, but I'm not sure they would really fit with any of your existing libraries (save maybe for tty-prompt. You've created a lot of nice, clean low-level tools, and I don't particularly want to muddy them up unnecessarily, when I can just build on top of them instead.
I'll definitely keep you in the loop about what I'm doing, and when I've got everything tidied up to something I'm relatively happy with, we can maybe brainstorm together and see if there's any abstractions you want to import into one or more of your libraries.
I haven't checked the code into GitHub yet, but just for fun, here's a little teaser of what I came up with so far:

This looks great! I excited about the behaviour as well.
As far as complexity goes I think it's still can be split between tty-reader and tty-prompt. The tty-reader would be responsible for all the logic for finding a match and nothing else. This logic as I've shown you can be quite complex. However, once implemented will make tty-reader a truly versatile component that can be part of REPL or terminal editor or something else. Sky is the limit.
When it comes to tty-prompt, it would call reader.read_keypress and listen for :tab events which would in turn invoke matches = reader.complete and render matches in a table similar to yours. I was even thinking about using tty-table for this part of display.
Anyhow, I'm looking forward to your implementation.

Whatever happened to this? Looking to make a shell and my best current option looks like Highline.

Whatever happened to this? Looking to make a shell and my best current option looks like Highline.

Is there a chance this issue will eventually be solved?
Anything one can do to assist?

@zzyzwicz As I recall I had a somewhat ready implementation for basic completions implemented. Will need to review it and remind myself where I left it off. I also wish this to be implemented as this is an important feature. I will try to look at this tomorrow as I already have plenty to do today. I know it's been a long wait but we will get there!

Happy to see this progressing.
I had a look at Add ability to complete words and would like to suggest to further distinguish between word completion and word proposal.
Assuming the definition of word completion is to (also partially) complete a word up to that letter to which completion is unambigious, and word proposal is to provide with all possible completions,
then this approach rather does word proposal.
In my opinion and also with most command lines i know and work with, the first trigger to complete a word does word completion and only subsequent triggers on a not fully completed word do word proposal.
Would be great if tty-reader could also follow this approach?

@zzyzwicz Thanks for the feedback! 💯  agreed.

I see you've implemented completion but version 0.10 is still sitting unreleased? Is there something wrong with it?

Bump.  This also interests me.  I have an app that used readline, but it depends on the external library that is not always compiled into Ruby, which will now replace it with reline.  However, I have found reline to have some incompatibilities with readline and to be poorly documented.  TTY::Reader, on the other hand seems to have solid documentation and lots of potential for combining other components of the tty-toolkit into the presentation.  I'd love to play with it as a replacement for readline/reline.  Are you still working on this?  Cheers.


Update README.md

Fixed two typos
Duplicate of #13, sorry. I'll leave it here in case there are issues with that PR which seems to change more.

No worries :)


The "Dump with files" option produces duplicate files and

I have created a competition with input data, scoring programs from uploading a bundle file and there are also already test submissions.
When I then try to download using the "Dump with files" option I see the following oddities/problems:

The zip file that I get contains several files with the same name, in my case this is input_data-6224.zip feference_data-6224.zip and scoring_program-6224.zip which all occur twice in the zip file with identical names.
some of the reference*.zip files contain files which are definitely not from the project where I downloaded the dump from but from other projects I created (and deleted) previously
I also seem to get different versions of the scoring program

What is going on here, should the dump not be restricted to those data/program files which are actually part of the project?
And if I upload a bundle that contains e.g. a target file or scorer and then remove the project, should those files and scorers not get removed with the project they belong to?
UPDATE: to avoid confusion, after further investigation, the problem here is only that the chose file names are duplicates, not the content, this was my mistake.

The dump is supposed to contain only the files related to the current state of the competition.
Can you please share the URL to the competition so we can investigate this?

This is the one where I tried this: https://www.codabench.org/competitions/2618/?secret_key=74ac0264-1d23-4148-8f9a-dcdb66e08ab3

I am not sure which file you have downloaded or which you are seeing as the user you used.
I see the following list (the last one I have created via the "Dump with files" option:

Sadly the name in the list does not indicate which option was used to create it, and the name in the list is not used as the name when downloading the file. When downloading the file, it gets saved as "GermEval_GERMS-DETECT1-Closed-2024-.zip"
Here is the content of this zip file:
$ unzip -l GermEval_GERMS-DETECT1-Closed-2024-.zip
Archive:  GermEval_GERMS-DETECT1-Closed-2024-.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     3458  2024-04-11 09:48   logo.png
      265  2024-04-11 09:48   terms.md
      542  2024-04-11 09:48   participation-12250.md
       22  2024-04-11 09:48   input_data-6223.zip
    40827  2024-04-11 09:48   reference_data-6223.zip
     6463  2024-04-11 09:48   scoring_program-6223.zip
       22  2024-04-11 09:48   input_data-6224.zip
      192  2024-04-11 09:48   reference_data-6224.zip
     6463  2024-04-11 09:48   scoring_program-6224.zip
       22  2024-04-11 09:48   input_data-6224.zip
      192  2024-04-11 09:48   reference_data-6224.zip
     6463  2024-04-11 09:48   scoring_program-6224.zip
     2619  2024-04-11 09:48   competition.yaml
---------                     -------
    67550                     13 files

As you can see there are two files called "reference_data-6224.zip" and other files which are present in the zip archive multiple times and lead to prompts when unzipping:

The part of the competition.yaml file you quoted actually shows that the file name reference_data-6224.zip is used
for two different tasks and these are included as two different files with the same name in the zip file.
Note that originally, the competition.yaml file does NOT specify a zip file but a path, and the paths for task with index 1 and task with index 2 are different:
  - index: 1
    name: ST${subtask}-${track}
    is_public: true
    description: Subtask ${subtask}, ${track} Track
    reference_data: dev_phase/reference_data/
    scoring_program: scoring_program/
    input_data: input_data/
    # ingestion_program: ingestion_program/
  - index: 2
    name: ST${subtask}-${track}
    is_public: true
    description: Subtask ${subtask}, ${track} Track
    reference_data: comp_phase/reference_data/
    scoring_program: scoring_program/
    input_data: input_data/
    # ingestion_program: ingestion_program/

The confusion where I believed that the file comes from a different project was my mistake because in that version of the bundle I copy/pasted the wrong file into the reference data directory.
So there is definitely the problem that when dump with files is used, files with identical names are used to archive different data from different subdirectories.

with the unzip command you are using, I see reference_data-6224 two times

but when you check the folder you can see just one file

If a file with the same name already exists, normally it is overwritten.

@ihsaan-ullah I do not understand what you mean: clearly the zip archive I download contains duplicate files. Most versions of zip when unzipping such an archive, will prompt before overriding a file with the same name, if there is no prompt this would be even worse!
But the main thing here is that the files with identical names refer to different files in the original bundle and should definitely not have the same name! Why would anyone deliberately place two files with identical filenames into a zip archive? It does not make any sense to me.

I think now I see a problem.
To make things more clear. What do you expect?
From the competition, I see you have 3 pahses but they share the same task so there should be one set of {ingestion, scoring, input, reference}. But in your yaml file from the dump, I see 3 tasks(wrong) and 3 phases (right but one phase uses task 0 and other uses task 2, task 1 is not used)

When I unzip both reference data (6223 and 6224) they both have different content but the file name is same, this is also weird because the task is same for all the phases

This is not weird since in the bundle I originally uploaded, the data comes from different subdirectories in the different phases. The original competition.yaml file uploaded to create this project contained something like this:
phases:
  - name: Setup Phase
    description: 'Internal phase for developing and debugging the competition code'
    start: 2024-03-01
    end: 2024-04-11
    max_submissions_per_day: 1000
    max_submissions: 1000
    execution_time_limit: 60
    solutions: []
    tasks:
      - 0
  - name: Trial Phase
    description: 'Trial phase: Try everything out with a preliminary small training and test set'
    start: 2024-04-12
    end: 2024-04-30
    max_submissions_per_day: 20
    max_submissions: 20
    execution_time_limit: 60
    solutions: []
    # public_data: public_data
    # starting_kit: starting_kit
    tasks:
      - 0
  - name: Development Phase
    description: 'Development phase: Try everything out, train on training data, evaluate on dev data.'
    start: 2024-05-01
    end: 2024-06-06
    max_submissions_per_day: 1000
    max_submissions: 1000
    execution_time_limit: 60
    solutions: []
    # public_data: public_data
    # starting_kit: starting_kit
    tasks:
      - 1

So it may be important to state the the zip files included here are not MY zip files but something the system has created after I uploaded the bundle with a completely different directory structure.

To make things more clear. What do you expect?

First off, I would like to understand what the purpose of the different dumps is: is this documented anywhere?
What I find strange is that what I get in these files is or should be basically the same as what I get from the competition bundle file, but in a different format?
I would have expected that I will get all the submission data, scores files etc as well in these files but apparently this is not the case.
Where do I get, btw, the submissions to my competition?

The dump is created from the current state of the competition (without submissions and their scores).
To get the submissions, you have another tab close to the dumps tab where you can see all the submissions, their outputs

OK, but in that tab I still cannot see how I can download ALL submission data ... there is button in the upper left where I can select the phase but when I use that it asks me if I am sure that some calculation is run that could take hours.
I seem to be able to download either just a csv with the LIST of the submissions or each submission individually.
What I would need is to load ALL submission data for a phase at the same time because how else can I find out the proper ranking of submissions?
Note that the leaderboard is not suitable for doing this as it may contain invalid submissions and it has no way to properly rank according to statistical significance or to give the same rank to equivalent results.
So I absolutely NEED the complete set of submissions that were created during the evaluation phase for download and on-site processing.

We don't have an option to download all phase submissions at the moment

oh - this is really terrible. How are competition organizers supposed to do this? Is this possible in codalab? Is it possible to use the bundle I have created so far on codalab?
We are really panicking right now with the limitations we have detected which really make it hard to imagine how to run the competition using codabench


Don't assume all xfailed actions have a 'configuration' specified

They only need it if they also have an xfail entry with a configuration field, and no overriding configuration was specified via the --build-config flag.

@swift-ci please test


I can't archive, delete workspaces

After installing the app, i added multiple workspaces and i can't archive or delete them i got this error: Error: /session:purge session "" not found
and i've just notice an overflow of a text panel in the modal of updating status connections

Oh no!  that's a new bug.  Thanks for pointing that out, we'll try to issue a quick patch.

Didn't mean to close this issue since the fix hasn't been actually sent out in a release yet.  But it is now committed to main, so it will be in v0.5.3.  Given the severity of this issue, I'll probably cut that release tonight or tomorrow.


invalid_scope when generating authorization code

hello
I am trying to obtain an authorization code that has enough scope to call Adobe Analytics APIs.  The scopes specified in the documentation for this are:
openid,AdobeID,read_organizations,additional_info.job_function,additional_info.projectedProductContext
However, I get an error response "invalid_scope", because of the last 3.  If I use only openid,AdobeID it works but then later my API key says it is invalid and I suspect this is due to insufficient scope.
My question is, are the scope permissions assigned to developers internally by our Adobe admin or is there maybe some issue, like scope names changed.

I'm having the same issue requesting the offline_access scope.


[Storage System] IBM Cloud Object Storage Support - cleanup

This PR cleans up an unused variable in the IBMCOSLogStore.
The variable (writeSize) was a leftover from an older version of the LogStore implementation.
No logic changes are introduced.

@tdas please merge this when possible. this is only a cleanup to a variable which is not used in the code so there is no need for a new release of the delta-contrib module

Thank you! Working on merging this now.

@guykhazma Can you provide a public email? As you're using a private email, I can't import your PR.


Bump hyperloglog dependencies

This brings the dependencies into line with the stackage nightly constraints: https://www.stackage.org/nightly as at 2015-05-22

Thanks!


Create CuratedContentEditorialWorkflow.md

These things need further consideration:
This PR is based on the original draft from @bernhold Google doc.
We are submitting here to engage in discussion using conversation in this PR and iteration to develop a consensus on workflow for curated content.
The goal is to keep the focus on curated content workflow for time being.

From @bernhold

This workflow is different from (and much simpler than) the workflow for blog articles
I think, to make this work, we’re going to have to create an Editorial Board “team” in the betterscientificsoftware repository and limit write access to the repo to them.

So far, we’ve been giving direct write access to just about anyone.
There are others in the blog workflow who may need to have write access (or maybe should just work by PRs).

Speculation: this workflow might also be appropriate for non-blog original articles, but we might want a little more rigor in that type of content.  It is probably too heavyweight for Events.

Perhaps part of the issue submission should include some assessment of the depth of review of the material upon which the suggestion is based perhaps by assigning one of these labels...

Critical read: cover to cover, critical read of the material

In which case, the submission should include some commentary supporting why the suggested content is relevant/good for BSSw

Cursory read: abstract, results, targeted paragraphs/figures
Coincidental: Did not read. Just happened to run across this and thought it could be useful.
Note use of “read” in above works only for written content. We have videos and podcasts too. So, maybe replace “read” with “evaluation”

It is a tad heavy-weight process for small things. I think maybe the criteria for when the process is appropriate is maybe length in word count or when the content shares evaluative (qualitative or quantitative) comments, opinions, experiences, etc. then this process is needed? That would probably not include events ;)

db: I didn’t envision using this for Events.  But I think if we were able to automate many of the steps, it wouldn’t actually need to be that hard or heavy-weight.  But I’m open to other opinions

I like the idea of automation as much as possible but that shouldn’t be a deal breaker for implementation...I think manual labeling processes can mitigate any lack of automation.
Step 4 seem like its a vote-based and a bit different from what was discussed in last week’s telecon where we could move forward if at least two independent favorable judgements were made. Who votes? Just EBMs (makes sense to me)? How close a look at the content is required before one’s vote can be legitimately cast?

db: Yes, it is a bit different.  In thinking how we might be able to automate, I realized that a contentious item might have a lot of discussion and various people weigh in with +1 or -1 votes.  It seemed to me that looking for an excess of positive votes was feasible from an automation standpoint and hopefully, more or less equivalent to what we discussed.
db: I envisioned this as EB members votes counting.  We can define as we like, but I think for automation, we’d have to create them as teams in GH or something “official”.
db: I’m assuming people are responsible enough to take an appropriate look at the proposed content before engaging in discussion or voting.  If not, we probably don’t want them on the EB.

Regarding 4b...you can search issues by open date, https://help.github.com/en/articles/searching-issues-and-pull-requests#search-by-open-or-closed-state. I am thinking an issue that goes in month before SC conference might not get attention more because people are busy than because the issue doesn’t have merit.
Step 5 seems like its on a volunteer basis. Maybe it would be good for a deadline and candidate author(s) to be identified, perhaps by using the Assignees feature in GitHub. We could have an “Author Pool” and those who agree to be in the pool agree to being assigned, judiciously, this work.

db: Maybe the default assignment is to the person who submitted the issue?

I really don’t think the Kanban board is necessary to handle this workflow. I think it could be handled all by labeling on the issues as they move through various phases. In that case, the Kanban board is replaced by pre-canned issue search criteria (which GitHub allows you to do). Conversation in issues is sent to whole team and to submitter of issue (which may be a blessing or a curse). I don’t think same is true for Kanban activity, is it?  A label-only approach is a bit lighter weight too.

db: One of my concerns about using GH tools and processes for all BSSw.io content development is that I think different types of content need different workflows, and if we reach the levels of activity we strive for, we’re going to have a LOT of traffic in the issues area.  My thought was that having multiple project boards would be useful to help us all visualize and follow the different processes for the different types of content.  Also, the project boards support some automations which may (or may not) be useful to us.  I don’t think you can do the same on bare issues.

Love the idea of doing some “CI” checks for these PRs...maybe spell checking? Maybe potentially contentious phraseology?

We should relegate all the text we currently have in the Curated Content issue template to some markdown file here in the repo and just include a link to it from the CC template. A challenge here is that in order for that link to be click-able, the submitter has to know to go look at the issue via the Preview tab.  Would be nice if the template button just dropped a submitter into the issue on the Preview tab instead of the Write tab.

I think write access should be restricted to a group of knowledgeable subject matter people/experts who could determine the relevancy of the content.
I like the idea of doing a "CI" check for the PRs.
Automation is great but I think there should be an option to do manual labeling.

My thought was that having multiple project boards would be useful to help us all visualize and follow the different processes for the different types of content. Also, the project boards support some automations which may (or may not) be useful to us. I don’t think you can do the same on bare issues.

Those are good reasons to use the Kanban/project boards. I hadn't considered that.

I think write access should be restricted to a group of knowledgeable subject matter people/experts who could determine the relevancy of the content.

@JeanShuler ... not sure if you are referring to my comment regarding Write vs. Preview tab but if you are...everyone needs ability to write an issue ;) So, we cannot get away from that. The point I was making is that in GitHub issue submission, the template text is not properly rendered markdown (with active links) and so if that text includes URLs to instruction pages somewhere else, one cannot actually follow those links from the Write tab. They have to go to the Preview tab.

It seemed to me that looking for an excess of positive votes was feasible from an automation standpoint and hopefully, more or less equivalent to what we discussed.

@bernhold It looks like a search filter like is:issue is:open sort:reactions-+1-desc can tease out issues with large vote counts.  Note that you can effectively save a given search filter you create by simple saving the URL for the page of results (which contains the encoded filter parameters)

I think I've convinced myself that the check-boxes in the issue template to capture up-votes for the curated content submission are nowhere near as good as just using thumbs-up/+1 reactions. So, I suggest we agree to remove those from the issue template text also.

From @bernhold

FYI, another way people can provide input about BSSw is to use the Contact form.  We got one today that has a suggestion for a curated content article.

Lois and I discussed this a little bit, and my feeling is that we’re too early in our exploration of the editorial workflow to try to subject external people, friendly as they may be, to being used as guinea pigs.

Would it be valuable to separate the editorial board role from a reviewer role? Initially they might be the same, but if we want to expand participation to a broader community, it might be useful.

I think it would be good for an Editorial Board member to take ownership of the request to ensure that it reaches a conclusion. This was a characteristic of many of the workflows I reviewed.

I agree with Greg. At some point it would be nice if atleast the editorial board member who has ownership has a time frame in which to make sure the content is moving along.

I think the Question on Actors "Do we need to do anything..." should be replaced with either the link to the form where they can submit content ideas or a comment about it"

@jarrah42 and @pagrubel see revisions as of c58ff18

I think write access should be restricted to a group of knowledgeable subject matter people/experts who could determine the relevancy of the content.

I think to ensure the control we need that we will have to limit write access to the repository.  Probably to the Editorial Board members and Editorial Assistant(s).  Everyone else uses PRs.

Would it be valuable to separate the editorial board role from a reviewer role? Initially they might be the same, but if we want to expand participation to a broader community, it might be useful.

I have no problem with adding a role like that. But I think we should be thoughtful about how often we use them.  IMHO, the bar for curated content and events should not be terribly high.  Consequently, I assumed that the Editorial Board should be able to handle the reviews.  Another term to use for the role might be Subject Matter Expert.

#5 An interested Author picks an issue from the Development Backlog column and produces a draft of the item as a pull request (PR), associated with the issue. The pull request is added to the Item Review column.
We need to have documentation on how to create a PR. Also, how is the author notified in #5 since they would not be scanning the development backlog column (will they even have permission to see it?)

#5 An interested Author picks an issue from the Development Backlog column and produces a draft of the item as a pull request (PR), associated with the issue. The pull request is added to the Item Review column.
We need to have documentation on how to create a PR. Also, how is the author notified in #5 since they would not be scanning the development backlog column (will they even have permission to see it?)

Alternatively there are several good and easy you tube videos that show to fork directory, modify and create a PR

We need to have documentation on how to create a PR.

Hmm... @rinkug do you mean having something that is somehow BSSw- specific? If so, how would it be different from just a normal PR? Not sure I agree we need anything here. I mean, there is already plenty out there. Maybe just a link to a decent article already available would be fine.

Also, how is the author notified in #5 since they would not be scanning the development backlog column (will they even have permission to see it?)

@rinkug do you mean..."how is the submitter notified"? We can add a step to tell the Author to notify the submitter.

We need to have documentation on how to create a PR.

Hmm... @rinkug do you mean having something that is somehow BSSw- specific? If so, how would it be different from just a normal PR? Not sure I agree we need anything here. I mean, there is already plenty out there. Maybe just a link to a decent article already available would be fine.

Yes, a link to an article on you tube video is fine. For ex: https://www.youtube.com/watch?v=e3bjQX9jIBk&t=157s

Also, how is the author notified in #5 since they would not be scanning the development backlog column (will they even have permission to see it?)

@rinkug do you mean..."how is the submitter notified"? We can add a step to tell the Author to notify the submitter.

Yes, I meant the submitter.

@rinkug ... I updated the markdown file with information you suggested.

I guess I assumed that the Editorial Board would be defined separately, so that in the context of this workflow, it would be a given.
From: Greg Watson<EMAIL_ADDRESS>Sent: Thursday, May 23, 2019 8:42 AM
To: betterscientificsoftware/betterscientificsoftware.github.io<EMAIL_ADDRESS>Cc: Bernholdt, David<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: [EXTERNAL] Re: [betterscientificsoftware/betterscientificsoftware.github.io] Create CuratedContentEditorialWorkflow.md (#351)
@jarrah42 approved this pull request.
I think it's fine for an initial version. Is there any reason that Editorial Board Member is not defined? Or is it assumed we know who this is?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/betterscientificsoftware/betterscientificsoftware.github.io/pull/351?email_source=notifications&email_token=AADIDKONIOWC2DS5URHMT5TPW2GINA5CNFSM4HL5COP2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOBZQAUIA#pullrequestreview-241175072, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AADIDKP7ENLAVXYTNS3GGDLPW2GINANCNFSM4HL5COPQ.

I think it's fine for an initial version. Is there any reason that Editorial Board Member is not defined? Or is it assumed we know who this is?

For sure it needs to be defined somewhere. But, I don't think the right place is a document defining the workflow itself because the workflow doesn't or shouldn't change just because staffing changes. So, we use symbolic constants here in the workflow for actual people and somewhere else, we maintain the list of the values of those constants are currently set to as in
Current Editorial Board Members

@bernhold
@curfman

@jarrah42 see most recent note (at bottom) added to document

For sure it needs to be defined somewhere. But, I don't think the right place is a document defining the workflow itself because the workflow doesn't or shouldn't change just because staffing changes. So, we use symbolic constants here in the workflow for actual people and somewhere else, we maintain the list of the values of those constants are currently set to as in

I wasn't suggesting that we list the members here, just add a definition of what the EB is, like the other definitions for Actors.


7 support parsing of json objects

[Current coverage][cc-pull] is 97.16%

Merging [#10][cc-pull] into [master][cc-base-branch] will increase coverage by 0.32%

@@             master        #10   diff @@
==========================================
  Files             1          1
  Lines            95        106    +11
  Methods          31         33     +2
  Messages          0          0
  Branches          5          5
==========================================
+ Hits             92        103    +11
  Misses            1          1
  Partials          2          2

Powered by Codecov. Last updated by [ce0969c...aac5262][cc-compare]
[cc-base-branch]: https://codecov.io/gh/ptcoda/json-fs/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/ptcoda/json-fs/compare/ce0969c307f3e2068791ef6dba119f496ba42f74...aac52622d1d60575757154838d8d609e6a2d803b
[cc-pull]: https://codecov.io/gh/ptcoda/json-fs/pull/10?src=pr


Normalizing a react application state shape with redux-orm

Proposed title of article
Normalizing a react application state shape with redux-orm,
Introduction paragraph (2-3 paragraphs):
Most of the time, react applications receive from a backend REST API a collection of data items that are nested or relational in nature. What is the best approach to store this kind of data into the redux store?. The documentation suggests to store this data in a "normalized" form. In other words, treat your store as if it were a relational database. How does it work in practice?
This article will explore techniques and potential implications of normalizing the redux state shape. It will introduce Redux-orm as a tool in various example scenarios to demonstrate this idea.
Key takeaways:

Why should we normalize the redux state shape?
What's the proper way to organize nested or duplicate data the state?
Using redux-orm to normalize the state shape
Practical example of a normalized state

References:
Redux Documentation
Redux-ORM
Redux Style Guide

seems like a helpful topic - lets please be sure it add value beyond what is in the official docs and that it does not overlap with any existing EngEd articles (if you haven't already). - approved @lucasm08

@lucasm08
Just and FYI I will be closing thie topic form just to help clear up the queue where possible - can be REOPENED at anytime when ready. 👍


tooling:allow pr_notifier to be run manually more easily.

Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

@jmarantz please revert or fix if tomorrow's run doesn't happen as expected!


Made the logo more sexier

The flutter logo was markably unsexy. This commit makes it cooler, sexier and also more fluttery. Pls accept.

I signed it!

I signed it!

@drsatan1, not thicc enough :(

I actually find that pretty hard to read.

Agreed (on hard to read), I think if this was accepted the bottom underline needs to be removed so the letters don't flow into each other...

Guys I can't figure out the CLA. Oh well, take this as my consent to just do the same thing in a different PR and take credit for it without attribution.

@drsatan1 Thanks. I will close this PR for now and we'll consider what to do with the batch file header.


How to use from css

It seems the plugin is not triggered when including images from css. For example, in a vue single file component, I am setting a background image and the original image is getting loaded.
I know vite does process these urls to some degree, but unclear how it interacts with plugins...
// ...rest of single file component
<style>
.my-component {
  background: url('./my-component-bg.png?webp');
}
</style>

Yes, imports are not detected in CSS. This is a limitation on vites part though, this plugin gets applied to all imports that vite detects.
With vue3 you can use the (somewhat new?) v-bind` attribute in CSS to bind the url imported in JS.

Thanks for the quick reply!
Probably worth adding some notes in the docs about this limitation and potential workarounds.
I'll also see if I can find a related issue with vite, as it would definitely make sense to expose assets imported in css to plugins.


Remove smart-management check from RHC pipeline in Remediations

What?
Removed Smart Management checks from the RHC portion of the FiFi pipeline.
Why?
Based on a ticket from Katherine it has been decided that the RHC portion of the FiFi pipeline should no longer be dependent on the smart_management entitlement.  This decision was made in order to support any customer with a RHEL subscription being able to run remediation playbooks on their systems.  In this way the platform would leverage better adoption of both RHC as well as Red Hat Insights.  Additionally with this change (and after conersation with Katheryn and Christian) it was decided that the labeling of "Marketplace" systems would also be depricated such that all "runnable" RHC systems would be sorted into a single Direct Connected group.
How?
The majority of this work revolved around removing the smart_management logic from the RHC portion of the connection_status endpoint.  Based on this the majority of RHC logic was changed in the following ways:

Removed logic for obtaining "Marketplace" flag from System Details in Host-Inventory.
Removed logic for sorting RHC systems into seperate executors based on the smart_management entitlement as well as the marketplace flag.
Removed the Executor name assignment for "Direct Connected - AWS Marketplace"

Testing
Modified testing such that the current tests would make more sense with the newly defined logic:

Test for "Get connection status with false smartManagement but with system connected to RHC" should return 200 code and will no longer include a "Direct Connected - AWS Marketplace" executor.
Update test for executing playbook with false smartManagement to return 200 if registered RHC systems are present.

Anything Else?
JIRA:  https://issues.redhat.com/browse/RHCLOUD-18070
PARENT JIRA TICKET: https://issues.redhat.com/browse/CRCPLAN-63
## Secure Coding Practices Checklist GitHub Link
- https://github.com/RedHatInsights/secure-coding-checklist

## Secure Coding Checklist
- [ ] Input Validation
- [ ] Output Encoding
- [ ] Authentication and Password Management
- [ ] Session Management
- [ ] Access Control
- [ ] Cryptographic Practices
- [ ] Error Handling and Logging
- [ ] Data Protection
- [ ] Communication Security
- [ ] System Configuration
- [ ] Database Security
- [ ] File Management
- [ ] Memory Management
- [ ] General Coding Practices

/retest


Update NewCM fonts to version 7.0.0

~~https://github.com/typst/typst-assets/pull/5~~ Merged.
Tests needed to be updated as a result of two changes to the font: the addition of math kerning and the size of the ⅀ glyph (the smaller variant, used in inline math) being corrected.
The weight of the bold math font was fixed, so specifying it in the font exceptions is no longer needed.
I considered changing the math kerning tests to use NewCM now instead of STIX Two, but it hasn't got any (I'm assuming based on none of the glyphs in the tests having any) bottom-left or top-left kerning info just yet.
While updating one of the tests I uncovered a bug from #4695: math kerning isn't being applied when the base is under- or overlined. I've opened an issue for this: #5464.
Closes #5313.

Thank you!


Added the database and schema properties

To the source added the database and schema properties
Description & motivation

To-do before merge

Prerelease docs
If this change is related to functionality in a prerelease version of dbt (delete if not applicable):

[ ] I've added versioning components, as described in "Versioning Docs"
[ ] I've added a note to the prerelease version's Migration Guide

Checklist
If you added new pages (delete if not applicable):

[ ] The page has been added to website/sidebars.js
[ ] The new page has a unique filename

If you removed existing pages (delete if not applicable):

[ ] The page has been removed from website/sidebars.js
[ ] An entry has been added to _redirects

hey @teja-goud-kandula , thanks so much for opening this up, and apologies for the delay in responding to you here! it looks like the page currently addresses your addition so I'll go ahead and close this pr. let me know if you have any questions at all, or if you'd like to open up another pr! appreciate your contribution ✨


Process substitution issues when using /dev/fd

z/OS offers both /dev/fdN and /dev/fd/N. It seems that on some systems, /dev/fd is a character device and in others it's a directory. Bash assumes it is always a directory, so this can introduce problems on systems where it's a character device.
Another issue is that the character devices are untagged and as such there is no autoconversion.

Looks good...thanks
RC=(0) [SYSA] bash-5.2$ echo <(date)
/dev/fd63
RC=(0) [SYSA] bash-5.2$ cat <(date)
Wed Mar 29 14:54:50 CDT 2023
RC=(0) [SYSA] bash-5.2$ cat <(ssh l98misdb491 "wc -l *Yum")
4 servers_IUCV_Yum

forgot this test...good
RC=(0) [SYSA] bash-5.2$ wc -l <(ssh l98misdb491 "cat *Yum")
4 /dev/fd63

Thanks for validating! I will close it off


Normalize json dumps

Summary of Changes
Always use the configured media handler for json when loading or serializing it.
Related Issues
Closes #1767
Pull Request Checklist
This is just a reminder about the most common mistakes.  Please make sure that you tick all appropriate boxes.  But please read our contribution guide at least once; it will save you a few review cycles!
If an item doesn't apply to your pull request, check it anyway to make it apparent that there's nothing to do.

[x] Applied changes to both WSGI and ASGI code paths and interfaces (where applicable).
[x] Added tests for changed code.
[x] Prefixed code comments with GitHub nick and an appropriate prefix.
[x] Coding style is consistent with the rest of the framework.
[x] Updated documentation for changed code.

[x] Added docstrings for any new classes, functions, or modules.
[x] Updated docstrings for any modifications to existing code.
[x] Updated both WSGI and ASGI docs (where applicable).
[x] Added references to new classes, functions, or modules to the relevant RST file under docs/.
[x] Updated all relevant supporting documentation files under docs/.
[x] A copyright notice is included at the top of any new modules (using your own name or the name of your organization).
[x] Changed/added classes/methods/functions have appropriate versionadded, versionchanged, or deprecated directives.

[x] Changes (and possible deprecations) have towncrier news fragments under docs/_newsfragments/, with the file name format {issue_number}.{fragment_type}.rst. (Run towncrier --draft to ensure it renders correctly.)

If you have any questions to any of the points above, just submit and ask! This checklist is here to help you, not to deter you from contributing!
PR template inspired by the attrs project.

The way to deprecate stuff at the module level on 3.7+ is cool though, we could actually use it at more places if/when needed.

Indeed. It was one of the reason why it was added. PEP562
Regarding the rest, I guess we should wait for websocket to land and the update this one.

One more random thought on unifying serialization. Ideally, the default error serializer should also use response media handlers; so if one is, for instance, building a YAML or Msgpack API, the error structures should by default also pick the default media type set for the API.
Some open questions:

How could this look for XML?
How would an error while serializing an exception look like? (See also: https://github.com/falconry/falcon/issues/1607 and HTTP 776 )

This should maybe wait for https://github.com/falconry/falcon/pull/1741

For reference, reposting some random thoughts of the top of my head from Gitter:

I was basically thinking that we would have two types of handlers:

Stream handlers, much like the current BaseHandler; the ASGI variant awaits serialization, the WSGI counterpart obviously does not.
Binary data handlers, not dissimilar to the current BinaryBaseHandlerWS. Always sync.

The latter would handle WebSocket media, SSE, and error serialization. Error serialization probably being the most questionable one whether it is enough.
However, in case more complex logic is needed, one could override the awaitable custom error serializer (is it awaitable now?..).

Thanks @CaselIT, this is a great effort to unify these scattered handlers, enabling reuse of the same media handler interface.
Unfortunately, it seems that we need to rethink our designs here before we can move forward.
Currently, both your HTTP error serializer and SSEvent JSON serializer would simply try to call handler.serialize(<data>, MEDIA_JSON).
However, the ASGI flavour of the framework primarily relies not on serialize(), but instead, serialize_async() is awaited (although the latter can piggyback on the former, if not defined explicitly).

I've updated to docs to require that the json handler have the sync implementation even for asgi application.
While inconvenient, I don't think it would cause to much of an hassle to users, considering that we also provide a falcon implementation.

I agree that this approach shouldn't be a big burden on the developer since the differences between the two methods will me small and easy to maintain. Also, most people will just use the default media handlers and not even think about it.
Noting this requirement in the docs is a good idea. We should also make sure that we raise a user-friendly error if the method is not implemented on the handler.

documentation updated @kgriffs

Noting this requirement in the docs is a good idea. We should also make sure that we raise a user-friendly error if the method is not implemented on the handler.

Could we maybe fallback to the default handler upon NotImplementedError, and document this behaviour? It ain't pretty but FAPP it would be quite robust.

Noting this requirement in the docs is a good idea. We should also make sure that we raise a user-friendly error if the method is not implemented on the handler.

Could we maybe fall back to the default handler upon NotImplementedError, and document this behaviour? It ain't pretty but FAPP it would be quite robust.

that may also be an option

Could we maybe fall back to the default handler upon NotImplementedError

I kind of think we should just go ahead and raise it to the app just to be sure the developer isn't getting a result they don't expect (i.e., they thought we were calling their thing when all along we weren't but we were silently falling back to something else).

That's a good point @kgriffs .
I had this as an idea to offer improved damage control, but after all, it's an edge case that shouldn't be seen to often. As such, it's probably better to be explicit indeed.

updated

Updated, I think ready for final review

LGTM with one theoretical edge case. Not sure if it is too exotic, or it should be documented.
But if one has such a custom JSON handler that features very sparse output possibly containing \n\n, that might break the SSE encapsulation.

oh, that's quite an edge case. print(json.dumps({'x':'a'}, indent='\n\n\n'))
Should we strip \n\n from the returned object?

Maybe a documentation note is enough?


Nami wallet not importing

Hi. I had an issue with my nami wallet 2 weeks back wherein it was not showing my assets or my ada and was loading . I deleted my nami extension and reinstalled it. Then I was asked to import my nami wallet which I did entering my 24 words seed phrase but as soon as i click on create the page keeps loading. I left the page for hours but still it was loading and my wallet was not restored. Its been 2 weeks now and I have not been able to access my wallet. Please help

hi, I am facing the exact same issue and followed the exact same steps taken by Utsavsingh14.  Its been 4 days now and I am still unable to access my wallet. Can someone pls help us out.


SOLR-12226: Basic zk test framework in BATS

https://issues.apache.org/jira/browse/SOLR-12226
Description
Start testing ZK interaction as we get into cli changes..
Solution
basic bats test to see if it works
Tests
literally wrote a test ;-)
Checklist
Please review the following and check all that apply:

[ ] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[ ] I have created a Jira issue and added the issue ID to my pull request title.
[ ] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
[ ] I have developed this patch against the main branch.
[ ] I have run ./gradlew check.
[ ] I have added tests for my changes.
[ ] I have added documentation for the Reference Guide

I have a start here...   Including uncovering an interesting bin/solr cp command that looks aliased somehow, but not the same, to bin/solr zk cp

Okay, I've got upconfig and ls in here...   I think this is ready for review..  if there are some specific scearnious that you think need adding, please holler.


Error Handling for Blank Account ID

If you try to (programatically or manually) create an account with a blank account id, this needs to be handled gracefully.  (Does it just fail?? Does it log the error?)

Addressed by 58f535a


Organize callouts in partials

Minor update to just git mv these to a new subdirectory under partials.

Agreed! Just updated :)


Get current namespace when parent namespace is empty string

This fixes issue: https://github.com/vpulim/node-soap/issues/533
Please let me know if the test should be elsewhere or should be changed in anyway. When the test fails an error is thrown.

Hello @ibash - thanks a lot for your contribution and sorry for the extraordinary long delay :disappointed:
The test seems good to me, but would it be possible to shorten the wsdl file? In order to test the behavior of your fix I think it's not necessary to have such a big wsdl file and it would help us to keep the filesize low :+1:

Hi @herom - I don't have access to the originally repo so I made the change and created a new pull request #661 . Closing this one.


fix: Always use the latest CRDs file when deploying helm chart to OSS

Ⅰ. Describe what this PR did
Always use the latest CRDs file when deploying helm chart to OSS.
To facilitate local testing and deployment, I keep the helm/core/crds/customresourcedefinitions.gen.yaml in place and update it to the latest content.
Ⅱ. Does this pull request fix one issue?

Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #486 (a602fa1) into main (ec229e6) will decrease coverage by 0.17%.
Report is 1 commits behind head on main.
The diff coverage is n/a.

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #486      +/-   ##
==========================================
- Coverage   40.15%   39.99%   -0.17%
==========================================
  Files          45       45
  Lines        6186     6186
==========================================
- Hits         2484     2474      -10
- Misses       3529     3539      +10
  Partials      173      173

see 1 file with indirect coverage changes


Level 18 - Pass without solving

Hello people.
While solving levels, exactly by the 18th level, I didn't do anything but typing "githug play" and I passed the level, without even trying commands in order to solve the specific task.

Until it's fixed, here's a reference on pushing tags to remote


Workflows don't run as expected on external PRs

Workflows run in local PRs (e.g. https://github.com/blakeNaccarato/boilercv/pull/163) just fine because those are triggering on push in the configuration below.
https://github.com/blakeNaccarato/boilercv/blob/27219ccbca48e7a909220677f759368ed9001bca/.github/workflows/main.yml#L3
But these workflows don't run in external PRs (e.g. https://github.com/blakeNaccarato/boilercv/pull/164). I will need to add the pull_request trigger for that. However, in the case that an external PR bumps a dependency, would the Renovate and GitHub Actions bots be allowed to push to the remote contributor's branch? Will have to test this.
Performing the steps below directly in this repo (even with branches and PRs) is sort of like a patient operating on themselves, so if functionality breaks at any point, I'll have roll back and revisit other solutions to this problem (where a bot needs to make commits in the incoming branch of local and external PRs alike) and mock up this behavior in a dummy repo.
Tasks

[ ] Introduce pull_request trigger to workflows in patch branch in blakeNaccarato/boilercv
[ ] Fork the repo as a second user, make a trivial edit to patch branch as a second user, open a PR targeting patch branch, and see if workflows run (after approval)
[ ] Make another commit to the test PR, one that triggers the GHA bot to try and commit. Does it work?
[ ] Close the test PR
[ ] Merge patch into main
[ ] Raise a trivial PR now against main with a second user and see if workflows run
[ ] Make another commit to the test PR, one that triggers the GHA bot to try and commit. Does it work?
[ ] Trigger a Renovate PR (for a small version bump) and ensure the workflow works the same in that kind of PR
[ ] Merge the Renovate PR and see if the post-merge workflow runs as expected
[ ] If the results aren't as expected, consider fixing this more thoroughly in a dummy project

Well, nevermind all that. It's fixed with the new workflows developed for syncing/locking environments. I filtered to main on push and introduced the pull_request trigger.


OSM namespace hardcoding removal

The Namespace in which OSM resources are created is inconsistently hardcoded in MC:

the reconcile looks for the secret existence in kube-system
the bootstrap secret fetches the provisioning secret from cloud-init-settings

Such a namespace shouldn't be hardcoded but parameterized with a new command-line flag.

/close


Changing the logic of obtaining EUR equivalent in XOR

See the details in https://github.com/soramitsu/sora-card-backend/issues/147

@bgodlin #997


Control/Remove table(s) from Q&A scope

I have raised an Idea on forum in order to give more control over the Q&A tool: https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/38831542-q-a-possibility-to-control-remove-table-s-from

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

ID: 9f8e2480-703a-1417-c5d9-8d019669f45a
Version Independent ID: 17a9f60e-b9b6-8426-2176-86b5ec3cb68f
Content: Q&A for Power BI consumers - Power BI
Content Source: powerbi-docs/consumer/end-user-q-and-a.md
Service: powerbi
Sub-service: powerbi-consumer
GitHub Login: @mihart
Microsoft Alias: mihart

Thanks for your comment, @bartoszwmalec This looks like product feedback or a product question, rather than documentation feedback. You can submit product feedback or feature ideas by going to Power BI Ideas. You can also engage with the Power BI engineering team by being active in the Power BI Community.

Hi, @bartoszwmalec -- you did the right thing by adding the idea in the forum! Closing this issue


empty "-" bullet on destroy

+> Nanobox may require admin privileges to modify your /etc/hosts file and /etc/exports.
+> Deleting nanobox files (/Users/tylerflint/.nanobox/apps/nanobox-engine-java)

resolved in #82


Dark KK Keyboard key opacity bug

The default keyboard in the demo looks significantly different (in a bad way) than the base IOS keyboard when on a light background. I have pasted the images of IOS and KK keyboards with different background below for comparison.
IOS keyboard in dark background:

KK in dark background (OK):

IOS keyboard in light background (OK):

KK in light background (not OK):

The KK keyboard keys blend in with the main keyboard body whereas they should preserve their gray color as in the IOS keyboard.  Also, the shift, space, globe, etc. keys are darker than they should be.

This is a big problem that I don’t know how to solve. In the incorrect image, is dark mode enabled?

In the incorrect image, is dark mode enabled?

Yes, the dark keyboard appears when dark mode is enabled in both IOS and KK, which is the expected result.

This is a duplicate of another issue, but I’ll keep it around due to your great and detailed information 👍
This problem is caused by a bug(?) that results in there being no way to determine the state of the UI. If you have a dark appearance keyboard, both the keyboard appearance and the color scheme becomes dark, even if the color scheme is in fact light.
I’ll explain further when I’m back, but I have been meaning to find a way to fix this soon. Let’s crack this once and for all 👍

I see. Will be happy to discuss this with you or help in any way I can. This is a really awesome library!

If you create a new project with a keyboard extension and just print out the current appearance and color scheme in the extension, you’ll see that the color scheme will incorrectly become dark when you activate the extension in light mode from a dark appearance text field.

Hi again! I have no idea how to work around this problem, other than making the button colors transparent, but this would cause underlying colors to bleed through in an incorrect way 😭

I think the issue is that the button colors are transparent. Can we make them gray?

@ibayramli2001 The button colors are not transparent, they're fully opaque.
The color information is divided in multiple files.

The raw color enum is in KeyboardColor, which has SwiftUI previews.
The raw color extensions are in Color+KeyboardColor, which have SwiftUI previews.
The contextual rules are in Color+Button, which doesn't have any previews.

The contextual rules determines whether to use dark appearance (not dark mode!) colors or not like this:
private extension KeyboardContext {

    var useDarkAppearance: Bool { colorScheme == .light && keyboardAppearance == .dark }
}

This is because in dark mode, both light and dark appearance keyboards look the same.
However, when keyboardAppearance IS .dark due to how the text field is configured, colorScheme also becomes .dark, even if the system color scheme is actually light.
This is why the colors are messed up for dark appearance keyboards in light mode.
Making the colors transparent. could perhaps fix this, but then we need to define more colors, since for instance the callouts use these colors as well.

hmm...not sure if I understand your previous comment because changing the button colors seem to have fixed it for me.

But how does it look in dark mode?

☝ Accidentally created issue 🙃

This is on dark mode. I didn't do anything with the logic yet, just tried to see if the button color is the issue, and it does seem to be the issue. I created a class CustomKeyboardAppearance: StandardKeyboardAppearance where I overrode buttonBackgroundColor with open override func buttonBackgroundColor(for action: KeyboardAction, isPressed: Bool) -> Color { .gray } and it worked. It doesn't work on light mode well and when pressing, but I am trying to see if there is a neat way to integrate this into library somehow.

Actually, this now looks bad against dark backgrounds:

I think that I have the colors nailed down pretty accurately, which you can verify in the embedded color asset catalog. It’s just the dark appearance/mode bug that’s messing up the appearance in certain cases.
I wonder if applying a material would fix this.

I see, the problem lies in UITraitCollection.userInterfaceStyle that apple provides. Have you filed a bug with them/have they responded to you about it?

Perhaps, but there are two factors that I see affects the keyboard appearance:

Color scheme - is the device running in dark or light mode
Keyboard appearance - is the text field or environment configured to use a light or dark appearance

The way I understand it, the colorScheme should indicate whether or not dark or light mode is enabled, which for dark appearance keyboards become incorrect, or at least not what I expect.
This is the four modes that I'm seeing matters:
Light mode + light appearance - keyboard should use the standard light colors
Light mode + dark appearance - keyboard should use the alternate dark appearance colors
Dark mode + any appearance - keyboard should use the standard light colors, which adapts to dark mode
BUT, perhaps the dark appearance causes the color scheme of the extension to become dark, and that that is actually the intended behavior. However, that removes one piece of information for me to be able to determine how the keyboard should look.
I guess we could solve this if there were some way of getting the system color scheme instead of the environment.

I'm preparing a new test app, with a light appearance text field and one for dark appearance.
Look at the two images below, which feature the dark appearance text field in light and dark mode. The background is differently colored for the two, which is why I need to know if light mode is enabled or not.

Ok, I can confirm that the keyboardAppearance of the text field defines the userInterfaceStyle for the keyboard extension. Setting the appearance to light causes the keyboard extension (system keyboards as well) to run in light mode.

I have added a Bug Projects folder that contains the above test project. Might be a good way to fix this without involving KeyboardKit. 🤞

Hmm...I am not sure how to fix that bug, but if I am visiting a white website with dark mode safari, shouldn't the dark buttons be returned for the keyboard? Also, I think what Apple might be doing is actually related to transparency rather than changing the color of the buttons. Here are Apple and KK keyboard spawned against a background that has a red button in it:

Yeah, the buttons should have a frost effect, as described in this issue: https://github.com/KeyboardKit/KeyboardKit/issues/210
Applying a SwiftUI material to the buttons may help, but that would be iOS 15 exclusive. Also, I still think that the buttons should have a different tint since the background color changes depending on the dark appearance and dark mode.

Grammarly gets nice colors for light and dark mode when using dark appearance keyboards, but the callout uses the darker of the two, which makes me suspect that they use transparency for the keys, which doesn't work for the callouts.
Actually, if you look at the callout, you can see that they get the same strange color combination as we get for dark appearance in light mode.

I just realized that I could try to use the dark appearance colors in dark mode as well, instead of the regular colors adapted for dark mode. I actually think it looks pretty decent in both dark appearance and dark mode:

Sure, the colors are a bit light in dark mode, but that MUCH less of a problem compared to using the dark mode colors for dark appearance keyboards.
I will go with this for now and see if this can be improved upon in the future. I have added more comments to the code, and with the bug test app, we can easily try new things moving forward.

This is fixed in the new 4.6.2 release.

🎉 This looks good as a fix for now, thanks so much Daniel! Could you push your changes, so we can use it as well?

Is it possible to change the colors? When changing keyboards in iMessage, for example, the color change is pretty drastic. @danielsaidi

@amirshane Is the color change drastic? In dark mode, the colors are brighter now due to this fix, but other than that, they should match the native keyboards. Do you have any images to show the differences?
However, it's very easy to change the appearance. The easiest option is to create a custom appearance and set that on the view controller, much like the demo changes many other services.

@danielsaidi I see, will look into changing the appearance. Here are some screenshots of the different keyboards in iMessage for your reference:
Default Apple:

KK 4.6.2:

@danielsaidi I agree with @amirshane, the new fix seems to have flipped the issue: now it looks good against white background and bad against dark ones.

@amirshane Can you reduce the image sizes (e.g. 400 in height) to make them easier to overview?

@ibayramli2001 Do you have an example of a white background where it looks bad? Do you see it in any of the screens in my last image? I think it looks decent now, but perhaps you have an example that I haven't noticed yet.

I'm reopening this until we are all happy with the result. We could make this look great if only we could tell what the color scheme is in the main app, but I have found no way to do that.

@danielsaidi whenever I switch from the IOS to KK keyboard, the keyboard keys seem noticeably brighter.

We could make this look great if only we could tell what the color scheme is in the main app, but I have found no way to do that.

Not sure if this is what you mean, but with color picker I have found out that the IOS keys in dark mode are RGB(150,150,150, 255) when spawned against pitch black background and RGB(107,107,107, 255) when brought up against white background.

@ibayramli2001 To clarify the problem:

The raw colors in the library are correct, but are incorrectly applied, due to limitations in the extension.
We can't differentiate between system light mode + dark appearance and system dark mode + dark appearance, since editing a dark appearance in light mode puts the keyboard extension in dark mode.
You can see this in action by observing how the in-keyboard text field behaves - it becomes dark when you edit a dark appearance text field in light mode.

We have to choose between the following:

Use the dark appearance colors in dark mode (buttons become brighter - current state)
Use the dark mode colors in dark appearance (buttons become darker in light mode - previous state)
Come up with new colors that are between these two colors sets (will cause buttons to differ in both states)

Until we find a way to tell if the system is in light mode, I can't see a way to improve this. I also think that the current state is better than the previous state.

The new KK version lets you control whether or not to use dark appearance. In addition to this, you can also inject a custom appearance to get granular control over the keyboard appearance.
I will close this now and continue discussing the dark mode/appearance problems here: https://github.com/KeyboardKit/KeyboardKit/issues/305


Fixed out of the box SSR

Implemented object-path in the dependencies/index.js and updated to latest Redux Local Persist which is now SSR compatible.

@camdagr8 This PR never got merged, because the SSR stuff wasn't right. There were also some toolkit changes. Wondering if this code "Refactored render of menu so that it doesn't flash open before hydration" had to do with what you are working on now.


Print command line and environment to manually run tests without overhead

Description
On some occasions when debugging i.e. intermittent issues or other things it's really useful to run tests faster without extra overhead of build related stuff. It would be good if we printed exact command line and environment needed to do so (i.e. only with -v or always, doesn't matter). That would save several minutes for me each time I need to do it.
Steps to reproduce
dotnet test -v [csproj]
Expected behavior
Build output showing something similar to:
===
Running tests:
CWD: working directory here
<environment variables setup here>
<path to runner.exe> <some args here>
===

ideally something I can copy & paste in current shell to get equivalent of what runner is doing without extra overhead.
Actual behavior
Need to figure that out myself.

dotnet test is simply forwarding the call to vstest.console.exe with translation of parameters. Have you tried to look at https://learn.microsoft.com/visualstudio/test/vstest-console-options?view=vs-2022 to see if you could find all arguments you need?


CI: Add ansible-lint

Hi @andrewrothstein,
This add ansible-lint and fix the findings.

thanks for the PR! I incorporated the ideas into the CI I use for all of my roles. I also addressed most of the lint it uncovered in this role.


Gives IndexError, any solution?

Traceback (most recent call last):
20: from test.rb:5:in <main>' 	19: from test.rb:5:in new'
18: from /var/lib/gems/2.5.0/gems/mathtype_to_mathml-0.0.7/lib/mathtype_to_mathml.rb:13:in initialize' 	17: from /var/lib/gems/2.5.0/gems/mathtype_to_mathml-0.0.7/lib/mathtype_to_mathml.rb:13:in new'
16: from /var/lib/gems/2.5.0/gems/mathtype-0.0.8/lib/mathtype.rb:15:in initialize' 	15: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/base.rb:21:in read'
14: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/base.rb:145:in read' 	13: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/base.rb:254:in start_read'
12: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/base.rb:147:in block in read' 	11: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/struct.rb:139:in do_read'
10: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/struct.rb:139:in each' 	 9: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/struct.rb:139:in block in do_read'
8: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/array.rb:295:in do_read' 	 7: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/array.rb:295:in loop'
6: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/array.rb:297:in block in do_read' 	 5: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/struct.rb:139:in do_read'
4: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/struct.rb:139:in each' 	 3: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/struct.rb:139:in block in do_read'
2: from (eval):2:in do_read' 	 1: from /var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/choice.rb:109:in current_choice'
/var/lib/gems/2.5.0/gems/bindata-2.4.4/lib/bindata/choice.rb:115:in `instantiate_choice': selection '-77' does not exist in :choices for obj.equation[1].payload (IndexError)

Hi @charlesbell159! Thanks for reporting this issue!
Does this happen on all equations? Could you provide the oleObject.bin which fails?

@jure Sorry for late reply, I was busy with something.
Here's oleObject file:
oleObject1.zip

@jure Any progress on this?


Add const qualifier to record pointer declarations

Add const qualifier to record pointer declarations where the interface does not modify the data and the MS3Record.record pointer, which should not be modified.

Thanks a lot @chad-earthscope. The changes look good to me.
What happened with 083449b?

Thanks for taking a look.

What happened with 083449b?

Just my git messiness trying to re-sync multiple branches that had diverged.  Someday I may figure out the whole git thing...


How to deploy to Azure from Azure portal

https://johnpapa.net/deploy-angular-to-azure-vsts-angular-cli/ talks about how to deploy to Azure from VSTS.
However, how can we deploy in Azure portal using git integration?
I couldn't find one example so far that works. The examples show building and checking in all node_modules and dist to gi, and then deploy - which is not correct.
Is there a working example of deploying TOH to Azure using Kudu/deployment script to perform the installation of modules and building on Azure itself?

better for stackoverflow


Extending web.C with typed response data?

Often in middleware, typically for the sake of logging, access to the http status code and content length of the response are required. And the way this is always done is to wrap the ResponseWriter that gets passed to ServeHTTP.
This is wasteful both from the developer time creating wrappers, and at runtime processing multiple wrappers (since each middleware that needs it implements it). In my project I've made a slight improvement which has a single middleware which wraps the ResponseWriter and stores the data in the Env map, making it available to other middleware.
But this is still not shared with the goji default logger middleware. And it's untyped. What do you think about extending web.C to include typed fields (I'm thinking about http status and content length but potentially others), and a new default middleware which wraps ResponseWriter to populate those values?

This issue hasn't seen any activity in a few months, so I'm going to close it out (if that's okay).
While I still think it's extremely unlikely I'll change web.C, a good takeaway for me is that a lot of Goji's capabilities aren't very discoverable. I'm working on revamping Goji's website, which will hopefully make this a lot better in the future.
You mentioned that the chosen route was an example of something that you might want exposed in web.C, and I've recently added a mechanism to expose that, albeit in web.C.Env (https://github.com/zenazn/goji/commit/707cf7e127e738386a38fa9fda3834315892b434). Let me know if there's any other router internal state that you're interested in seeing!

Thanks! My opinion is still that it would be better accessed as a standalone field, but exposing the state in web.C.Env certainly addresses my use cases.
Could you share a short code example for making use of mux.Router? I tried adding it as a middleware and am getting a stack overflow.

I see TestRouterMiddleware now - will look at what I'm doing wrong.

@cbroglie I'm interested in what you come up with, too.
I have a workaround, but it has a theoretical failure mode I'm not happy about.

It looks like this causes a stack overflow if you use it with nested routers. Here is my existing test code which demonstrates the issue (GetRoutePath was my workaround logic):
func TestRoutePathWithWildcard(t *testing.T) {
	id := ""
	routePath := ""
	middleware := func(c *web.C, h http.Handler) http.Handler {
		fn := func(w http.ResponseWriter, r *http.Request) {
			h.ServeHTTP(w, r)
			id = c.URLParams["id"]
			//routePath = GetRoutePath(*c, r)
			routePath = "implement me"
		}
		return http.HandlerFunc(fn)
	}
	handler := func(w http.ResponseWriter, r *http.Request) {
		w.Header().Set("Content-Type", "text/plain; charset=utf-8")
		w.WriteHeader(http.StatusOK)
		fmt.Fprintln(w, "OK")
	}
	root, m := web.New(), web.New()
	root.Use(root.Router)
	root.Handle("/prefix/*", m)
	m.Use(middleware)
	m.Handle("/prefix/id/:id", handler)
	ts := httptest.NewServer(root)
	defer ts.Close()
	_, err := http.Get(ts.URL + "/prefix/id/1")
	if err != nil {
		t.Fatal(err)
	}

	expectedRoutePath := "/prefix/id/:id"
	if routePath != expectedRoutePath {
		t.Fatalf("Expected route path `%s`, got `%s`\n", expectedRoutePath, routePath)
	}
	expectedId := "1"
	if id != expectedId {
		t.Fatalf("Expected id %s, got %s\n", expectedId, id)
	}
}

Stack will look something like this:
goroutine 17 [stack growth]:
runtime.convT2E(0x261e60, 0xc2281001f8, 0x0, 0x0)
	/usr/local/go/src/runtime/iface.go:134 fp=0xc228100198 sp=0xc228100190
github.com/zenazn/goji/web.GetMatch(0xc20803b950, 0xc20803b890, 0x0, 0x0, 0x0, 0x0)
	/src/github.com/zenazn/goji/web/match.go:30 +0xa4 fp=0xc228100250 sp=0xc228100198
github.com/zenazn/goji/web.(*router).route(0xc208010658, 0xc212b05ce0, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/router.go:115 +0x44 fp=0xc2281002f0 sp=0xc228100250
github.com/zenazn/goji/web.func·002(0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/middleware.go:88 +0x60 fp=0xc228100330 sp=0xc2281002f0
net/http.HandlerFunc.ServeHTTP(0xc212b06520, 0x596530, 0xc2080643c0, 0xc208032820)
	/usr/local/go/src/net/http/server.go:1265 +0x41 fp=0xc228100350 sp=0xc228100330
mypackage/go-zsr.func·004(0x596530, 0xc2080643c0, 0xc208032820)
	/src/mypackage/go-zsr/util_test.go:56 +0x78 fp=0xc2281003c8 sp=0xc228100350
net/http.HandlerFunc.ServeHTTP(0xc212b05d10, 0x596530, 0xc2080643c0, 0xc208032820)
	/usr/local/go/src/net/http/server.go:1265 +0x41 fp=0xc2281003e8 sp=0xc2281003c8
github.com/zenazn/goji/web.(*cStack).ServeHTTPC(0xc212b05ce0, 0xc20803b950, 0xc20803b890, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/middleware.go:50 +0x91 fp=0xc228100420 sp=0xc2281003e8
github.com/zenazn/goji/web.(*Mux).ServeHTTPC(0xc208010620, 0xc20803b950, 0xc20803b890, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/mux.go:53 +0x74 fp=0xc228100460 sp=0xc228100420
github.com/zenazn/goji/web.(*router).route(0xc208010658, 0xc212b05c80, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/router.go:119 +0x144 fp=0xc228100500 sp=0xc228100460
github.com/zenazn/goji/web.func·002(0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/middleware.go:88 +0x60 fp=0xc228100540 sp=0xc228100500
net/http.HandlerFunc.ServeHTTP(0xc212b06500, 0x596530, 0xc2080643c0, 0xc208032820)
	/usr/local/go/src/net/http/server.go:1265 +0x41 fp=0xc228100560 sp=0xc228100540
mypackage/go-zsr.func·004(0x596530, 0xc2080643c0, 0xc208032820)
	/src/mypackage/go-zsr/util_test.go:56 +0x78 fp=0xc2281005d8 sp=0xc228100560
net/http.HandlerFunc.ServeHTTP(0xc212b05cb0, 0x596530, 0xc2080643c0, 0xc208032820)
	/usr/local/go/src/net/http/server.go:1265 +0x41 fp=0xc2281005f8 sp=0xc2281005d8
github.com/zenazn/goji/web.(*cStack).ServeHTTPC(0xc212b05c80, 0xc20803b950, 0xc20803b890, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/middleware.go:50 +0x91 fp=0xc228100630 sp=0xc2281005f8
github.com/zenazn/goji/web.(*Mux).ServeHTTPC(0xc208010620, 0xc20803b950, 0xc20803b890, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/mux.go:53 +0x74 fp=0xc228100670 sp=0xc228100630
github.com/zenazn/goji/web.(*router).route(0xc208010658, 0xc212b05c20, 0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/router.go:119 +0x144 fp=0xc228100710 sp=0xc228100670
github.com/zenazn/goji/web.func·002(0x596530, 0xc2080643c0, 0xc208032820)
	/src/github.com/zenazn/goji/web/middleware.go:88 +0x60 fp=0xc228100750 sp=0xc228100710
net/http.HandlerFunc.ServeHTTP(0xc212b064e0, 0x596530, 0xc2080643c0, 0xc208032820)
	/usr/local/go/src/net/http/server.go:1265 +0x41 fp=0xc228100770 sp=0xc228100750
mypackage/go-zsr.func·004(0x596530, 0xc2080643c0, 0xc208032820)

Ugh—sorry about that. @cbroglie could you open a new issue to track that bug?

Sure - filed #120

@mredivo I was able to leverage this to access the matched route, as desired. I believe I was using the same workaround as you.
Old method:
func GetRoutePath(c *web.C, r *http.Request) string {
	// Replace the resource IDs in the path with their variable names. This
	// solution is a hack, and will fail if a value occurs multiple times in the
	// url. But it's the best we can do for now.
	//
	// See https://github.com/zenazn/goji/pull/70 for some additional background
	// and a proposed solution.
	//
	path := r.URL.Path
	for k, v := range c.URLParams {
		// If the route contains a wildcard - say "/prefix/*" - and the request
		// is for "/prefix/test", then Goji will add a key called "*" with the
		// value "/test" to URLParams. Need to ignore it here.
		if k != "*" {
			path = strings.Replace(path, "/"+v, "/:"+k, 1)
		}
	}
	return path
}

New method:
func GetRoutePath(c web.C, r *http.Request) string {
	return fmt.Sprintf("%s", web.GetMatch(c).RawPattern())
}

FYI, there is a gotcha described in #120 about needing sub routers to use the Mux.Router middleware as well as the root router.


timeouts are not version errors

saw "version" errors popping up and got confused into thinking it had anything to do with versions not matching ... let's avoid that :)
@tlunter

released in v1.33.2