Typing spanish "tildes" and german "umlaute" causes issues using SuperEditor in Web in MacOS

Package Version
I am on the stable branch. I also just checked to be using the last commit (c69abd)
To Reproduce
Steps to reproduce the behavior:

Initialize a SuperEditor
Using an english keyboard, type a word that uses "tildes" or "umlaute". In MacOS, this is done by pressing option-u before a vowel (for "umlaute") or option-e for "tildes".

Similar issues happen with option-n, option-i, ... (don't know all combinations for typing special characters in an english keyboard - but for example option-s for ß works well.

The vowel and the symbol appear repated: ´óó

Actual behavior
The vowel and the symbol appear repated: ´óó
https://github.com/superlistapp/super_editor/assets/8203735/ee9b889f-add2-4a79-b3ee-888995d5d758
Expected behavior
The special character should just be added:
https://github.com/superlistapp/super_editor/assets/8203735/a40ad40c-082f-4f2f-bd3b-505aa00a566a
Platform
I am on flutter web, on a MacOS. I am using Chrome.
Flutter version
Flutter 3.16.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 2e9cb0aa71 (6 weeks ago) • 2023-12-11 14:35:13 -0700
Engine • revision 54a7145303
Tools • Dart 3.2.3 • DevTools 2.28.4

Additional context
I am aware of issue #1382
But I thought this was different because:

It is not safari-only. It happened to me on Chrome. And when I test this on safari, I cannot reproduce what #1382 describes.
The characters that get added in #1382 are different than those that get added here.

@angelosilvestre I assume this is a duplicate of an existing umlaute issue. Can you confirm?

@manoletre I'm not able to reproduce this issue. Are you able to reproduce it on the example app? If not, could you share the SuperEditor configuration used to trigger this issue?

Hey sorry for the delay. I just go the time to look into this. You are right, the issue was not with SuperEditor but with my configuration.
I was not using defaultkeyboardActions in my SuperEditor configuration. Once I started using it again, it started working.
Maybe something a bit weird to note, which might be interesting:
These were the keyboard actions I was using:
[
  toggleInteractionModeWhenCmdOrCtrlPressed,
  doNothingWhenThereIsNoSelection,
  scrollOnPageUpKeyPress,
  scrollOnPageDownKeyPress,
  scrollOnCtrlOrCmdAndHomeKeyPress,
  scrollOnCtrlOrCmdAndEndKeyPress,
  pasteWhenCmdVIsPressed,
  copyWhenCmdCIsPressed,
  cutWhenCmdXIsPressed,
  collapseSelectionWhenEscIsPressed,
  selectAllWhenCmdAIsPressed,
  moveLeftAndRightWithArrowKeys,
  moveUpAndDownWithArrowKeys,
  moveToLineStartWithHome,
  moveToLineEndWithEnd,
  tabToIndentListItem,
  shiftTabToUnIndentListItem,
  backspaceToUnIndentListItem,
  backspaceToConvertTaskToParagraph,
  backspaceToClearParagraphBlockType,
  cmdBToToggleBold,
  cmdIToToggleItalics,
  shiftEnterToInsertNewlineInBlock,
  enterToInsertNewTask,
  moveToLineStartOrEndWithCtrlAOrE,
  deleteToStartOfLineWithCmdBackspaceOnMac,
  deleteWordUpstreamWithAltBackspaceOnMac,
  deleteWordUpstreamWithControlBackspaceOnWindowsAndLinux,
  deleteUpstreamContentWithBackspace,
  deleteToEndOfLineWithCmdDeleteOnMac,
  deleteWordDownstreamWithAltDeleteOnMac,
  deleteWordDownstreamWithControlDeleteOnWindowsAndLinux,
  deleteDownstreamContentWithDelete,
  blockControlKeys,
  anyCharacterOrDestructiveKeyToDeleteSelection,
  anyCharacterToInsertInParagraph,
  anyCharacterToInsertInTextContent,
],

Comparing that to the default keyboard actions:
[
  toggleInteractionModeWhenCmdOrCtrlPressed,
  doNothingWhenThereIsNoSelection,
  scrollOnPageUpKeyPress,
  scrollOnPageDownKeyPress,
  scrollOnCtrlOrCmdAndHomeKeyPress,
  scrollOnCtrlOrCmdAndEndKeyPress,
  pasteWhenCmdVIsPressed,
  copyWhenCmdCIsPressed,
  cutWhenCmdXIsPressed,
  collapseSelectionWhenEscIsPressed,
  selectAllWhenCmdAIsPressed,
  moveLeftAndRightWithArrowKeys,
  moveUpAndDownWithArrowKeys,
  moveToLineStartWithHome,
  moveToLineEndWithEnd,
  tabToIndentListItem,
  shiftTabToUnIndentListItem,
  backspaceToUnIndentListItem,
  backspaceToConvertTaskToParagraph,
  backspaceToClearParagraphBlockType,
  cmdBToToggleBold,
  cmdIToToggleItalics,
  shiftEnterToInsertNewlineInBlock,
  enterToInsertNewTask,
  enterToInsertBlockNewline,
  moveToLineStartOrEndWithCtrlAOrE,
  deleteToStartOfLineWithCmdBackspaceOnMac,
  deleteWordUpstreamWithAltBackspaceOnMac,
  deleteWordUpstreamWithControlBackspaceOnWindowsAndLinux,
  deleteUpstreamContentWithBackspace,
  deleteToEndOfLineWithCmdDeleteOnMac,
  deleteWordDownstreamWithAltDeleteOnMac,
  deleteWordDownstreamWithControlDeleteOnWindowsAndLinux,
  deleteDownstreamContentWithDelete,
  blockControlKeys,
  anyCharacterOrDestructiveKeyToDeleteSelection,
  anyCharacterToInsertInParagraph,
  anyCharacterToInsertInTextContent,
]

The only action I was missing was this: enterToInsertBlockNewline. Adding it fixed the issue for me.
Just leaving that here for the sake of documentation.
Thanks for having taken a look into this!
Cheers!
Manu


plotly.min.js bloats binary size

Templates like this one include plotly.min.js such that static plots can be output correctly. For binaries using plotly that only output plots using the CDN distributed version of plotly, this unnecessarily increases the binary size.
Would it make sense to add a Cargo feature that allows to skip the inclusion of the minified plotly version (~2.5 MB)? For example plotly-vendoredjs with a default of true that can be set to false?
Or is there already a way to accomplish the desired behavior of not unnecessarily including the minified plotly version into the __TEXT,__const section of the binary?

I also ran into this while working on plotly.rs-based plotting support for Numbat (https://github.com/sharkdp/numbat/pull/464).
I looked a little bit into how askama (the templating engine used by plotly.rs) works. I couldn't anything that would allow us to have a sort of compile-time switch like a Rust feature gate. Something like
      {% cfg(feature = "plotly-js-vendored") -%}  <!-- this does not exist, AFAIS -->
        {% if remote_plotly_js -%} <!-- the runtime switch that is already present -->
        <script src="https://cdn.plot.ly/plotly-2.12.1.min.js"></script>
        {% else -%}
        <script type="text/javascript">{% include "plotly.min.js" %}</script>
        {% endif -%}
      {% else %}
        <script src="https://cdn.plot.ly/plotly-2.12.1.min.js"></script>
      {% endcfg %}

So I guess the only way to do this would be to duplicate https://github.com/plotly/plotly.rs/blob/main/plotly/templates/plot.html into a new plot-cdn.html (or similar) that would come without the remote_plotly_js option. Using feature gates in the Rust code, we could then select one or the other template.
Or does someone see a way to solve this using askama?

Hi @sharkdp , TBH I don't know if it is possible via askama either. I will look as well.
I agree with your proposal as well. If you have already the code for that, please submit a PR and we can merge it until we find an alternative way.


Why max_train_episodes = 90 in pusht

What's the reason why max_train_episodes is set to 90 in the pusht dataset? There's 200 examples (quoted in the paper).
Code: https://github.com/real-stanford/diffusion_policy/blob/548a52bbb105518058e27bf34dcf90bf6f73681a/diffusion_policy/config/task/pusht_image.yaml#L40

I have the same question.


[doc] Add explanation of health check

What this PR does / why we need it:
as title
Which issue(s) this PR fixes:
Fixes #4797

@ffjlabo plz


Detected as a virus by windows defender during/after update

What is the issue?
Windows Defender thinks it is some sort of command and control malware.

OS
Windows
GPU
Nvidia
CPU
Intel
Ollama version
0.3.5

https://github.com/ollama/ollama/issues/6342

OH, forgot to check 😅


clock unit tests added

Added tests to test the Clock. It adds 3 seconds to the total test time, but because the FPS ticker is setup to go once every second, it seems like it's going to have to be this way. Anyone have any suggestions that might speed this up?

In general, a mock (monotonic) timer is preferred for timer testing to an actual timer since an actual timer is unreliable in precision, and as you mentioned, it takes long. Sorry if I miss some context.

Thanks! I managed to build a test timer that is controlled by the tests rather than being normal clock. It works nicely.


update Revolution R Open to version 3.2.2

3.2.2 is the current release of RRO.

Thank you for the contribution. It was merged directly as 672031d8fbe491172d0a9b8cd4dcb850a395b583 to keep commit history cleaner. Your contribution is still credited to you.


opt: try check integrity of json stream first

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@a4cd15e). Click here to learn what that means.
The diff coverage is n/a.

:exclamation: Current head d97e7d7 differs from pull request most recent head cd1a31c. Consider uploading reports for the commit cd1a31c to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##             main     #444   +/-   ##
=======================================
  Coverage        ?   73.50%
=======================================
  Files           ?       55
  Lines           ?     7770
  Branches        ?        0
=======================================
  Hits            ?     5711
  Misses          ?     1761
  Partials        ?      298

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


where are the skins?

no skins

i can not see my skins what i have to do

+, no skins too

the same

you gotta own skins


Anglarjs-styleguide guideline on Keep Controller Focused?

We have developed one Enterprise application, The complete client side framework is built on AngularJS and the server side framework is on ASP.NET Web API. In the application we have 350+ html pages and 250+ Web APIs. There are lots of areas where we initialize the server data from ng-init directive via calling controller function. Because in our application all data is coming from the ASP.NET Web APIs. But I was surprised upon the documentation for ng-init, which says, in a nice bold outline :
The only appropriate use of ngInit for aliasing special properties of ngRepeat, as seen in the demo below. Besides this case, you should use controllers rather than ngInit to initialize values on a scope.
Also have concern on Angular-styleguide Documentation, which says :
Define a controller for a view, and try not to reuse the controller for other views. Instead, move reusable logic to factories and keep the controller simple and focused on its view.
Why?: Reusing controllers with several views is brittle and good end-to-end (e2e) test coverage is required to ensure stability across large applications.
I would like to get feedback from Angular-styleguide team on my concerns.
Let me brief first what we are doing in the application, for showing a industries list we load the industry HTML page and show the server data. The HTML template code is shown below:

....

The "initIndustries" function will be called from initialized industryCtrl. industryCtrl.js code is shown below :
app.controller("industryCtrl",["$scope",function($scope){
//Sets the server data in the $scope property.
$scope.initIndustries = function(){
//perform ajax request and set the data into the $scope property.
}
$scope.initAddIndustry = function(){
// perform ajax request for getting a dropdown data on Add Industry Page.
}
}])
I have few concerns based on Angularjs Doc and Anglarjs-styleguide guideline on Keep Controller Focused which is mentioned below :

Are we doing something wrong to initialize the data via function because all data is coming from the Server APIs?
Current initialization approach is against the industry practices in AngularJS based application. if yes, then which approach we need to follow in the application?
Do we need to create sperate controller for every view just for the shake of client side test coverage, as per the angularjs-styleguide?

The reason to implement the above approach(initialize the data from ng-init directive via controller function), Due to large application my initial thought was to follow MVC philosophy of decoupling the code and separation of concerns.

interesting feedback and yet another reason few rules are absolute (even that one I just wrote :) )
I'm closing this because I dont see an action at this time, but hopefully this comment you wrote will help others too. If you feel you can add somethign to the guide to clarify things, feel free to mak a PR

Thanks John. I will make a detailed document and proceed further....


[qscintilla] Update to 2.12

Library name: qsctintilla
New version number: 2.12
The changelog is here https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.12.0/ChangeLog
It builds fine here without the static patch, I am not sure about the reason for this patch, so I left it out. It can be updated and reintroduced if there is a need for it.
Doesn't solve any immediate problems (except some local build issues which may well have been introduced by me tampering with [things])

CC @longhuan2018


Deploy app from Github repo only shows branches from a-e in dropdown

Only branches in alphabetical order beginning with letter in the range a-e are shown in the dropdown for branch selection for the chosen repository. It does not appear to be possible to enter the desired branch manually.

This is also an issue on v2-master. Using cloudfoundry-incubator/stratos in the project field will show the issue.

Hm, for me it seems that a limited number of branches is loaded only. Like 20 ... Can this be made so that all of them are loaded or a specific one can be searched for?
Tested on SUSE CAP.

We used https://developer.github.com/v3/repos/branches/#list-branches for fetch branches, it looks like this has a limit of 30 - https://developer.github.com/v3/guides/traversing-with-pagination/#basics-of-pagination.
Options...

De-paginate response as per CF requests (see 'link' field in response header)
Switch branches control to use same process as repo (type to filter drop down values).


Updated Folder Structure

Created a new folder structure with my Name in the root directory as requested, with "First Project", "second Project" etc as sub-directories. Also added a new Project "CRUDWithSqlServer" for the first project of the bootcamp.

I am going to merge but take note of the following:

Work on a branch other than the main branch and make a pull request from there.
Always pull main before you create a new branch to work from.
 Task/create_directory


Add the player id and test

Codecov Report

Merging #19 (e2e5fc4) into main (070e23a) will decrease coverage by 0.21%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #19      +/-   ##
==========================================
- Coverage   95.76%   95.55%   -0.21%
==========================================
  Files           4        4
  Lines         307      315       +8
==========================================
+ Hits          294      301       +7
- Misses         13       14       +1

Impacted Files
Coverage Δ

src/player_components.rs
94.11% <100.00%> (-0.55%)
:arrow_down:

src/table.rs
96.12% <100.00%> (+0.15%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


ctrl_tcp doesn't raise CALL_CLOSED if call_id not set

If the call fails to setup because of a TURN failure then when CALL_CLOSED is raised the call_id has not been set yet, this results in null being passed to odict_entry_add which returns err=22. This results in an early exit without a warning in ctrl_tcp.c event_encode_dict.
As a result CALL_CLOSED is not raised by ctrl_tcp.
A fix is needed to event.c to check for a null call_id and not include it if null.
I also suggest adding a warning to the the early exit in ctrl_tcp.c

fixed in
https://github.com/alfredh/baresip/pull/748


Implanters and Subdermal Implants

About the PR
Requires https://github.com/space-wizards/RobustToolbox/pull/3311
WIP for implanters and subdermal implants
Screenshots

Changelog

:cl:

add: Added fun!
remove: Removed fun!

Oh yeah baby one more step towards revs let’s go

I never marked this as ready to review


Adds -f flag to tag the thing anyway.

Already done in PR https://github.com/Itelios/bitrise-steps-git-tag/pull/5


Display dartdoc status on the versions page.

Closes #993
https://dartlang-pub-dev.appspot.com/packages/url_launcher#-versions-tab-
https://dartlang-pub-dev.appspot.com/packages/url_launcher/versions
Unfortunately the failed ones are not yet exposed due to a bug in dartdoc_runner:
https://dartlang-pub-dev.appspot.com/packages/audio_recorder/versions

I have a few code cleanup tasks in the frontend/templates and frontend/handlers code that is a remnant of the v2 style migration. I'll do a follow-up on those after this got merged.

It looks like the failure use case is now working too (with the directory creation fix).

PTAL

An example for the failed links:
https://dartlang-pub-dev.appspot.com/packages/dartdoc/versions


feat: support yaml evaluator

This PR

adds support for YAML evaluator

Related Issues
Fixes #180
Notes
I have added extra notes as comments in the code.
Follow-up Tasks

TBD
How to test
Not sure what would be a good test for this.

To try it out, you can run the example yaml config
go run main.go start -f config/samples/example_flags.yaml  -e=yaml

This PR is WIP. I will request review once I am done by mentioning the reviewer here.

Hey @vadasambar ! Since it tends to be trivial to convert yaml <=> json, I would suggest somehow approaching the problem with that in mind. You can leverage the existing JSON evaluator's logic and state storage and just change the parsing, I think. Perhaps composition could help here?

Could you please also update the configuration documentation?
https://github.com/open-feature/flagd/blob/main/docs/configuration.md

@beeme1mr slipped my mind. I will do it. Thanks for pointing it out. :pray:

Hi @vadasambar, could you please fix the conflicts and resolve the issue with the test?

Hi @vadasambar, could you please fix the conflicts and resolve the issue with the test?

Planning to do that. Sorry, a little busy with something else this week.

Need approval to run the workflow :pray:

Sorry for the delay in addressing comments. Need another approval to run the workflow :pray:

I will re-request the reviews once the workflow passes and I fix any issues with the workflow.

I will re-request the reviews once the workflow passes and I fix any issues with the workflow.

@vadasambar   Please also address the pending reviews

Re-requested review. I have covered the points I could think of (if you find anything missing or if you have any feedback please mention me :pray:).

I will re-request the reviews once the workflow passes and I fix any issues with the workflow.

@vadasambar Please also address the pending reviews

I thought I addressed all of them. Did I leave out something?

@vadasambar only 1 minor issue according to the CI: Error: pkg/sync/filepath_sync.go:102:6: func yamlToJSON is unused (unused)

@vadasambar FYI, you should be able to run make test and make lint locally to confirm that they are working instead of waiting on the CI runs.

@vadasambar only 1 minor issue according to the CI:
Error: pkg/sync/filepath_sync.go:102:6: func `yamlToJSON` is unused (unused)

Thank you for noticing that! Helped me fix a mistake in the code. Should be fixed now.

@vadasambar FYI, you should be able to run make test and make lint locally to confirm that they are working instead of waiting on the CI runs.

That's what I am using now. Noticed we had a make test after requesting the workflow run twice. Sorry about that!

@vadasambar  Other than highlighted "switch case" improvement, I think PR is ready.

@vadasambar Other than highlighted "switch case" improvement, I think PR is ready.

Your suggested way looks cleaner. Thanks for the feedback. I will update the PR by tomorrow. :pray:

@vadasambar Other than highlighted "switch case" improvement, I think PR is ready.

Your suggested way looks cleaner. Thanks for the feedback. I will update the PR by tomorrow. pray

Updated the code.

I will fix the linting error (forgot to run make lint locally before pushing my changes)

@vadasambar ./flagd start --uri file://home/todd/git/flagd/config/samples/example_flags.yaml  -e=yaml works as expected, but
./flagd start --uri file://home/todd/git/flagd/config/samples/example_flags.yaml errors. I think it would improve usability to default to the evaluator matching the file extension. Do you agree?

vadasambar

Detecting flag configuration format based on file extension is a great usability improvement. However, I think this require substantial code change as well as proper documentation.
I created a follow-up issue #240, where we could have dedicated focus on this

@vadasambar ./flagd start --uri file://home/todd/git/flagd/config/samples/example_flags.yaml -e=yaml works as expected, but
./flagd start --uri file://home/todd/git/flagd/config/samples/example_flags.yaml errors (I believe because in that case it anticipates JSON). I think it would improve usability to default to the evaluator matching the file extension. Do you agree?
What do you think @Kavindu-Dodan ?

Makes sense to me. :+1:

vadasambar

Detecting flag configuration format based on file extension is a great usability improvement. However, I think this require substantial code change as well as proper documentation.
I created a follow-up issue #240, where we could have dedicated focus on this

Thank you for creating the issue :pray:

Approving with #206 (comment)
Thanks again for all your effort, @vadasambar

Not at all. Thank you for the feedback and review :pray:

I think we need review from @AlexsJones to merge this PR (not sure if we want to keep it open until https://github.com/open-feature/flagd/issues/240 is done)

I think we need review from @AlexsJones

I think we need review from @AlexsJones to merge this PR (not sure if we want to keep it open until #240 is done)

I don't think we need to include that in this PR, it seems like something we can roll in later, but feel free to start working on it if you are interested.


Show different Assertion Frameworks and talk about Hamcrest not being included in JUnit 5 like it was in JUnit 4

JUnit5_05_AssertionFrameworks.java

Done!


Implement dynamic arithmetic precondition checks.

This implements precondition checking infrastructure, targeting shift operations first. Move requires that certain value preconditions hold dynamically for various arithmetic and bitwise operators. For example, the shift amount on shift operations must be less than the operand bit width. If a precondition fails, the code aborts at runtime.
Currently, we use move_core_types::vm_status::StatusCode::ARITHMETIC_ERROR, which is the same value the Move VM would return for these errors.
This also fixes an unrelated defect in Constant::int128 which was incorrectly constructing APInts from the wrong word order. Instead, we now use LLVMConstIntOfString to avoid byte order issues.
Remastered test results for move-ir-tests/bitwise.move to account for the dynamic checks.
Added a new runtime rbpf test to ensure that the range check indeed fires when the shift count is out of range (and doesn't fire if the value is in range).
Implementing preconditions for the remaining arithmetic operations will come in a follow-up patch.

Motivation
(Write your motivation for proposed changes here.)
Have you read the Contributing Guidelines on pull requests?
(Write your answer here.)
Test Plan
(Share your test plan here. If you changed code, please provide us with clear instructions for verifying that your changes work.)

Ping, any comments? Merge still blocked.

Good start!


DetailView Not Working on iPhones (iPad TBD)

Implemented basic code to start to add this functionality. Currently, it just changes the header text to the selected item.

Will probably need a new view altogether to get this working. Might change detailView in its entirety.

DetailView code now showing information on iPhones, but it is overlapped by the header element. Should be an easy fix? lol

Fixed Detail View Display Issue on iPhone:
•	Removed .background Modifier:
•	The .background modifier in the compact size class (iPhone) was causing the detail view to appear under the navigation bar. This has been removed, resolving the UI glitch on iPhone.


Change the fallback on Staking Management to forward to stakeICX method

Right now, if someone sends ICX to the staking contract it will accept it and give no sICX in return.
If we make the fallback invoke the stakeICX method there won't be a risk that users might do this and it would make minting sICX even easier.
Is there any unintended consequence to making this change?

Right now, if someone sends ICX to the staking contract it will accept it and give no sICX in return.
If we make the fallback invoke the stakeICX method there won't be a risk that users might do this and it would make minting sICX even easier.
Is there any unintended consequence to making this change?

Yes we can do that. We shouldn't face any issue on that. We will need to provide param of stakeICX function to while sending ICX directly too.


Overriding scheme colors?

Hi @gitbrent !
Thank you very much for all the work you've put into this project!
Lately I've been working on a project using this library and had a quite a pleasant time using it.
One of the tasks I had at hand is to override the default theme colors:

Looking at the current APIs https://gitbrent.github.io/PptxGenJS/docs/shapes-and-schemes.html#powerpoint-scheme-colors it appears to be read-only.
In PowerPoint itself, this is possible to customize through the Slide Master editor.
Having a rather limited knowledge of the pptx format, I poked around and compared the contents of the standard and slightly customized color scheme via saved pptx files and quickly discovered the color scheme is stored inside ppt/theme/theme1.xml:

I was thinking to prepare a PR with a new API, something in line of defineSlideMaster:
const pptx = new PptxGenJS();
pptx.defineThemeColors({
   accent1: 'FF40FF',
   ...
});

would something like be ok? And do you prefer a PR against the master or the version-3.0 branch?
Looking forward to your feedback!

Hi @igorski89
Thanks for the feedback.
I think this would be a very useful feature. You're correct in your assessment, we'll just need some new variables to hold the 6 Scheme and 2 Background colors and a method as you've shown allowing users to override any of the preset values.
Please use the version-3.0 branch as it's nearly complete and will be live soon.

hey @gitbrent  sorry to disturb you. I just had some time to develop this feature, started with a test project, switched to the version-3.0 branch in package.json:
"dependencies": {
    "pptxgenjs": "gitbrent/PptxGenJS#version-3.0"
  }

but when running my script I get the following exception:
/Users/igorievsiukov/code/betterppt/node_modules/pptxgenjs/dist/pptxgen.min.js:2
var PptxGenJS=function(d){"use strict";var n,a,i,e,R=914400,N=12700,g="\r\n",s=2147483649,o=/^[0-9a-fA-F]{6}$/,u=1.67,E={color:"666666"},F=[3,3,3,3],m={color:"888888",style:"solid",size:1},A="000000",y=12,f=18,t="LAYOUT_16x9",r="DEFAULT",v=[.5,.5,.5,.5],c={type:"outer",blur:3,offset:23e3/12700,angle:90,color:"000000",opacity:.35,rotateWithShape:!0},h="2094734552",b="2094734553",x="2094734554",C="2094734555",L="2094734556",P="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),T=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"],S=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"];(a=n=n||{}).left="left",a.center="center",a.right="right",a.justify="justify",(e=i=i||{}).b="b",e.ctr="ctr",e.t="t";var p,l,w,B,I,O,D,j,k,M,U,z,G="{F7021451-138

ReferenceError: JSZip is not defined
    at Object.<anonymous> (/Users/igorievsiukov/code/testpptx/node_modules/pptxgenjs/dist/pptxgen.min.js:2:189179)
    at Module._compile (internal/modules/cjs/loader.js:971:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1011:10)
    at Module.load (internal/modules/cjs/loader.js:822:32)
    at Function.Module._load (internal/modules/cjs/loader.js:730:14)
    at Module.require (internal/modules/cjs/loader.js:864:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/igorievsiukov/code/testpptx/index.js:3:19)
    at Module._compile (internal/modules/cjs/loader.js:971:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1011:10)

i double-checked and JSZip is installed in node_modules and is perfectly functional.
Google search didn't helped much, would you be able to help me with some guidance how to setup version-3.0 as a dependency for development and contribution?
Thank you very much in advance!

Hey, any status updates on this one? Would be interested in picking this up as I'm looking for this functionality myself :)


Multi-line text outputs

I don't see a way to render multi-line text outputs? Is there? Else can this be a feature request?

Just so I'm understanding: does this app show what you're talking about, that you'd expect a newline (<br/>) in the output between "some" and "words"

Yes. I think the answer is to use output_ui - I was looking at options on output_text.


using --user-data-dir=profilepath corrupts settings and remove all extensions

Launching with args:
	const browser = await puppeteer.launch({
	  headless: false,
	  args: ['--user-data-dir=/pathtoprofile/'],
	});

Will override some files and removes all extensions from the chrome profile + alerts for "settings corrupted" at chrome://settings screen.

Might be related to #411, and might be related to some headless specifics

This should be fixed on tip-of-tree.

Ah no, requires more testing.

I'm still seeing this exact behavior in version 0.13.0 on OSX.

@kaytwo can you please file another issue with a step-by-step scenario? It will help us reproduce your issue locally.

#1404


Can't use assets in a SPA without proxy

The problem is with the esbuild-html-plugin.
I have a script defined in my HTML entry point like this:

If I use my app as a SPA, this script path is appended to the app's URL, like:
https://example.com/some/path/index-23434.js
whereas it should be in the root folder: https://example.com/index-23434.js
Currently the only way out is to use a proxy, which I don't want to.
The plugin should allow setting paths to assets like this:
<script src="/index.js> (with the forward slash, indicating that whatever name it eventually gets, it's always available from the root)
Currently the plugin just ignores such assets.

I will look at this, in the meantime I am wondering if using a <base href="/"> in your <head> would fix the issue and if it would be a suitable solution for your SPA.


feat(minifier): implement folding String.prototype.replace

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#6871
#6870  👈
#6869
main

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

Join @camc314 and the rest of your teammates on  Graphite


Could you provide a gemm kernel?

Could you provide a gemm kernel?

GEMM: https://github.com/HazyResearch/ThunderKittens/tree/main/kernels/matmul/H100


operator [O] kubecost (1.106.0)

Thanks for submitting your Operator. Please check the below list before you create your Pull Request.
This PR disables (comments out) the metadata annotation used for displaying the Kubecost operator specific to versions of OCP.
New Submissions

[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Have you considered whether you want to use semantic versioning order?
[ ] Is your submission signed?
[ ] Is operator icon set?

Updates to existing Operators

[ ] Did you create a ci.yaml file according to the update instructions?
[ ] Is your new CSV pointing to the previous version with the replaces property if you chose replaces-mode via the updateGraph property in ci.yaml?
[ ] Is your new CSV referenced in the appropriate channel defined in the package.yaml or annotations.yaml ?
[ ] Have you tested an update to your Operator when deployed via OLM?
[ ] Is your submission signed?

Your submission should not

[ ] Modify more than one operator
[ ] Modify an Operator you don't own
[ ] Rename an operator - please remove and add with a different name instead
[ ] Modify any files outside the above mentioned folders
[ ] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[ ] Description of the managed Application and where to find more information
[ ] Features and capabilities of your Operator and how to use it
[ ] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[ ] Human readable name and 1-liner description about your Operator
[ ] Valid category name1
[ ] One of the pre-defined capability levels2
[ ] Links to the maintainer, source code and documentation
[ ] Example templates for all Custom Resource Definitions intended to be used
[ ] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file an issue against this repo and explain your need
2 For more information see here

/ok-to-test

This PR only removes an annotation which allows Kubecost to show on all OCP versions. This is safe.

/merge possible

/hold cancel

/test 4.15-deploy-operator-on-openshift

/merge possible


Use WeakValueDictionary to fix generic memory leak

Closes https://github.com/pydantic/pydantic/issues/6672

@dmontagu it seems the leak is still present when model also defines a field_validator. So try to add the same test but this time change the Outer to include a field_validator:
        class Outer(PydanticModel, Generic[C]):
            c: Inner[int, C]

            @field_validator("c", mode="before")
            @classmethod
            def _validator(cls, val: Any, info: FieldValidationInfo) -> Any:
                return val

Test also fails when using model_validator.
Weird...

@MarkusSintonen it looks like the latest version of pydantic-core should have addressed your latest leak issue.
I'm wondering now if maybe that PR will render this "fix" unnecessary.. @davidhewitt is there any reason I shouldn't be able to use the main branch of pydantic-core with this branch and see if this memory leak has gone away?

it looks like the latest version of pydantic-core should have addressed the leak described in your previous comment — any chance you could confirm? (If that's annoying to do don't worry about it, I can make sure.)
I'm wondering now if maybe that PR will render this "fix" unnecessary..

I used commit that bumps pydantic-core to run some of our tests. For me it partially fixes the issue but not fully. So it seems both are needed, the fix now in master having latest pydantic-core and this one fixing issues with __pydantic_parent_namespace__. The issues to me seem two different sources of possible leaks.
I used both this branch and above master commit in a fork. Verified that also __pydantic_parent_namespace__ is required.
Would recommend you on verifying with the unit tests that issue gets fixed. The tests in this branch should not pass in the linked master commit.

In principle you can use pydantic-core main by updating the pdm dependency here and running in CI, but I think in practice we need to tweak CI a bit to make that work effortlessly.
However in this case, no need, as the fix is already landed in main courtesy of pydantic-core==2.3.1.

This is approved and I think ready to merge. @MarkusSintonen is there any reason not to merge this now? If not, I think it can get into today's release.

This is approved and I think ready to merge. MarkusSintonen is there any reason not to merge this now? If not, I think it can get into today's release.

@dmontagu good to go by me, thanks!

thank you all for this.


SVGO Dependency generating errors

Hi,
CSS Nano has a dependency on postcss-svgo.
"postcss-svgo": "^2.1.1"

The latest version of postcss-svgo (2.1.5) is now causing an npm error (node v0.12.7), whereas 2.1.4 appeared to be fine.
The error is:
node_modules/cssnano/node_modules/postcss-svgo/node_modules/svgo/plugins/cleanupIDs.js:123
    for (var ID of referencesIDs) {

I've logged an issue with postcss-svgo (https://github.com/ben-eb/postcss-svgo/issues/48) but also creating this issue for reference in case anyone else comes across this issue.

Seeing the same thing here.

Seeing the same thing from what I believe to be the gulp-cssnano npm package. It has a dependency of "cssnano": "^3.0.0"

I already responded in https://github.com/ben-eb/postcss-svgo/issues/48, but what might also help is an SVG example that can reproduce this issue.

svgo 0.7.1 is out so I'm going to close this.


Issues/104/caution what to do next

Types of changes

Bug fix (non-breaking change which fixes an issue)
Code cleanup / Refactoring

Description

Updated caution warning box for preview section. Updated icon and warning message. Desktop and mobile friendly.

Motivation and Context

Caution box needed to be updated for new UI design.
How Has This Been Tested?

Manual testing. Changes don't interrupt code.
Checklist:

[] I have updated the documentation accordingly
[] I have written unit tests

Fixes request-yo-racks/web#104

Review @rgreinho

Here are the changes that I made to fix it:
diff --git a/src/my-view1.html b/src/my-view1.html
index c626c3f..670f501 100644
--- a/src/my-view1.html
+++ b/src/my-view1.html
@@ -133,13 +133,13 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
       }

       .warning-box iron-icon {
-        font-size: 2em;
-        min-width: 24px;
+        --iron-icon-height: 3em;
+        --iron-icon-width: 3em;
         margin-right: 10px;
       }

       .warning-box p {
-        display: inline;
+        display: block;
         text-align: center;
       }

@@ -183,18 +183,13 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
           --app-grid-expandible-item-columns: 1;
         }
         .warning-box iron-icon {
-        /*
-        font-size: 20em;
-        min-width: 30px;
-        margin-right: 20px;*/
-        --iron-icon-height: 32px;
-        --iron-icon-width: 32px;
-        --iron-icon-fill-color: red;
-
+          --iron-icon-height: 48px;
+          --iron-icon-width: 48px;
+          display: block;
         }

         .warning-box p {
-          display: inline;
+          /* display: block; */
           text-align: justify;
         }
       }
@@ -258,8 +253,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN

           <iron-icon icon="vaadin:info-circle-o"></iron-icon>
-
Make sure the business you chose supports your request. Without it, the request will be not be processed.
-            There is no guarantee that the bike rack will be installed.

+
Make sure the business you chose supports your request. Without it, the request will be not be processed. There is no guarantee that the bike rack will be installed.


[BotW] Resize letters box to make text less blurry

For many cutscenes the game draw the subtitles on a 500x94 box first and apply the box with the letters onto the screen. Resized the box to make subtitles less blurry.
Text bloom/effect use another 560x150 box, it's good not having to resize it.

The pop up message is also sharper after resizing, but looks like it might have been over-sampled a bit.

Trying to resize Hyrule Compendium text boxes, it's a mess, rule for this one's box catches catches another text's bloom, resizing the bloom then further catches something else...
rules.txt
No resize

Upscaled. text, ancient gear and giant ancient core icons

the icons use 96x96 texture while being 58x58


Broken mirror reflections in Widescreen version

The mirror reflection are completely broken on the widescreen version on my PS2 SCPH-70002 during cutscenes. The ghost doesn't briefly appear behind Miku before disappearing in her first cutscene.
Non-widescreen versions has no issues.

Does it also happen on PCSX2 or only on real hardware? How are you loading the game? Hardmod? Softmod (OPL, MC2SIO, etc.)?

Tested it on my SCPH-7002 PS2 Slim with IDE resurrector mod and my CECHA01 PS3 and both produce the issue.
Haven't tested on PC

I think I found out what's happening. As for why it's happening I'm going to need more time to make a proper fix, but as a quick fix you can open the undubbed iso with a hex editor of your choice, go to address 0x287340, and change C0 to 00.

Great to hear. Unrelated but do you know if a fix for the subtitle timing is in the works? In both your and wagrenier's undubs the subtitles can't keep up dialogue in many cutscenes (including the opening cutscene).

Short answer, not in the near future. Long one, that's something that has been bothering me for the longest time and always wanted to fix. I actually know where the game looks for the timings and how to change them. The thing is it's a LOT of work to find the correct timings for all the cutscenes and I don't think I'll ever have the time to do that by myself. The idea is to make a small gui to browse all the timings and allow for modifications so that whoever wants to help can do it without any technical knowledge of the game. I'll eventually do that but I don't have an ETA at the moment.

Ok. I tried changing the code in the hex and it didn't work (mirror reflections are still broken). Do you know when the next patch will be released?

Can't find the code in the hex editor.
Searched for "0x287340" and nothing comes up

Can you tell me what hex editor you used?

0x287340 is the address you need to jump to to change the byte. If you are on Windows I suggest HxD. After opening the undubbed iso navigate to the menu "Search > Go to" enter 287340 in the offset field and click OK:

You should see something like this:

You should see the byte C0 (note the offset on the left and in the bottom in the status bar) I have highlighted in the screenshot. Change it to 00:

(HxD will show the unsaved changes in red) and save ("File > Save"). HxD will probably create a backup, you can delete that.
Try and let me know.

That fixed it thanks

Tested on my A01 PS3

Is there any chance you'll make widescreen patches for the 2nd and 3rd games?

Glad that it worked.
As for FF2 and FF3, no I don't plan on doing them. You can try to do them yourself though. Go to the PCSX2 patches github and find the patches for FF2 and FF3. They may have widescreen patches inside (or take them directly from the forum, it seems they do have widescreen support as the screenshots suggest!). Try them in PCSX2 and when you are happy with the results try applying them to the ISO using the PS2 Patch Engine. Not all patches can be applied but it's worth a shot.
I'm going to leave this issue open until I find a proper fix for the bug.


Meet the team: remove Melanie

Remove Melanie from Meet the team after her last day.

No work needed. Melanie was not on Meet the team.


Move Linguist::Language.detect to Linguist.detect

It has always bothered me that the main public method for linguist was buried in the Language class in the middle of a bunch of other internal methods.
This renames Linguist::Language.detect to Linguist.detect and deprecates the old method. Thoughts?
Since this is a new method, I would recommend we release this in 4.6.0, and then remove the deprecated method in 5.0.
/cc @arfon @pchaigno @larsbrinkhoff

:+1:

Great!  I was just now roaming around those areas, not finding detect where I expected it to be.  This is much better.

:+1: - yeah, this has always seemed awkward to me also.

Since this is a new method, I would recommend we release this in 4.6.0, and then remove the deprecated method in 5.0.

:+1:

Since this is a new method, I would recommend we release this in 4.6.0, and then remove the deprecated method in 5.0.

@bkeepers - we're currently at v4.7.6 so would you suggest bumping to v4.8.0 for this change?

:+1:


couldn't start; docker image doesn't exist

I followed the steps to install OpenSlides exactly as described on the page (https://github.com/OpenSlides/OpenSlides/blob/stable/3.4.x/README.rst#installation). When I got to the last step and wanted to start the software with "docker-compose up" I get an error message. It reads: "Error response from daemon: pull access denied for openslides/openslides-client, repository does not exist or may require 'docker login': denied: requested access to the resource is denied".

It doesn't work after docker login either.
Now when I search Docker itself for openslides/openslides-client, I find that it does not exist.
What can I do now? Or have I made a mistake at some point?
Thanks in advance. :)
System information

OpenSlides version: i think 3.4.x
Device: Notebook
OS: Windows 11

did you figure this out? If you are still stuck, what is your output for ls and pwd?

Hello schlich,
thank you for your answer. No, unfortunately I have not yet found out what the problem is. I must also admit, I do not have the greatest idea about computers and programming.
When I enter the command ls, I get the output build.sh* docker-compose.dev.yml docker-compose.yml docker-compose.yml.m4 docker-stack.yml.m4 postgresql.dev.conf secrets/ . When I enter the pwd command, I get the output /c/Users/#####/OpenSlides/docker .

I tried to install version 3 because, for one thing, I was directed to version 3.4 from the official OpenSlides site (https://openslides.com/de), and didn't question this initially. In addition, however, also that I could not really do much with the installation instructions of version 4 and was also a little overwhelmed with it.
Thank you in advance. :-D

Please try to install OpenSlides4. OpenSlides3 is no longer maintained and has limited support from our side.


3D model appears black

Description
I am facing the same issue with one of my models (.glb). below is the link to download the same. Can this one be re-opened please?
https://drive.google.com/file/d/1H_xq6xqd7s9jht8i1ZmIvZXe11NflPeB/view?usp=sharing
my model appears like this

My code
Code
<model-viewer
seamless-poster shadow-intensity="1"
data-name="sample model"
ar
background-color="#ffffff"
ar-modes="scene-viewer quick-look"
src="assets/models/sample.glb"
ios-src="assets/models/sample.usdz"
alt="A 3D model" auto-rotate camera-controls>
</model-viewer>

Version

model-viewer: v1.9.0

Browser Affected

[X] Chrome, version: 94.0.4606.81 (Official Build) (x86_64)

OS

[X] MacOS

AR

[X] WebXR
[X] QuickLook

Same here. The quick look shows the (black) glb model even if ios-src is given.

So what is the solution? should I change the model or should I ask the designer to send an updated model? What exactly do you mean by gab-version version?

@C-7 So what is the solution? should I change the model or should I ask the designer to send an updated model? What exactly do you mean by gab-version version?
Sorry, auto-correct issue, 'gab' should read 'glb'.
It really seems to be a problem with the model (at least for me) but I can't test on Android devices today.  I have this issue (black) with a relatively large 3D scan https://ǝǝ.com/000 but it works very well with a smaller model https://ǝǝ.com/07g
Was assuming that is it a library issue when I came across your comment. I am not involved in the development of model-viewer, so I can't help with that. Perhaps, ist an model issue, try with another one.

Tried with another .glb model but the same issue persists


Fix the All Contributors badge in the README.md

Add some space between
[![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-)

and the Start and End of the badge, because now all you can see is line of code
[![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-)

instead of the Badge
im sorry i didn't see that there was already a pull requests about this in #81

App logo was centered-aligned. And badges should also be centered-aligned. And we should slowly add more badges.

@0RaMsY0 can you try to add someone from contributors as a reviewer?

@dinurymomshad i am sorry i don't know how to do that,

@dinurymomshad i am sorry i don't know how to do that,

Can you centre align the badges and logo?

@dinurymomshad yes i can

@dinurymomshad here is the pull requests to center the logo and the badge #88


Small typo error in apidoc.php - Word declaratons should be renamed to declarations

 'public/docs',

    /*
     * The router to be used (Laravel or Dingo).
     */
    'router' => 'laravel',

    /*
     * Generate a Postman collection in addition to HTML docs.
     */
    'postman' => true,

    /*
     * The routes for which documentation should be generated.
     * Each group contains rules defining which routes should be included ('match', 'include' and 'exclude' sections)
     * and rules which should be applied to them ('apply' section).
     */
    'routes' => [
        [
            /*
             * Specify conditions to determine what routes will be parsed in this group.
             * A route must fulfill ALL conditions to pass.
             */
            'match' => [

                /*
                 * Match only routes whose domains match this pattern (use * as a wildcard to match any characters).
                 */
                'domains' => [
                        '*',
                    // 'domain1.*',
                ],

                /*
                 * Match only routes whose paths match this pattern (use * as a wildcard to match any characters).
                 */
                'prefixes' => [
                    'api/auth/*',
                    'api/mobile/*',
                ],

                /*
                 * Match only routes registered under this version. This option is ignored for Laravel router.
                 * Note that wildcards are not supported.
                 */
                'versions' => [
                    'v1',
                ],
            ],

            /*
             * Include these routes when generating documentation,
             * even if they did not match the rules above.
             * Note that the route must be referenced by name here.
             */
            'include' => [
                // 'users.index',
            ],

            /*
             * Exclude these routes when generating documentation,
             * even if they matched the rules above.
             * Note that the route must be referenced by name here.
             */
            'exclude' => [
                // 'users.create',
            ],

            /*
             * Specify rules to be applied to all the routes in this group when generating documentation
             */
            'apply' => [
                /*
                 * Specify headers to be added to the example requests
                 */
                'headers' => [
                     'Authorization' => 'Bearer: {token}',
                    // 'Api-Version' => 'v2',
                ],

                /*
                 * If no @response or @transformer declarations are found for the route,
                 * we'll try to get a sample response by attempting an API call.
                 * Configure the settings for the API call here,
                 */
                'response_calls' => [
                    /*
                     * API calls will be made only for routes in this group matching these HTTP methods (GET, POST, etc).
                     * List the methods here or use '*' to mean all methods. Leave empty to disable API calls.
                     */
                    'methods' => ['GET'],

                    /*
                     * For URLs which have parameters (/users/{user}, /orders/{id?}),
                     * specify what values the parameters should be replaced with.
                     * Note that you must specify the full parameter, including curly brackets and question marks if any.
                     */
                    'bindings' => [
                        // '{user}' => 1
                    ],

                    /*
                     * Environment variables which should be set for the API call.
                     * This is a good place to ensure that notifications, emails
                     * and other external services are not triggered during the documentation API calls
                     */
                    'env' => [
                        'APP_ENV' => 'documentation',
                        'APP_DEBUG' => false,
                        // 'env_var' => 'value',
                    ],

                    /*
                     * Headers which should be sent with the API call.
                     */
                    'headers' => [
                        'Content-Type' => 'application/json',
                        'Accept' => 'application/json',
                        // 'key' => 'value',
                    ],

                    /*
                     * Query parameters which should be sent with the API call.
                     */
                    'query' => [
                        // 'key' => 'value',
                    ],

                    /*
                     * Body parameters which should be sent with the API call.
                     */
                    'body' => [
                        // 'key' => 'value',
                    ],
                ],
            ],
        ],
    ],

    /*
     * Custom logo path. Will be copied during generate command. Set this to false to use the default logo.
     *
     * Change to an absolute path to use your custom logo. For example:
     * 'logo' => resource_path('views') . '/api/logo.png'
     *
     * If you want to use this, please be aware of the following rules:
     * - size: 230 x 52
     */
    'logo' => false,
];

Codecov Report

Merging #400 into 2.x will increase coverage by 1.66%.
The diff coverage is 91.6%.

@@             Coverage Diff              @@
##                2.x     #400      +/-   ##
============================================
+ Coverage     89.66%   91.32%   +1.66%
+ Complexity      227      204      -23
============================================
  Files             7       10       +3
  Lines           726      519     -207
============================================
- Hits            651      474     -177
+ Misses           75       45      -30

Impacted Files
Coverage Δ
Complexity Δ

src/Tools/LumenRouteAdapter.php
0% <0%> (ø)
1 <1> (?)

src/Commands/UpdateDocumentation.php
23.07% <0%> (ø)
3 <0> (?)

...c/Tools/ResponseStrategies/ResponseTagStrategy.php
100% <100%> (ø)
6 <6> (?)

src/Tools/ResponseResolver.php
100% <100%> (ø)
7 <7> (?)

src/Postman/CollectionWriter.php
88.46% <100%> (ø)
12 <2> (?)

src/Commands/GenerateDocumentation.php
94.69% <85.29%> (ø)
35 <6> (?)

...ols/ResponseStrategies/TransformerTagsStrategy.php
86.04% <86.04%> (ø)
23 <23> (?)

src/Tools/Generator.php
93.79% <93.79%> (ø)
63 <63> (?)

.../Tools/ResponseStrategies/ResponseCallStrategy.php
94.69% <94.69%> (ø)
38 <38> (?)

src/Tools/RouteMatcher.php
97.29% <97.29%> (ø)
16 <16> (?)

... and 9 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update eafed80...7d4e6f3. Read the comment docs.

Can't merge this. It's to the wrong branch. Good call on spotting the typo, but please always double-check your ORs before submitting them.


can I use data which fs=512？

I'm sorry to bother you again. As you can see can I use fs=512 data for direct staging? If I use your code and don't make any changes.Thanks for your reading in advance.: )

It should work fine given that your input signal has the sampling rate of 512Hz.
Please also make sure that your machine have enough space to support a larger network (by setting fs=512 will make the network larger).

haha... I use my teacher's machine. It's powerful. But do you mean I need to retrain the model?And I have one more question .I predict that one fold is needed but I don't understand why 20 folds should be trained? I just made a summary of your project. I didn't really practice the latter.I'd appreciate it if you would explain it to me. Your previous answer helped me a lot. And make me learn more. Thank you so much .  ：）


Support for EBCDIC character set

The official ISO8583-1987 spec references EBCDIC as the character set of choice to encode messages. Certain card schemes also require this.
Could we extend support for this character set?
How far has ASCII taken users of this lib when integrating with card schemes with regards to message flows?
Am I correct in thinking that it only requires implementation of the encoding/Encoder and prefix/Prefixer interfaces to support this?

@krishishah you are right. The idea is to add encoder and prefixer using needed encoding.

Some ideas from a fork.
Added EBCDIC encoding for Alphanumeric, llvar, and lllvar types https://github.com/mlioo/iso8583/commit/65888ce87ba483c3f2c82a4ea7531c2ae1a5d532
Added missing const for ebcdic
https://github.com/mlioo/iso8583/commit/40c831a2ab1a7eb5fa9b7997507dfc52e44c80a9


Feature Request: make getFrameHtmlResponse populate og:image metadata

Describe the solution you'd like
Instead of using nextjs pages and <FrameMetadata /> for the first frame, it can be useful to use a route, and a GET request. This minimizes the number of page.tsx needed for a frame project.
For example what we are doing here: https://github.com/papercliplabs/frames/blob/main/src/app/auction/[dao]/route.tsx#L6
But, in order for the image to load from the first GET request in a frame, og:image must be provided in the metadata.
To solve this, it would be great if getFrameHtmlResponse included the og:image metadata.
For example like we did here: https://github.com/papercliplabs/frames/blob/main/src/utils/metadata.tsx#L22

Another minor nit in comparing getFrameHtmlResponse with our generateFrameMetadata function is formatting of the metadata output
onchainkit's getFrameHtmlResponse output:
<!DOCTYPE html><meta property="fc:frame" content="vNext" /><meta property="fc:frame:image" content="https://rnznv-2600-1700-7be1-630-9143-9b9f-ae38-fdd.a.free.pinggy.link/images/nouns-auction-house.png" /><meta property="fc:frame:button:1" content="View auction!" /><meta property="fc:frame:button:1:action" content="post" /><meta property="fc:frame:post_url" content="https://rnznv-2600-1700-7be1-630-9143-9b9f-ae38-fdd.a.free.pinggy.link/auction/nouns" />

our generateFrameMetadata output:
<!DOCTYPE html>

	<meta property="og:image" content="https://frames-rouge.vercel.app/images/nouns-auction-house.png" />
	<meta property="og:title" content="Nouns DAO" />
	<meta property="og:description" content="One Noun everyday, forever!" />
	<meta property="fc:frame" content="vNext" />
	<meta property="fc:frame:image" content="https://frames-rouge.vercel.app/images/nouns-auction-house.png" />
	<meta property="fc:frame:post_url" content="https://frames-rouge.vercel.app/auction/nouns" />
	<meta property="fc:frame:button:1" content="View auction!" />
	<meta property="fc:frame:button:1:action" content="post" />

The latter is much easier to read and debug!
Describe alternatives you've considered.
No response

See it is also mentioned in this issue: https://github.com/coinbase/onchainkit/issues/44

Sweet, let me take care this today!

@spennyp but there is an argument to be made, that the flatten part should be optional, and let the developer pick when do it 🤔

Ah yea fair, I'd say don't worry about the output part!

Solved with v0.6.1.
Ready for your next wish :)


Use standard guardian tasks, not a manual script

The script used a specific version, but guardian revs all the time.

Well, never mind. The built-in tasks pass a bogus (outdated?) flag --severity so I just used dir with a glob to run all the versions on disk, which will hopefully be only one.


Add posibility to parse multiple line definitions

Supersedes #225
Fixes: #155 No warning with lines - Solved in a different manner to show why something matches and on which setting.
Fixes: #224 Support for multiple lines using lines plugin - With addition of line contentating.
Fixes: #186 Support for multiple line groups in a template
Fixes: #238 Is there a support for multiple regex for lines plugin?
Closes: #377 Parse Multiple lines in the same field
Refactored code to allow multiple lines to be parsed.
Restructuring was needed.
As we want to output the lines in the order of the invoice file.
Independent of the order of the template file.
Example yaml input
lines:
 - start: Barcode
   end:  Netto totaal
   line: (?P<line_note>(FOOD))
 - start: Barcode
   end:  Netto totaal
   line: (?P<description>(.+))\s+(?P<price>\d+\d+)

it is also possible to contentate multi line tags.
alternative example sammymaystone.
    lines:
     - start: Item\s+Quantity\s+Rate\s+Amount
       end:  Subtotal
       first_line: 'Service (?P<item>\w)\s+(?P<qty>\S+)\s+.(?P<unitprice>\d+.\d{2})\s+.?(?P<linetotal>\d+.\d{2})'
       line: '(?P<item>.*)'
       skip_line: ['Pino \w'] # 'Description:', Notes:,
       last_line: '(?P<desc>Parts:.*)'
       types:
         qty: int
         unitprice: float
         linetotal: float

input:
Service A                                                                 12                      0.00         20.00
Description: Repair
Notes: Replaced capacitor
Parts: 1 x cap_a
Tax: 0.2%

output:
 {'item': 'A\nDescription: Repair\nNotes: Replaced capacitor', 'qty': 12, 'unitprice': 10.0, 'linetotal': 120.0, 'desc': 'Parts: 1 x cap_a'}

Thanks for the contribution! Will test this locally first.

Test should pass. Linting in this case.

Flake8 was not willing to install on my local system.
So fixed the errors manually. Could'nt test, but flake8 should be happy now.

@m3nu  Should be fixed now, can you trigger the tests?

I'm quite a bit confused by this pull request. I'm not sure what does it do and what are you trying to fix/improve.

A single commit modifying hundreds of lines is hard to follow. It'd be nicer to have few smaller commits that can be reviewed properly.
You referenced issues that may be resolved already (https://github.com/invoice-x/invoice2data/issues/224 actually is)
Your examples and - what's worse - updated documentation uses the old syntax, please use the parser: lines form

Please start with explaining your case.

Are you dealing with multiple invoice sections that need to be parsed with lines?
Are you dealing with a single invoice section that contains lines of multiple formats?

That example you provided ("Service A") could be parsed without this pull request so it doesn't really help to understand your changes.

I'm quite a bit confused by this pull request. I'm not sure what does it do and what are you trying to fix/improve.

This contribution allow to parse all the invoice lines against different regexes.
I'm sorry, I was unable to do it in a smaller commit.
Basically it is a continuation of 225, but then ported to your contribution of the lines refactoring.
Simply put, each invoice line is tested against a setting which is calling the parser.
Invoice2data is used as a module for the importing of invoices in Odoo.
Previously it was not possible to import multiple lines in the desired format.
This also explains the contentation function. Will try to explain better.
In the input we have
Service A                                                                 12                      0.00         20.00
Description: Repair
Notes: Replaced capacitor
Parts: 1 x cap_a
Tax: 0.2%

Let's call that for now a section.
That section consists of multiple lines.
Lets focus on the description elements. Suppose in the ERP we need the following:
In the tag
item  we need a Multiline description, by which the lines are separated by \n
Earlier it was not possible to achieve that. But with this commit we can generate in the lines tag:
'item': 'A\nDescription: Repair\nNotes: Replaced capacitor'
Thus, information parsed from multiple input lines, can be combined in a single tag.
With the alternative syntax, introduced by #308 (what you call new) it was not possible to create the desired output.
Therefore I would vote against the "new" syntax, because of breaking compatibility. (There are users with their own private templates)
And in my opinion it would be more difficult to generate the template lines from  template creator.
(A template creator module is something I am working on, currently only exists in notes and in my mind)
If it was my decision, I would revert the "new" syntax. But hey, it is open source. It was quite cumbersome to also support the newly introduced alternative syntax. But decided to put in the extra hours, as maybe some people beside yourself started using it. So now users will have a choice which one to use.
In the "old" syntax all the line info was captured in the lines tag.
However, by the introduction of the "new" syntax it is possible to choose your own tag.
Like in the provided example com.sammymaystone.yaml. Instead us using
   lines:
    parser: lines
    start: 'Item\s+Quantity\s+Rate\s+Amount'
    first_line: 'Service (?P<item>\w)'
    line: '(?P<desc>.*)'
    skip_line: ['Description:', "Notes:"]
    last_line: '(?P<desc>Parts:.*)'
    end: 'Subtotal'

it reads (note the line_items ):
  line_items:
    parser: lines
    start: 'Item\s+Quantity\s+Rate\s+Amount'
    first_line: 'Service (?P<item>\w)'
    line: '(?P<desc>.*)'
    skip_line: ['Description:', "Notes:"]
    last_line: '(?P<desc>Parts:.*)'
    end: 'Subtotal'

The added flexibility may look as an improvement on first hand.
IMO, it is one step further away from a standard solution.
Now we get users using the lines tag and line_items and whatever variation users come up with.
Thus templates are not that easy to be universally transferred.
This is more an issue, for the "standard field names" discussion / PR but it is closely related/
If we want to translate the output from this module to an ERP in the field lines_erp, now to create a mapping entry for
lines to lines_erp
line_items to lines_erp
whatever_someone_makes_up to lines_erp
Sorry, getting a bit late at night typing this. I don't fully recall how the response is with your "new" syntax and contentating.
As in my use case, what you call the "old" syntax is used. In the output I need only one lines tag containing all the line items.
(see first post).
Not:
{'lines': {'all items matching the first parser call'}}

{'lines': {'all items matching the second parser call'}}

To add we want the lines output to be in the same order as they where found in the original input file.
So as the ERP re-assembles the invoice, we can do a full side by side compare and all the line items are matching. :+1:
Didn't have the time to do it. But I really want to revert back the "new" syntax.
Or at least the "bad" sammy maystone example. As people may start to use it as a base for creating their own templates and only adding to the confusion.
Hope this is more clear. It's Getting to late now, will continue/improve this post later on :sleepy: :zzz:

With this PR it is also possible to use multiple configuration for the lines parser.
Using the "alternative" syntax that is not possible, limited by Yaml syntax constraint.
Yaml does not allow the same key to be used multiple times.
Quick example of correct syntax for multiple line configurations.
lines:
 - start: Barcode
   end:  Netto totaal
   line: (?P<line_note>(FOOD))
 - start: Barcode
   end:  Netto totaal
 - start: Barcode
   end:  Netto totaal
   line: (?P<barcode>(\d{13}))\s+(?P<name>(\w+(?:\s\S+)*))\s+(?P<qty>(\d))\s+(?P<uom>\w+)\s+(?P<price_unit>(\d+.\d+))\s+(?P<discount>\d+.\d+)

@m3nu Should be fixed now, can you trigger the tests?

Check running. Sorry for the delay.

Check running. Sorry for the delay.

NP!
The CI tests are failling. Gonna need some help and pointers why that's the case.
As I could not reproduce it locally.
Local tests are failling for different reasons:
Import Error on local unittests https://github.com/invoice-x/invoice2data/pull/380
FilenotfoundError https://github.com/invoice-x/invoice2data/issues/381
pdfminer not installed https://github.com/invoice-x/invoice2data/pull/379

local tests are passing, with some code changes.
(path related, will create PR)
But I get the impression that the local tests I'm running are slightly different from the CI tests.
So it's a bit of trail and error. Hope you don't mind triggering the CI a couple of times. In case the latest commit doesn't fix it.

@bosd: I feel you really don't like the new syntax, I'll have to argue a bit here.

I would vote against the "new" syntax, because of breaking compatibility

While I did my best not to beak backward compatibility, you claim I did. Please create a new issue providing details of YAML that stopped working for you after my changes. It's really important for me.

it would be more difficult to generate the template lines from template creator

I can't treat it as a serious argument against new syntax. It's about some unpublihsed software I can't even test. I can't imagine why it's so hard to generate a different YAML. Maybe your software needs some refactoring.

If it was my decision, I would revert the "new" syntax. But hey, it is open source.

Exactly, it's open source, please suggest a better soltuion for problems I attempted to resolve (resolved?) with my new syntax. Just reverting is not a solution.

However, by the introduction of the "new" syntax it is possible to choose your own tag.
Thus templates are not that easy to be universally transferred.

Invoice fields are not universally named. Line fields are not universally named. Yet you blame me for dropping one generic field name. Can't you see the real problem is way bigger and we need standarized names for way more fields than just lines?

It feels annoying to have you blaming one feature (syntax) and keeping that semi off-topic discussion here. If at least you could suggest another solution. I wasn't the only person what wanted reusable lines parser, but it seems you didn't even care to read referenced issues. https://github.com/invoice-x/invoice2data/issues/186 and https://github.com/invoice-x/invoice2data/issues/224 which you claim to fix were actually fixed by introducing parsers syntax.

You spent quite some time criticizing the new syntax but not so much explaining your changes. Can we take a step back and discuss what do we need to support, please?

You provided a following example of input invoice:
Service A                                                                 12                      0.00         20.00
Description: Repair
Notes: Replaced capacitor
Parts: 1 x cap_a
Tax: 0.2%

and expected parsing output:
 'item': 'A\nDescription: Repair\nNotes: Replaced capacitor'

I took a moment to create a fake invoice with following content:
Item Quantity Rate Amount
Service A                     12   0.00   20.00
Description: Repair
Notes: Replaced capacitor
Parts: 1 x cap_a
Tax: 0.2%
Subtotal 20.00

and wrote a simple YAML with following lines entry:
  lines:
    parser: lines
    start: 'Item\s+Quantity\s+Rate\s+Amount'
    first_line: 'Service (?P<item>\w)'
    line: '(?P<item>.*)'
    skip_line: [ 'Parts:', 'Tax:' ]
    end: 'Subtotal'

parsing results in:
'lines': [{'item': 'A\nDescription: Repair\nNotes: Replaced capacitor'}],

which is exactly what you expected.

So no changes to invoice2data are needed to parse that example invoice section you provided.
Can you provide an actual example of invoice section that:

Can't be parsed with existing invoice2data code
Can be supported with your changes

While I did my best not to beak backward compatibility, you claim I did.

Sorry, Should've been more clear. It is not broken. yet..
Moi point is aimed more at a comment the "old" syntax should be phased out in a year.

Can't you see the real problem is way bigger and we need standarized names for way more fields than just lines?

Yes, I agree the problems are bigger. But can't solve them all at once :) More PR's are coming.

I wasn't the only person what wanted reusable lines parser, but it seems you didn't even care to read referenced issues. #186 and #224 which you claim to fix were actually fixed by introducing parsers syntax.

I've looked in into those issues. Yet they did not resolve it for me.
I'll have to leave it at that for now as I'm just leaving a quick reply while commuting. Will do some more tests and provide an more extensive answer later on.

Can you provide an actual example of invoice section that:

Can't be parsed with existing invoice2data code
Can be supported with your changes

Yes, Will do
Ideally I would like to add more "advanced" examples.
(and an example included in this PR.)
I've made a set of templates but they are not ready to be committed yet. This PR is just a small step in getting them processed.
There is still some more work needed like:

Standard field names
Ability to parse HTML style table invoices

It's coming, just need more dev time :smiley:

Moi point is aimed more at a comment the "old" syntax should be phased out in a year.

Good point! Given how little maintainance it takes to keep old syntax support I think we should keep it as long as it doesn't cause serious development / maintenance problems.

Yes, Will do
Ideally I would like to add more "advanced" examples.
(and an example included in this PR.)

Perfect. I think we must have a real example to understand why this change is needed and review it properly. For me it's a really bad idea to merge code that we don't know what it's supposed to solve.

Ok, going back to the original issue in  https://github.com/invoice-x/invoice2data/issues/377
Parse Multiple lines in the same field.
When passing multiple line arguments in the template I won't get the desired outcome.
Made an fictitious Example of an invoice which cannot be parsed. It's inspired by a real wholesaler invoice.
Mekro.pdf
Template (old syntax):
# -*- coding: utf-8 -*-
issuer: Mekro
fields:
  amount: To Pay\s+(\d+.\d{2})
  amount_untaxed: Netto totaal[:]\s+(\d+[,]\d{2})
  date: Invoicedate\s.?\s+(\d{2}-\d{2}-\d{4})\s+\d{2}[:]\d{2}
  invoice_number: Invoicenumber[:]\s+(\S+)
  iban:
    parser: static
    value: NL44INGB0702593702
  partner_coc:
    parser: regex
    regex: '33166113'
  partner_website:
    parser: regex
    regex: mekro.nl
lines:
 - start: Barcode
   end:  Netto totaal
   line: (?P<line_note>(---FOOD ITEMS---))
 - start: Barcode
   end:  Netto totaal
   line: (?P<line_note>(---OTHER ITEMS---))
 - start: Barcode
   end:  Netto totaal
   line: (?P<barcode>(\d{13}))\s+(?P<name>(\w+(?:\s\S+)*))\s+(?P<qty>(\d))\s+(?P<uom>\w+)\s+(?P<price_unit>(\d+.\d+))\s+(?P<discount>\d+.\d+)
keywords:
  - Mekro
  - NL001799434B01
options:
  date_formats:
    - '%d %m %Y'
  currency: EUR
  languages:
    - en
  decimal_separator: ','

While running it against the code before this pr:
'''
Traceback (most recent call last):
File "/home/bosd/.local/bin/invoice2data", line 10, in
sys.exit(main())
File "/home/bosd/.local/lib/python3.7/site-packages/invoice2data/main.py", line 212, in main
res = extract_data(f.name, templates=templates, input_module=input_module)
File "/home/bosd/.local/lib/python3.7/site-packages/invoice2data/main.py", line 95, in extract_data
return t.extract(optimized_str)
File "/home/bosd/.local/lib/python3.7/site-packages/invoice2data/extract/invoice_template.py", line 218, in extract
plugin_func.extract(self, optimized_str, output)
File "/home/bosd/.local/lib/python3.7/site-packages/invoice2data/extract/plugins/lines.py", line 13, in extract
lines = parsers.lines.parse(self, "lines", self["lines"], content)
File "/home/bosd/.local/lib/python3.7/site-packages/invoice2data/extract/parsers/lines.py", line 20, in parse
settings.update(_settings)
ValueError: dictionary update sequence element #0 has length 3; 2 is required
'''
Ok, that template was using the 'old' syntax.
Let's do it again with the 'new' syntax template.
# -*- coding: utf-8 -*-
issuer: Mekro
fields:
  amount: To Pay\s+(\d+.\d{2})
  amount_untaxed: Netto totaal[:]\s+(\d+[,]\d{2})
  date: Invoicedate\s.?\s+(\d{2}-\d{2}-\d{4})\s+\d{2}[:]\d{2}
  invoice_number: Invoicenumber[:]\s+(\S+)
  iban:
    parser: static
    value: NL44INGB0702593702
  partner_coc:
    parser: regex
    regex: '33166113'
  partner_website:
    parser: regex
    regex: mekro.nl
## new test here
  lines:
    parser: lines
    start: Barcode
    line: (?P<line_note>(---FOOD ITEMS---))
    end: Netto totaal
  lines:
    parser: lines
    start: Barcode
    line: (?P<line_note>(---OTHER ITEMS---))
    end: Netto totaal
  lines:
    parser: lines
    start: Barcode
    line: (?P<barcode>(\d{13}))\s+(?P<name>(\w+(?:\s\S+)*))\s+(?P<qty>(\d))\s+(?P<uom>\w+)\s+(?P<price_unit>(\d+.\d+))\s+(?P<discount>\d+.\d+)
    end: Netto totaal
keywords:
  - Mekro
  - NL001799434B01
options:
  date_formats:
    - '%d %m %Y'
  currency: EUR
  languages:
    - en
  decimal_separator: ','

Result:
[
    {
        "amount": 15.5,
        "amount_untaxed": 5.5,
        "currency": "EUR",
        "date": "2021-01-11",
        "desc": "Invoice from Mekro",
        "iban": "NL44INGB0702593702",
        "invoice_number": "0/0(057)0004/041503",
        "issuer": "Mekro",
        "lines": [
            {
                "barcode": "2231012001992",
                "discount": "0,0",
                "name": "KROKETBROODJES",
                "price_unit": "1,00",
                "qty": "2",
                "uom": "KG"
            },
            {
                "barcode": "8713009019455",
                "discount": "0,0",
                "name": "Oil",
                "price_unit": "0,50",
                "qty": "3",
                "uom": "L"
            },
            {
                "barcode": "8713009019475",
                "discount": "0,0",
                "name": "Apple",
                "price_unit": "50,0",
                "qty": "1",
                "uom": "KG"
            },
            {
                "barcode": "8713009019375",
                "discount": "100,0",
                "name": "programmer",
                "price_unit": "50,0",
                "qty": "1",
                "uom": "Hour"
            },
            {
                "barcode": "0013009019475",
                "discount": "0,0",
                "name": "Sticker",
                "price_unit": "0,0",
                "qty": "1",
                "uom": "pce"
            }
        ],
        "partner_coc": "33166113",
        "partner_website": "mekro.nl"
    }
]

It parses :tada:
Much better, but it only parses using the last line setting in the template file.
Note The following is missing:
---FOOD ITEMS---
---OTHER ITEMS---
Thus it only seems to parse the last line definition block from our template.
(Actually it parses all, but overwrites the output.)
Now, lets use the "new syntax" template with the code in this pr:
[
    {
        "amount": 15.5,
        "amount_untaxed": 5.5,
        "currency": "EUR",
        "date": "2021-01-11",
        "desc": "Invoice from Mekro",
        "iban": "NL44INGB0702593702",
        "invoice_number": "0/0(057)0004/041503",
        "issuer": "Mekro",
        "lines": [
            {
                "barcode": "2231012001992",
                "discount": "0,0",
                "name": "KROKETBROODJES",
                "price_unit": "1,00",
                "qty": "2",
                "uom": "KG"
            },
            {
                "barcode": "8713009019455",
                "discount": "0,0",
                "name": "Oil",
                "price_unit": "0,50",
                "qty": "3",
                "uom": "L"
            },
            {
                "barcode": "8713009019475",
                "discount": "0,0",
                "name": "Apple",
                "price_unit": "50,0",
                "qty": "1",
                "uom": "KG"
            },
            {
                "barcode": "8713009019375",
                "discount": "100,0",
                "name": "programmer",
                "price_unit": "50,0",
                "qty": "1",
                "uom": "Hour"
            },
            {
                "barcode": "0013009019475",
                "discount": "0,0",
                "name": "Sticker",
                "price_unit": "0,0",
                "qty": "1",
                "uom": "pce"
            }
        ],
        "partner_coc": "33166113",
        "partner_website": "mekro.nl"
    }
]

:tada:  No Difference!
Ok, new lets use the "old" syntax template with the code from this PR:
[
    {
        "amount": 15.5,
        "amount_untaxed": 5.5,
        "currency": "EUR",
        "date": "2021-01-11",
        "desc": "Invoice from Mekro",
        "iban": "NL44INGB0702593702",
        "invoice_number": "0/0(057)0004/041503",
        "issuer": "Mekro",
        "lines": [
            {
                "line_note": "---FOOD ITEMS---"
            },
            {
                "barcode": "2231012001992",
                "discount": "0,0",
                "name": "KROKETBROODJES",
                "price_unit": "1,00",
                "qty": "2",
                "uom": "KG"
            },
            {
                "barcode": "8713009019455",
                "discount": "0,0",
                "name": "Oil",
                "price_unit": "0,50",
                "qty": "3",
                "uom": "L"
            },
            {
                "barcode": "8713009019475",
                "discount": "0,0",
                "name": "Apple",
                "price_unit": "50,0",
                "qty": "1",
                "uom": "KG"
            },
            {
                "line_note": "---OTHER ITEMS---"
            },
            {
                "barcode": "8713009019375",
                "discount": "100,0",
                "name": "programmer",
                "price_unit": "50,0",
                "qty": "1",
                "uom": "Hour"
            },
            {
                "barcode": "0013009019475",
                "discount": "0,0",
                "name": "Sticker",
                "price_unit": "0,0",
                "qty": "1",
                "uom": "pce"
            }
        ],
        "partner_coc": "33166113",
        "partner_website": "mekro.nl"
    }
]

:sparkles::1st_place_medal:  Now we have a full json representation of the lines from the input file.

I'll try to review this this Sunday (Cc @m3nu)

This one depends upon: #394

Local tests are ok. Odd that there is a difference in tests.

Another test solved! :sparkles:
Only pdfminer issue left https://github.com/invoice-x/invoice2data/issues/402

This pull requests rewrites a lot of src/invoice2data/extract/parsers/lines.py code and is really hard for me to review properly. It also modifies parsers code to while focusing on syntax handled by the plugins code. I think those changes don't really belong here.
@bosd I know you spent a lot of time on this but could you please consider my possibly an alternative soluion: https://github.com/invoice-x/invoice2data/pull/407 , please? My changes should implement the same feature by just adding 15 new lines to the lines.py parser.
On top of my changes you can easily extend lines plugin syntax if you think we really need that, see https://github.com/invoice-x/invoice2data/pull/408

This pull request rewrites a lot of src/invoice2data/extract/parsers/lines.py code and is really hard for me to review properly.
True, it's quite a rewrite. It could even be further improved by dumping all the lines in an array. Possibly that would elliminate some of the for loops. (for loops are known for slowing python down)
But at this point I'm not willing to do that. As I already spent lot of time getting this functionality. (for now my focus is on getting data properly parsed instead of speed)

This one is ready! (Apart from the messy commits, propably easier to make a new branch and pr)

It also modifies parsers code to while focusing on syntax handled by the plugins code. I think those changes don't really belong here.
Can you explain this a bit more? I don't understnd what it modifies on the parser code.

Will have a look at those PR's :smile:

I've clearly missed some requirements, it seems we have a bit different cases after all.
I'll spend some time analyzing this today and tomorrow and come back to you. Sorry for this confusion.

Ok, going back to the original issue in #377 Parse Multiple lines in the same field.
When passing multiple line arguments in the template I won't get the desired outcome. Made an fictitious Example of an invoice which cannot be parsed. It's inspired by a real wholesaler invoice.

Thank you @bosd for this complete explanation of your case. I carefully read that and I believe I finally understand it fully.
By looking at your desired output it seems that you need to:

Parse 1 specific part of invoice containing multiple lines
Lines use two different formats

That syntax you proposed:
lines:
 - start: Barcode
   end:  Netto totaal
   line: (?P<line_note>(---FOOD ITEMS---))
 - start: Barcode
   end:  Netto totaal
   line: (?P<line_note>(---OTHER ITEMS---))
 - start: Barcode
   end:  Netto totaal
   line: (?P<barcode>(\d{13}))\s+(?P<name>(\w+(?:\s\S+)*))\s+(?P<qty>(\d))\s+(?P<uom>\w+)\s+(?P<price_unit>(\d+.\d+))\s+(?P<discount>\d+.\d+)

is quite confusing in my opinion. It's because you have there multiple (three) & repeated start and end entries. That suggests you want to parse 3 different blocks (parts) of invoice. As the same time you want them to be merged and put in the right order.
It's really hard for me to guess what should happen if you use start and end RegEx-es that match different parts of invoice. Parsing them would be fine but how to merge them in user-expected way?

It turns out it's already possible to parse your Mekro.pdf without any modifications to the project. I used:
fields:
  lines:
    parser: lines
    start: Barcode
    line: ((?P<barcode>(\d{13}))\s+(?P<name>(\w+(?:\s\S+)*))\s+(?P<qty>(\d))\s+(?P<uom>\w+)\s+(?P<price_unit>(\d+.\d+))\s+(?P<discount>\d+.\d+))|(?P<line_note>---(.*ITEMS)---)
    end: Netto totaal

(the trick is to use | in the lines RegEx).
That may not be perfect but gives output close to what you expected:
"lines": [
    {
        "barcode": "",
        "name": "",
        "qty": "",
        "uom": "",
        "price_unit": "",
        "discount": "",
        "line_note": "---FOOD ITEMS---"
    },
    {
        "barcode": "2231012001992",
        "name": "KROKETBROODJES",
        "qty": "2",
        "uom": "KG",
        "price_unit": "1,00",
        "discount": "0,0",
        "line_note": ""
    },
    {
        "barcode": "8713009019455",
        "name": "Oil",
        "qty": "3",
        "uom": "L",
        "price_unit": "0,50",
        "discount": "0,0",
        "line_note": ""
    },
    {
        "barcode": "8713009019475",
        "name": "Apple",
        "qty": "1",
        "uom": "KG",
        "price_unit": "50,0",
        "discount": "0,0",
        "line_note": ""
    },
    {
        "barcode": "",
        "name": "",
        "qty": "",
        "uom": "",
        "price_unit": "",
        "discount": "",
        "line_note": "---OTHER ITEMS---"
    },
    {
        "barcode": "8713009019375",
        "name": "programmer",
        "qty": "1",
        "uom": "Hour",
        "price_unit": "50,0",
        "discount": "100,0",
        "line_note": ""
    },
    {
        "barcode": "0013009019475",
        "name": "Sticker",
        "qty": "1",
        "uom": "pce",
        "price_unit": "0,0",
        "discount": "0,0",
        "line_note": ""
    }
]

I admit that using | in RegEx doesn't result in clean (easy to read) RegEx and it also produces unwated (empty) entries in output JSON. For that I think we could improve our lines parser.
I think we should just allow multiple entries in the line. That would result in:

Simple implementation (just few extra lines of code)
Clear syntax (no multiple start and end for parsing one block (part) of invoice)

By looking at your desired output it seems that you need to:
Parse 1 specific part of invoice containing multiple lines
Lines use two different formats

I think you understand it correctly. The usage of the | as suggested here is interesting.
Yet, the result is not compatible with the code used to further process the results from this library.
Ooh, yeah, I see the multiple start and end's can be confusing.
(but I think is easy syntax, for converting a table style template builder as input. Yet, thats not implemented in code, so we can ignore that for now)
Kinda hard to put it into full spec.

Parse multiple line formats in order as they appear in the input
Still allow to contentate values if multiple regex rules match the field. (Do contentate untill a new firstline is received)
Output order should be independent from the order of the template. (it should take order from the input file) (nice to have)

(Contentate is not used in the above example)
I'll have a look at the mentioned pr

Superseded by #417


use old mapit db

This is due to the fact that new one has a missing local authority in the database and we will be serving 404s.

no longer needed


export_quant() does not handle the merged tidyproteomics data object

Hi Jeff, The export_quant() function seems not work for the merged object when quantitative_source = 'selected' in merge().
Here is the error I got:
Error in extract():
! values must be one of "selected", not "raw".

Thanks for pointing this out. I have addressed the underlying issue and pushed out v1.8.4. I should note that it is unadvised to normalize two sets independently then merge, which results in the selected moniker for the quantitative value - meaning that the selected normalized quant values have been merged. There are some possible corner cases where this is appropriate. However, for the vast majority of analyses, it is recommended to merge using the raw quant values, the default behavior, then normalize. Normalizing prior to merging, as the possibility then exists to have different normalization methods used between sets and major quantitative offsets, that normalization is intended to address, persist or become exaggerated, increasing the probability of false positives in downstream analyses.

Amazing, thanks!


Fix: FormView setting row spacing infinite loop & layout pin anchor remove cast appkit.LayoutAnchor

FormView embedding appkit.GridView, But GridView itself has a SetRowSpacing method, so the SetRowSpacing method of GridView should be called in FormView, Otherwise it will lead to an infinite loop. effect: f.GridView.SetRowSpacing(spacing)
appkit.ILayoutAnchor now has the ConstraintEqualToAnchorConstant method. There is no need to cast it to appkit.LayoutAnchor, otherwise it will cause panic, because for example, the return value of view.TopAnchor() is appkit.LayoutYAxisAnchor instead of appkit.LayoutAnchor. If forced conversion is performed, will cause panic

Awesome, sorry I missed this until now. Thanks!


Long chat messages don't seem to send

I have tested a few times over night, got up to 117 characters with no issues of it going through. No errors at all. Below is how I did it:
123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789