link() foreign model where part of PK is null

For example we have a primaryModel which has a Primary key which consists of 2 fields, ID1 and ID2. In some cases ID2 can be null. The primary model can be saved in DB as usual.
Then we have a relation to the primaryModel which also has a composite primary key whose primary key mirrors the primaryModel.
If you try to use $primaryModel->link('relation', $foreignModel) and the primary model has null as part of the primary key, BaseActiveRecord::bindModels() will throw an InvalidCallException thanks to the
$value = $primaryModel->$pk;
        if ($value === null) {
            throw new InvalidCallException('Unable to link models: the primary key of ' . get_class($primaryModel) . ' is null.');
        }

http://stackoverflow.com/questions/386040/whats-wrong-with-nullable-columns-in-composite-primary-keys


Bump json5 from 1.0.1 to 1.0.2

Bumps json5 from 1.0.1 to 1.0.2.

Release notes
Changelog
Commits

updated-dependencies:

dependency-name: json5 dependency-type: indirect ...

as


Feature reset password

Codecov Report

Merging #9 into master will decrease coverage by 17.26%.
The diff coverage is 7.93%.

@@             Coverage Diff             @@
##           master       #9       +/-   ##
===========================================
- Coverage     100%   82.73%   -17.27%
===========================================
  Files          16       16
  Lines         273      336       +63
  Branches       26       34        +8
===========================================
+ Hits          273      278        +5
- Misses          0       58       +58

Impacted Files
Coverage Δ

src/database/models/user.js
100% <ø> (ø)
:arrow_up:

src/routes/auth.js
43.13% <7.93%> (-56.87%)
:arrow_down:

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 ebea268...916dcbb. Read the comment docs.


Remove O(N*M) asset reimports through importer.SaveAndReimport - 200x import speed improvement for test file

Currently, putting GLB files with a couple of textures into the project folder results in minute-long waits as the importer script has an inner loop calling TextureImporter.SaveAndReimport.
For a simple object (attached) with ~22 objects with about a texture each (some share textures), this results in crazy import times:

This PR replaces those by a single call to AssetDatabase.SaveAssets and a subsequent AssetDatabase.Refresh, resulting in sub-second import times (down from > 200s before).
A 20.000% speed increase!
Additionally, this PR adds a try/catch around the AssetDatabase context add as that fails imports while it should actually only produce warnings.
This is the file to test this PR with:
comp-20190923-174143.zip

I removed the commented line, thanks for the feedback.
Interesting that you don't see the slow import times.
Here's exact repro steps (on Windows 10):

be on master
make sure to build GLTFSerialization\GLTFSerialization from GLTFSerialization\GLTFSerialization.sln
open the UnityGLTF project in 2018.3.14f1
unzip the file attached on the PR
drag and drop the file comp-20190923-174143.glb into Unity
ACTUAL (on master)
see - and wait, and wait, and wait (~3 minutes on a high-end machine)
note that after the long wait the model partially imports but some objects are missing; console logs error messages InvalidOperationException: The object Saturn 1(Clone) was already added to the context. and Asset import failed, "Assets/comp-20190923-174143.glb" > InvalidOperationException: The object Saturn 1(Clone) was already added to the context..
EXPECTED (with this PR)
import goes pretty quickly (1-5s depending on Unity version)
import works, no error message

I was able to reproduce this in these versions I had at hand:

Unity 2018.3.14f1
Unity 2019.1.8f1
Unity 2019.2.8f1
Unity 2019.3.0b4
Unity 2020.1.0a3

@AdamMitchell-ms did you have a chance to look at this again?


Add swagger to doc

Add the Swagger API to the Sphinx docs.
Not quite happy with the way of downloading the files, but the full repo is huge and it would be overkill to clone it.

This pull request didn't trigger Jenkins as its author isn't in the whitelist.
An organization member must perform one of the following:

To have this branch tested by Jenkins, use the "ok to test" command.
To have a one time test done, use the "test this please" command.

Those commands are simple Github comments of the format: "jenkins: COMMAND"

@ru-fu how about using a shallow git clone instead?
stgraber@dakara:~$ time git clone https://github.com/swagger-api/swagger-ui swagger-ui --depth 1
Cloning into 'swagger-ui'...
remote: Enumerating objects: 701, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (629/629), done.
remote: Total 701 (delta 57), reused 460 (delta 39), pack-reused 0
Receiving objects: 100% (701/701), 4.20 MiB | 3.77 MiB/s, done.
Resolving deltas: 100% (57/57), done.

real	0m1.965s
user	0m0.328s
sys	0m0.112s
stgraber@dakara:~$ du -sch swagger-ui/
18M	swagger-ui/
18M	total

A 4.20MB download doesn't seem too unreasonable. We should also use --depth 1 when cloning the theme for consistency.

how about using a shallow git clone instead?

I couldn't get that to work because I tried to filter by folder at the same time ... :grin: This here seems to work now.
Updated.


auto_argmatcher case

The output of `cpdf --help` is this:

Syntax: cpdf [<operation>] <input files> [-o <output file>]

Copyright Coherent Graphics Ltd.

Version AGPLv3-licensed 2.7.2 (19th November 2024)

https://www.coherentpdf.com/

Input names are distinguished by containing a '.' and may be
followed by a page range specification, for instance "1,2,3"
or "1-6,9-end" or "even" or "odd" or "reverse".

Operations (See manual for full details):

  -version                            Print the cpdf version number
  -o                                  Set the output file, if appropriate
  -i                                  Add an input file
  -png                                Load from a PNG file, converting to PDF
  -jpeg                               Load from a JPEG file, converting to PDF
  -jpeg2000                           Load from a JPEG2000 file, converting to PDF
  -jbig2                              Load from a JBIG2 fragment, converting to PDF
  -jbig2-global                       Load a JBIG2 global stream
  -jbig2-global-clear                 Forget any JBIG2 global stream
  -idir                               Add a directory of files
  -idir-only-pdfs                     Have -idir ignore files not ending in .pdf
  -pw                                 Supply a password explicitly -pw=<password>
  -stdin                              Read input from standard input
  -stdin-owner                        Owner password for -stdin
  -stdin-user                         User password for -stdin
  -stdout                             Send result to standard output
  -error-on-malformed                 Do not try to read malformed files
  -range                              Explicitly add a range
  -collate                            Collate ranges when merging
  -change-id                          Change the file's /ID tag
  -no-preserve-objstm                 Don't preserve object streams
  -create-objstm                      Create object streams anew
  -keep-version                       Don't change the version number
  -l                                  Linearize output file
  -keep-l                             Linearize if the input file was linearized
  -cpdflin                            Set location of 'cpdflin'
  -recrypt                            Keep this file's encryption when writing
  -raw                                Do not process text
  -stripped                           Process text by simple stripping to ASCII
  -utf8                               Process text by conversion to UTF8 Unicode
  -fast                               Speed over correctness with malformed documents
  -args                               Get arguments from a file.
  -args-json                          Get arguments from a JSON file.
  -merge                              Merge a number of files into one
  -retain-numbering                   Don't renumber pages when merging
  -merge-add-bookmarks                Add bookmarks for each file to merged file
  -merge-add-bookmarks-use-titles     Use title of document rather than filename
  -process-struct-trees               Process structure trees
  -remove-duplicate-fonts             Remove duplicate fonts when merging
  -split                              Split a file into individual pages
  -chunk                              Set chunk size for -split (default 1)
  -split-bookmarks                    Split a file at bookmarks at a given level
  -split-max                          Split a file to files of a given size
  -spray                              Split a file by alternating pages
  -scale-page                         -scale-page "sx sy" scales by (sx, sy)
  -scale-to-fit                       -scale-to-fit "x y" scales to page size (x, y)
  -stretch                            -stretch "x y" scales without preserving aspect ratio
  -scale-contents                     Scale contents by the given factor
  -scale-to-fit-scale                 -scale-to-fit-scale (1.0 = 100%)
  -shift                              -shift "dx dy" shifts the chosen pages
  -shift-boxes                        -shift-boxes "dx dy" shifts boxes on the chosen pages
  -rotate                             Set rotation of pages to 0, 90, 180, 270
  -rotateby                           Rotate pages by 90, 180 or 270 degrees
  -rotate-contents                    Rotate contents of pages
  -upright                            Make pages upright
  -prerotate                          Calls -upright on pages before modifying them, if required
  -no-warn-rotate                     Do not warn on pages of PDFs which are not upright
  -hflip                              Flip pages horizontally
  -vflip                              Flip pages vertically
  -crop                               Crop specified pages (synonym for -cropbox)
  -cropbox                            Crop specified pages
  -artbox                             Set art box for specified pages
  -bleedbox                           Set bleed box for specified pages
  -trimbox                            Set trim box for specified pages
  -hard-box                           Hard crop specified pages to the given box
  -show-boxes                         Show boxes by adding rectangles to pages
  -trim-marks                         Add trim marks
  -remove-crop                        Remove cropping on specified pages
  -remove-cropbox                     Synonym for -remove-crop
  -remove-trimbox                     Remove trim box on specified pages
  -remove-bleedbox                    Remove bleed box on specified pages
  -remove-artbox                      Remove art box on specified pages
  -frombox                            Set box to copy from
  -tobox                              Set box to copy to
  -mediabox-if-missing                If copy from box missing, substitute media box
  -mediabox                           Set media box on specified pages
  -encrypt                            Encrypt a document
  -decrypt                            Decrypt a file
  -decrypt-force                      Decrypt a file even without password
  -no-edit                            No edits
  -no-print                           No printing
  -no-copy                            No copying
  -no-annot                           No annotations
  -no-forms                           No forms
  -no-extract                         No extracting
  -no-assemble                        No assembling
  -no-hq-print                        No high quality printing
  -no-encrypt-metadata                Don't encrypt metadata (AES only)
  -decompress                         Decompress
  -compress                           Compress streams, leaving metadata alone
  -list-bookmarks                     List Bookmarks
  -list-bookmarks-json                List Bookmarks in JSON format
  -remove-bookmarks                   Remove bookmarks from a file
  -add-bookmarks                      Add bookmarks from the given file
  -add-bookmarks-json                 Add bookmarks from the given file in JSON format
  -bookmarks-open-to-level            Open bookmarks to this level (0 = all closed)
  -presentation                       Make a presentation
  -trans                              Set the transition method for -presentation
  -duration                           Set the display duration for -presentation
  -vertical                           Set dimension for Split and Blinds styles
  -outward                            Set direction for Split and Box styles
  -direction                          Set direction for Wipe and Glitter styles
  -effect-duration                    Set the effect duration in seconds
  -stamp-on                           Stamp a file on some pages of another
  -stamp-under                        Stamp a file under some pages of another
  -scale-stamp-to-fit                 Scale the stamp to fit the page
  -combine-pages                      Combine two files by merging individual pages
  -add-text                           Superimpose text on the given range of pages
  -remove-text                        Remove text previously added by cpdf
  -add-rectangle                      Add a rectangle to the page
  -bates                              Set the base bates number
  -bates-at-range                     Set the base bates number at first page in range
  -bates-pad-to                       Pad the bates number with leading zeroes to width
  -font                               Set the font
  -font-size                          Set the font size
  -load-ttf                           Use a TrueType font
  -embed-std14                        Embed standard 14 fonts
  -color                              Set the color
  -opacity                            Set the text opacity
  -outline                            Use outline mode for text
  -linewidth                          Set line width for outline text
  -pos-center                         Set position relative to center of baseline
  -pos-left                           Set position relative to left of baseline
  -pos-right                          Set position relative to right of baseline
  -top                                Set position relative to center top of page
  -topleft                            Set position relative to top left of page
  -topright                           Set position relative to top right of page
  -left                               Set position relative to center left of page
  -bottomleft                         Set position relative to bottom left of page
  -bottom                             Set position relative to center bottom of page
  -bottomright                        Set position relative to bottom right of page
  -right                              Set position relative to center right of page
  -diagonal                           Place text diagonally across page
  -reverse-diagonal                   Place text diagonally across page from top left
  -center                             Place text in the center of the page
  -justify-left                       Justify multiline text left
  -justify-right                      Justify multiline text right
  -justify-center                     Justify multiline text center
  -underneath                         Text stamp is underneath content
  -line-spacing                       Line spacing (1 is normal)
  -midline                            Adjust text to midline rather than baseline
  -topline                            Adjust text to topline rather than baseline
  -relative-to-cropbox                Add text relative to Crop Box not Media Box
  -embed-missing-fonts                Embed missing fonts by calling gs
  -twoup                              Put 2 pages onto one
  -twoup-stack                        Stack 2 pages onto one twice the size
  -impose                             Impose onto given page size
  -impose-xy                          Impose x by y (zero means unlimited)
  -impose-columns                     Impose in columns rather than rows
  -impose-rtl                         Impose right-to-left
  -impose-btt                         Impose bottom-to-top
  -impose-margin                      Add margin around whole imposed page
  -impose-spacing                     Add spacing around each imposed page
  -impose-linewidth                   Imposition divider line width (0=none)
  -chop                               Chop x by y
  -chop-h                             Chop horizontally
  -chop-v                             Chop horizontally
  -chop-columns                       Chop in columns rather than rows
  -chop-rtl                           Chop right-to-left
  -chop-btt                           Chop bottom-to-top
  -pad-before                         Add a blank page before the given pages
  -pad-after                          Add a blank page after the given pages
  -pad-every                          Add a blank page after every n pages
  -pad-with                           Use a given PDF instead of a blank page
  -pad-multiple                       Pad the document to a multiple of n pages
  -pad-multiple-before                Pad the document at beginning to a multiple of n pages
  -list-annotations                   List annotations
  -list-annotations-json              List annotations in JSON format
  -copy-annotations                   Copy annotations from given file
  -remove-annotations                 Remove annotations
  -set-annotations                    Set annotations from JSON file
  -list-fonts                         Output font list
  -list-fonts-json                    Output font list in JSON format
  -info                               Output file information
  -info-json                          Output file information in JSON format
  -page-info                          Output page information
  -page-info-json                     Output page information in JSON format
  -set-author                         Set Author
  -set-title                          Set Title
  -set-subject                        Set Subject
  -set-keywords                       Set Keywords
  -set-create                         Set Creation date
  -set-modify                         Set Modification date
  -set-creator                        Set Creator
  -set-producer                       Set Producer
  -set-trapped                        Mark as trapped
  -set-untrapped                      Mark as not trapped
  -also-set-xmp                       Also set XMP metadata
  -just-set-xmp                       Just set XMP metadata, not old-fashioned metadata
  -create-metadata                    Create XMP metadata from scratch.
  -set-page-layout                    Set page layout upon document opening
  -set-page-mode                      Set page mode upon document opening
  -set-non-full-screen-page-mode      Set non full screen page mode if page mode is FullScreen
  -open-at-page                       Set initial page
  -open-at-page-fit                   Set initial page, scaling to fit
  -open-at-page-custom                Set initial page, with custom scaling
  -set-metadata                       Set metadata to the contents of a file
  -print-metadata                     Output metadata information
  -remove-metadata                    Remove document metadata
  -set-metadata-date                  Set the XMP metadata date property
  -hide-toolbar                       Hide the viewer's toolbar
  -hide-menubar                       Hide the viewer's menubar
  -hide-window-ui                     Hide the viewer's scroll bars etc.
  -fit-window                         Resize document's window to fit size of page
  -center-window                      Position window in the center of screen
  -display-doc-title                  Display document's title in the title bar
  -set-language                       Set the document's language
  -pages                              Count pages
  -list-attached-files                List attached files
  -dump-attachments                   Dump attachments to disk
  -attach-file                        Attach a file
  -to-page                            Attach file to given page instead of document
  -remove-files                       Remove embedded attached document-level files
  -list-images                        List images
  -list-images-json                   List images in JSON format
  -list-images-used                   List images at point of use
  -list-images-used-json              List images at point of use in JSON format
  -image-resolution                   List images at point of use under a given dpi
  -image-resolution-json              List images at point of use under a given dpi
  -copy-font                          Copy a named font
  -copy-font-page                     Set the page a copied font is drawn from
  -copy-font-name                     Set the name of the font to copy
  -remove-fonts                       Remove embedded fonts
  -missing-fonts                      List missing fonts
  -remove-id                          Remove the file's /ID tag
  -draft                              Remove images from the file
  -draft-remove-only                  Only remove named image
  -boxes                              Add crossed boxes to -draft option
  -remove-all-text                    Remove all text
  -blacktext                          Blacken document text
  -blacklines                         Blacken lines in document
  -blackfills                         Blacken fills in document
  -thinlines                          Set minimum line thickness to the given width
  -remove-clipping                    Remove clipping paths
  -clean                              Garbage-collect a file
  -set-version                        Set PDF version number
  -copy-id-from                       Copy one file's ID tag to another
  -print-page-labels                  Print page labels
  -print-page-labels-json             Print page labels in JSON format
  -remove-page-labels                 Remove page labels
  -add-page-labels                    Add or replace page labels
  -label-style                        Set label style (default DecimalArabic)
  -label-prefix                       Set label prefix (default none)
  -label-startval                     Set label start value (default 1)
  -labels-progress                    Label start value progresses with multiple ranges
  -remove-dict-entry                  Remove an entry from all dictionaries
  -replace-dict-entry                 Remove an entry from all dictionaries
  -replace-dict-entry-value           Replacement value for -replace-dict-entry
  -dict-entry-search                  Search string for -remove-dict-entry and -replace-dict-entry
  -print-dict-entry                   Print dictionary values of a given key
  -producer                           Change the /Producer entry in the /Info dictionary
  -creator                            Change the /Creator entry in the /Info dictionary
  -list-spot-colors                   List spot colors
  -create-pdf                         Create a new PDF
  -create-pdf-ua-1                    Create a new PDF/UA-1 with the given title
  -create-pdf-ua-2                    Create a new PDF/UA-2 with the given title
  -create-pdf-pages                   Number of pages for new PDF
  -create-pdf-papersize               Paper size for new PDF
  -prepend-content                    Prepend content to page
  -postpend-content                   Postpend content to page
  -gs                                 Path to gs executable
  -gs-malformed                       Also try to reconstruct malformed files with gs
  -gs-quiet                           Make gs go into quiet mode
  -gs-malformed-force                 See manual for usage.
  -im                                 Path to magick executable
  -p2p                                Path to pnmtopng executable
  -extract-images                     Extract images to file
  -dedup                              Deduplicate extracted images fully
  -dedup-perpage                      Deduplicate extracted images per page only
  -process-images                     Process images within PDF
  -process-images-info                Show info when processing images
  -jbig2enc                           Path to jbig2enc executable
  -jpeg-to-jpeg                       Set JPEG quality for existing JPEGs
  -lossless-to-jpeg                   Set JPEG quality for existing lossless images
  -1bpp-method                        Set 1bpp compression method for existing images
  -jbig2-lossy-threshold              Set jbig2enc lossy threshold
  -pixel-threshold                    Only process images with more pixels than this
  -length-threshold                   Only process images with data longer than this
  -percentage-threshold               Only substitute lossy image when smaller than this
  -dpi-threshold                      Only process image when always higher than this dpi
  -lossless-resample                  Resample lossless images to given part of original
  -lossless-resample-dpi              Resample lossless images to given DPI
  -resample-interpolate               Interpolate when resampling
  -squeeze                            Squeeze
  -squeeze-log-to                     Squeeze log location
  -squeeze-no-pagedata                Don't recompress pages
  -squeeze-no-recompress              Don't recompress streams
  -output-json                        Export PDF file as JSON data
  -output-json-parse-content-streams  Parse content streams
  -output-json-no-stream-data         Skip stream data for brevity
  -output-json-decompress-streams     Skip stream data for brevity
  -output-json-clean-strings          Convert UTF16BE strings to PDFDocEncoding when possible
  -j                                  Load a PDF JSON file
  -ocg-list                           List optional content groups
  -ocg-rename                         Rename optional content group
  -ocg-rename-from                    Rename from (with -ocg-rename)
  -ocg-rename-to                      Rename to (with -ocg-rename)
  -ocg-order-all                      Repair /Order so all OCGs listed
  -ocg-coalesce-on-name               Coalesce OCGs with like name
  -stamp-as-xobject                   Stamp a file as a form xobject in another
  -print-font-table                   Print the /ToUnicode table for a given font, if present.
  -print-font-table-page              Set page for -print-font-table
  -extract-font                       Extract a font
  -table-of-contents                  Typeset a table of contents from bookmarks
  -toc-title                          Set (or clear if empty) the TOC title
  -toc-no-bookmark                    Don't add the table of contents to the bookmarks
  -typeset                            Typeset a text file as a PDF
  -subformat                          Set subformat
  -title                              Set PDF/UA title
  -composition                        Show composition of PDF
  -composition-json                   Show composition of PDF in JSON format
  -text-width                         Find width of a line of text
  -draw                               Begin drawing
  -draw-struct-tree                   Build structure trees when drawing.
  -tag                                Begin structure item
  -stag                               Begin struture branch
  -end-tag                            End structure item
  -end-stag                           End structure branch
  -auto-tags                          Auto-tag paragraphs and figures
  -no-auto-tags                       Don't auto-tag paragraphs and figures
  -artifact                           Begin an artifact
  -end-artifact End                   an artifact
  -no-auto-artifacts                  Don't mark untagged content as artifacts
  -eltinfo                            Add element information
  -end-eltinfo                        Erase element information
  -namespace                          Set the structure tree namespace
  -rolemap                            Set a role map
  -rect                               Draw rectangle
  -to                                 Move to
  -line                               Add line to
  -bez                                Add Bezier curve to path
  -bez23                              Add Bezier v-op to path
  -bez13                              Add Bezier y-op to path
  -circle                             Add circle to path
  -strokecol                          Set stroke colour
  -fillcol                            Set fill colour
  -stroke                             Stroke path
  -fill                               Fill path
  -filleo                             Fill path, even odd
  -strokefill                         Stroke and fill path
  -strokefilleo                       Stroke and fill path, even odd
  -clip                               Clip
  -clipeo                             Clip, even odd
  -close                              Close path
  -thick                              Set stroke thickness
  -cap                                Set cap
  -join                               Set join
  -miter                              Set miter limit
  -dash                               Set dash pattern
  -push                               Push graphics stack
  -pop                                Pop graphics stack
  -matrix                             Append to graphics matrix
  -mtrans                             Translate the graphics matrix
  -mrot                               Rotate the graphics matrix
  -mscale                             Scale the graphics matrix
  -mshearx                            Shear the graphics matrix in X
  -msheary                            Shear the graphics matrix in Y
  -xobj-bbox                          Specify the bounding box for xobjects
  -xobj                               Begin saving a sequence of graphics operators
  -end-xobj                           End saving a sequence of graphics operators
  -use                                Use a saved sequence of graphics operators
  -draw-jpeg                          Load a JPEG from file and name it
  -draw-png                           Load a PNG from file and name it
  -image                              Draw an image which has already been loaded
  -fill-opacity                       Set opacity
  -stroke-opacity                     Set stroke opacity
  -bt                                 Begin text
  -et                                 End text
  -text                               Draw text
  -stext                              Draw text with %specials
  -para                               Add a paragraph of text
  -paras                              Add paragraphs of text, splitting on newlines
  -indent                             Set indent for paragraphs
  -leading                            Set leading
  -charspace                          Set character spacing
  -wordspace                          Set word space
  -textscale                          Set text scale
  -rendermode                         Set text rendering mode
  -rise                               Set text rise
  -nl                                 New line
  -newpage                            Move to a fresh page
  -extract-stream                     Extract a stream
  -extract-stream-decompress          Extract a stream, decompressing
  -obj                                Print object
  -replace-obj Replace                object
  -json                               Format output as JSON
  -verify                             Verify conformance to a standard
  -verify-single                      Verify a single test
  -mark-as                            Mark as conforming to a standard
  -remove-mark                        Remove conformance mark
  -print-struct-tree                  Print structure tree
  -extract-struct-tree                Extract structure tree in JSON format
  -replace-struct-tree                Replace structure tree from JSON
  -redact                             Redact entire pages
  -help                               Display this list of options
  --help                              Display this list of options

which looks very clean, and something the basic parser says it can handle (1 flag per line with descriptions).
However, it fails to give any matches.
I can confirm that the rule is read and the executable is identified because the color of cpdf changes after adding the rule.
I know in our last conversation we explored why auto argmatcher won't work for most cases, but it seems like it should work here.
Any ideas on what is going wrong? How can I debug it?

Normally - prefix is for single-character flags, and -- prefix is for long name flags.
The basic parser relies on that convention to avoid misinterpreting other text as flags.
But the help text you quoted uses - prefix for long name flags, so it can't be parsed by the basic parser.

I understand.
As far as I can tell, these are the lines that do this skipping
https://github.com/chrisant996/clink-gizmos/blob/5f6766448572bcd71fe48621c0fcd64972ff8dfe/modules/help_parser.lua#L342-L344
But when I comment them out and reload clink (Ctrl+x Ctrl+r), it still doesn't seem to parse it.
Also, there are some flags in the help text that are one character (e.g. -o,-i,-l etc.), but it never picked those up either.

No, those lines literally skip "-nnn", "-nnnn", "/nnn", and "/nnnn" because there are programs that list "-nnnn" as a flag but really mean "minus followed by a number".
But never mind what I said about - vs --.
It actually handles it fine and creates an argmatcher.  I think the issue must either lie in your config file, or in where the cpdf program is located (e.g. if it isn't in the system PATH then auto_argmatcher won't be able to run it).
auto_argmatcher.config
cpdf            --help

screenshot proof

... or maybe cpdf prints help text to stderr instead of stdout.
auto_argmatcher only supports reading stdout, not stderr.

Yes, you are exactly right, cpdf --help prints to stderr.
So I just added an override command to redirect to stdout:
cpdf "cpdf --help 2>&1" basic --override_command

Thanks, will be closing this now


Support for Symfony 3

Will this support for symfony 3 version in the future?

Is this repo even still maintained ?


Fix babel build

My attempts at doing yarn link and yarn build:js --watch were being thwarted because the babel build was actually doing nothing
The current build was actually only working because yarn tsc was generating the browserified output
An alternative to this PR could be to remove the babel step from the build, but just keep babel for the test

released in 1.4.1


Don't allow to destroy initial node without force

Looks good! This should be taken into account also on #112 or is it already done?

Let's move this to 0.9.


Incorrect address results in server error

If I search for 'San Francisco' or 'New York' a server error is thrown - could add some more error handling for inputs, to avoid a server error 500.
Could also provide the expected input format on the front page (US address format).

@thevirtuoso1973 Thank you for finding that. You are correct, we need to improve the address string validation after the user inputs "something". Some inputs do cause the proper redirect like "San Francisco, CA" to our input format page, but we can do a better job in validation.
We also havent done much in the way of "styling" the site, just been focusing on functionality. I think a good run through of usability would be helpful and adding some "hints" like you suggest would be a good addition.
Thanks again for your suggestions!

Added some logic in greatschools.py to check for the 200 response from the API. If no 200, then we default the schools to "unknown". Thanks @thevirtuoso1973 for the bug report! Agree that we need to improve address validation.


Title: Enhancing Join us page

Is your feature request related to a problem? Please describe.
Currently the join us page is not so interactive
https://github.com/agamjotsingh18/codesetgo/assets/127978268/d3549245-ecaf-4dc3-995f-7d8ed4e3ec18
Describe the solution you'd like.
I want to work on this issue and add hover effects and other changes acc to UI of whole site.
Describe alternatives you've considered.
No rest is perfect
Add any other context or screenshots about the feature request here.
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I have checked the existing issues
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

Issue assigned already before, can't assign due to merge conflicts later


WIP [AMORO-2941] Complete translations for amoro dashboard

Why are the changes needed?

Close #2941 .
Brief change log

How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before making a pull request

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

@zhoujinsong  I create a md file about translations, please review and help me to complete it. Thanks!
translations.md

I updated some transaction:
| 英文 | 中文 |
| --- | --- |
|  `Filter partitions` | `过滤分区` |
|  `Nothing to show`   | `无内容可展示` |
|  `delete-files`      | `删除文件数量` |
|  `data-files`        | `数据文件数量` |
|  `total-files`       | `总文件数量` |
|  `pos-delete-records`       | `Position 删除文件数据行数` |
|  `eq-delete-records`       | `Equality 删除文件数据行数` |
|  `total-records`       | `总数据行数` |
|  `Table file count`       | `表文件总数` |
|  `Table record count`       | `表记录总数` |
|  `Tasks`       | `任务` |
|  `properties.{type}.memory`       | `` |
|  `Basic`       | `基本` |
|  `Metastore`       | `元数据中心` |
|  `Table Format`       | `表格式` |
|  `List`       | `列表` |
|  `No.`       | `编号` |
|  `Top 10`       | `前 10` |
|  `Other Properties`       | `其他属性` |
|  `Partiton Field`       | `分区字段` |
|  `Upgrade Hive Table`       | `升级 Hive 表` |
|  `Occupation`       | `占用率` |
|  `Records`       | `数据行数` |
|  `Scale-Out`       | `扩容` |
|  `Core`       | `核` |
|  `Resource Occupation`       | `资源占用率` |
|  `Operation Details`       | `操作详情` |
|  `Optimize Type`       | `优化类型` |
|  `Touch Time`       | `心跳时间` |
|  `Task ID`       | `任务 ID` |
|  `Partition`       | `分区` |
|  `Basic Information`       | `基本信息` |
|  `Filter {inputPh}`       | `过滤 {inputPh}` |
|  `Please input {inputPh}`       | `请输入 {inputPh}` |
|  `Please select {selectPh}`       | `请选择 {inputPh}` |
|  `Quota`       | `配额` |
|  `Metric Value`       | `指标值` |
|  `Metric`       | `指标` |
|  `Transform`       | `转换函数` |
|  `Table Properties`       | `表属性` |
|  `Properties`       | `属性` |
|  `Base Table Metrics`       | `Base 表指标` |
|  `Change Table Metrics`       | `Change 表指标` |
|  `Main Metrics`       | `主要指标` |
|  `Schema`       | `结构` |
|  `Partition Key`       | `分区值` |
|  `Implementation`       | `实现方式` |
|  `Table \| Tables`       | `表` |
|  `Database \| Databases`       | `库` |
|  `Order`       | `排序` |
|  `Token`       | `Token` |

I updated some transaction:
| 英文 | 中文 |
| --- | --- |
|  `Filter partitions` | `过滤分区` |
|  `Nothing to show`   | `无内容可展示` |
|  `delete-files`      | `删除文件数量` |
|  `data-files`        | `数据文件数量` |
|  `total-files`       | `总文件数量` |
|  `pos-delete-records`       | `Position 删除文件数据行数` |
|  `eq-delete-records`       | `Equality 删除文件数据行数` |
|  `total-records`       | `总数据行数` |
|  `Table file count`       | `表文件总数` |
|  `Table record count`       | `表记录总数` |
|  `Tasks`       | `任务` |
|  `properties.{type}.memory`       | `` |
|  `Basic`       | `基本` |
|  `Metastore`       | `元数据中心` |
|  `Table Format`       | `表格式` |
|  `List`       | `列表` |
|  `No.`       | `编号` |
|  `Top 10`       | `前 10` |
|  `Other Properties`       | `其他属性` |
|  `Partiton Field`       | `分区字段` |
|  `Upgrade Hive Table`       | `升级 Hive 表` |
|  `Occupation`       | `占用率` |
|  `Records`       | `数据行数` |
|  `Scale-Out`       | `扩容` |
|  `Core`       | `核` |
|  `Resource Occupation`       | `资源占用率` |
|  `Operation Details`       | `操作详情` |
|  `Optimize Type`       | `优化类型` |
|  `Touch Time`       | `心跳时间` |
|  `Task ID`       | `任务 ID` |
|  `Partition`       | `分区` |
|  `Basic Information`       | `基本信息` |
|  `Filter {inputPh}`       | `过滤 {inputPh}` |
|  `Please input {inputPh}`       | `请输入 {inputPh}` |
|  `Please select {selectPh}`       | `请选择 {inputPh}` |
|  `Quota`       | `配额` |
|  `Metric Value`       | `指标值` |
|  `Metric`       | `指标` |
|  `Transform`       | `转换函数` |
|  `Table Properties`       | `表属性` |
|  `Properties`       | `属性` |
|  `Base Table Metrics`       | `Base 表指标` |
|  `Change Table Metrics`       | `Change 表指标` |
|  `Main Metrics`       | `主要指标` |
|  `Schema`       | `结构` |
|  `Partition Key`       | `分区值` |
|  `Implementation`       | `实现方式` |
|  `Table \| Tables`       | `表` |
|  `Database \| Databases`       | `库` |
|  `Order`       | `排序` |
|  `Token`       | `Token` |

Thanks!

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 27.59%. Comparing base (bdd798c) to head (7ce35a1).
Report is 5 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #2958      +/-   ##
============================================
- Coverage     32.85%   27.59%   -5.27%
+ Complexity     3822     2483    -1339
============================================
  Files           557      360     -197
  Lines         46184    37092    -9092
  Branches       6099     5364     -735
============================================
- Hits          15173    10234    -4939
+ Misses        29818    25901    -3917
+ Partials       1193      957     -236

Flag
Coverage Δ

core
?

trino
27.59% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@chouchouji LGTM, I left some comments, PTAL.

Thanks! I will update it tonight.

@chouchouji LGTM, I left some comments, PTAL.

Done

LGTM, thanks for your work.

You are welcome. I am glad to make amoro better!

Thanks for the work! @chouchouji


[Statie] Undefined variable

Hi, I currently have an odd issue on my blog. When I run vendor/bin/statie generate it will output this:
PHP Notice:  Undefined variable: site_title in C:\Users\Enumag\AppData\Local\Temp\Statie\47ebf8949e.php on line 32
PHP Notice:  Undefined variable: google_analytics_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\1bf2a2bd0a.php on line 17
PHP Notice:  Undefined variable: fb_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\ee0dd667a2.php on line 19
PHP Notice:  Undefined variable: site_title in C:\Users\Enumag\AppData\Local\Temp\Statie\47ebf8949e.php on line 32
PHP Notice:  Undefined variable: google_analytics_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\1bf2a2bd0a.php on line 17
PHP Notice:  Undefined variable: fb_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\ee0dd667a2.php on line 19
PHP Notice:  Undefined variable: site_title in C:\Users\Enumag\AppData\Local\Temp\Statie\47ebf8949e.php on line 32
PHP Notice:  Undefined variable: google_analytics_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\1bf2a2bd0a.php on line 17
PHP Notice:  Undefined variable: fb_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\ee0dd667a2.php on line 19
PHP Notice:  Undefined variable: site_title in C:\Users\Enumag\AppData\Local\Temp\Statie\47ebf8949e.php on line 32
PHP Notice:  Undefined variable: google_analytics_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\1bf2a2bd0a.php on line 17
PHP Notice:  Undefined variable: fb_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\ee0dd667a2.php on line 19
PHP Notice:  Undefined variable: site_title in C:\Users\Enumag\AppData\Local\Temp\Statie\47ebf8949e.php on line 32
PHP Notice:  Undefined variable: google_analytics_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\1bf2a2bd0a.php on line 17
PHP Notice:  Undefined variable: fb_tracking_id in C:\Users\Enumag\AppData\Local\Temp\Statie\ee0dd667a2.php on line 19
Website was successfully generated.

I defined them in /statie.neon: https://github.com/enumag/enumag.cz/blob/master/statie.neon. Any idea what's wrong? The problem is also visible on Travis: https://travis-ci.org/enumag/enumag.cz/builds/276239707
Also the error was somehow rendered into the website code (see <title> of http://enumag.cz/) - this should not happen in my opinion. Plus the travis build passed - I would have expected it to fail.

Thanks for Travis link :+1:
I think you're using old Statie. This is 2.x feature
https://travis-ci.org/enumag/enumag.cz/builds/276239707#L474

@TomasVotruba Sure enough that fixed the problem. At least locally. On the website the bug is still there so there is some kind of an issue with the push-to-github command.
I don't particularly mind but it seems that Statie 2.x is significantly slower. With 1.x the builds only took a minute or two. With 2.x it took over 7 minutes (see https://travis-ci.org/enumag/enumag.cz/builds).

The speed related to AMP convert process, the package has to process every HTML file. On local environment it has cache, that's why you didn't notice it locally.
But AMP is experimental feature, I only implemented it but never tested it. I think there are some css issues.


MudMenu not displaying correctly when rendering within MudTable with horizontal scroll

Describe the bug
The MudMenu does not diplay corretly if it is rendered within a table which has horizontal scrolling enabled.
Expected behavior
The MudMenu shall display close to the cursor.
TryMudBlazor
Sample
Screenshots

It may be due to the portal. I know that there is a workaround. @Garderoben @just-the-benno

Idk about workaround for this but we are working on a fix for popover / portal overall.

Then we could check this issue again after this workaround completed 🙂

@mckaragoz  @Garderoben thanks for the info. While working on the fix, If you find out that there is an easy workaround for this, it would be nice if you could share it so that I do not have to wait for the next release.
Thanks


Update integration screen data polling

Action Item
The polling result of the project is not used in every view and some views only require one information of the project instead of the whole one.
Implementation details
The integration screen does not need the project data.

DoD

[ ] Unit tests
[ ] Introduce a new endpoint in the bridge-server that returns only the information needed.

This is not needed anymore


added function

Put "monomials_strings" for function name, can change if needed.

test this please

test this please

you forgot the unit test to go with the function :)

Does the unit test go in tests/t_tools.py? If not where would the unit test for this particular function go?

Dunno, you have to ask @bqpd and @whoburg. I only help with jenkins, I don't actually work on gpkit.

@aechevarria1 The test should go in t_nomials since this is a new function in nomial_core

@aechevarria1 in case it's not obvious, you can push additional commits to this branch (pylint-changes) to create a unit test

@galbramc, you did the same thing this commit was doing in the recent pylint clobber, right?

Yes, @whoburg put the function in the small scripts scripts. Feel free to refactor to favor this version if you like it better.

@whoburg  and @bqpd. Are you sure you didn't like this one better? This one comes with a unit test that we didn't add...


[stable/sysdig] Bump version to latest, the 0.93.1

Signed-off-by: Néstor Salceda<EMAIL_ADDRESS>
Is this a new chart

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

What this PR does / why we need it:
This PR updates Sysdig Agent to 0.93.1, the latest version.
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @bencer

/lgtm


feat: add clickbench benchmark

Adds a clickbench run to our datafusion benchmarks. ~Some queries fail, see #1326.~
Running this is pretty resource intensive as the dataset is ~100m rows/15GB of parquet.

some benchmarks are failing, I'll fix them tomorrow

Running clickbench OOMs our dedicated runners, I'll re-generate the file locally tomorrow and put it in some accessible location for future runs.

🚢


When using 'animateTransitions={false}' Virtualized does not clear up slides

When setting the index of the virtualized slide from the outside (not swiping).
I believe handleTransitionEnd is never called and so setWindow has no chance to calculate a new indexStart.
Could lead to leaking of slides..

I confirm, I'm on it, thanks for raising it!


Added ability to run also over failures and rerun failed results ON DEMAND

This patch is now applied, and run .. feh... for testing.. in production


Ambiguous formulation in the first paragraph of Functional Interfaces

How does lambda expressions fit into Javas type system? Each lambda corresponds to a given type, specified by an interface. A so called functional interface must contain exactly one abstract method declaration.

It's not immediately clear from the context why this starts with lambda expressions and the second phrase about "each corresponds to a given type" is ambiguous

A functional interface is an interface that has just one abstract method (aside from the methods of Object), and thus represents a single function contract.
https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.8

Thanks for your input. Feel free to send a PR.


Using Windows.Media.FaceAnalysis.FaceDetector throws an error

When I try to use  Windows.Media.FaceAnalysis.FaceDetector,  DevTools throws an error:
0x80040155 - JavaScript runtime error: Interface not registered.
My code:

This is not a question about a sample in this repo. You can open a support case with our Developer Support team:

Visit http://aka.ms/storesupport and sign-in with your Microsoft account
Under the “App Development” section choose "Windows 10 universal app development", then choose the appropriate problem type and category to get engaged through a formal support channel.


Update asciidoctorj-diagram dependency in order to use new plantuml.jar

The currently used plantuml version (plantuml.8053.jar) has a bad rendering algorithm. This jar is bundled in asciidoctorj-diagram.
For a new asciidoctorj-diagram version AsciidoctorJ 2.x is required, see cannot load such file asciidoctor/logging · Issue #228 · asciidoctor/asciidoctor-diagram. So this issue depends on #162
As AsciidoctorJ 2.x has breaking changes it's not possible to just update the plugin dependency while using the plugin.
    at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.pageTitle (AsciidocConfluencePage.java:173)
    at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.newAsciidocConfluencePage (AsciidocConfluencePage.java:116)
    at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.lambda$buildPageTree$0 (AsciidocConfluenceConverter.java:103)
    at java.util.ArrayList.forEach (ArrayList.java:1257)
    at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.buildPageTree (AsciidocConfluenceConverter.java:98)
    at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.convert (AsciidocConfluenceConverter.java:82)
    at org.sahli.asciidoc.confluence.publisher.maven.plugin.AsciidocConfluencePublisherMojo.execute (AsciidocConfluencePublisherMojo.java:108)

Hi @masooh, thanks for opening this issue. Upgrading to AsciidoctorJ 2.x indeed seems to be a major job (but eventually inevitable). In the meantime, I managed to upgrade to the latest AsciidoctorJ 1.5.x dependencies, which also includes the latest AsciidoctorJ Diagram version 1.5.18 with a more recent version of PlantUML.
Would you be able to give it a try using the branch feature/asciidoctorj-1.5-upgrade and a locally built version? The command ./mvnw clean install produces a version 0.0.0-SNAPSHOT that you could integrate into your project (please also check for the build prerequisites on https://github.com/confluence-publisher/confluence-publisher/blob/master/CONTRIBUTING.md).
If that helps, I can merge these changes into master. Thank you!

Hi @cstettler, just tested. Works great. Rendering is now fine. Thank you for the quick implementation and finding a solution without AsciidoctorJ 2.x.

Hi @masooh, this upgrade has now been merged into master and is available in the current 0.0.0-SNAPSHOT version.

Hi @cstettler thanks again. Due to our policies we are note able to use snapshot versions. I'm therefore looking forward to the next release.

Hi @masooh, the Confluence Publisher release 0.8.0 including this change and some more features is now available.

Hi @cstettler, thank you for the release. Just updated to 0.8.0. Works like a charm.


How to reuse parsers without recreating them?

I have a use case where throughout the lifetime of the program I want to invoke the same parser many times. The naive approach is to invoke the parser() function each time, and then use parse() on the result. But as far as I understand, this recreates the parser each time, which means there is overhead that's not required.
I tried using std::sync::OnceLock with a boxed parser, but this doesn't appear to work because, I think, Boxed doesn't provide sync.
The alternative is to create the parser at program startup and store it in a struct so that I can later pass it along whenever needed.
But parsing like this ideally has a simple function-like invocation, so that you can use chumsky to implement things like the FromStr trait and the like.
Should this be supported? If so, what is the best approach to tackle this use case, and does it need documentation?
Note: I'm using chumsky 1.0a4

I've tried the simple approach above: store the parser required in a struct in advance so I create it only once, and then use it multiple times. Unfortunately I'm running into difficulties there too.
To store the parser in the struct I am using chumsky::Boxed. This takes two lifetimes, 'a and 'b.  'a is the lifetime of the input, 'b appears to be the lifetime of the DynParser that underlies the boxed parser, so I think the lifetime of storage.
The input passed into the parse function needs to live at least as long as 'a, but this 'a is now baked into the stored parser, and any input will live a lot more briefly.
I don't know how to express the lifetimes so that the lifetime of the input isn't baked into things.

Unfortunately this is difficult to support. The current implementation has the lifetime of the input be part of the Parser trait (i.e: each parser is effectively tied to a specific input data lifetime and can't easily be reused for different data lifetimes). The ideal would be an API that looks something like this:
trait Parser {
    type Input<'a>: Input<'a>;
    type Output<'a>;

    fn parse<'src>(&self, input: Self::Input<'src>) -> Self::Output<'src> { ... }
}

But unfortunately the assumed invariance of GAT parameters means this doesn't generalise right now.
It might be that you simply must recreate the parser each time (alternatively you can unsafely transmute the parser to whatever lifetime you require, provided you make sure that the input and output lifetimes match).
That said, recreating the parser each time isn't going to be that expensive. It's not the sort of thing you should be doing in a very hot loop, but recreating it for each file you parse or each input in a REPL isn't going to have a meaningful performance impact.

Thanks for your answer! That's unfortunate.
I am currently using the Chumsky parser to parse strings at runtime in an interpreter implementation: parsing datetime formats and the like. It could totally happen in a hot loop, unfortunately. It sounds then like Chumsky isn't a good fit for parsing input like that. I didn't want to use regexes as the rules are somewhat involved and I think the chumsky code is more readable, but it sounds like I should reconsider that.
In another case I am reusing the language level parser to also parse the same thing during runtime and I didn't want to implement the same rules twice.
Would it be possible to support a cache in Chumsky itself? That is, Chumsky support memoization of parser functions? Since it's not possible to get this right outside of Chumsky, perhaps Chumsky should offer explicit support for this use case, if possible.
If not, I think it would be useful to discuss this limitation in the docs: do not use Chumsky if you want to parse at runtime during a hot loop.

If you're not using recursive or boxed, no allocation needs to occur during parser creation and the process of creating a parser becomes effectively free (or, at least, the compiler is able to statically dispatch everything and optimise it as it pleases). If your syntax can be expressed via regex, none of the aforementioned combinators should be required anyway!

Also, what do you mean by the 'cache' point here? Chumsky already supports memoisation (see .memoized()), but it sounds like this might not be what you're looking for?

I am using boxed as I am using a parser multiple times and therefore need to be able to clone it. I am unclear  about when parsers are copy but they aren't always, especially if I compose parsers using separate functions. Maybe I can avoid it. In any case, this requires a lot of knowledge of details in order to know whether it's maybe safe to use a parser in a hot loop.
Concerning memoized parsers, my understanding is that memoized memoizes parser output given input. I am talking about memoizing the parser function itself.  So:
#[cache]
fn my_parser() -> impl Parser<...> {
   ...
}

If you call my_parser twice, the second time it returns the parser from cache. This way I can  do whatever I want during parser construction and have it be fast.
Without this, storing parsers is impossible and there are pitfalls if you reuse one (avoid hot loops, or avoid boxed, etc). With this, it's easy.

So I was going to talk about how caching parsers in this was was not feasible... until I did some thinking and realised that, actually, it should be possible to design an API that allows it to be done safely and without sacrificing much in the way of versatility.
I've implemented an initial swing at such an API in the latest commit (01b96cd) and you can see an example of its usage in the tests here. It's currently behind the unstable feature flag since this is just an early attempt and is likely to change later (or perhaps it'll turn out to be unsound, I'm not sure).
The crux of it is: you implement Cached for a type (any old type will do, the type is just there to allow the trait to be implemented). When implementing the trait, you specify the input, output, and extra (i.e: error, context, etc.) types, along with providing a method that does the actual creating of the parser. Now, you get to use Cache to carry your parser around any way you like, with the ability to use the parser by calling .get().
Does this do the job for you?

Thank you so much, this looks like it would do the job!
A few comments:

I don't feel capable yet of judging soundness about this yet, so I can't offer feedback there.

There's a bit of commented code in the Cached trait type (Parser<'a>:)

The comment of Cache::get has a sentence that trails off

The implementation of a cached type is a bit verbose, given that all the information that goes into is already in the signature of the parser function. I take it that is necessary in order to let get() have the appropriate lifetimes. I imagine devising a macro that comes up with this automatically given a parser function would be tricky to implement, as it would effectively need to extract the type information from the returned parser, correct?

I'd have a use-case where I think the same solution would be very useful.
I have a table-driven Pratt parser, where the used symbols can be chosen at runtime. For example, one might want a math parser that only understands simple high school math. Meanwhile a different use case calls for a math parser that also understands units.(physics)
Which means that I'll every once in a while construct a new parser at runtime.
And then, that one parser is used to parse anywhere between 1 to a few hundred formulas.

I don't feel capable yet of judging soundness about this yet, so I can't offer feedback there.

I've discussed this with CraftSpider and we're both pretty happy that this is sound, so all good on that front (MIRI also likes it).

There's a bit of commented code in the Cached trait type (Parser<'a>:)

Specifying the parser type would allow one to skip boxing the parser, at the slight inconvenience that the parser type must be specified.

The comment of Cache::get has a sentence that trails off

Thanks! I'll fix that.

The implementation of a cached type is a bit verbose, given that all the information that goes into is already in the signature of the parser function. I take it that is necessary in order to let get() have the appropriate lifetimes. I imagine devising a macro that comes up with this automatically given a parser function would be tricky to implement, as it would effectively need to extract the type information from the returned parser, correct?

Yes, I don't see an easy way to avoid this (without losing the generality of the solution, anyway). Sadly it's not possible to use HRTBs in this case since you'd need both higher-ranked and higher-kinded types to generalise over the input and output type lifetimes (unless you were to use a trait for each, but that's just moving the problem).

I'd have a use-case where I think the same solution would be very useful.

This definitely sounds like a good use-case!

Unfortunately this is difficult to support. The current implementation has the lifetime of the input be part of the Parser trait (i.e: each parser is effectively tied to a specific input data lifetime and can't easily be reused for different data lifetimes). The ideal would be an API that looks something like this:
trait Parser {
    type Input<'a>: Input<'a>;
    type Output<'a>;

    fn parse<'src>(&self, input: Self::Input<'src>) -> Self::Output<'src> { ... }
}

But unfortunately the assumed invariance of GAT parameters means this doesn't generalise right now.

I'd love to understand this better. Is there a Rust issue that I could check out, or would you have any recommendations on what to read to understand advanced trait and lifetime topics better?

The thing to search for is 'Generic Associated Types'.

I've finally found some time to try this out. The bad news first: I tried this on a big parser and it panics:
panicked at 'Recursive parser used before being defined', /home/faassen/.cargo/git/checkouts/chumsky-651fb76526ac39e3/b6c5df6/src/recursive.rs:155:18

The parser indeed uses recursive parsers, but I don't understand why caching it should have this effect.
Then a few implementation notes, perhaps useful to help improve the documentation:
My parser uses tokens defined by a logos lexer. In the parser, I used this generic parameter a lot:
where I: ValueInput<'a, Token = Token<'a>, Span = Span>

This caused a bit of a struggle. I want to define a Parsers struct that contains all the cached parsers, along these lines:

struct MyParserCache;

struct Parsers {
   my_parser_cache: chumsky::cache::Cache<MyParserCache>
}

But Parsers and thus MyParserCache cannot rely on a generic I parameter, otherwise we start the whole "source must outlive the duration of the program" namespace issue we started with. So what now? I landed on the following:
impl chumsky::cache::Cached for MyParserCache {
    type Parser<'src> = BoxedParser<
        'src,
        SpannedInput<
            Token<'src>,
            SimpleSpan,
            chumsky::input::BoxedStream<'src, (Token<'src>, SimpleSpan)>,
        >,
        ParsedAST,
    >;

    fn make_parser<'src>(self) -> Self::Parser<'src> {
        Parser::boxed(my_parser())
    }
}

For non-spanned scenario using BoxedStream with BoxedParser is sufficient, but I needed to wrap the whole thing in SpannedInput again. It took quite a bit of puzzling to get the types right.
But unfortunately after this I'm getting this crash. Looking at the source it appears RecursiveInner::Unowned cannot be upgraded for some reason.

I've finally found some time to try this out. The bad news first: I tried this on a big parser and it panics:
panicked at 'Recursive parser used before being defined', /home/faassen/.cargo/git/checkouts/chumsky-651fb76526ac39e3/b6c5df6/src/recursive.rs:155:18

The parser indeed uses recursive parsers, but I don't understand why caching it should have this effect.
Then a few implementation notes, perhaps useful to help improve the documentation:
My parser uses tokens defined by a logos lexer. In the parser, I used this generic parameter a lot:
where I: ValueInput<'a, Token = Token<'a>, Span = Span>

This caused a bit of a struggle. I want to define a Parsers struct that contains all the cached parsers, along these lines:
struct MyParserCache;

struct Parsers {
   my_parser_cache: chumsky::cache::Cache<MyParserCache>
}

But Parsers and thus MyParserCache cannot rely on a generic I parameter, otherwise we get the whole "source must outlive the duration of the program" namespace issue we started with. So what now? I landed on the following:
impl chumsky::cache::Cached for MyParserCache {
    type Parser<'src> = BoxedParser<
        'src,
        SpannedInput<
            Token<'src>,
            SimpleSpan,
            chumsky::input::BoxedStream<'src, (Token<'src>, SimpleSpan)>,
        >,
        ParsedAST,
    >;

    fn make_parser<'src>(self) -> Self::Parser<'src> {
        Parser::boxed(my_parser())
    }
}

For non-spanned scenario using BoxedStream with BoxedParser is sufficient, but I needed to wrap the whole thing in SpannedInput again. It took quite a bit of puzzling to get the types right.
But unfortunately after this I'm getting this crash. Looking at the source it appears RecursiveInner::Unowned cannot be upgraded for some reason.

Is your repo public by chance? Without being able to see your code, there’s no way for me to be able to test it and probe around properly

It would be great if you could get a MRE of the issue with the parser going, that way we are taking more than just some stabs in the dark.

Okay, I just tried a simple recursive parser with caching and it doesn't crash. So unfortunately it looks like I'm going to do more work to reproduce this behavior.

All right, in the process of stripping down this massive real world parser in the hope to find a minimal reproducing example, I realized I was doing a pretty hacky thing with recursive:
let  mut another_parser = None

let parser = recursive(|parser| {
   let internal_parser = ...
   another_parser = Some(internal_parser);
  // stuff
});

I did this because I needed both the internal_parser as well as parser, but obviously it's quite hacky. I rewrote the code to use Recursive::declare and Recursive::define and the crash went away.

Okay, I think I triggered a memory leak somewhere. When I use a cached parser (and thus do not recreate it), the memory usage of the process rises alarmingly (by gigabytes) and eventually it's killed off by Linux. This is when I'm using a large cached parser on the order of 10k times. Strangely enough I recreate the cache for each run, the memory leak also happens, though it's less severe - just the fact that the cache is in use seems to be enough.
When I don't use the parser caching the same run the memory usage stays below 30 megabytes.

Okay, I think I triggered a memory leak somewhere. When I use a cached parser (and thus do not recreate it), the memory usage of the process rises alarmingly (by gigabytes) and eventually it's killed off by Linux. This is when I'm using a large cached parser on the order of 10k times. Strangely enough if I recreate the cache for each run (and thus no caching should take place), the memory leak also happen; just the fact that the cache is in use seems to be enough.
When I don't use the parser caching in the same run the memory usage stays below 30 megabytes.
P.S. Again a reproducible example is probably quite a bit of effort, as my parser is significantly complex.

Without knowing how your parser looks and purely based on your comment, I wonder if you’ve accidentally created mutually recursive parsers that, in an attempt to define the first, attempts to define the second until that loop results in Linux killing it.
Akin to: “what’s not odd is even, and what’s not even is odd”

I wonder if you’ve accidentally created mutually recursive parsers that, in an attempt to define the first, attempts to
define the second until that loop results in Linux killing it.

I don't think so. The parser definition is the same. The parser works - it parses. It works thousands of times, even. It's just that if I use the caching mechanism (and only then) the memory grows unbounded.

@Zij-IT, you got me thinking and do some extra testing. If I just make the change to use Recursive.declare() then the parser memory usage explodes, without any use of caching whatsoever. So it's not due to the caching logic but the switch to use Recursive.declare(). But I switched to that as without it my hack makes the caching system crash. And to repeat: this parser works, it's just extremely memory intensive.
I will note that the docs claim that recursive is a convenience wrapper around define and declare but looking at the source it looks like that's not what is happening.

@faassen For whatever reason I thought that #494 was already merged into main, but that's not the case yet. As #486 shows, there is a leak when using declare and define.

That explains it then! So this means I am stuck with caching this parser until I can create this type of recursive structure.


Problem with Sor

I tried to setup a small problem using sor for an linearequation.
Can you please show me how I set up this example:
sorError.txt
Thank you

@ChrisNabold, with sor you need to give A as a dense matrix. In you case you gave a sparse one.
sor(Matrix(A), b, 1.4)

should work fine.

A should be sparse if it is! There's an optimized implementation for sparse matrices.
The issue of op is that b is sparse (it shouldn't).
using SparseArrays, LinearAlgebra
A = sprand(100, 100, .1)
A = A + A' + 100I
b = A * ones(100)
x = sor(A, b, 0.1, maxiter = 100)

Also note that the stationary methods do not have a stopping criterion in terms of a residual being small, because that would be extra overhead (the idea being that stationary methods would go into a multigrid method or so, where you just do one or two iterations). So you have to set maxiter to something sensible!


Fix XSS in data-target

Fix XSS in our data-target
Close : #20184
/CC @meeque

What about js/dist/util.js will CI generate these?
Asking because I have started from writing failing unit tests, and they still fail unless I also fix it over there.
Fyi, you can find these tests here:
https://github.com/meeque/bootstrap/tree/topic/20184-xss-in-data-target-attribute
I've already merged your fix into that.

Yes Travis build our code and in this case update js/dist/util.js and only added a Visual test because when we fail to get a target they aren't any error so that's a bit difficult to test that with Travis and we don't have unit tests for util.js
Is it a correct fix for you ?

Yes, the fix looks fine.
I'll have a look around, and check if other features might be affected similarly. I'd open new issues in that case...
The qunit test that I wrote seem to work rather fine either way. Of course, for the positive case there is not much to check, so they just wait for a (very short) timeout, and assert that nothing has happened.

Maybe you can create a PR which target my branch v4-xss-data-attribute with your unit test ? ☺

Thanks @meeque 👍


Temperature units not handled correctly

I noticed an issue with temperature units in this package. If I perform:
latexify(unit(1u"°C"))
The returned result is:
L"$\mathrm{K}$"
which of course can't be intentional within the context of this package :-)

That's a feature, keeps you from using affine units :p
This comes from the fact that typeof(u"°C") == Unitful.FreeUnits{(K,), 𝚯, Unitful.Affine{-5463//20}}, and also applies to °F and Ra. Going to need to do something clever about that.

Turns out Unitful.jl doesn't actually track the affine units, so I had to do something less clever and more ugly about it. But I think it should work with 68e3142.

Just wanted to say thanks for fixing this so promptly. I tested the new version and it is working as intended! (and I agree that affine units have their challenges in general!)

Fixing bug reports is the only thing better than programming things nobody needs. Let me know if you encounter anything else :D


Possible bug in streaming evaluation code?

When evaluating on the streaming track by running python data_export.py --out res.csv, I noticed that there are a lot of warning of Found cached result. Looking at benchmark/plotting/utils.py, it seems that the recall results are being cached across steps of streaming evaluation.
Changing benchmark/plotting/utils.py on L160
                assert len(true_nn_across_steps) == len(run_nn_across_steps)
                for (true_nn, run_nn) in zip(true_nn_across_steps, run_nn_across_steps):
                    v += metric["function"](true_nn, run_nn, metrics_cache, properties)
                v /= len(run_nn_across_steps)

to
                assert len(true_nn_across_steps) == len(run_nn_across_steps)
                for (true_nn, run_nn) in zip(true_nn_across_steps, run_nn_across_steps):
                    if 'knn' in metrics_cache:
                      del metrics_cache['knn']
                    v += metric["function"](true_nn, run_nn, metrics_cache, properties)
                v /= len(run_nn_across_steps)

solves the issue for me. I can send a PR if needed.
BTW, is data_export.py the recommended way to run streaming track evaluation?

@harsha-simhadri

@maumueller as well.
I believe this may have an implication on the correctness of the evaluation number for the streaming track.

@arron2003 I'll point @harsha-simhadri  to it since he was running the streaming evaluation. In which sense did the results differ, can you give a concrete example?
Using data_export.py is indeed to correct way to run the evaluation.

@arron2003  Please do file a PR and we can validate it with experiments. Did making this change result in a variation of the leaderboard?

Just sent the PR.
Without the fix (clear_cache=False), you can see the first search step results is being cached and contains lines such as:
Found cached result
Found cached result
Found cached result
Found cached result
Recall:  [0.88368, 0.88368, 0.88368, 0.88368, 0.88368,
...

Note that the number in the res.csv matches that from the leaderboard csv:
https://gist.github.com/arron2003/46658837a80aed5d9a61f49aef385b1f#file-before-log-L2417
https://github.com/arron2003/big-ann-benchmarks/blob/77c53b00267a7cb811ade04b26bbf3772a138811/neurips23/streaming/res_final_runbook_AzureD8lds_v5.csv#L6
With the fix (clear_cache=True), recall is computed at every step, and contains lines such as:
Computing knn metrics
Warning: 5/10000 queries contained ties accounted for in recall
Recall:  [0.88368, 0.8705299999999999, 0.8069200000000001, 0.8131299999999999, 0.81701, 0.81763,
...

I believe this explains why the recall is very high in many submissions.
With the fix, the resulting numbers is quite different from the original leadership csv.
For example, "diskann(('R50_L50', {'Ls': 70, 'T': 8}))" now becomes 0.72145 instead of 0.88368.
https://gist.github.com/arron2003/46658837a80aed5d9a61f49aef385b1f#file-after-log-L4020-L4022
So I am afraid the whole leaderboard needs to be re-computed.

Thanks for the great contribution!
@harsha-simhadri Could you recompute the numbers using the PR? I don't have the raw hdf5 result files available. (I'm fine with you merging #280 as well, maybe the debug output is actually useful.)


Updating Axis Labels and Points in Supplementary Fig (top rank)

closes #169

difference in rank between the geneset and collection (is this your background or null)?

Ah! Yes, this is confusing. I have an error in my notebook. The gene sets and collections are actually the same thing. The label should be Visualize the Absolute Rank of Gene Set Collections Across Algorithms. Thanks! I will add in next commit


Retain original comments in CSL files

Currently comments are stripped out of the CSL file on import since this makes it easier to match the XML node numbering used in citeproc's reverse mapping support.
These comments should be retained.
It appears especially disrespectful now that we add our own "This style was edited with..." comment to output files.

@SteveRidout, I would be ever so grateful if you could fix this. See e.g. https://github.com/citation-style-language/styles/pull/1504/files
Is there anything in citeproc-js that could be changed to make this easier to fix?


lighttpd.conf: restore missing /

The missing / causes WebUI not to display anything.

Fixes #1225


Swift Package Manager Apple Root Cert

Could the apple root cert be added for Swift Package Manager?
SPM can now contain resources as of swift 5.3, Swift tools version 5.3.
Xcode 12 will allow you to do this.

Yes, it will be added soon.
Thanks,
P

Sweet, thanks there is a specific WWDC Video on how to add this support (resources to packages): https://developer.apple.com/videos/play/wwdc2020/10169/

Hi @Jerland2,
There is a new branch swift-5.3 with apple root cert included into swift pm.

Great work!  Would be nice to also update the readme under SPM to reflect this.

@Jerland2 ✅

@Jerland2 I'm closing this issue. And if you are still using that branch it better to switch on develop.
Best,
P


PP-10761 card. frontend support

WHAT YOU DID

introduced new injected values into LinksConfig

epoch seconds value to enable card. next_url
card. frontend url value

added logic to LinksConfig to determine based on boolean value when to globally enable card.

Is related to and requires the following infra pr to be applied in all envs:
https://github.com/alphagov/pay-infra/pull/4252


Error "Failed to decode JWT: Unsupported algorithm or incorrect key" when I'm trying to decode my token

I have the following code:
if let user = response.result.value{
                    do {
                        let claims: ClaimSet = try JWT.decode(user.access_token, algorithm: .hs256(self.jwtSecret.data(using: .utf8)!))
                        user.id = claims["sub"] as! Int
                        user.iss = claims["iss"] as! String
                        print(claims)
                     } catch {
                        print("Failed to decode JWT: \(error)")
                        reject(error)
                    }
}

But I have that error. Now when I'm validating on jwt.io I had a valid decodification. There's a picture of that validation:

So i dont understand what am I doing wrong. Any suggestion?
Best Regards

This library only supports the HS* algorithms listed at https://github.com/kylef/JSONWebToken.swift#algorithms. You are using the RS256 algorithm which is not supported by this library.

Well, What can I do ?

Hi Kyle,
There is a pending pull request from Anders Melen for adding RS256 and RS512 support… could you please take a look at that, as it would help us too!
Thanks,
—Lou

Lou Krieg, President
Green Mountain Software
802.865.2728 (office)
802.355.8355 (cell)
www.GreenMountainSoftware.comhttp://www.greenmountainsoftware.com     [https://greenmountainsoftware.com/wp-content/uploads/2017/09/GMS-LOGO-COLOR.png] http://www.greenmountainsoftware.com
On Oct 5, 2017, at 12:14 PM, Kyle Fuller <notifications<EMAIL_ADDRESS>wrote:
This library only supports the HS* algorithms listed at https://github.com/kylef/JSONWebToken.swift#algorithms. You are using the RS256 algorithm which is not supported by this library.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/kylef/JSONWebToken.swift/issues/90#issuecomment-334515428, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AD7cZf1bZNrAUaWBys5bzZgm2_JqvqCGks5spQBjgaJpZM4PvUsj.

Hi @kylef
This error is quite recurring now and while debugging the library, I found that the algorithm passed to decode is being filtered out from the below method.
func verifySignature(_ algorithms: [Algorithm], header: JOSEHeader, signingInput: String, signature: Data) throws {
  guard let alg = header.algorithm else {
    throw InvalidToken.decodeError("Missing Algorithm")
  }

  let verifiedAlgorithms = algorithms
    .filter { algorithm in algorithm.description == alg }
    .filter { algorithm in algorithm.verify(signingInput, signature: signature) }

  if verifiedAlgorithms.isEmpty {
    throw InvalidToken.invalidAlgorithm
  }
}

/// Verify a signature for a message using the algorithm
  func verify(_ message: String, signature: Data) -> Bool {
    return sign(message) == base64encode(signature)        // Because this returns false
  }

Any Idea what went wrong here?
Because this works with other libraries..


Publish CLI on HomeBrew

Homebrew is a standard way to install CLI applications for mac users. Ideally we would want to give developers a similar experience.
> brew install tailcall
> tc --help

After a release has been made, we should update a homebrew formula with the latest version automatically.

this is fixed.


Improve the logs in case native transfers fallbacks to Pandas

Please describe the feature you'd like to see
When loading a CSV file from S3 to Snowflake a problem occurs, task fails but the table gets created and the data populated. However logs are not clear enough about it, please see below:
[2022-11-16, 11:07:46 EST] {base.py:517} WARNING - Loading files failed with Native Support. Falling back to Pandas-based load
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/astro/databases/base.py", line 508, in load_file_to_table_natively_with_fallback
    self.load_file_to_table_natively(
  File "/usr/local/lib/python3.9/site-packages/astro/databases/snowflake.py", line 623, in load_file_to_table_natively
    self.evaluate_results(rows)
  File "/usr/local/lib/python3.9/site-packages/astro/databases/snowflake.py", line 630, in evaluate_results
    raise DatabaseCustomError(rows)
astro.exceptions.DatabaseCustomError: [{'file': 's3://s3-dev-etldata-001/inbound/test/Out_CM_CU.csv', 'status': 'LOAD_FAILED', 'rows_parsed': 168598, 'rows_loaded': 0, 'error_limit': 168598, 'errors_seen': 168598, 'first_error': 'Numeric value \'"RECORDID"\' is not recognized', 'first_error_line': 1, 'first_error_character': 1, 'first_error_column_name': '"OUT_CM_CU"["RECORDID":1]'}]

The logs show 0 rows loaded but it's not true.
Refer to https://astronomer.slack.com/archives/C02B8SPT93K/p1668615614891269
Describe the solution you'd like

I'd love to see the logs improved to reflect the action properly - meaning mention fallback to Pandas and show how many rows were populated in fact.

The customer came back and said that he used enable_native_fallback=False and the data got loaded nevertheless. It's not an expected behaviour, right?
He also mentioned that the documentation confuses him, particularly this part (it doesn't mention fallbacking to Python - and by the way, what do you mean by that?):

Additional context
Task that was used:
s3_to_snowflake = aql.load_file(
    task_id="s3_to_snowflake",
    input_file=File(path=f"s3://{S3_BUCKET_NAME}/{S3_FILE_NAME}", filetype=FileType.CSV),
    output_table=Table(
        conn_id=SNOWFLAKE_CONN_ID,
        metadata=Metadata(database=SNOWFLAKE_DATABASE, schema=SNOWFLAKE_SCHEMA),
        name=SNOWFLAKE_TABLE_NAME,
    ),
    if_exists="replace",
)

Acceptance Criteria

[ ] Test if enable_native_fallback=False works as expected.
[ ] All checks and tests in the CI should pass
[ ] Unit tests (90% code coverage or more, once available)
[ ] Integration tests (if the feature relates to a new database or external service)
[ ] Example DAG
[ ] Docstrings in reStructuredText for each of  methods, classes, functions and module-level attributes (including Example DAG on how it should be used)
[ ] Exception handling in case of errors
[x] Logging (are we exposing useful information to the user? e.g. source and destination)
[ ] Improve the documentation (README, Sphinx, and any other relevant)
[ ] How to use Guide for the feature (example)

Point 1 is addressed in #1312
Point 2 - @magdagultekin will re-check with customer and update here.

Please re-open in case point 2 is still an issue.


BUG: stats: fixing chisquare to return correct results for arrays of type int32 with large values

Reference issue

Closes gh-10159
What does this implement/fix?

Additional information

taking over the work in gh-10162
(following the suggestions by @WarrenWeckesser)

LGTM, merged. Thanks @pharshalp! And thanks for the detective work @WarrenWeckesser


Multiple image selection

Allow the image selection to select and insert multiple images into the document.

Implementation in progress on the issue-26 branch.

Pushing back to v1.5.0, as I just released v1.4.0 with a different feature set.


Cannot reproduce the results in paper using your provided pre-trained models

Hi, @jasonwu0731
I was finetuning the intent task using your provided pre-trained models
But I got diffenent result which is shown below.

I used this shell script and changed nothing.(Python3.6)
The second question is, according to your code
# ./run_tod_lm_pretraining.sh 0 bert bert-base-uncased save/pretrain/ToD-BERT-MLM --only_last_turn
# ./run_tod_lm_pretraining.sh 0 bert bert-base-uncased save/pretrain/ToD-BERT-JNT --only_last_turn --add_rs_loss

The model is pretrained with batchsize equal to 8 on one GPU. But in your paper, there were 2GPU and batchsize is 32.

Hi @YawYoung

It seems that there are some variances between runs, can you do --nb_runs=3 (should be default using different random seeds) and check the results? Here are the results I got:

Average over 3 runs and 1 evals
acc: mean 0.8581212121212122 std 0.011117537168390397
ins_acc: mean 0.9507407407407408 std 0.0033766729837160048
oos_acc: mean 0.8948484848484849 std 0.009104636100952173
oos_recall: mean 0.4413333333333333 std 0.04616155206325811

Best Test Results: {'acc': 0.8732727272727273, 'ins_acc': 0.9551111111111111, 'oos_acc': 0.9070909090909091, 'oos_recall': 0.505}

For pre-training, I do not find much different while using two GPUs with bsz=16 each and one GPU with 8 samples. You can try yourself to see if there are any other better hyper-parameter settings.

Okk, thanks! ^-^


Cool spell spider

🤖