Input stream as source

issue:  not possible to describe an input stream as a source
suggestion: add support for describing input streams. This will facilitate the usage of RML in transformation pipelines.

Relevant ontology: https://github.com/streamreasoning/vois
Which stream sources do we want to support?

Kafka
MQTT
WebSocket
CoAP
Server Sent Events
TCP
...

Characteristics to consider:

Windows for joins
Specifying the content (JSON, XML, etc.) inside the stream
Restarts?
...

Please comment here which one definitely need to be supported of the sources & characteristics.

I have been investigating this further and I think we can just 'extend' the Web of Things description :)
Web of Things provides a way to extend their specification with flavor specific things with Web of Things Binding Templates: https://www.w3.org/TR/wot-binding-templates.
They have already binding templates for:

HTTP
CoAP
MQTT streams

My suggestion is to re-use Web of Things descriptions and define binding templates for other streams we may want as listed above. This way, we don't need to define this vocabulary ourselves, we re-use standardized specifications and are open for the future.

Could you give an example what this would look like for a simple input stream/pipe of data passed at runtime?

@pmaria
There are currently no binding templates for a pipe, but I don't see any requirements here that are specific to a pipe compared to the others, so we don't need a binding template.
We only need a proper URL with a schema defining a pipe such as tcp://, I don't know a scheme definition for pipes though.
However, pipes are just files so named pipes are easily described as file:///path/to/named_pipe:
<#TriplesMap> a rr:TriplesMap;
  rml:logicalSource [ a rml:LogicalSource;
    rml:source [ a td:Thing;
      td:hasPropertyAffordance [ a td:PropertyAffordance;
          td:hasForm [
            # URL and content type
            hctl:hasTarget "file:///path/to/named_pipe";
            hctl:forContentType "application/json";
            # Read only
            hctl:hasOperationType td:readproperty;
          ];
       ];
    ];
    rml:referenceFormulation ql:JSONPath;
    rml:iterator "$.station.[*]";
  ];

  # Subject, Predicate, Object Maps

At least this works fine under Linux where everything is a file, I'm curious how these things are handled on Windows & Mac.

That honestly looks quite complex only to specify the location of a source. Don't you think?
I mean hctl:forContentType and hctl:hasOperationType don't seem necessary for our case. That's already 2/3 of the description.

However, pipes are just files so named pipes are easily described as file:///path/to/named_pipe

Right, usually you would use an input stream for file IO, but it can also be used as an intermediary stream from one internally running process to another, in which case we're not dealing with files.
But it could be an different type of object as well, e.g. a compiled JSON object.
So it would indeed be good to have some way of saying that the user will provide the source to the engine running the mapping as @marioscrock suggested in https://github.com/kg-construct/rml-target-source-spec/issues/2#issuecomment-1063752019
We would still need to define a way to specify that.

That honestly looks quite complex only to specify the location of a source. Don't you think?
I mean hctl:forContentType and hctl:hasOperationType don't seem necessary for our case. That's already 2/3 of the description.

Hmmmmm you're right.
I copied them from the WoT paper, but in the end, you don't really need them since hctl:forContentType is not needed since we have rml:referenceFormulation for it. hctl:hasOperationType is also not really necessary.
I checked the code in the RMLMapper and these are not even used :see_no_evil:
Let's drop them.
WoT also allows security to be integrated there, but is not applicable here.

but it can also be used as an intermediary stream from one internally running process to another, in which case we're not dealing with files.

Ah you mean this Java InputStream thing...
If we have a scheme, it would work:
<#TriplesMap> a rr:TriplesMap;
  rml:logicalSource [ a rml:LogicalSource;
    rml:source [ a td:Thing;
      td:hasPropertyAffordance [ a td:PropertyAffordance;
          td:hasForm [
            hctl:hasTarget "inputstream://$NAME";
          ];
       ];
    ];
    rml:referenceFormulation ql:JSONPath;
    rml:iterator "$.station.[*]";
  ];

  # Subject, Predicate, Object Maps

If we want something 'simpler' we would need to define an ontology first (if we cannot re-use something existing).
I rather don't want to maintain that TBH.
However, rml:source is fully open especially for this. If you define a custom ontology like you did in CARML, you can just put that here. Problem with that ontology is that it only support InputStreams.
I would welcome a better approach that covers more than just InputStreams and uses standardized ontologies as much as possible. I picked WoT here because WoT is currently in already for Web APIs & some streams and it seems 'easy' to support more types of streams thanks to the URL scheme, but that's my opinion. Open for suggestions!

Am I right in understanding that currently directly using a (JAVA) inputstream is not possible with your suggested change @DylanVanAssche ? Of course, I guess this is very implementation-specific. @pmaria , in your experience, do you think there's another way to specify this? I guess it's tricky to support inputstream:// and then for the CG need to maintain some kind of mapping table that maps that to java.io.InputStream in a JAVA, to a stream.Readable in Node.js, etc. etc. Maybe it makes sense to keep that at the discretion of the engine implementation, and suggest to support a inputstream:// source, with the caveat to clearly document which implementation you mean by that?

Am I right in understanding that currently directly using a (JAVA) inputstream is not possible with your suggested change @DylanVanAssche ? Of course, I guess this is very implementation-specific. @pmaria , in your experience, do you think there's another way to specify this? I guess it's tricky to support inputstream:// and then for the CG need to maintain some kind of mapping table that maps that to java.io.InputStream in a JAVA, to a stream.Readable in Node.js, etc. etc. Maybe it makes sense to keep that at the discretion of the engine implementation, and suggest to support a inputstream:// source, with the caveat for each engine to clearly document which implementation is meant by that?

@DylanVanAssche I'm currently looking into this again. It is still unclear to me how we would now write a source for this.

@pmaria

It is still unclear to me how we would now write a source for this.

Could you please specify what is unclear to you here? I'm not sure we're on the same page.

The use case is that you somehow obtain an input stream (I'm using Java terminology here, but in Python an example would be something like BytesIO ) and you want to be able to use that as source.
In java most data processing libraries that are used for the reference formulations accept input streams as a source of input. It is also relatively easy to serialize some object into a form of that matches a supported source type and convert that to an input stream.
This makes it possible to easily integrate an RML processor as a part of a pipeline using any type of ETL approach. This is where I see a lot of users of CARML using https://github.com/carml/carml#input-stream-extension, for lack of a standard approach.

This makes it possible to easily integrate an RML processor as a part of a pipeline using any type of ETL approach.

IMO, you only need to reference then that inputstream A is linked to Logical Source X with Target that points to inputstream A.
Ain't this enough then?
<#TriplesMap> a rr:TriplesMap;
  rml:logicalSource [ a rml:LogicalSource;
    rml:source [ a td:Thing;
      td:hasPropertyAffordance [ a td:PropertyAffordance;
          td:hasForm [
            hctl:hasTarget "inputstream://A";
          ];
       ];
    ];
    rml:referenceFormulation ql:JSONPath;
    rml:iterator "$.station.[*]";
  ];

When you call your RML engine in your code and pass through the inputstreams you have a Map that says inputstream://A == Java.Inputstream instance.
Or am I missing something crucial here?

This makes it possible to easily integrate an RML processor as a part of a pipeline using any type of ETL approach.

IMO, you only need to reference then that inputstream A is linked to Logical Source X with Target that points to inputstream A.
Ain't this enough then?
<#TriplesMap> a rr:TriplesMap;
  rml:logicalSource [ a rml:LogicalSource;
    rml:source [ a td:Thing;
      td:hasPropertyAffordance [ a td:PropertyAffordance;
          td:hasForm [
            hctl:hasTarget "inputstream://A";
          ];
       ];
    ];
    rml:referenceFormulation ql:JSONPath;
    rml:iterator "$.station.[*]";
  ];

When you call your RML engine in your code and pass through the inputstreams you have a Map that says inputstream://A == Java.Inputstream instance.
Or am I missing something crucial here?

Well I am still familiarizing myself with the td: and hctl: vocabs, but the definition of
hctl:Form :

target IRI of a link or submission target of a form.

Does not really seem to fit this use case.
Furthermore I don't know if we can consider "inputstream://" a standard notation. Or would this be something that is use case dependent and should an engine be provided with more information as to the type of target being specified?

target IRI of a link or submission target of a form.
Does not really seem to fit this use case.

The W3C Web Of Things are made for streams, but the ontology seems to be a bit challenging to grasp, like this here.

Furthermore I don't know if we can consider "inputstream://" a standard notation. Or would this be something that is use case dependent and should an engine be provided with more information as to the type of target being specified?

Well I consider this InputStream also yet-another-data-format which needs to be described in a RML IO Registry description. We could also introduce another class like with did for relative paths, but we need to decide then which approach we take and describe it. RML IO itself in an abstract form, has no issues with streams IMO.

We could also introduce another class like with did for relative paths, but we need to decide then which approach we take and describe it.

Thinking a bit further on this, I think what we really need here is just a way to indicate that a source is provided to the engine programmatically.  Similar to what @marioscrock describes in https://github.com/kg-construct/rml-io/issues/2#issuecomment-1063752019.
This could be very basic, and maybe all that we need extra for this would be to be able to name the provided source.
So something like
  [] rml:logicalSource [
    rml:source [
      a rml:ProvidedSource ;
      rml:name "some identifying name" ; # optional?
    ] ;
] ;

An engine can then expose an API to be able to provide this source.
The rationale to keep this so simple is that I think that it will be difficult to standardize this accross programming languages.
Furthermore, this opens the possibility to be able to support not only input stream like sources, but also other objects, like e.g. an already deserialized JSON node or XML node etc.

Thinking a bit further on this, I think what we really need here is just a way to indicate that a source is provided to the engine programmatically.

Well that's what I wanted to try with the example above. We're on the same page it seems :)
I just wanted to have the idea you also present with a rml:ProvidedSource. Name should not be optional otherwise it is going to be hard to link them programmatically (and possibly introducing engine-specific ways which we want to avoid).

Furthermore, this opens the possibility to be able to support not only input-stream-like sources, but also other objects, like e.g. an already deserialized JSON node or XML node etc

+1

Thinking a bit further on this, I think what we really need here is just a way to indicate that a source is provided to the engine programmatically.

Well that's what I wanted to try with the example above. We're on the same page it seems :) I just wanted to have the idea you also present with a rml:ProvidedSource. Name should not be optional otherwise it is going to be hard to link them programmatically (and possibly introducing engine-specific ways which we want to avoid).

Furthermore, this opens the possibility to be able to support not only input-stream-like sources, but also other objects, like e.g. an already deserialized JSON node or XML node etc

+1

OK. I think the hypermedia/wot vocabs don't really fit for this purpose. So how do you feel about rml:ProvidedSource with a property like rml:sourceIdentifier? Can we draft up something like that?

+1 for drafting something up :)

Ok, I will make a PR


The errors on sublime isn't consistent with console

When I set noUnusedLocals to true in tsconfig.json, it causes some modules can't be parsed as the following picture.

I am sure that I have installed node, bluebird and other definitions but sublime has marked the lines as errors, tsc doesn't have the errors and show on the terminal.
I think the reason is the plugin doesn't correctly parse tsconfig.json and based on configure to parse context, so this is a bug.

I gave up this IDE. I begin to use vscode.


Pr bonn main

What type of PR is this? (check all applicable)
Update with the main stream

[ ] Refactor
[ ] Feature
[ ] Bug Fix
[ ] Optimization
[ ] Documentation Update

Description
Related Tickets & Documents

Related Issue #
Closes #

QA Instructions, Screenshots, Recordings
Please replace this line with instructions on how to test your changes.
[optional] Are there any post deployment tasks we need to perform?

@marc-hanheide the conflict has been resolved in this new PR, it was easier to create new branch and updated with the main stream by discarding our commits then create a PR to merge the branch with our main branch


Put unsafe behind a feature flag

Puts all unsafe behind a feature flag.
as_ref_checked is no longer unsafe but does contain an unsafe line. This should be correct because unit tuples with repr(transparent) are the same memory layout as their inner type.
Replaces panicing indexs with gets.

closes #5

Lets add checks to the CI for both safe and unsafe

The --all-features test will get the unsafe and I just added a default features run which will capture the safe. Does that work?

@vlopes11 Can we merge this?


Show grades in addition to school years on profile chart X-axis

Visited the 6th grade teacher team at the Healey school this morning to show them the latest iteration of Student Insights and get their feedback.
They mentioned that instead of only showing school years on the X-axis of charts, it would be more intuitive for them if the charts included grade level information as well: "Grade 5, 2012-2013".

On it.

Eli and Kevin's notes from CFB: So this is being addressed mostly by #427, the only thing is that we don't know which grade the student was in which year. We can assume that if they were in grade 5 now, they were in grade 4 last year, etc., and it seems like it might not be that bad an assumption.
So we can go ahead and do that. But I wanted to check with you @alexsoble -- do you know if it's easy to get this data? Do you think it's better to assume or to try and do the import?

Confirmed by John Breslin that a very low number of students get held back in K-8, and the relevant data is off in some scary place in the system, so we should just assume and provide a footnote saying "we assumed that...".

Related to #510.

Here's a suggestion for adding some visual grade breakdowns for these graphs as well as callouts for any interventions that may have occurred.

@iamctodd: Nevermind! It's right here!

This was merged in here (#427) and here (#760).


GH-40703: [CI][Packaging] Homebrew can't install Python 3.12 on GHA runners

Rationale for this change
The hombrew-cpp nightly job is failing.
What changes are included in this PR?
Force install install for Python 3.12
Are these changes tested?
Via archery
Are there any user-facing changes?
No

GitHub Issue: #40703

@github-actions crossbow submit homebrew-cpp

The issue is solved but it failed due to: https://github.com/apache/arrow/issues/40674
@kou do you want to merge this or do you want to fix it with the other PR?


Re-add flax install to doc requirements

Note that we now get the following error:
$ cd docs; pip install -r requirements.txt
ERROR: Directory '.' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.

Would it work to specify flax instead of . ?
Otherwise could you add a note to README.md that for local installation on a developer machine one actually needs to temporarily comment that . line?


Update README.md

In this update, i have expanded the README.md documentation for the env_logger crate to provide a more comprehensive and user-friendly guide. The following changes and enhancements have been made:
Enhanced Introduction: I have clarified the purpose and appropriate use cases for env_logger, emphasizing its utility in executable projects and recommending the use of the log crate for libraries.
Detailed Usage Instructions:
Dependency Setup: Expanded instructions on adding both log and env_logger crates to your project dependencies using cargo add.
Initialization: Provided guidance on initializing env_logger as early as possible in your project, with clear examples demonstrating the logging process.
Environment Variable Configuration: Included detailed explanations on how to configure logging levels using the RUST_LOG environment variable, with examples showcasing different level configurations.
Logging Levels Explained:
A comprehensive table has been added to explain the different logging levels (error, warn, info, debug, trace), along with their appropriate use cases.
These additions aim to make the documentation more informative and accessible, helping users get the most out of the env_logger crate, whether they are new to Rust logging or experienced developers looking to optimize their application's logging setup.

A lot of the existing README is duplicating https://docs.rs/env_logger/latest/env_logger/ and this is expanding it further.  I would be inclined to consider what improvements should be made to https://docs.rs/env_logger/latest/env_logger/ and instead have the README show a simple example, pointing people to https://docs.rs/env_logger/latest/env_logger/ for more details.


How to identify which smart home device  - is it possible?

Apologies if this is a daft comment,
I have been playing with this functionality and lots of things I have tried work fine.  Speech, listing devices, starting skills and routines is all easy enough.
My main use of Alexa and node red is controlling lights and heating using the existing (Hardill based) functionality  I can ask Alexa to control lights and heating. The devices are effectively node red devices - Node red is notified of the Alexa command and then drives the appropriate device. The biggest gap is sensible voice feedback to commands and this is where I thought moving to remote2 (now cakebaked) would plug the gap.
I can't get it working though as I have failed to find out how to parse which device Alexa has heard eg
I say "Alexa - turn on hall picture rail."
The remote event mode sends a message on device activity that includes which Alexa picked up the command. It has the transcription of my command and Alexas reply (if any) what I don't know is how to determine it was the hall picture rail device, without doing my own analyzing *** of the msg text to speech string.
I have tried with all my existing v2 (hardill) devices and also added some new ones for the remote v3. I get notification of all commands but nowhere can i see which device is being commanded.
It could be missing something really simple - hopefully someone has got this to work and can advise me?
(*** Another work around would be to continue using Hardill V2 control and adding remote2/cakebaked in the pot as the voice replies. This seems a long winded way of doing a job though and delays may make it clunky.)

Yes, the device that heard the voice command is in the msg.payload.deviceSerialNumber. You just have to match it with the serial number of the echo devices you have, which can be found in the app or on the device itself. Hope that helps!

Thanks. My fault - didnt' make myself very clear! I know how to tell which Alexa heard me. What I don't know how to do is determine which device (lamp in this case) the command referred to.
I have patched together a very cludgy workaround that uses smarthome v3 to manage the devices and send notifications to node red identifying the device needing control. If I need enhanced verbal feedback I use cakebaked to speak a bit more about the event just dealt with wthin node red. I use a timer to make sure cakebaked reports only on the event that has just happened. As I said - its cludgy! I'd like to put all the functionality in one pot.

oh. I guess I still don't understand. If your command is "Turn on hall picture rail," you have multiple hall picture rails and want to be able to specifically address one?

I have around 70 or so devices covering heating/lighting/weather and some misc odds and ends.
Most are created in Hardill's v2 smarthome bridge system https://alexa-node-red.bm.hardill.me.uk/.
I have three alexas currently. Node red has the V2 bridge endpoint nodes so if I say Alexa turn on hall picture rail, a node in NR picks that up and routes the command to the appropriate 'thing' via its interface (which is one of LWRF/Tasmota/mysensors etc)
That all works perfectly and has been running for a year or more.
There are a few gaps in this. Hardill & V2 bridge does not tell me which alexa picked up the command so I don't know where to send any enhanced vocal feedback. I am limited to a few state reporting options in the V2 interface. this is why i cludged the system that uses V2 bridge and cakebaked to give the enhanced voice feedback to the last heard from Alexa. It is messy and also there is no way of determining when Alexa has finished any hard coded response so the enhanced vice is either delayed too long or chops into the hard coded response. It works -sort of.
(I also tried smarthome v3 bridge https://docs.cb-net.co.uk/en/development/ with just 2 or three devices. It also has limitations (neh - bugs). It does not have speech feedback and fell at several hurdles. The logic behind the state reporting seems very random and it didn't cope well with a complex heating system. I have shelved it for now and gone back to V2.)
There has to be one system that would do it all cleanly and I was hoping remote2/cakebaked could do. I can't however find a way of adding a device to remote2 (say a light) OR eavesdropping on a pre-existing device such as those on the V2 bridge. All I can deduce is that the Alexa in the hall picked up a voice command 'Alexa turn on hall picture rail.' I could parse the voice message myself in node red - lots of hard work.
Does that help to see where I am stuck?
Cheers
Andy


Add Copy full macro link

When interacting with various tools, it's not always practical to only copy the build steps in chunks. It should be possible to copy the full macro too with a single click.

Can you comment more on how you think this might be used? Should this be toggleable to be mostly on or off, or should there be a dedicated button to copy all steps? I am thinking of adding a dropdown to include some of these "extra" rotation buttons, so knowing this would help me figure out how the UI should look.


Remove unnecessary brackets from readme

What
Remove brackets from around the license icon in the readme.
Why
Not needed.

Aww, thanks for fixing it


Problem downloading very long MQA files : always Err...

This applies to version <IP_ADDRESS> (as in <IP_ADDRESS> I cannot download anything !)
It seems impossible to download very long MQA files  (20 - 30 minutes)
Always "Err" when trying (tried 10x)
I already noticed this on a several albums and first I thought it might be due to a corrupt MQA file,
but the files play flawlessly in TDL !
Here one example : George Harrison - No Time or Space.
https://tidal.com/browse/track/77798028

same as here
version <IP_ADDRESS>
Decrypt Failed!

In <IP_ADDRESS> all downloads fail caused by a new bug.
So what you mention is for ALL downloads.
I am referring to ANOTHER bug that was already there in version <IP_ADDRESS> where downloads of very long MQA files fail all the time
this is NOT working in <IP_ADDRESS>

Thx !!

fixed


Add: margarita-navigation package

This is an attempt at #50, creating an HoC is difficult as Platform.select did not seem to work as intended in my previous attempt.
What do you think about this approach?
Basically, I make Navigation a non-exact object type which is compatible with the Navigation type from react-navigation.

Platform.select did not seem to work

what about just using .web extension?


Simple regular expression replace bug

Description
When searching in regular expression mode, some expressions ending in a zero-length assertion, match but do not actually replace.
Steps to Reproduce

Create a new file containing:

//foo
//bar

Find in .* (regular expression) mode either //\b or //(?=\S) and replace with any text replacement.
Click Find, then Replace and Replace. Matches occur but replacements do not.
Now search for ..\b and observe correct matches for //, oo and ar but only the latter get replaced.

Versions
> atom --version

Atom    : 1.7.3
Electron: 0.36.8
Chrome  : 47.0.2526.110
Node    : 5.1.1

> apm --version
apm  1.9.2
npm  2.13.3
node 0.10.40
python 2.7.11
git 1.9.5.msysgit.0
visual studio 2013

I think this issue should be filled in https://github.com/atom/find-and-replace project.
It seems there are other issues about replacing with regex (matching $, partial replacing and so on).

Thanks @albertosantini.


Add support for CARGO_TARGET_DIR.

This actually needs CARGO_BUILD_TARGET_DIR as well. I'll figure out the priority order shortly.

Is this really needed? cargo metadata should handle this for us

It actually does support this, my mistake.


Wrong seki detection by IsSeki()

I noticed a situation that AQ wrongly recognizes as seki.

Obviously black is dead, but IsSeki() recognizes D3 and E2 as seki.
This has great impact on rollout. Because in rollout, either by PlayoutLGR or PlayoutRandom(), a detected seki point will never be filled, so AQ will never realize that black is dead, outputing incorrect result.

Thank you for reporting.
It is a bug due to IsSelfAtariNakade() recognizing stones with size > 2.
I will fix it on next version.


Free memory for temporary data buffer.

With this, deserializing the macaroon no longer leaks the buffer on success.  Valgrind now appears to be happy with libmacaroons.

Thank you for catching this!


Animations

Summary
Proof of concept approach to reusable/recomposable/authorable animations for the Bolt Design System.
Details
This PR creates a new package, bolt/animations. This PR takes a design system approach to animations by setting out animation design tokens/settings, tools (mixins), and utilities (animation triggers and scroll triggers). Specific animation content in this PR (timing functions, durations, delays, keyframes, etc.) are for demonstration purposes only and are not yet approved Bolt design features. Existing bespoke animation is not impacted by this PR.
How to test
See http://localhost:3001/pattern-lab/?p=viewall-visual-styles-animations

@mikemai2awesome can you take a peek here?

@margoromo I did. Look above for all of my notes.

Created http://vjira2:8080/browse/BDS-1716 and http://vjira2:8080/browse/BDS-1717 for continued review by @mikemai2awesome and @sghoweri


Delete Seed's BackupBucket only if no BackupEntrys are referencing it

How to categorize this PR?

/area usability
/kind bug
What this PR does / why we need it:
This PR introduces a check before deleting the Seed's BackupBucket to check if there are any BackupEntrys referencing it.
For the issue description please read #7064
Which issue(s) this PR fixes:
Fixes #7064
Special notes for your reviewer:
/cc @plkokanov @rfranzke
Release note:

NONE

/hold
Needs some more clarification.

/unhold

/re-title Improve validations for BackupBuckets and BackupEntrys

/retitle Improve validations for BackupBuckets and BackupEntrys

/lgtm


[Feat]: Add Hover Effect to Social Links with Color Corresponding to Their Social Colors

Is your feature request related to a problem? Please describe.
No, the feature request is not related to a problem. It's about enhancing the visual appeal and user experience of the social links on the website by adding a hover effect that changes the color according to the respective social media platforms.
Describe the solution you'd like.
I'd like to have a hover effect added to the social links on the website. When a user hovers over a social link, the color of the icon or background should change to match the corresponding color of the social media platform. This will provide a visually appealing and intuitive experience for users interacting with the social links.
Show us the magic with screenshots
https://github.com/TechNodes2-0/ElectiveHub/assets/114478676/eca02a11-a91a-45b3-a077-e6a9a0cc410d
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I want to work on this issue. (optional)

The issue is already mentioned and assigned, so I'm closing this one.


Add config schema to aws pack, make it work with new improved configs

This pull request adds config schema to the aws pack and makes it work with the new dynamic configs.
New dynamic config items don't support nested configs so I needed to make some changes the code so it's backward compatible and supports both approaches.
Hopefully in the near future we can update all the configs and reduce the nested items (keep them flat).
Here is an example of a new  aws.yaml config file which uses user-specific credentials, but the same shared region:
---
aws_access_key_id: "{{user.aws_access_key_id}}"
aws_secret_access_key: "{{user.aws_secret_access_key}}"
region: "us-east-1"

https://stackstorm.slack.com/archives/community/p1467721438003378


Review Attribute QuoteType Behavior vs InternalQuoteType fixes #552, #516

Hi :),
I just faced an issue where adhoc created attributes where allways being quoted SingleQuote despite having QuoteType set to DoubleQuote as described in #552
When looking at the code I realized some inconsistencies in the behavior of InternalQuoteType vs QuoteType.
As such here is my proposed behavior for these properties:

InternalQuoteType is the QuoteType inferred by the system when reading the document or on Value set ( ex: Value being set for atribute with WithoutValue )
QuoteType is the value set by the user that overrides the Internal calculated value, except if the value is being set to Initial wich rolls back the QuoteType to the internal value

With this behavior I believe we can have a consistent and intuitive way of handling quotes in attributes
All public behavior of the classes was kept untouched so there should not be any breaking change ( ex: Global setting in the document still overrides any of these attributes )
Please consider this change since I believe it fixes #552 and #516 and makes attribute quoting much more intuitive.
Thanks and best regards
POFerro

Hi @JonathanMagnan ,
This PR also solves #560, have you had a chance to look at it?
Thanks and best regards
POFerro

Hello @POFerro ,
I wanted to let you know that I have started looking at your PR, and so far, everything looks perfect.
I will make a second review later this week (I will try tomorrow, but I cannot yet guarantee it) and release a new version just after.
So it should be soon in production ;)
Best Regards,
Jon


multivariate_gaussian extension code

Description
This PR implements marginalisation and conditioning functions for multivariate_gaussian models, for both mixture and non-mixture models.
Checklist:

[X] I have performed a self-review of my own code
[X] My code is PEP8 compliant (flake8 lsbi tests)
[X] My code contains compliant docstrings (pydocstyle --convention=numpy lsbi)
[X] New and existing unit tests pass locally with my changes (python -m pytest)
[X] I have added tests that prove my fix is effective or that my feature works
[X] I have appropriately incremented the semantic version number in both README.rst and lsbi/_version.py

Just pushed a bugfix correcting the conditioning for mixture models, and added a test that shows this explicitly.


Update GoogleMobileAds support on iOS to 9.14.0

A file in the ThirdParty\GoogleMobileAds says that the current version is 9.6.0.
Is there a reason this can't be updated to 9.14.0 so it's the latest v9? Just so we have the latest fixes and features of AdMob that Delphi can support.
For info, they'll begin to deprecate v9 in January so hopefully Embarcadero will fix whatever is blocking updating to the latest v10 SDKs by then.
https://developers.google.com/admob/ios/deprecation

I don't think there's any reason not to update to v9.14.0. Have you tried it? Are there any changes to classes/methods in it?

Not yet, I was going to experiment in the next few days. I think there are class changes but shouldn't be anything too dramatic, and no behaviour change from what I can see in the notes.
I wonder if going straight into v10 for just the ads would work? I know you had problems with Firebase v10 linking but have you tried the ads?

OK.. so there is a reason not to update to v9.x.. I note that Stephane (aka Loki) was able to get v10.x working, however it requires a fair amount of messing around. You're welcome to try that yourself, however I'm going to wait until the issue is resolved, or it becomes simpler.

Yes... I read the latest notes and it does sounds like it isn't worth it until EMB fix the core problem.
Thankfully we have another year before it comes a problem.

I'm going to attempt to solve this using Stephane's instructions (with my own twist), and present it as an option. Stay tuned :-)

Good luck Dave!

I am testing against v10.16, and I've done all the steps that Stephane advised, however I'm having linker issues. I suspect there's a framework it needs that is not being included. Not sure how I determine which :-( Some of the errors include:
    Error: "_objc_msgSend$JSExecutorForContext:", referenced from:      l001 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADOMIDAdSession.o);
      Error: "_objc_msgSend$conversionsCount", referenced from:      -[APMDatabase updateDailyCounts:error:] in ios-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMDatabase.o);      -[APMMeasurement(Bundle) checkConversion:dailyCounts:] in ios-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMMeasurement+Bundle.o);
      Error: "_objc_msgSend$error", referenced from:      +[APMInAppPurchaseTransactionReporter transactionFingerprint:] in ios-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMInAppPurchaseTransactionReporter.o);      -[FBLPromise description] in ios-arm64/FBLPromises.framework/FBLPromises(FBLPromise.o);      _FBLPromiseCombineValuesAndErrors in ios-arm64/FBLPromises.framework/FBLPromises(FBLPromise+Any.o);      l013 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADInspector.o);      l008 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADAdConfigurationRenderStatistics.o);      l008 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADNetworkLogger.o);      l083 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADVideoPlayer.o);      ...
    Error: "_objc_msgSend$performPostLoadActions", referenced from:      l010 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADHTMLMediaContent.o);      l013 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADAdMediaContent.o);
      Error: "_objc_msgSend$dismissInspectorAndCallCompletionHandlerWithError:", referenced from:      l006 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADInspector.o);      l021 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADInspector.o);      l024 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADInspector.o);      l026 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADInspector.o);      l027 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADInspector.o);
      Error: "_objc_msgSend$defaultCenter", referenced from:      l001 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPPlaceholderView.o);      _UMPPostLog in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPSignals.o);      l003 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPView.o);      l018 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPView.o);      ___54+[GULSceneDelegateSwizzler proxyOriginalSceneDelegate]_block_invoke in ios-arm64/GoogleUtilities.framework/GoogleUtilities(GULSceneDelegateSwizzler.o);      ___51-[APMSessionReporter rescheduleUserEngagementTimer]_block_invoke in ios-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMSessionReporter.o);      -[APMScreenViewReporter init] in ios-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMScreenViewReporter.o);      ...
    Error: "_objc_msgSend$setPartner:", referenced from:      l001 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADAdVerificationNativeMonitor.o);
      Error: "_objc_msgSend$updateAudiences:", referenced from:      ___71-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:]_block_invoke in ios-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMMeasurement.o);
      Error: "_objc_msgSend$testDeviceIdentifiers", referenced from:      l008 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      l035 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADApplication.o);      l029 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADAdSource.o);
      Error: "_objc_msgSend$saveState:", referenced from:      l002 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADPersistentStateMonitor.o);
      Error: "_objc_msgSend$setSessionInFetcherMap:forSessionID:", referenced from:      -[GULNetworkURLSession sessionIDFromAsyncPOSTRequest:completionHandler:] in ios-arm64/GoogleUtilities.framework/GoogleUtilities(GULNetworkURLSession.o);      -[GULNetworkURLSession sessionIDFromAsyncGETRequest:completionHandler:] in ios-arm64/GoogleUtilities.framework/GoogleUtilities(GULNetworkURLSession.o);      -[GULNetworkURLSession URLSession:task:didCompleteWithError:] in ios-arm64/GoogleUtilities.framework/GoogleUtilities(GULNetworkURLSession.o);      +[GULNetworkURLSession fetcherWithSessionIdentifier:] in ios-arm64/GoogleUtilities.framework/GoogleUtilities(GULNetworkURLSession.o);
      Error: "_objc_msgSend$sharedURLSession", referenced from:      l009 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADNetworkServerTransactionSource.o);
      Error: "_objc_msgSend$baseURL", referenced from:      l008 in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADSDKCoreContext.o);
      Error: "_objc_msgSend$sharedManager", referenced from:      l009 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      l012 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      _GADIsLimitAdTrackingEnabled in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADDevice.o);      _GADRawDeviceIdentifier in ios-arm64/GoogleMobileAds.framework/GoogleMobileAds(GADDevice.o);
      Error: "_objc_msgSend$length", referenced from:      l002 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPSignals.o);      _UMPTransparencyAuthorizationStatus in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPSignals.o);      l008 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      l009 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      l012 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      l018 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      l026 in ios-arm64/UserMessagingPlatform.framework/UserMessagingPlatform(UMPConsentInformation.o);      ...

Of note: The linking phase takes around 10 minutes (not sure whether that's because there are so many errors), so it's a bit of a wait to find out what errors there are

_objc_msgSend is part of the ObjC runtime which should be linked in, but I suspect it’s a red herring. As it’s taking so long, my gut feeling is there may be a  linker loop it’s struggling with, but just a theory.

Updated to Firebase iOS SDK v10.8.0


Feature/validation and model specs

Features added:

Add the following validations:

For the User model:

Name must not be blank.
PostsCounter must be an integer greater than or equal to zero.

For the Post model:

Title must not be blank.
Title must not exceed 250 characters.
CommentsCounter must be an integer greater than or equal to zero.
LikesCounter must be an integer greater than or equal to zero.

Add unit specs for all of models' methods and validations.

Thank you @Qoosim . I have fixed the issue

Thank you @NahnahAJ . Problem fixed


⚠ T:Riza Community Forum has degraded performance

In 109674d, T:Riza Community Forum (https://community.triza.dev) experienced degraded performance:

HTTP code: 200
Response time: 3061 ms

Resolved: T:Riza Community Forum performance has improved in 16b1be6.


Compilation errors for PACKAGE BODY AS_XLSX - Oracle Database 23c Free

Hi @antonscheffer,
Thanks for this great package!
Having this error compiling the package body in Oracle Database 23c Free:

Compilation errors for PACKAGE BODY AS_XLSX

Error: PL/SQL: ORA-00932: expression is of data type BLOB, which is incompatible with expected data type -
Line: 2401
Text: select ora_hash( p_img ) into l_hash from dual;

Error: PL/SQL: SQL Statement ignored
Line: 2401
Text: select ora_hash( p_img ) into l_hash from dual;

Database info:
OCI: version 12.1  (<IP_ADDRESS>.0)
Oracle Database 23c Free Release <IP_ADDRESS>.0

Compilation works on previous releases.

Should be fixed

That was fast and elegant.. Thanks!


Using pup to modify html

I have a use case where I want to add a class="table" to all table tags, that don't already have that class specified. Currently I use a hacky sed to do it, but I was wondering if pup could be a more robust way of doing that.

Would love this but it seems like this would need it's own language to describe the modification (like s/foo/bar/ for sed). Know of any tools that do something similar?

I'm not aware of any easy/simple similar tool to do modifications. There is XSLT, which is more complex, but would support this kind of transformation.

What about a flag which would emit the original file except for each part that has been selected the tool print what the display function returns.
While not complete this sounds like a really good start.

This actually rely on having a slightly more powerful set of display functions. Following jq a good start could be to have: (1) a way to emit arbitrary text using a template string. (2) a way to emit html tags.

@np these seem like inverse selectors rather than transformations. I actually like the idea of having a --template flag of some sort, but I think these are new issues.

I was thinking that combining these templates plus a global flag which would print back the context, namely what surrounds the selected parts.

@np, could you provide an example of what that would look like? I'm having trouble understanding how this relates to transformations.

Ok, this would work as follows, let's say we have a new flag --transform for instance.
First, running pup with a selector but no display function would be pretty useless as this would print the original page. So pup --transform <SOME_SELECTOR> would do the same as just pup.
Now combined with a display function one can transform/edit the page. For instance assuming a --template we could write something such as:
pup --transform --template '
%s
' a
This command would wrap all a tags with a div tag.

I was going to open an issue but ended up here instead. I have that need too, and using sed is incredibly annoying for html.
Since you guys added the json{} is there a way to import JSON instead? I feel like everything can be done in jq if it is possible to do json -> html. Alas, I did not find any tool to do so. Open to suggestions!!
Also thank you for that incredible piece of software.

For converting any markup formats, or similar, pandoc is probably the best idea.
https://github.com/jgm/pandoc
https://pandoc.org/
Conversion from/to JSON and any other supported format should also be possible.

Thank you! this looks nice indeed. I was looking for a way to safely replace stuff inside of the html, but I might have found a way using pup to format and just sed to match the line. This way it actually is a little bit more easier and safer to regex using sed.

Here's an idea for how to accomplish this with pup:
Add a new output display function json-full{} which returns an object containing the matched elements along with the full HTML tree:
$ < input.html pup 'p json-full{}'

{
  "match": [
    {
      "tag": "p",
      "text": "This is my website."
    },
    {
      "tag": "p",
      "text": "I hope you like it."
    },
    {
      "tag": "p",
      "text": "Ok cya later."
    }
  ],
  "tree": {
    "children": [
      {
        "children": [
          {
            "children": [
              {
                "tag": "title",
                "text": "Hello World"
              }
            ],
            "tag": "head"
          },
          {
            "children": [
              {
                "children": [
                  {
                    "alt": "logo",
                    "src": "https://example.com/logo.png",
                    "tag": "img"
                  },
                  {
                    "tag": "h1",
                    "text": "Hello World"
                  }
                ],
                "tag": "header"
              },
              {
                "children": [
                  {
                    "match": 0
                  },
                  {
                    "match": 1
                  },
                  {
                    "match": 2
                  }
                ],
                "tag": "div"
              }
            ],
            "tag": "body"
          }
        ],
        "tag": "html"
      }
    ],
    "tag": ""
  }
}

Then jq could be used to do the actual mutation:
$ < input.html pup 'p json-full{}' | jq '.match = (.match | map(.class = "foobar"))'

{
  "match": [
    {
      "tag": "p",
      "text": "This is my website.",
      "class": "foobar"
    },
    {
      "tag": "p",
      "text": "I hope you like it.",
      "class": "foobar"
    },
    {
      "tag": "p",
      "text": "Ok cya later.",
      "class": "foobar"
    }
  ],
  "tree": {
    "children": [
      {
        "children": [
          {
            "children": [
              {
                "tag": "title",
                "text": "Hello World"
              }
            ],
            "tag": "head"
          },
          {
            "children": [
              {
                "children": [
                  {
                    "alt": "logo",
                    "src": "https://example.com/logo.png",
                    "tag": "img"
                  },
                  {
                    "tag": "h1",
                    "text": "Hello World"
                  }
                ],
                "tag": "header"
              },
              {
                "children": [
                  {
                    "match": 0
                  },
                  {
                    "match": 1
                  },
                  {
                    "match": 2
                  }
                ],
                "tag": "div"
              }
            ],
            "tag": "body"
          }
        ],
        "tag": "html"
      }
    ],
    "tag": ""
  }
}

And finally pup could convert this back into HTML:
$ < input.html pup 'p json-full{}' | jq '.match = (.match | map(.class = "foobar"))' | pup --from-json

    <title>Hello World</title>

Hello World

This is my website.

I hope you like it.

Ok cya later.

This assumes that the tree output by pup contains all of the information necessary to reconstruct the original HTML (semantically, at least). This seems to be mostly true, but notably the doctype seems not to be included by pup '* json{}'.
The exact behavior would need to be worked out:

should matched nodes be included in both a matches array and their original position in the DOM tree, or should they only appear in the matches array, or should they appear in both?
should the matches array contain the path to the matched node?

Unfortunately, the project seems largely unmaintained. It's a shame because I think pup fills an important niche in the world of unix utilities. I think it could be even more synergistic with jq and other unix utilities if something like this were implemented.

Sketch of docs of my imaginary tool for quering/modyfing html:
Commands
sel [-c]
  extract elements matching selector. If multiple elements are matched, they are concated together
    -c print content only. Without -c start/end tags are printed as well
del
  remove matched elements from html
set sth
  replace each match with suplied string
setf fmt ...
  set, but printf-like. Post-fmt args can use funcs like match() or file()
move dest-sel
  move match into suplied destination. dest-sel must be pseudo-element like :before or :after
aset key value
  set atribute of each matched element

Examples
# move charset meta tag to top
hu 'meta[charset]' move 'head::before'
# remove empty links
hu a:empty del
# extract all embedded css, process it with external tool (hipotetical cssmin), and paste again
css=$(hu 'style' sel -c <in.html | cssmin)
hu 'style' del <in.html | hu 'head:before' setf '' "$css" >out.html

Other ideas

Add "propertiary" pseudoselectors that do insert stuff before/after match. Yes, there are standard :before and :after but they don't really do what you would expect from their names (they insert stuff at beginning and end of match)
aget [-c] [keys]  command - get atributes of matched elem
count command - print count of occurences of each selector (possible use case: removing dead css)

I don't know whether I will implement this, but this is just my idea for how tool like this could work


Some images "pushed down" 50% in IE

Hi,
I'm having an issue where the first image in a Bootstrap caraousel renders correct but any images after the initial one is "pushed down" 50% of the carousel high. This only happens in IE and Edge, Chrome shows all images as expected using normal CSS...
The first image:

Incorrect rendering:

If I disable this CSS property in Edge, it shows all images correctly

Is this a bug or am I doing something wrong? My implementation of the "inner carousel" is as follows:

Hm, we might be in for a world of hurt here - depending on which carousel lib you're using, Bootstrap might be settings its own inline styles and overriding the polyfill. Hopefully not, though! :)
If it's not JS interference, my best guess based on the inspector screenshot is that the polyfill is having difficulty accurately getting the height of the .item wrapper (hence why the negative margin-top is missing). If you could shoot me a link to the page, I can inspect and let you know for sure :)

Hi Constance and thanks for the quick reply :)
I'm using the carousel shipped with Bootstrap v3.3.1 or 3.3.7 if I remember correctly. The site is still in development and thus it's not live yet. However, I have copied parts of the source and all relevant CSS into a CodePen for you. As far as I can test with IE and Edge from here, the issue shows up as described in my post above.
I've linked the Pen directly to your "dist/objectFitPolyfill.min.js"-file, so changes done to that file should be reflected within a few minutes.

Thanks very much for the link! I've figured out the issue - Bootstrap's CSS/carousel animation relies on this:
.carousel-inner>.item {
    display: none;
}

And unfortunately display: none zeroes out an element's height, which explains why the polyfill is incorrectly calculating the height of .item.
Two solutions I can suggest:

Try another carousel lib that doesn't rely on display: none - I personally use Slick slider :)

Intercept Bootstrap's JS and call objectFitPolyfill(); every time their sliding action occurs. Looks like they have an event we can hook onto:

$('#newsCarousel').on('slide.bs.carousel', function () {
  objectFitPolyfill();
})

It's not super performant since it's re-checking the entire page for object-fit images every time the carousel slides, but it solves the problem I suppose :) You can check out this Codepen fork to confirm that it works in IE!

Sorry for the late reply, I've been working on a few other projects lately 😄
I've attempted to change to the Slick slider but unfortunately the entire slider disappears when I add the data-object-fit="cover" attribute. If I disable "autoplay" it will show the first image(at whatever resolution the image has), but once you navigate to the next image they will all disappear(including the first one).
The div "slick-track" gets loads of "object-fit-polyfill" classes, so something is definitely wrong...
Have you got any sample code where you've used Slick slider with object fit?

Hey hey!
No problem at all, here's an example CodePen with Slick and the polyfill:
https://codepen.io/constancechen/pen/zNaJYv
I tested on IE Edge and it looks to be working. Let me know if you have questions at all :)

This worked like a dream, thank you very much!


Support for Kubernetes 1.24 machines

What this PR does / why we need it:
Kubernetes 1.24 removed a couple of flags on kubelet and also requires containerd 1.5 minimum, so this PR accounts for both when creating 1.24 machines.
Amazon Linux 2 does not seem to have containerd 1.5 (yet?), so the PR sets that to still use 1.4.
Which issue(s) this PR fixes (optional, in fixes #<issue number> format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Optional Release Note:

Add support for Machines with Kubernetes version 1.24, uses containerd 1.5 as container runtime except on Amazon Linux 2

/test pull-machine-controller-e2e-aws

/test pull-machine-controller-e2e-aws

/retest

/approve
/lgtm


Replace the unavailable linked test-case for issue 4436 with a reduced test-case

Issue #4436 actually contains enough information to create a reduced test-case, which this patch uses to replace a currently unavailable linked test.

/botio test

I'm having trouble verifying this reduced test case. Take for example the preview from #4299 and open the reduced test case in Opera and Chrome. I always see the line, before and after the patch that fixed the issue mentioned here. @Snuffleupagus Were you able to verify the test case in either browser and if so, what steps did you take?

Were you able to verify the test case in either browser and if so, what steps did you take?

Unfortunately I wasn't. Please let me elaborate on why I submitted this PR, despite that.
If I'm reading https://github.com/mozilla/pdf.js/issues/4436#issuecomment-37643401 correctly, it seems that this issue was specific to older versions of Chromium browsers, hence it's possible that it has been fixed since then.
What I did was simply to use the information given in https://github.com/mozilla/pdf.js/issues/4436#issuecomment-37643401 verbatim, in order to build this reduced test-case. Since trying to download the current linked test-case fails when done from our test suite (the request is blocked by the server), I figured that it was better to have a reduced test-case available rather than unnecessary test failures for people who trying to test locally.
Provided that the information in that comment is accurate, the reduced test-case should be good.

I was just able to verify the reduced test case with Opera 20.0.1387.64 as mentioned in the original issue. Fortunately Opera offers download links to older versions. With automatic zoom, the line is not visible, whereas if I zoom the line becomes visible.
Now that this is verified, I'm much more comfortable merging this.

/botio test

/botio test

@brendandahl @yurydelendik Any idea what's going on with the Linux bot?

/botio-linux test

@brendandahl It's stuck after the unit tests and will time out after one hour has passed. Maybe it needs a restart?

I gave it a restart earlier. I think it may be low on space for '/'. I'll check a bit later if we can free up some space.

/botio test

/botio makeref

Thank you!


refactor sources to source pkg

This PR refactor different sources to sources package in case we will add more sources in the future.
/cc @davidopp @dchen1107 @balajismaniam @ConnorDoyle

I can get to this post v1.8
In general, I think this is a good refactor

@ConnorDoyle Thanks for the reply. Hope you guys take a look at this once you have time.

@ConnorDoyle Done. PTAL.

Merge bot has gone insane, manually merged.

@ConnorDoyle  @andyxning Sorry about the merge bot spams. It should stop now. I've disabled it.


Create draft bot

[x] create nhl_draft.py
[x] take info on each pick in round(s) and output to table

adding new requirements:

[ ] interface with sql database
[ ] (Optional): If possible make bot aware of when draft is over and self-terminate

Lemmy cannot handle a post of this size.

[ ]  Rework to comment on the post for each indivual round

marking draft start time as optional for now. Will revisit in the future.


[#808] fix(client): use synchronized to make spill and addRecord thread-safe

What changes were proposed in this pull request?

Use the synchronized to make spill and addRecord thread safe.

Why are the changes needed?
Fix: #808
Does this PR introduce any user-facing change?
No.
How was this patch tested?

UTs

Codecov Report

Merging #811 (713e330) into master (cae7cd9) will increase coverage by 0.52%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #811      +/-   ##
============================================
+ Coverage     57.63%   58.16%   +0.52%
+ Complexity     2058     1916     -142
============================================
  Files           306      275      -31
  Lines         14871    11936    -2935
  Branches       1221     1146      -75
============================================
- Hits           8571     6942    -1629
+ Misses         5808     4591    -1217
+ Partials        492      403      -89

see 32 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

After rethinking, I think the spill should not block when acquiring the lock, because the addRecord can take a long time, especially for tight memory.
So in the latest commit. I use the ReentrantLock#tryLock to avoid this.

Do you have any cases report that improves for the new fix? Seems that it would be quite possible that executor with memory pressure and high write frequency, the spill could not take effect due to that it cannot acquire the lock, which would still causes executor OOM.

When cherry-pick this PR to internal uniffle, I found this problem but I don't validate.

Do you think is it possible to adaptive increate try lock wait time to alleviate that cases?

I think yes. We'd better to avoid acquiring memory blocked.

I think I will freeze this until all are fixed

I will close this PR. Better solution is #848  cc @advancedxy


QuriParts Graphical Interface

Allows people to make VQE algorithms just by entering in a few problem details and uploading a standard electronic structure file used in DFT simulations through interfacing with the QuriParts library. I have some code to port Qiskit to QuriParts and vise-versa; I can help with these, but it is just a cool thing that shouldn't take too long which would really add some appeal to QuantumCircuits.

Done


DON'T MERGE IN: Message Hub REST instead of Redis

These are the code changes necessary to get bluechatter working with the IBM Message Hub service instead of with Redis (with updated README and manifest.yml)
The only thing preventing me from having you merge it in is my inability to figure out how to get this to work locally via Docker. When deployed it's simple - all you have to do is bind the service. The issue is with how the npm library works - rather than implementing the security protocol needed to connect to kafka directly, there is a separate REST api for the Message Hub service. What this means is we can't spin up a kafka docker container and connect to that locally. The only way to run locally then, is to provision an instance of the message hub service, get those login credentials, and connect to Bluemix.
If that's ok with you I can include that in the README along w/ instructions on how to do it. But if not, we'll have to figure out alternatives / if it's worth going further down this path.

No I would not want to require them to create an instance of the service in order to run this in Docker.    There is no way to use a Kafka API with Message Hub?

Not in Node - I tried working on connecting to Kafka directly via Node but Message Hub is behind that weird SASL and GSSAPI security protocol that I was unable to connect to (IBM gives you a .jar file to use for authentication). I could see if another day of working on that yields any progress
Another possible solution would be to make some kind of wrapper that, when running docker, uses Kafka, and otherwise uses the Message Hub REST API

I wouldnt spend much more time.  We can see if the service owners have any
plans to enable our use case.
On Mon, Feb 1, 2016 at 10:00 PM Jonathan Kaufman<EMAIL_ADDRESS>wrote:

Not in Node - I tried working on connecting to Kafka directly via Node but
Message Hub is behind that weird SASL and GSSAPI security protocol that I
was unable to connect to (IBM gives you a .jar file to use for
authentication). I could see if another day of working on that yields any
progress
Another possible solution would be to make some kind of wrapper that, when
running docker, uses Kafka, and otherwise uses the Message Hub REST API
—
Reply to this email directly or view it on GitHub
https://github.com/IBM-Bluemix/bluechatter/pull/3#issuecomment-178333383
.


fix(repo): Guard against an undefined player

I was running into a situation in an Animated.div where we were trying to detatch handlers while player was undefined causing an uncaught exception to be thrown.

@marc-hughes do you mind adding a quick test for this? Other than that, this LGTM

Added that in, thanks for looking at it so quick.


Can't use local filesystem as installation path when publishing

After the publish location has been specified, Visual Studio will ask "How will the user install the application?", which gives an option to browse the local filesystem. This, however, is impossible, since every path will result in the following error:

It seems like it's impossible to have this set to the local filesystem, which makes me wonder why the option to do so is available.

I should've looked a little longer at this. Turns out the wizard just fails to convert the path to a URI. Using file:////Deployement/SomeFolder/ does work. This is still a bug, but at least you can work around it.
Next question: What do you do when the folder is not on the main (C) drive?

@tomwimmenhove Thank you for the feedback, we're sorry you're experiencing issues.
Since this is more product-related, please start a ticket using Report a problem in the Visual Studio community and link back to this issue.
Also, please include which version Visual Studio you're using and the project type.  For instance, using a web application in Visual Studio 2019 seems to work without issue.

To answer your question, for network folders, the format //serverIP/share or //servername/share should suffice with FTP shares, else use Map a network drive when user/password access is involved.


[WIP] Added terraclimate

This adds an example notebook for terraclimate. It's a WIP since right
now it depends on

The planetarycomputer-staging STAC endpiont
pystac 1.0.0rc1

I'd prefer to wait till pystac 1.x is on the hub before merging.

nbviewer link: https://nbviewer.jupyter.org/github/microsoft/PlanetaryComputerExamples/blob/3cb26eecae0c5a6702a0a668948a9f91d520598c/datasets/terraclimate/terraclimate-example.ipynb


Support for absolute paths

Currently if i provide an absolute path it's added to the end of the process.cwd() which is not what i was expecting at all. 🤔

#8 #9


Created new liquibase.resource.Resource interface

Impact

[ ] Bug fix (non-breaking change which fixes expected existing functionality)
[X] Enhancement/New feature (adds functionality without impacting existing logic)
[X] Breaking change (fix or feature that would cause existing functionality to change)

Description
The current ResourceAccessor / PathHandler interfaces are purely around reading files and therefore only expose "input stream" implementations. But, there are times we want to be able to write to resources as well.
The files to write to can be things that are "absolutely" referenced, like the liquibase.properties file given an absolute path as well as existing files found in the search path.
This is introduces write support by adding a new liquibase.resource.Resource object which can be returned by ResourceAccessors and PathHandlers.
The new Resource objects wrap a specific resource that has been found, and have openInputStream and openOutputStream methods on them.
API Changes
Resource
The new Resource interface is kept purposefully simple. And as a new interface it doesn't impact anything existing.
It has a getPath() call to get the ResourceAccessor-valid path as well as a getURI() to return an "absolute" description of the file. The getURI() should be used to determine equality since multiple Resources can have the same path within a ResourceAccessor.
Beyond those description calls, there is openInputStream/openOutputStream for reading/writing as well as an exists() and isWritable() calls. I thought about not including the exists and isWritable in favor of just throwing exceptions from openInputStream and openOutputStream, but I could imagine enough times when we wanted to know that without necessarily starting to read from the file so added them. I didn't include an isReadable figuring exists is close enough that the extra thing to implement was not useful enough.
I looked at org.springframework.core.io.Resource for a lot of the inspiration for this class but kept it simpler than that interface. For example, I didn't include isOpen, isReadable, isFile, contentLength, lastModified and createRelative under the theory that we shouldn't need those and so didn't want to put it on implementations to deal with them.
I created implementations of Resource we need so far: PathResource which works for files and also things within jar files. Also URIResource and SpringResource.
We really need a MavenResource as well because that will allow us to have openInputStream return a stream from target/classes and openOutputStream return a stream from src/main/resources (or maybe a combined 'write to both' one). Being able to support "split" places to read/write like that is part of the design goal behind Resource, but I didn't get that yet.
ResourceAccessor
The changes to ResourceAccessor shouldn't impact anyone calling resource accessors, but it will be an api breaking change for anyone implementing their own ResourceAccessors. This is something we'll need to include in the release notes, but this should be a limited enough set of people that I think it will be OK. I looked around a bit on github, and most of the uses I found are in tests. The ResourceAccessors we ship cover most of the ways people want to use them. are The alternative to being a breaking change is difficult and imposing complexity on everyone using the APIs so this seemed far better to me.
With the new Resource concept, the existing ResourceAccessor.openStream and ResourceAccessor.openStream methods are no longer needed and have been marked as deprecated. Also the ResourceAccessor.list() method which just returns string paths which have to be re-looked-up via openStream(s) so that method is also now listed as deprecated. These methods have been re-implemented, but should work about the same which is why anyone calling these methods should not be impacted. The only expected behavior change is that search can no longer include directories in the returned set, but that seems like an odd use case nobody should have to need. Our code wasn't using that feature and it's likely it didn't even work before (which is why I took it out)
In place of those deprecated methods, we now have ResourceAccessor.search(String path, boolean recursive) and ResourceAccessor.getAll(String path). Both those now only take a simple path argument vs relativeTo and path and instead there is a separate ResourceAccesor.resolve(String, String)
Compared to list, search has been simplified by no longer making it have to figure out the base directory. The javadoc is also more explicit that the path needs to be a "base directory" vs. a file. It's also been simplified to not have to worry about handling files vs. directories, particuarly because we found that some ResourceAccessors (especially ClassLoaderResouceAccessor) doesn't really have a concept of "directories" so I took that out.
Compared to search, the new getAll() method is what you use to get a specific file. But, multiple files can be in the same path for some resource accessors so it's getAll(). There is a convencience get() method on the interface which calls getAll and fails with a standard exception if there is more than one. There is also a convenience getExisting() method on the interface which calls get() and throws an exception if the resource does not exist. get vs getAll is the new version of openStream vs. openStreams.
Both search and getAll return Lists vs. SortedSets like the old methods do, because we actually want the ResourceAccessor to be in control of the order things come back in, not a Comparator. For example, ClassLoaderResourceAccessor should return files in the order they were in the classloader, not alphabetical order. Our new "duplicate file mode" feature makes this change needed.
I did the new convenience methods and re-implementations of deprecated methods as default methods on the interface vs. in AbstractResourceAccessor. That seems like the better place to put them to be more global and so AbstractResourceAccessor is pretty boring now. But thought it was good to keep that abstract class in there still for API compatibility and future extensibitlity.
So you see how the breaking change we're stuck with is that ResourceAccessor implementations need to implement the new getAll and search methods. Introducing a new interface instead would keep those from breaking compliation, but we'd need to scatter "if resourceAccessor instanceof NewResourceAccessor" checks throughout the code and really those other implementations would be missing functionality without still implementing that new interface so they're really still broken. So, I just went all-in and added them as new methods and then re-implemented our existing ResourceAccessors to use those new methods and re-implemented the deprecated methods as calls to the new methods.
PathHandler
The PathHandler interface is like ResourceAccessor in that it had a way to get an inputStream and really should be returning a Resource instead. Since this is a new API I also broke that one by replacing the old method with a new one and in that case didn't even bother keeping a deprecated version since it's so new.
Updated Code
To keep away the "uses deprecated methods" warning and to ensure the new methods are usable by developers, I fixed all our existing code to use the new search/get methods vs. the old deprecated ones. The new and existing tests keep failing on various things both locally and on the build server which helped me to work through cases not yet well enough handled on the new code. Once they are passing, I'll be fairly confident that the changes don't break anything, but it is enough moving around of existing logic that it is possible that non-tested edge cases and further-afield stuff like odd spring environmental setups may find bugs that will have to be fixed quickly in future releases.
Things to be aware of

Currently a breaking API change for ResourceAccessor implementations due to the additional method to implement, but not for anyone using a ResourceAccessor
Currently a breaking API change for PathHandler due to a replacing of a method

Things to worry about

Large refactoring of the ResourceAccessor layer, and there may be use cases we're not testing

I pushed changes for @StevenMassaro 's review and a fairly substantial refactoring of ClassLoaderResourceAccessor. Going back a bit to less reliance on URLClassLoader like we had prior to this work.

Quick question, if I may - I've been leveraging FileSystemResourceAccessor like so:
Liquibase liquibase = new liquibase.Liquibase("db.changelog-master.xml", new FileSystemResourceAccessor(migrationsDir), database);

What's the correct replacement this accessor for this now that the class has been deleted? Thanks for your assistance!

@rdhzl You should be able to use the DirectoryResourceAccessor like this:
Liquibase liquibase = new liquibase.Liquibase("db.changelog-master.xml", new DirectoryResourceAccessor(migrationsDir), database);


⚠ Bofrost.at has degraded performance

In 75302bb, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2248 ms

Resolved: Bofrost.at performance has improved in 759eedf.


run error

InvalidArgumentError (see above for traceback): Cannot assign a device for operation 'dicriminator_train/discriminator/discriminator_unit/dense_layer_2/dense/bias/Adam_1': Operation was explicitly assigned to /device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]. Make sure the device specification refers to a valid device.
[[Node: dicriminator_train/discriminator/discriminator_unit/dense_layer_2/dense/bias/Adam_1 = VariableV2_class=["loc:@discriminator/discriminator_unit/dense_layer_2/dense/bias"], container="", dtype=DT_FLOAT, shape=[1], shared_name="", _device="/device:GPU:0"]]

I have the same error


WKWebview: Response with status: 0  for URL: null

I'm submitting a ...  (check one with "x")
[x ] bug report => check the FAQ and search github for a similar issue or PR before submitting

Current behavior
The GET request for fetching the translations .json fails in some cases with following message: Response with status: 0  for URL: null. The problem only occurs on iOS devices using WKWebview (according to my error tracking tool).
I use the basic-http loader in form of an exported function like suggested in the docs. Is anybody else seeing this error?
Expected/desired behavior
The request should be successful.
Please tell us about your environment:

ngx-translate version: 7.0.0

Angular version: 4.1.3

Ionic version: 3.5.3

Browser: iOS XX WKWebView

+1

+1

+1

+1

+1

Stop adding +1 messages, it won't change anything.
If you want to see this fix, someone will have to work on a PR because I don't have an iOS device and I don't have a mobile app with a webkit view

@ocombe Since the error only happens on iOS and when using the WKWebView, I think the proper way to fix it is by using a custom loader. The following seems to be working properly on:

[x] Android
[x] iOS (UIWebView and WKWebView)
[x] Browser (i.e. when using ionic serve)

Install the cordova-plugin-file (I'm using Ionic Native, but you could do the same without it):

ionic cordova plugin add cordova-plugin-file
npm install --save @ionic-native/file

Add it to the AppModule in the app.module.ts file:

import { File } from '@ionic-native/file';

// ...

@NgModule({
    declarations: [/* ... */],
    imports: [/* ... */],
    bootstrap: [/* ... */],
    entryComponents: [/* ... */],
    providers: [
        File, // <--- here!
        // ...
    ]
})
export class AppModule { }

Create a custom loader that uses the cordova-plugin-file when running on a mobile device (we also handle what to do when working in the browser)

import { Observable } from 'rxjs/observable';
import { fromPromise } from 'rxjs/observable/fromPromise';
import { HttpClient } from '@angular/common/http';
import { File } from '@ionic-native/file';
// ...

export class CustomLoader implements TranslateLoader {
    constructor(private http: HttpClient, private platform: Platform, private file: File) { }

    getTranslation(lang: string): Observable<any> {
        if (this.platform.is('cordova')) {
            let readFilePromise = this.file.readAsText(this.file.applicationDirectory, `www/assets/i18n/${lang}.json`);
            return fromPromise(readFilePromise).map((data: string) => JSON.parse(data));
        } else {
            return this.http.get(`./assets/i18n/${lang}.json`);
        }
    }
}

NOTE: In the code above I'm using the Lettable operators (rxjs >= 5.5.X). If you're using an older version of rxjs, instead of return fromPromise(readFilePromise)... you'll need to do something like return Observable.fromPromise(readFilePromise)... and also remove the following import: import { fromPromise } from 'rxjs/observable/fromPromise';

Update the AppModule of the app.module.ts file to use our custom loader

import { HttpClient, HttpClientModule } from '@angular/common/http';
import { Platform } from 'ionic-angular';
import { File } from '@ionic-native/file';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';

// ... don't forget to import the CustomLoader if it's not in the same file!

// ...

@NgModule({
    declarations: [/* ... */],
    imports: [
        HttpClientModule, //  <--- We need to import the HttpClientModule
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useClass: CustomLoader,
                deps: [HttpClient, Platform, File]
            }
        }),
        // ...
    ],
    bootstrap: [/* ... */]],
    entryComponents: [/* ... */],
    providers: [/* ... */]
})
export class AppModule { }

Thanks, any chance that you could extract this loader somewhere (github repo, or gist) and add a link to it from the readme so that people can find it easily?

@sebaferreras @ocombe If you are interested I was able to work around that in a similar way, I created a custom TranslateLoader which returns observables of imported .ts constants:
import { de } from '../core/translations/de'; // export const de = { [key: string]: value: string, }
import { en } from '../core/translations/en';
import { sl } from '../core/translations/sl';

export class LocalTranslateLoader implements TranslateLoader {
  getTranslation(lang: string): Observable<any> {
    switch (lang) {
      case 'de':
        return of(de);
      case 'en':
        return of(en);
      case 'sl':
        return of(sl);
      default:
        return of(de);
    }
  }
}

@ocombe of course. It'd be great if some other users could give this a try to make sure it works properly on some other devices/OS versions. So if it's ok for you, later today I will create a Github repo with a ready-to-use demo app and will add the link to that repo in every Github issue related to this.
In a few days if it seems to be working properly I will create a PR to add the link to that repo in the Additional Framework Support section of the readme.

Perfect, thanks

@sebaferreras Any updates on this?  ... I know - it's already old :)

@CodeAndWeb I'm sorry, I was waiting to see if there were more comments on this issue, but I guess I should make a PR in the ionic-example repo with the changes listed on my comment... Would that be ok?

I am not sure if the example repo is the best place for it.
@ocombe I think creating a separate ionic-loader repo (similar to the http-loader)  with the loader and updating the demo to use it would be the better choice.
Well - put it in the demo repo. We can move it from here later.

Cons

@ocombe Since the error only happens on iOS and when using the WKWebView, I think the proper way to fix it is by using a custom loader. The following seems to be working properly on:

Sometimes the file plugin is accessed before the platform is ready. In this case, the interface is not translated on app launch. Needs to reload app. How can I make it wait for the platform to be ready and then try to download the translation file?


Add support for WhatsApp Cloud API

In response to our grammY Supabase example some folks were asking about a WhatsApp API example, and since I love grammY's DX I was wondering if you had any plans to add support for the WhatsApp Cloud API?
I came across this project https://github.com/tawn33y/whatsapp-cloud-api/issues/18 but it doesn't look like it supports Deno (yet).

grammY is a Telegram framework. What do you mean by "support for the WhatsApp Cloud API"?

The scope of grammY is limited to the Telegram Bot API. Supporting any other APIs is not a goal of this project. This includes APIs designed by Meta.
There are several reasons why the WhatsApp API won't be supported. I won't list them all, but give example reasons from the different dimension of such an undertaking.
From a technological point of view, trying to bring WhatsApp support to grammY is pointless. grammY is tailored towards the Telegram Bot API and tries to be the perfect match for it. The WhatsApp Cloud API works fundamentally different in almost every respect. For example, sent messages are delivered via callback which means that neither the API nor the client nor the middleware system nor filter queries transfer well. As a result, there would be virtually no code that could be shared between the projects. Hence, it's better to start a separate project, rather than trying to add this to grammY.
From a strategic point of view, we only have limited time and people to work on things. Every minute someone spends on a WhatsApp integration is not being spent on making the library work better for Telegram. It makes more sense to do one thing really well, than to try to do two things poorly.
From a social point of view, we can observe that the grammY contributors are a relatively diverse set of people, spread across cultures, languages, timezones, levels of experience, and age groups. However, there is one common denominator that everyone agrees on: we all use Telegram, and most of us use it quite regularly. It is not clear why this shared interest would work for WhatsApp with the same set of people in the community. This means that we need to assume that a new community would have to be built from scratch. (I'm ignoring the fact that you cannot have a community on WhatsApp at all because of too tight group size limits.)
From a motivational point of view, we need to take into account that there are factors that motivate people to contribute to one project but not another. A reason many people contribute to grammY is because it is an outstanding piece of technology, and this creates some sort of perfectionism among the people. We aspire to build something better than anything else out there. In contrast, frankly speaking, the WhatsApp Cloud API has a horrible design in many respects. I fail to see how any good library could be built around that. Without a great project, you have one fewer source of motivation for people to contribute. Without people, there is no code, so trying to support WhatsApp will be a lonely task and hence hard to do.
From an ideological point of view, I like to do open source because it empowers people. The WhatsApp Cloud API is a commercial product and you need to pay in order to use it at a scale that can make any difference in the world. This may be attractive to businesses, but I don't think open source is the right model for this. The absence of good OSS libraries for WhatsApp indicates that this is true.
From a moral point of view, it is Meta. This company does so many things systematically and consistently wrong that I would not know how to justify spending my free time on supporting them.
On the bright side, you are still able to write a tutorial for a WhatsApp bot on supabase because you do not need a framework for that. It will not be as easy (all of the above reason contribute to that) but it's still possible, and it will likely work well enough for companies who actually want to use the API.

@KnorpelSenf thanks for your thoughtful response. I agree that a separate project makes more sense, I only hope that whoever/ifever someone takes it on that they take inspiration from grammY, because it's absolutely beautiful, thanks for everyone's work here! 💚
I guess for now I'll be fighting with the Graph API directly 😉

Thank you, that's great to hear! Good luck :)


Non-conformant Accept header

With the recent fix for #470, HTTPie sends:
Accept: application/json, */*

This header is not quite correct. According to RFC 7231 § 5.3.2, it says: “I accept JSON or anything else”. Because there are no explicit quality values (q=) specified for either media range, they are both assumed to be 1, so application/json and */* are equally acceptable.
*/* should be marked with a lower quality value, for example:
Accept: application/json, */*;q=0.5

@vfaronov thanks for the report. I considered including the q weight qualifier but then decided against it because it's optional and specific media (application/json) have  automatically a priority than ranges (*/*):

Media ranges can be overridden by more specific media ranges or specific media types.  If more than one media range applies to a  given type, the most specific reference has precedence.  For example,

Accept: text/*, text/plain, text/plain;format=flowed, */*

have the following precedence:

text/plain;format=flowed
text/plain
text/*
*/*

— https://tools.ietf.org/html/rfc7231#section-5.3.2

@jkbrzt The text you quoted defines “precedence” for purposes of the text that follows:

The media type quality factor associated with a given type is determined by finding the media range with the highest precedence that matches the type.

Thus, given:
Accept: application/json, */*

if we consider the application/json media type, the media range with the highest precedence that matches the type is application/json, and its quality value is 1;
if we consider the text/xml media type, the media range with the highest precedence that matches the type is */*, and its quality value is also 1.

In other words, this “precedence” only tells you how to match a given type to one of the quality values specified in Accept, but does not influence the quality values themselves.
That is my reading of the spec.

I would also like to ask --json to send Accept: application/json only.
From the documentation:

--json, -j
(default) Data items from the command line are serialized as a JSON object.
The Content-Type and Accept headers are set to application/json
(if not specified).

This is indeed a bug.

Including */* with a default q value is indeed meaningless. Note that there is no server requirement to honor the Accept request header field, so a server doesn't need to return 406 if it doesn't have an application/json representation.

I've been down this path as well, @vfaronov is representing a common interpretation. That is, the specificity affects the media type, so a more specific subtype sets precedence over a similarly typed media range. However, once the specificity resolves media types, they are ordered according to quality scores. I believe that this part of the RFC is ambiguous to readers.
In this interpretation, when a server has an internal preference of serving text/html over application/json, httpie, in JSON mode, is telling the server it has no preference of which media type to respond with (because both media type quality scores are 1.0). This causes non-obvious media type choices when using httpie. Perhaps it helps to see what some browsers set in their Accept headers:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation/List_of_default_Accept_values
In that link, Internet Explorer and Edge are the only two browsers that don't specify a quality score for */* media ranges.
You can see this in the Apache documents:
https://httpd.apache.org/docs/trunk/content-negotiation.html#better
Apache understands the intention of clients to have */* be a lower quality score, and thus set that internally to emulate the desired behavior. However, there are servers in the wild that do not follow that interpretation. Thus, it is desirable for httpie to be explicit, and set a quality score that is lower than 1.0 for the */* wildcard when operating in JSON mode.

Another example.
Sending a request with such Accept header to a Rails app, which is serving browsers & API, will always return an HTML response :
https://github.com/rails/rails/issues/8987
As @kjmph said, it's because some browsers don't set quality score correctly.
We can assume this behavior should be quite common to many other web servers

Hi @jakubroztocil, did you take a look on last comments ? Is it possible to reconsider your position on this problem ?

Thank you!


io page is broken

http://kong.github.io/unirest-java/
ToC on right-side is cut off and doesn't scroll.
Links in the footer go to 404.
Is this page even supported still? Wanted to give feedback on how there is no way to go to the Javadoc to dig in further - you are left to do a google search, but found everything broken.

I'm not much of a UI person, if you want to improve it I'd accept pull requests. You found two things that are broken, thats hardly "everything". The links need to just be removed.

fixed


thread 'thread 'thread 'thread '' panicked

for some pdf , few pages are not extratced and showing this error:
thread 'thread 'thread 'thread '' panicked at '' panicked at '' panicked at 'called Option::unwrap() on a None valuecalled Option::unwrap() on a None value' panicked at '', ', called Option::unwrap() on a None value/home/runner/work/polars/polars/polars/polars-lazy/polars-pipe/src/executors/sinks/joins/cross.rs/home/runner/work/polars/polars/polars/polars-lazy/polars-pipe/src/executors/sinks/joins/cross.rs', ::/home/runner/work/polars/polars/polars/polars-lazy/polars-pipe/src/executors/sinks/joins/cross.rs118118:::1185656:

for some pdf , few pages are not extratced and showing this error:
thread 'thread 'thread 'thread '' panicked at '' panicked at '' panicked at 'called Option::unwrap() on a None valuecalled Option::unwrap() on a None value' panicked at '', ', called Option::unwrap() on a None value/home/runner/work/polars/polars/polars/polars-lazy/polars-pipe/src/executors/sinks/joins/cross.rs/home/runner/work/polars/polars/polars/polars-lazy/polars-pipe/src/executors/sinks/joins/cross.rs', ::/home/runner/work/polars/polars/polars/polars-lazy/polars-pipe/src/executors/sinks/joins/cross.rs118118:::1185656:

Hi,
I will check if I can find the source of the error

It might be fixed with the latest version.
Are you able to try to run the latest release on your PDF and report if the error is still happening ?

It might be fixed with the latest version. Are you able to try to run the latest release on your PDF and report if the error is still happening ?

no, its showing same error

Can you provide one of the document so that I can reproduce the error ?

Can you provide one of the document so that I can reproduce the error ?

can you send me your email?

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>
please check the mail

I checked your file and apply some corrections to the code.
Everything should be working as intended right now

I checked your file and apply some corrections to the code. Everything should be working as intended right now

that file is is working but there are also few files which are showing same error now also, can you tell me where the problem is?

You can send me the other files and I will check

You can send me the other files and I will check

I have mailed you

most of the issue is solved, but a little error is there, please check mail.