Enable setting the drawing area to any size using Ferret commands

Reported by karl smith on 28 Nov 2011 20:30 UTC
Allow the SET WIN /SIZE=fff command (also see SET WIN /ASPECT=fff for possible complications) to set the drawing area to as large as desired.  This would turn into a resize command to the graphics delegate.
Also consider something like a SET WIN /SCALE=fff to show the drawing area (and currect picture) at some ratio of the normal size.  This would turn into a scale command to the graphics delegate.  PlotPlus would not know about this scaling.
Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/1901

Modified by karl.smith on 28 Nov 2011 20:31 UTC

Comment by steven.c.hankin on 29 Nov 2011 18:23 UTC
These address important goals, but might be worth further pondering the use cases.  The current SET WINDOW qualifiers are historical artifacts of the device-independent graphics nature of GKS.  The result has been /SIZE=[nominal_factor], instead of size given in pixels. It has been a headache for users (as well as for LAS scripts) that it is so hard to specify pixel size in Ferret.  It would be nice to address this.
There's an independent need for /XPIXELS=nx/YPIXELS=ny concept in the FRAME command and in the SET WINDOW command.  One controls screen pixels;  the other controls output image pixels.  It is at the time of SET WINDOW that the ASPECT ratio is determined -- before FRAME is issued.  How about this:
SET WINDOW/XPIXELS=nx/YPIXELS=ny
 ! sets aspect, sets window pixel size
 ! if larger than available screen pixels, scroll bars will show.

SET WINDOW/SIZE= /XPIXELS=nx/YPIXELS=ny
 ! if /SIZE is given together with /XPIXELS/YPIXELS the window behaves
 ! as it did in pre-Python Ferret -- no scroll bars will show
 ! BUT -- the default pixel size of later FRAME images is hereby established

FRAME/XPIXEL=nx/YPIXEL=ny
 ! Over-rides the SET WINDOW default pixel size (if it was specified).
 ! (Note: If both xpixel and ypixel are specified together and their
 ! ratio doesn't match the window aspect there will be white space on
 ! one edge of the plot)

An appealing element of this approach is that the Ferret user advancing into Pyferret will see straightforward new pixel size controls as part of Pyferret, with the new controls interacting in natural ways (hopefully) with the traditional device-independent controls.

Comment by karl.smith on 29 Nov 2011 19:35 UTC
I do like this idea.  (FYI, /SIZE is in "units" of 1280x1024, which was also the hard-coded values in Ferret.)  PS and PDF output automatically scale and center the image on the "page" (since it is printing to file), thus ignoring these values.  But I think a user would expect this behavior.
I had been thinking about specifying size in inches (or cm), which would be translated into number of pixels using the screen resolution for raster images.  But I think specifying pixels directly would be more useful and meaningful.  For vector images (PS & PDF), I think the user would then expect the given size specification (in inches or cm) to be honored in the output, thus leading to a whole new "can of worms".

Comment by steven.c.hankin on 29 Nov 2011 23:14 UTC
Ah, I had forgotten that PLOT+ tied its GKS workstation size to a fixed pixel value.  Now that you remind me ("of course") it has to be so, because X-windows is a concrete, device-dependent workstation in the GKS viewpoint.  In that sense, by accidental good luck, the outline I suggested is pretty much on target:  SET WINDOW/SIZE specifies the size on the terminal screen; SET WINDOW/XPIXELS/YPIXELS specifies the size of the page that the "window" peers onto.
PostScript and PDF do complicate the above.  From my recent experiences as an amateur architect using CAD software I can attest that software to handle PDFs (at least) is very tightly tied to the idea of a pre-specified page size.  But in inches (or cm), rather than in pixels, of course.  To keep the metaphors consistent, you'd want the window (specified by a nominal /SIZE) to peer onto a page (specified in inches).  How about this approach:
! example -- output to image
SET WINDOW/SIZE=.75/XPIXEL=800/YPIXEL=600
GO ptest
FRAME/FILE=image.png   ! 800x600 pixel image

! example 1 -- output to a page
SET WINDOW/SIZE=.75/XPAGE=8.5/YPAGE=11/RESOLUTION=300
!                             /RESOLUTION default is (say) 300 dpi
GO ptest
FRAME/FILE=image.pdf    ! 8 1/2 x 11 inch page

! example 2 -- output to a page
SET WINDOW/ASPECT=`11/8.5`
GO ptest
FRAME/FILE=image.pdf/XPAGE=8.5    ! 8 1/2 x 11 inch page
!                   /YPAGE could alternatively have been specified

I guess I like the approach in example 2 a little better, myself:

requires fewer new qualifiers
does not require the user to translate into and out of pixels

Comment by karl.smith on 1 Dec 2011 19:54 UTC
Enabled SET WIN /SIZE=fff to work for any given size (can exceed the size of the hard-coded 1280x1024 "display size"). Verified that line thicknesses (and the images) scale properly; i.e., the scene from SET WIN /SIZE=4.0 gives the same image as SET WIN /SIZE=1.0 and then scaling the image by 2.0 in each dimension (Scene -> Scale in the viewer).
Delaying implementation of the new command options while I work on some other defects.

Comment by karl.smith on 14 Jun 2013 18:16 UTC
E-mail to Andrew:
Since PPL$WIDTH and PPL$HEIGHT do not change when you reset the window size, I realize that I actually am not sure what the definition of a Ferret inch (or Denbo inch, as Ansley calls it) really is.
What I do observe, however, is that the window size, for a given /size=n, is the same number of pixels but not the same physical size on the monitor.  Running the script:
use coads_climatology
shade /l=5 sst
frame /file=sst.png
On my ViewSonic 23" monitor,
   Monitor resolution   DPI-X  DPI-Y   Ferret/PyFerret window size
     1920 x 1080         95     95      8 1/2" wide, 7 3/8" high
     1680 x 1050         85     94      9 3/4" wide, 7 5/8" high
     1440 x  900         72     80     11 3/8" wide, 8 7/8" high
On the Lenovo laptop montor,
   Monitor resolution   DPI-X  DPI-Y   Ferret/PyFerret window size
     1280 x 800         108    108      7 5/8" wide, 6 5/8" high

All produce an 819 x 707 PNG image for PyFerret, or 819 x 706, 818 x 706, 819 x 707, 818 x 705 GIF image for Ferret.
(If you first set window /size=1, you get a 979 x 845 PNG image; the default is /size=0.7)
So the constant thing here is the window size in pixels.
Note 1: If you run ferret -gif, the GIF size is 768 x 662, so something shrinking it (94% original size) in this case.
Note 2: If you run pyferret -nodisplay, the PNG size is 1024 x 884, so something is enlarging it 25% in this case.  I probably need to correct this.
Verified pixel size is what stays the same on flat's console with Ferret and PyFerret:
1024 x 768 monitor at 85 dpi in X and Y (although I had to set the ferret window size to 0.5)
and stout's console with PyFerret:
1920 x 1200 monitor at 102 dpi in X and Y.
But with Ferret on stout's console, the window/gif is a little larger (862 x 745 pixels).
Using the -gif option gives the same reduced-size gif seen before.
When this gets saved to PDF or PS in PyFerret, because of scaling without distortion, the constant becomes the page width or height, whichever is the limiting size.  So for the default aspect ratio (819 x 707 or 979 x 845) going to an 11 x 8.5 landscape page, the image is approximately 9.85" x 8.5".  Given that margins need to be added, this will be somewhat smaller.
For the /size=0.7 displayed window, one pixel (/thick=1) is about 0.86 points.
For the /size=1.0 displayed window, one pixel (/thick=1) is about 0.72 points.
Again, margins will make these smaller.
Basically, the change in /size is saying the window is larger, but then you are forcing it onto the same page size when you print to PDF/PS with automatic page fitting.  Unless you want to force some scaling factor for creating the PDF/PS images and not have it fill the page, but consequently, /thick=1 gives a set line width in points in PDFs as well as pixels in PNGs.  So, do we want:
(A) PyFerret to automatically fit the image to the page it is being printed to (so /size=1 printed to a "poster size" page makes a magnified version of what is on the screen; the user should have set /size=25 to make multiple normal-sized plots filling this large page),
or
(B) to make the user adjust SET WINDOW /SIZE=... to the appropriate size to fit the page being printed to (for example, /size=25 to fill a "poster-size" page and /size=1 would give a small plot centered in this large page)?
Not sure how real the suggested scenario is, but I am inclined to stick with (A).

Comment by karl.smith on 15 Jun 2013 13:26 UTC
Adding excerpt from e-mail message:
But re-reading Steve's suggestion in ticket #1901 re: SET WINDOW /XPIXEL= /YPIXEL= and FRAME /XPAGE= /YPAGE=, I could see the following scenario that leaves the user in control of all of this:
yes? SET WINDOW /XPIXEL=720 /ASPECT=7.5/10.0
! creates a 720 x 540 plot - planning on 11" x 8.5" less 0.5" margin
(perform the plot)
yes? FRAME /FILE=test.png
! creates a 720 x 540 pixel PNG plot
yes? FRAME /FILE=test.pdf /XPAGE=10.0
! creates a 10" x 7.5" plot; thus 1 pixel (thickness of 1) is 10"/720 = 1 point
And using the SET WINDOW /THICKEN=... one could adjust the raster image size and still keep the line thickness of 1 to be 1 point (e.g, SET WINDOW /XPIXEL=1440 /THICKEN=2 /ASPECT=0.75)

Comment by karl.smith on 15 Jun 2013 13:28 UTC
Adding e-mail message from Andrew:
Maybe the simplest approach would be to have  SET WINDOW define a drawing surface (in inches), a base pen (in points), and a dots-per-inch (dpi) render factor for the screen.  If we set 72dpi, we get one rasterized pixel per PostScript point.  If we set 144dpi, we get 2 pixels per PostScript point, and the raster (e.g. screen) output is twice as wide and twice as tall, without changing the vector output at all.    So how about
SET WINDOW/WIDTH=11/HEIGHT=8.5/THICK=1/DPI=72
For backwards-compatibility, the user could instead provide /SIZE and /ASPECT qualifiers, and the height and width would be computed using some default dpi: HEIGHT=SIZE/( default_dpi*ferret_factor) and WIDTH=HEIGHT/ASPECT.
Then for graphics output, we'd do
FRAME/file=test.pdf
FRAME/file=test.png           ! default DPI is that of the window, in this case 72
FRAME/file=test.png/DPI=144   ! output with higher dpi

Comment by andrew.wittenberg on 16 Jun 2013 00:11 UTC
(Apologies for not noticing the earlier-proposed XPAGE, YPAGE, RESOLUTION -- that's just what I had meant by WIDTH, HEIGHT, DPI.)
Merging all these ideas, and renaming a little, how about this:
SET WINDOW/XINCHES/YINCHES/XDOTS/YDOTS/DPI/SIZE/ASPECT

where only some combinations are allowed -- the other items would be computed from what the user specifies and/or the Ferret defaults.  An advantage of these names is that it gives DPI an obvious meaning, and allows the short abbreviations XI/YI/XD/YD.  Once Ferret has filled in the gaps, these would all be provided to the user as Ferret symbols, and also would serve as the window-defaults for FRAME -- unless overridden for raster output by
FRAME/FILE=test.png/XDOTS/YDOTS/DPI

where only one of those dots qualifiers would be allowed, since the aspect ratio is fixed.
Let me know if I'm missing anything.  One question is whether to split DPI into XDPI and YDPI, in case a monitor has non-square pixels -- how common is that?

Comment by karl.smith on 16 Jun 2013 16:18 UTC
At least ten years ago, probably longer, one of the big enhancements in monitors was that DPI-X was the same as DPI-Y at their "native" resolution (1920x1080 on the 23" ViewSonic, 1920x1200 on the 22" ViewSonic, 1280x800 on the Lenovo, 1024x768 on the old monitor on flat).  Of course, if you set to a resolution that does not have the same aspect ratio (e.g., 1600x1200 on the 23" ViewSonic), then that no longer holds.  But everything displayed on my Ubuntu system gets noticeable skewed in these cases (icons, fonts) - unless you can get the system does something similar to letter-boxing done with movies.
That being said, (I am fairly sure) all the Ferret / PyFerret software still supports separate DPI-X and DPI-Y.  If wanted to, we could have /DPIX and /DPIY, and /DPI will match both.  Not sure if we want to, however.

Comment by steven.c.hankin on 17 Jun 2013 16:04 UTC
2 quick comments:

Aren't the qualifier names "/XDOT" and "/YDOT" a bit inconsistent with syntax already in Ferret, such as "PPL$XPIXEL" and "PPL$YPIXEL"?   In other contexts in Ferret doesn't the word "dot" refer to a period character as used in Ferret attribute names?

Controlling dots-per-inch is a nice goal, but I fear it will come back to bite you repeatedly.  How reliably does the OS even know (or pay attention to) the physical size of the display?  I'm thinking about the microscopic sizes of fonts as they show up on my laptop .... (Or does DPI refer to "dots per Denbo inch" ... something that we can control FWIW.)

Comment by andrew.wittenberg on 17 Jun 2013 22:18 UTC
You're right -- I had forgotten that we already have PPL$XPIXEL and PPL$YPIXEL.  So I agree we should name the qualifiers /XPIXEL and /YPIXEL (rather than /XDOT and /YDOT).
On Steve's comment 2: Yes, I did mean "dots per Denbo inch".  Could we make the Denbo inch also output to a PostScript inch?
Karl: from the sound of it, DPI should be sufficient for now -- no need to split it into DPIX and DPIY.
Is everyone on board with XINCHES rather than XPAGE?  If so, we'd now have
SET WINDOW/XINCHES/YINCHES/XPIXELS/YPIXELS/DPI/SIZE/ASPECT/THICKNESS
FRAME/FILE=test.png/XPIXELS/YPIXELS/DPI

Sample usage would be:
! default window, with 1-point (and 1-pixel) lines
SET WINDOW/XI=11/YI=8.5/DPI=72/THICK=1 1

! some equivalents
SET WINDOW/XI=11/YI=8.5/XP=792/THICK=1 1
SET WINDOW/XP=792/YP=612/DPI=72/THICK=1 1
SET WINDOW/XI=11/XP=792/ASPECT=`8.5/11`/THICK=1 1
SET WINDOW/SIZE=1/ASPECT=`8.5/11`/DPI=72/THICK=1

! 11"x8.5" PostScript output
FRAME/FILE=test.ps

! 792x612 pixel PNG output
FRAME/FILE=test.png

! ways to create a double-sized PNG (all equivalent)
FRAME/FILE=test.png/DPI=144
FRAME/FILE=test.png/XP=1584
FRAME/FILE=test.png/YP=1224

! same window but with 2-point, 2-pixel base-lines
SET WINDOW/XI=11/YI=8.5/DPI=72/THICK=2 1

! double-sized window with 1-point, 2-pixel base-lines
SET WINDOW/XI=11/YI=8.5/DPI=144/THICK=1 1

Comment by steven.c.hankin on 17 Jun 2013 22:43 UTC
Just personal opinion on this matter: XINCHES, XPIXELS, and DPI over-specify the problem and raise the possibility of self-contradictory specifications.  Error checking and reporting on the interactions of the qualifiers will be needed in the code (as /ASPECT already requires).  Is the net contribution of the over-specification positive or negative?  It depends, I suppose, on whether these qualifiers will be so commonly used in such a variety of ways that the extra convenience (up side) over-rides the extra complexity (down side).
My personal vote would be to drop /DPI as a qualifier.  A user wanting to specify DPI could still do so via
LET DPI = 144
SET WINDOW/XPIXEL=1584/XINCHES=`1584/DPI` 1

which seems pretty clean and self-evident.  There's also the detail that the name "DPI" refers to "dots", which may send a user chasing down the detailed documentation in order to be sure she understands the meaning of the qualifier.

Comment by andrew.wittenberg on 17 Jun 2013 23:54 UTC
Ok, I can live without DPI.
SIZE and ASPECT are redundant now too.  But shall we keep them around for backwards-compatibility and convenenience?
If so, then we're down to:
! default window, with 1-point (and 1-pixel) lines
SET WINDOW/XI=11/YI=8.5/XP=792/THICK=1 1

! some equivalents
SET WINDOW/XP=792/YP=612/XI=11/THICK=1 1
SET WINDOW/XI=11/XP=792/ASPECT=`8.5/11`/THICK=1 1
SET WINDOW/SIZE=1/ASPECT=`8.5/11`/XP=792/THICK=1

! 11"x8.5" PostScript output
FRAME/FILE=test.ps

! 792x612 pixel PNG output
FRAME/FILE=test.png

! ways to create a double-sized PNG (all equivalent)
FRAME/FILE=test.png/XP=1584
FRAME/FILE=test.png/YP=1224

! usual window but with 2-point, 2-pixel base-lines
SET WINDOW/XI=11/YI=8.5/XP=792/THICK=2 1

! double-sized window with 1-point, 2-pixel base-lines
SET WINDOW/XI=11/YI=8.5/XP=1584/THICK=1 1

Suggested defaults:
XINCHES=11
YINCHES=8.5
XPIXELS=792
YPIXELS=XPIXELS*YINCHES/XINCHES
ASPECT=YINCHES/XINCHES
SIZE=XINCHES/11

Over-specification would cause the lowest-precedence qualifier to be ignored, producing a warning, e.g.:
yes? SET WINDOW/XI=11/YI=8.5/ASPECT=2
 **WARNING: SET WINDOW is over-specified, ignoring /ASPECT

yes? SET WINDOW/XI=11/YI=8.5/SIZE=1
 **WARNING: SET WINDOW is over-specified, ignoring /SIZE

yes? SET WINDOW/XI=11/YI=8.5/XP=792/YP=612
 **WARNING: SET WINDOW is over-specified, ignoring /YPIXELS

Comment by steven.c.hankin on 18 Jun 2013 00:43 UTC
I like your approach to handling over-specified commands.  (The reference to "/YPOINTS is a typo, no?)
But two fundamental points to explore further:

In the preceding comments SIZE is defined in inches.  Since the intention of SIZE is (historically) to control the size of a visible window on the screen, shouldn't SIZE be interpreted in pixels, instead of inches?
If the goal of /XINCHES and /YINCHES is to control the size of the resulting PDF, would they do better as controls on the FRAME command?

Example session:
SET WINDOW/XPIXEL=792/YPIXEL=612
GO ptest                         ! creates a window of the indicated pixel size
FRAME/FILE=out.png               ! creates an image the same pixel size as the window
FRAME/FILE=out.pdf/XINCHES=8.5   ! creates a PDF 8.5" wide

! now resize the window
SET WINDOW/SIZE=0.3              ! makes the window pixel size smaller based on area
FRAME/FILE=out.png               ! creates an image the pixel size of the new window
FRAME/FILE=out.pdf/XINCHES=8.5   ! identical to previous PDF (window size is irrelevant)

Comment by andrew.wittenberg on 18 Jun 2013 18:57 UTC
Replying to steven.c.hankin:

(The reference to "/YPOINTS is a typo, no?)

Yes, a typo -- now fixed above.

Comment by andrew.wittenberg on 18 Jun 2013 19:56 UTC
My motivation for specifying window dimensions in "Denbo or PostScript inches" (and making that the go-to unit) is to move to a more "vector" graphics paradigm, with device-independence of the "virtual page".  That way we can specify line thicknesses in "points" rather than "pixels", and take advantage of the antialiasing capabilities of our new Python graphics libraries to produce a more WYSIWYG display for vector graphics.
Under that approach, XINCH or YINCH needs to be provided to SET WINDOW, so Ferret will know how thick to make a 1-point line; otherwise it wouldn't know how many pixels per inch.  (With antialiasing, even a fractional-pixel line can be rendered now with PyFerret's graphics.)
If you agree with that (and I'm not sure you do), then since we'd be specifying the inch-dimensions of the window anyhow, to keep things simple we could just pass that straight through to any vector output with FRAME.
To enlighten this discussion, take a look at Inkscape vector graphics editor (File-> Document Properties).  In that dialog, one can set the default units (px, pt, in, cm) as well as the page size in those units.  (The default dpi for Inkscape is 90, i.e. 90px = 1in.)

Comment by steven.c.hankin on 18 Jun 2013 20:31 UTC
I fully agree with the logic of the points you've made.
My concern about /XINCHES and /YINCHES on the window command has to do with the possibility that it may be opening a Pandora's box of graphical layout issues.  For /XIN and /YIN to work as a SET WINDOW options, they need to set the PLOT+ axis lengths and all of the associated offsets to locate labels, etc.  Issues are raised about whether default text font sizes should be adjusted as the window size in inches is enlarged.  (I'd say "no", but realizing that this means the prominence of text on the page will diminish as the /XIN, /YIN specification is increased.
There is partial logic to do all of this already -- associated with the /ASPECT qualifier.  My recollection, though, is that inside of the /ASPECT logic, the area of the page is held constant.  This means that the layout logic has been tested only over a small range of values.  There is also related logic in the /TEXT_PROMINENCE qualifier of DEFINE VIEW.
In short -- my feeling is that some experimentation inside of the code is needed before making a commitment.  This small script illustrates the nature of the work that is needed.
GO ptest
PPL SIZE 15,20
go ptest

Comment by andrew.wittenberg on 18 Jun 2013 21:01 UTC
Thanks Steve.  I was hoping to avoid Pandora's box by simply having SET WINDOW do the following: (1) compute the DPI from the input qualifiers and/or their defaults; (2) compute/input the XPIX & YPIX, to set the window size and provide a default size for the raster forms of FRAME; (3) save the XIN & YIN for possible later use by the vector forms of FRAME.
Font sizes are already specified in Denbo inches, aren't they?
Some new logic would be required to handle all the various combinations of these qualifiers and their defaults.  But the only new action-items for the command would be to store the DPI (for use with line thickness) and the XIN & YIN (to set the dimensions of any later vector output).

Comment by steven.c.hankin on 18 Jun 2013 23:30 UTC
I wonder if the following slight (only) further simplification might still keep Pandora's box closed:
o yes -- SET WINDOW supports /XINCHES, /YINCHES, /XPIXEL, and /YPIXEL
o no -- there is no concept of DPI -- Xinches and Xpixels do not interact, except through consistency checks about the window aspect ratio.  (Pixels and inches are mutually exclusive, no? Seems like one applies only to PDFs; the other only to rasters.)
Then
SET WINDOW/XINCHES=6/YINCHES=8 saves the 6x8 inch size as a '''default''' for later FRAME commands.  (Its just a convenience.  The same control is available when saving a PDF via the FRAME command)
SET WINDOW/XPIXEL=600/YPIXEL=800 sets the window size (and the size of future raster images saved via FRAME)

Comment by andrew.wittenberg on 19 Jun 2013 20:28 UTC
Not having a DPI would be ok for antialiased graphics ("high quality").  But without it, we'd have to assign some conversion for line thicknesses with non-antialiased graphics ("draft quality") -- e.g. 1 point = 1 pixel (DPI=72).
Or we could just remove draft-quality graphics altogether (that's fine with me).

Comment by karl.smith on 20 Jun 2013 00:12 UTC
Realized, since I am recording the drawing commands in memory (using QPicture in Qt, using SVG surface in memory in Cairo), and then "replaying" those drawing commands to create desired PNG, PDF, etc., I cannot define different base line widths depending on whether I am writing to PNG or to PDF.
Qt explicitly says the "replaying" of the QPictures will give WYSIWYG (explaining this is just what you need for print-preview).  Thus line widths are scaled along with everything else.
I do not know if Cairo does the same with line widths when replaying the stored SVG commands to a PNG.  Hopefully WYSIWYG to match Qt behavior.
So if line thickness is to be specified in points then I need somehow get a DPI to convert to pixel thickness, thus the need for /XINCHES, /YINCHES.
If the line thickness is in pixels, then I do not need the DPI, but the user will need to tweak the global line thickness scaling factor to make one pixel thickness match whatever line thickness in points is desired in the PDF finally output.  Having /XINCHES and /YINCHES ahead of time will enable the program to figure out that factor.
So thinking along the lines of Andrews comment:14 except I am inclined to just throw an error if over-specified (so I don't have to figure out and explain priorities).
Steve mentioned that there might be a way to make /XINCHES and /YINCHES the Denbo inch size of the plot as well, and still have everything properly laid out in the default Ferret plot.  If this can be done, then /XINCHES and /YINCHES becomes a lot more meaningful in the SET WINDOW command.  To be investigated.
I will work on this and see what I can come up with.  Then we can evaluate and go from there.

Comment by karl.smith on 11 Jul 2013 18:41 UTC
Implemented SET WINDOW /XINCHES= /YINCHES= /XPIXELS= /YPIXELS= /TEXTPROM=
The default window size (/XINCHES, /YINCHES) is 10.5 inches wide and 8.5 inches high, with margins of 1.375 inches all around; thus plot axes of 7.75 inches wide and 5.75 inches high which has an axis aspect ratio of 0.74.  This change was made to have the default page size fit on a landscape letter-sized page.
Compare to traditional ferret defaults 10.2 inches wide by 8.8 inches high with a left margin of 1.2, right margin of 1.0, and top and bottom margin of 1.4; thus plot axes of 8 inches wide and 6 inches high which has an axis aspect ratio of 0.75.
/XINCHES and /YINCHES set the window size using the display resolution.  This is also the default size for vector images (PS, PDF, SVG) output.  /XPIXELS and /YPIXELS is the pixel size of the displayed image and is the default size for raster images (PNG).  All /XPIXELS and /YPIXELS do is set the image scaling factor in the viewer.  Ferret is unaware that the displayed image is scaled when shown to the user.  Only three of the four /XINCHES, /YINCHES, /XPIXELS, /YPIXELS can be given.
The /ASPECT= option is also available for specifying size given just width or height.  Thus with /ASPECT, only one of /XINCHES or /YINCHES can be given, and only one of /XPIXELS or /YPIXELS can be given.
The /SIZE= option is also available.  The /SIZE=n option now just set the image scaling factor to sqrt(n), and sets the /XPIXELS and /YPIXELS default raster image size accordingly, i.e., /XPIXELS = /XINCHES * DPI-X * sqrt(n); thus /SIZE is incompatible with /XPIXELS and /YPIXELS.  By default, /SIZE=0.7 as in Ferret.  If /SIZE=1, the displayed image will be inch size specified.
Over-specification of size results in an error.  The default window is /XINCHES=10.5 /YINCHES=8.5 /SIZE=0.7.
Default margin size, default tic-mark and other lengths, default text heights are all now scaled according to the window size: scale = sqrt(widthheight/10.58.5).  This value is given in the symbol PPL$SCALE.  So major tic marks will by default have full length of 0.25 * PPL$SCALE (typically only the outer half is drawn).  /TEXTPROM applies further scaling to default text heights.  Any lengths or text heights specified by PPL commands are used as given; they are not scaled.
The values set by PPL LABSET are now used as the default heights of main labels (HLAB1) and axis labels (HXLAB and HYLAB).  The main label may have its size automatically reduced if too large.  The dataset and logo labels are still (scaled) hard-coded sizes.  (The fourth size in LABSET, HLABS, is not used for the height of any automatic labels.)
Because window sizes can now vary, all these PPL settings are stored for each window.  Switching between windows will reinstate the last PPL values for that window.  PPL RESET will reset to the default (scaled, if appropriate) values for the currently active window only.
Line widths are now in units of points.  The default line thickness scaling factor for windows changed to 0.75 so the default line thickness in plots closely match that given in Ferret (96 DPI * 0.75 pt / 72 pt_per_in = 1 pixel).  Figured better to keep the width definition clean and adjust the default scaling of this width.
Print options dialog removed from the viewers when saving PS and PDF.  PS and PDF are no longer scaled and centered to fit a letter-sized window since the desired size is now specified in the FRAME command, and the image size on screen is now always used when using the Image->Save As... command.  But this means images that do not fit on a letter-sized page will get cut-off.  The full page is used (no margins) as margin specification was not available in older Qt.  Software for printing PS and PDF almost always gives the option for fitting and centering, so this should not be an issue, and it makes incorporating images into documents easier.  Removal of the print options dialog also removes some confusion, as one is saving, not printing.
Closing out this ticket as I think this completes the objective of this ticket.  There might be issues with viewports (although plots appear correct with casual examination); to be determined and, if so, a separate ticket will be created.


[BEAM-10961] enable strict dependency checking for sdks/java/extensions/google-cloud-platform-core

Split from #13686
R: @ibzib

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Run Java PreCommit

The change to sdks/java/extensions/euphoria/build.gradle in commit b7125d0 is unintentional. See PR #14126.


Key reuse is potentially dangerous

flask-oidc creates two JWS signers using the Flask secret key:
https://github.com/puiterwijk/flask-oidc/blob/68767920a5419e45ba5e725bf758587f01a2a265/flask_oidc/__init__.py#L179-L183
In addition, Flask itself creates a signer [using the same key].(https://github.com/pallets/flask/blob/7e714bd28b6e96d82b2848b48cf8ff48b517b09b/flask/sessions.py#L330-L332)
In general, it's unsafe to reuse a cryptographic key for multiple purposes. The proper construction is to use a KDF like HKDF to derive separate keys for each application.
I'm not sure if this is actually exploitable in this case, but if it is, one shape would look like:

Because each of these signers is signing with an HMAC over the same key, the output of any one of them could be fed back into another, which will then accept the signature, since it's signed using the same key.
This potentially means that an attacker could e.g. swap the session cookie and the OIDC_ID_TOKEN_COOKIE_NAME cookie, which is certainly surprising at best.

I haven't verified that the outputs are sufficiently compatible for the attack to actually work, but ideally the code wouldn't rely on details of slightly-differing output formats for an important security property.

Looking further, it looks like itsdangerous has a built-in solution for this: The salt parameter to signers
I believe you can just change the lines to
        self.extra_data_serializer = JSONWebSignatureSerializer(
            app.config['SECRET_KEY'], salt='flask-oidc-extra-data-serializer')
        self.cookie_serializer = TimedJSONWebSignatureSerializer(
            app.config['SECRET_KEY'], salt='flask-oidc-cookie-data-serializer')

I don't have time to test that change locally but I'll send a PR when I get a chance to.

That seems way simpler than my HKDF solution :-)


Update progress bar component.

The progress bar component is using the deprecated string literal ref attributes and should be updated to use the new ref callback interface.

handled in pull #106


Generator performance

Reporting a bug
Generators seem to be over 10x slower than the equivalent loops:
from numba import njit
import numpy as np

a = np.random.randint(0, 10000000, 10000)
b = np.random.randint(0, 10000000, 10000)

@njit
def product_binary(A, B):
    for a in A:
        for b in B:
            yield a, b

@njit
def sum_pairs_loop(A, B):
    out = np.empty(len(A) * len(B), dtype=A.dtype)
    i = 0
    for a in A:
        for b in B:
            out[i] = a + b
            i += 1
    return out

@njit
def sum_pairs_gen(A, B):
    out = np.empty(len(A) * len(B), dtype=A.dtype)
    for i, (a, b) in enumerate(product_binary(A, B)):
        out[i] = a + b
    return out

%timeit sum_pairs_loop(a, b)
# 435 ms ± 5.91 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

 %timeit sum_pairs_gen(a, b)
# 6.02 s ± 200 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Is this expected?

Thanks for the report. I'm not hugely surprised by this. Underneath Numba is LLVM which does the bulk of the optimisation when it compiles the LLVM IR that Numba is generating. The "loop" version is going to be very quick because of two things 1) that there's been decades of research into optimising loops and Numba knows how to present loops in a way that LLVM really likes 2) that Numba is managing to eliminate any reference counting in the loop as it's a case it "understands". The "generator" version is not so lucky, it's quite hard to optimise as there's multiple function calls underneath to make the generator "work" and included in this is a load of reference counting that cannot be eliminated by the current passes that do this.

That's interesting to hear. I was thinking about this in the context of itertools and was hoping they could be easily expressed with generator functions. Is there currently any way of defining iterables that can be optimized well?
A possibly naive question: do immutable values get reference counted in the same way as mutable ones? I would have thought values like numbers or tuples would be stored inline, which could make this a little easier to optimize.

That's interesting to hear. I was thinking about this in the context of itertools and was hoping they could be easily expressed with generator functions. Is there currently any way of defining iterables that can be optimized well?

This is a huge "it depends", which is probably not the answer you wanted. If iterables can be inlined as compile time constants ~= live on the stack, and the function doing the work can also be inlined, then "may be". A lot of this comes down to whether there's reference counting involved (objects on the heap), whether we can spot that and eliminate it, and then also what the function being called is like.

A possibly naive question: do immutable values get reference counted in the same way as mutable ones? I would have thought values like numbers or tuples would be stored inline, which could make this a little easier to optimize.

It's more about where the object's data is stored, if it's a heap allocation then it's reference counted. e.g. tuples are inlined and stack allocated, NumPy arrays are heap.

Closing this as it seems like the original question is answered and no further response has been received. If there are further discussions to have or questions to resolve, the Discourse group https://numba.discourse.group will be a better place for items of this nature.


Adds the ability to edit the name of the mindmap

this mostly on covers the happy path , it does little in the way of error handling and validation (checking the title , checking the user owns the map they are editing)

Added support for connecting to arrangodb using https
Added a tooltipped button component
Added tooltips for top menu items
rename now uses the patch api
formatting some of the component classes


Fix Swagger editor error

Add separate controller for HEAD /templates to keep operationId unique.

@heckj @geoff-reid

👍

:+1:

*** BUILD #2434 ***

:+1:

jenkins: test this please

test this please


Add CRTL-C handling and unexpected errors

After run_all() we want to save all the results. Now we have 2 problems:

If we encounter a raised error inside the step execution we don't save the results, only when the steps fail itself
If someone clicks ctrl-c we stop. Lightning provides very nice silent stopping, we could use their functionality as well and handle it ourselves

Actually it's well handled by pytorch - it's enough


Issue with navbar.tsx

There is a error in navbar  component. That was requested by @nirajgiriXD to modify in pull request, as suggested i did commit those changes which was changed by @nirajgiriXD

Solve those issues to navbar component.

Hi @Sandesh-Ghimire,
I have refactored the code and pushed the changes to the main branch. Please pull the latest changes and let me know if there are any issues.


Could Multiple_cursors_before/Multiple_cursors_after be arrays?

I try to make [fcitx.vim for osx] work with vim-multiple-cursors at https://github.com/CodeFalling/fcitx-vim-osx/commit/3593614364dd7961e1e9cecff301903cf84da00e?diff=split.
But how to avoid conflict with other Multiple_cursors_before/Multiple_cursors_after?Could they be arrays?

@eapache @djjcast @balta2ar @aschrab thoughts?

Do I understand it right that you intend your plugin to be compatible with vim-multiple-cursors out of the box? So you basically want to insert your own hook into Multiple_cursors_before?
If so, so far I have witnessed only reversed direction of integration. Meaning that if some plugin wants to be compatible with vim-multiple-plugins, they provide two functions turn-on and turn-off and ask the user to call these switchers in Multiple_cursors_before/after. For example: https://github.com/Valloric/YouCompleteMe/pull/1165. Will that work for you?

The User autocmd event can be used to allow multiple "before" and "after" hooks. One plugin that uses this pattern is junegunn/goyo.vim. See

https://github.com/junegunn/goyo.vim#callbacks
https://github.com/junegunn/goyo.vim/blob/master/autoload/goyo.vim#L272
https://github.com/junegunn/goyo.vim/blob/master/autoload/goyo.vim#L371
:help :doautocmd

@balta2ar Yeah you got it.But I just don't want to trouble users to call them in their .vimrc.

@CodeFalling did you get this working?

@faceleg No.Still have to trouble users to do something in .vimrc.
But autocmd may a better idea than array.


doc(vscode.md): fix typo

Warnings

:warning:
This PR comes from a fork, and won't get JS generated for QA testing this PR inside the Emission Example app.

  Generated by :no_entry_sign: dangerJS

Thanks!


[FEATURE] Array of ValueFrom in module-manifests

Is your feature request related to a problem? Please describe.
Having a module that creates a AWS Fargate Task (concrete example is for aws-batch) might require some policies attached to the JobRole. For example, for reading and writing data from the Fargate Task a module manifest would look like
name: task-a
path: modules/compute-jobs/fargate/
parameters:
  - name: fargate-job-queue-arn
    valueFrom:
      moduleMetadata:
        group: core
        name: batch-compute
        key: FargateJobQueueArn
  - name: input-read-policy-arn
    valueFrom:
      moduleMetadata:
        group: datalake
        name: input-store
        key: ReadOnlyAccessPolicyArn
  - name: output-write-policy-arn
    valueFrom:
      moduleMetadata:
        group: datalake
        name: output-store
        key: FullAccessPolicyArn

assuming the stack is aware of <PREFIX>_PARAMETERS_INPUT_READ_POLICY and <PREFIX>_PARAMETERS_OUTPUT_WRITE_POLICY. It is not possible to have a dynamic length of such parameters. For hard-coded strings the following works:
parameters:
  - name: fargate-job-queue-arn
    value: "my-queue-arn"
  - name: policies-to-attach
    value:
         - name: policy-a-arn
            value: "arn-of-policy-a"
         - name: policy-b-arn
            value: "arn-of-policy-b"
         - name: policy-c-arn
            value: "arn-of-policy-c"

as it is passed to stack (example). But for value-references as described in the documentation this is not possible.
Describe the solution you'd like
It would great of the configuration can look like
parameters:
  - name: fargate-job-queue-arn
    value: "my-queue-arn"
  - name: policies-to-attach
    value:
         - name: policy-a-arn
            valueFrom: ...
         - name: policy-b-arn
            valueFrom: ...
         - name: policy-c-arn
            valueFrom ...

with unknown number of policies in <PREFIX>_PARAMETERS_POLICIES_TO_ATTACH and
correctly replaced with the retrieved values from the META-DATA (Currently, those valueFrom do not get substituted with the actual values). Ideally, there would be a pass over the module configuration in a post-order traversal fashion and substitute all value-references.
Describe alternatives you've considered
A workaround is to write
name: task-a
path: modules/compute-jobs/fargate/
parameters:
  - name: policy-arn-string-or-empty-1
    valueFrom: ...
  - name: policy-arn-string-or-empty-2
    valueFrom: ...
  - name: policy-arn-string-or-empty-3
    valueFrom: ...
  - name: policy-arn-string-or-empty-4
    valueFrom: ...
  - name: policy-arn-string-or-empty-5
    valueFrom: ...

for a certain capacity (here 5) and skip empty strings in the stack definition. However, it requires the amount of policies to be known in advance.

parameters:
  - name: fargate-job-queue-arn
    value: "my-queue-arn"
  - name: policies-to-attach
    value:
         - name: policy-a-arn
            valueFrom: ...
         - name: policy-b-arn
            valueFrom: ...
         - name: policy-c-arn
            valueFrom ...

Is not a viable proposal as there is no key word to indicate that an array is presented with the need for seed-farmer substitution.  We can explore other possibilities to determine feasibility ... PERHAPS something along the lines of:
parameters:
  - name: fargate-job-queue-arn
    value: "my-queue-arn"
  - name: policies-to-attach
    valueArray:
         - name: policy-a-arn
            valueFrom: ...
         - name: policy-b-arn
            valueFrom: ...
         - name: policy-c-arn
            valueFrom ...

I am speculating at the moment about the above.
There will most likely be limitations...the most pronounced is that the array contents will be strings
More to come

Closing


docs(contributing) clarify channels frequency of visits by maintainers

Is this good to merge @thibaultcha , or did you want changes?

@coopr I have a branch locally that I polished, but was waiting on the release to come out (and the Travis jobs to get quieter) before merging. Will do.

Done!


Add Oklahoma

http://www.tulsacouncil.org/councilors/city-councilors/
This is a link to Tulsa city district councilors, I feel each of these leaders should take actions to defund the Tulsa police and start over from the ground up with people of the community trained in proper skills for handling A wide variety of situations. The way Oklahoma handles racism is terrible. https://www.okc.gov/government/contact-us
This is a link to OkC officials, I can seem to get an address for their emails to any official.
https://www.governor.ok.gov/contact/general-info
That’s a link to ok governor website. Same issue.
Oklahoma is one the worst states in terms of education and handing of well everything almost. Our police are some of the worst in the country and I firmly believe actions and steps to change are not enough, defunding and starting over are the best course.

@zturus if you could follow the email template for OKC in #341 and create one for Tulsa, that would be super helpful!

To<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Hello, my name is [NAME] and I am a resident of [NEIGHBORHOOD/WARD].
The City of Tulsa must do better by its residents. I am urging you to divest from the criminalization of our communities and reduce police spending in the budget for the 2021 fiscal year. In May, City Manager Freeman formally proposed deep spending cuts due to the pandemic In OKC, I urge you to re-evaluate our police agencies. We are facing a tipping point in our country’s growth, we must take action to create a better agency of trained professionals, who protect all people and not just the white ones. A system must be put into place with a more specialized training, giving people the skills to handle any situation without violence.
Oklahoma has a long history of racism and hate, let us work together to move forward, take responsibility, improve and raise up every community. Let’s push towards a bright future. Together we can create a better world.
I’m not really great with this kind of thing, so this is a decent template

I would also include the County Commissioners - they have a lot of influence over the county jail system. https://www.tulsacounty.org/tulsacounty/dynamic.aspx?id=726
Commissioner District #1:
Stan Sallee
918-596-5020
918-596-4647
Commissioner District #2:
Karen Keith
918-596-5016
918-596-4647
Commissioner District #3:
Ron Peters (Chairman)
918-596-5010
918-596-4647

Freeman is the City Manager in OKC, not Tulsa. Edited letter below:
Hello, my name is [NAME] and I am a resident of [NEIGHBORHOOD/WARD].
The City of Tulsa must do better by its residents. I am urging you to divest from the criminalization of our community and reduce police spending in the budget for the 2021 fiscal year. The Tulsa City Council will review and discuss the Mayor’s proposed budget and must approve a budget for the upcoming fiscal year at least seven days prior to June 30, the end of the City’s fiscal year. After the budget has been approved, Fiscal Year 20 -21 will begin July 1.
As a Tulsan, I demand the Mayor and City Council amend the proposed budget in order to create an ethical reallocation of the city’s expenditures towards sectors that facilitate the dismantling of racial and class inequality. This includes, but is not limited to improving access to health services and treatment, educational opportunity, and stable housing, which have proven far more successful at promoting community safety and social equity than policing. As such, I demand more aggressive financial support be directed to those areas.
Tulsa is the site of one of the greatest race massacres in our nation's history. Last weekend was the 99th Anniversary of the Tulsa Race Massacre, yet our Black friends and neighbors in this city are still under attack. I know many of you feel strongly about racial justice and equity. It is time to take action. Individual solutions will not fix systemic problems. It is time for Tulsa, its leaders, and residents to create a more equitable city for ALL of us. Have the moral clarity to create a budget focused on communities instead of investing in a racist and destructive institution. Defund the Tulsa Police Department.
Thank you, [NAME] [ADDRESS] [EMAIL] [PHONE NUMBER]

Thank you so much! I wanted to do what eve I can, I’ve never done anything like this! You’re help is greatly appreciated! I feel you’ve done better than my original.

Thank you!!! I have no experience with coding - how do we get this published on the site?

I just assumed with time it would be approved and posted.

Okay cool! I'll do some digging and see if there are any steps we're missing just in case. Thank you for all your help. If you're not a Tulsan, know that we appreciate you!

I'll create a pull request to add it!

@zturus ; @ratulesrar3 ; @la-michel Sorry this request seems to have stalled! Thank you for your submission and editing work. I've made a few more minor tweaks to fit our style guide https://github.com/defund12/defund12.org/blob/gh-pages/EMAIL_TEMPLATE_STYLE_GUIDE.md
I will close the issue and add this directly to the website since it's been waiting for a while! Please reopen the issue if you have any concerns.
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Dear Tulsa City Council and County Commissioners,
My name is [YOUR NAME] and I am a resident of [NEIGHBORHOOD/WARD].
The City of Tulsa must do better by its residents. I am urging you to divest from the criminalization of our community and reduce police spending in the budget for the 2021 fiscal year. The Tulsa City Council will review and discuss the Mayor’s proposed budget and must approve a budget for the upcoming fiscal year at least seven days prior to June 30, the end of the City’s fiscal year. After the budget has been approved, Fiscal Year 20 -21 will begin July 1.
As a Tulsan, I demand the Mayor and City Council amend the proposed budget in order to create an ethical reallocation of the city’s expenditures towards sectors that facilitate the dismantling of racial and class inequality. This includes, but is not limited to improving access to health services and treatment, educational opportunity, and stable housing, which have proven far more successful at promoting community safety and social equity than policing. As such, I demand more aggressive financial support be directed to those areas.
Tulsa is the site of one of the greatest race massacres in our nation's history. Last weekend was the 99th Anniversary of the Tulsa Race Massacre, yet our Black friends and neighbors in this city are still under attack. I know many of you feel strongly about racial justice and equity. It is time to take action. Individual solutions will not fix systemic problems. It is time for Tulsa, its leaders, and residents to create a more equitable city for ALL of us. Have the moral clarity to create a budget focused on communities instead of investing in a racist and destructive institution. Defund the Tulsa Police Department.
Thank you, [NAME] [ADDRESS] [EMAIL] [PHONE NUMBER]

@averymcguirt Hey! The letter is also directed towards the Mayor, please include if possible. The County Commission is actually called "The Tulsa County Board of Commissioners." Any way to edit to include these changes?

Edited now, should reflect changes within a few minutes. Thanks.


issues running vsf init:theme local dev any help

Current behavior
Configuring Vue Storefront theme
(node:6024) UnhandledPromiseRejectionWarning: Error: Command failed with ENOENT: cd . && yarn cache clean && yarn
spawn cd ENOENT
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
warning<EMAIL_ADDRESS>Invalid bin field for "url-loader".
warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>error C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\core\node_modules\node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments:
Directory: C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\core\node_modules\node-sass
Output:
Building: C:\Program Files\nodejs\node.exe C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   'C:\Program Files\nodejs\node.exe',
gyp verb cli   'C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\node-gyp\bin\node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb which failed Error: not found: python2
gyp verb which failed     at getNotFoundError (C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:13:12)
gyp verb which failed     at F (C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:68:19)
gyp verb which failed     at E (C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:80:29)
gyp verb which failed     at C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:89:16
gyp verb which failed     at C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\isexe\index.js:42:5
gyp verb which failed     at C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqCallback.oncomplete (fs.js:183:21)
gyp verb which failed  python2 Error: not found: python2
gyp verb which failed     at getNotFoundError (C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:13:12)
gyp verb which failed     at F (C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:68:19)
gyp verb which failed     at E (C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:80:29)
gyp verb which failed     at C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\which\which.js:89:16
gyp verb which failed     at C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\isexe\index.js:42:5
gyp verb which failed     at C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqCallback.oncomplete (fs.js:183:21) {
gyp verb which failed   code: 'ENOENT'
gyp verb which failed }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb which succeeded python C:\Users\T450s\AppData\Local\Programs\Python\Python39\python.EXE
gyp ERR! configure error
gyp ERR! stack Error: Command failed: C:\Users\T450s\AppData\Local\Programs\Python\Python39\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:308:12)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1048:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
gyp ERR! System Windows_NT 10.0.19042
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\node_modules\node-gyp\bin\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\Users\T450s\Desktop\Project Folders\Ecommerce\vue-storefront\core\node_modules\node-sass
gyp ERR! node -v v14.15.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
yarn cache v1.22.5
success Cleared cache.
Done in 17.59s.
yarn install v1.22.5
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
info<EMAIL_ADDRESS>The platform "win32" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
info<EMAIL_ADDRESS>The platform "win32" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
[5/5] Building fresh packages...
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
at notFoundError (C:\Users\T450s\AppData\Roaming\npm\node_modules@vue-storefront\cli\node_modules\cross-spawn\lib\enoent.js:6:26)
at verifyENOENT (C:\Users\T450s\AppData\Roaming\npm\node_modules@vue-storefront\cli\node_modules\cross-spawn\lib\enoent.js:40:16)
at ChildProcess.cp.emit (C:\Users\T450s\AppData\Roaming\npm\node_modules@vue-storefront\cli\node_modules\cross-spawn\lib\enoent.js:27:25)
at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
(Use node --trace-warnings ... to show where the warning was created)
(node:6024) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:6024) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Expected behavior

Steps to reproduce the issue

Version of Vue Storefront

[ ] Vue Storefront
[ ] Vue Storefront Next

Can you handle fixing this bug by yourself?

[ ] YES
[ ] NO

Which Release Cycle state this refers to? Info for developer. (doesn't apply to Next)
Pick one option.

[ ] This is a bug report for test version on https://test.storefrontcloud.io - In this case Developer should create branch from develop branch and create Pull Request 2. Feature / Improvement back to develop.
[ ] This is a bug report for current Release Candidate version on https://next.storefrontcloud.io - In this case Developer should create branch from release branch and create Pull Request 3. Stabilisation fix back to release.
[ ] This is a bug report for current Stable version on https://demo.storefrontcloud.io and should be placed in next stable version hotfix - In this case Developer should create branch from hotfix or master branch and create Pull Request 4. Hotfix back to hotfix.

Environment details

Browser:
OS:
Node:
Code Version:

Additional information

any one facing same issue update yarn.lock file change the node-sass version to match your node version. Sorry this is not a bug


support for model functions to update existing annotations

My actions before raising this issue

[x] Read/searched the docs
[x] Searched past issues

Feature request: allow external models to update existing annotations; i.e., take existing annotations as input and return the modified result.
I currently leverage the interactor and auto-annotation models to lessen the human effort (and am certainly getting much benefit from it!), but I find at times that it would be very useful to apply an interactor model to the results of another model, or some other combination.
As an example, suppose you wanted to first predict bounding boxes with one model, then pass the bounding boxes to DEXTR or HRNET for refinement into masks, and finally pass the resulting masks + crops through a classifier that is perhaps better at choosing the correct labels.
I know that I could currently roll all of these into a single "model" definition that responds to the existing infer(image) api, but I think it would be useful to more interactively test combinations of models, and could allow for some interesting new capabilities.

@matt-deboer , thanks for your feedback and the proposal. The pipeline of DL models can be a very impressive feature. I know that OnePanel tried to implement something like that based on the open source CVAT version. Also it is relatively simple to build UI for the feature. We can create a new model based on stitching together DL models together.

DL model1 -> DL model2 -> ...
Existing annotations -> DL model1 -> ...

Result of the pipeline can be updated annotations or some metrics (e.g. for validation purpose).


[WIP] Polish UI before first release

@elaineo that will be good, thank you. I didn't look at other places


Define parent of a gradient

Description
Currently a gradient can have itself or it's direct parent as parent. When having nested or in other ways complex layouts, it might be helpful to define a shared parent explicitly. This could be achived by allowing labels as parent to the gradient.
#2282
Use Case
Nested layout or complex layout with uniform gradient coloring.

As mentioned in #3011 I think a great way to approach this would be using the existing selector mechanism


bug(Expansion panel): Accessibility - aria-expanded not present

Is this a regression?

[ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
14.0.0
Description
For accessibility blind people have not information if the panel is expanded or not
I don't see the aria-expanded in the component.
https://www.w3.org/WAI/GL/wiki/Using_the_WAI-ARIA_aria-expanded_state_to_mark_expandable_and_collapsible_regions
Reproduction
Steps to reproduce:

Look in the code

Expected Behavior
find aria-expanded
Actual Behavior
no aria-expanded
Environment

Angular:
CDK/Material: material
Browser(s): chrome
Operating System (e.g. Windows, macOS, Ubuntu): mac

aria-expanded is set on the mat-expansion-panel-header. See https://github.com/angular/components/blob/main/src/material/expansion/expansion-panel-header.ts#L62


NFR-MCT-026 - CI/CD process

The MCT should use a CI/CD process for software deployment and incorporate automated testing and static analysis.

Still need to add tests and integrate tests!


fixed bug: "Ambidex could not find "

Lazy(paths).omit("BASE")
should be
Lazy(paths).omit(["BASE"])
this caused the https://github.com/appsforartists/ambidex-example--bike-index to fail on startup
see http://danieltao.com/lazy.js/docs/#ObjectLikeSequence-omit

Good catch; thanks!


Minor test config cleanup

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

Merging [#144][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master       #144   diff @@
==========================================
  Files             5          5
  Lines           429        429
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            423        423
  Misses            6          6
  Partials          0          0

Powered by Codecov. Last updated by [dbd9327...bf21336][cc-compare]
[cc-base-branch]: https://codecov.io/gh/Automattic/monk/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/Automattic/monk/compare/dbd93274748aadc077ead033c37ddffecd9201a8...bf21336eed6ccbe8e1391f21b891fc42b55ce5ca
[cc-pull]: https://codecov.io/gh/Automattic/monk/pull/144?src=pr


Incorporate feedback provided by Data Architects into the FAM Data Model

Data Architects provided some feedback on the FAM Data Model on October 19th, 2022
Here is a summary of our recommendations and questions:
Code Tables

The use of code tables is recommended where they would be useful.
For example, for user types

Consistent naming

For the group table, add “group” to the name and purpose columns.
Note: We are having a discussion internally about whether table names should be upper-case or lower-case for Postgres data models. We do not have a standard at this time but it is something we are hoping to decide on shortly.

Notation

Could you please change the model notation to IE (Crow’s Feet) to match the symbology of our other ER Studio models?

Comprehensive definitions

It would be helpful to include examples and standard patterns to definitions for both tables and columns. For example, what pattern do user names follow?
Include acronym definitions in table and column definitions. For example, what does OIDC stand for in the application client table description?

Questions:

Forest client – is this a clone of data from the legacy forest client system?
Cognito user ID column in the user table – where is this coming from? An external reference?
IDIR user and BCEID user subtypes – why are these symbolized in this way (yellow and disconnected)?

Without definitions for all of the tables and columns, it was difficult to get the full picture of the model. Perhaps we could set aside some time for you to walk us through it? Otherwise, we can take another look once your team has had a chance to add in those definitions.

Hey Richard, when I first worked on FOM's data model, I was told there were standards (two different sets, one old :). But the new standard said to use lower case table names for postgres. I'll try to find a link to that standard.

Cody was doing the review if I remember and pointed me at the new standard so you could possibly ask him as well.

Found it - the standards FOM used I documented at https://apps.nrs.gov.bc.ca/int/confluence/display/FOM/Physical+Data+Model which were based on NRS guidelines: https://apps.nrs.gov.bc.ca/int/confluence/display/NRMDDDG/NRM+Data+and+Database+Development+Guidelines
FYI one of the lessons learned I raised from FOM is to communicate data standards before the physical data model is created, looks like that wasn't actually learned organizationally so we are back to the same issue for FAM.
Also, I find it frustrating when data architects try to review a model without understanding the application context. E.g. OIDC and other business/IT concepts should be covered in the application overview, and not need to be redefined for each column/table. Same with business concepts like forest client.
For your question on how forest_client table will be populated see discussion in https://app.zenhub.com/workspaces/fsa-fingerprint-61f04f08304d3e001a4f2578/issues/bcgov/nr-forests-access-management/179 as we discussed that today. But in short, yes its a partial local cache of forest client data retrieved via forest client API.

(FYI I was forced to use code tables on FOM, I prefer to have the option of using check constraint instead of code table.)

(FYI I was forced to use code tables on FOM, I prefer to have the option of using check constraint instead of code table.)

I think there is a place and a justification to use code tables as opposed to check constraints. In essence, if the check constraint value has a meaning for the business, then the code table is recommended; so to avoid any hard coding; so I agree with you! :)

Comments missing is being tracked under #206

Not adopting varchar datatype without limits
Added some comments to clarify "OIDC"
Added code tables, updated naming for indexes and keys as per guidelines
Updated notation
Change names of some columns, like in fam_group
Prepared script with all changes. To be reviewed with the dev team before merging into Dev branch

Completed changes and reviewed them with @franTarkenton.
Pending: Update comments for some tables and columns. Likely, it will be a separate migration.
@franTarkenton has proposed to divide all these changes by change type. E.g. one migration for renaming indexes, another for removing default values, and so on
Attaching all expected changes into this ticket.

`-- Delete default timestamp for update_date audit columns
ALTER TABLE app_fam.fam_application ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_forest_client ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_user ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_application_client ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_group ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_role ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_application_group_xref ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_group_role_xref ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_user_group_xref ALTER COLUMN update_date DROP DEFAULT;
ALTER TABLE app_fam.fam_user_role_xref ALTER COLUMN update_date DROP DEFAULT;
-- Make description on code table mandatory
ALTER TABLE app_fam.fam_user_type_code ALTER COLUMN description NOT NULL;
ALTER TABLE app_fam.fam_role_type_code ALTER COLUMN description NOT NULL;
-- Validate these commands !!


Error on 'resample' / 'series sum' on pre-sorted DataFrame constructed with from_delayed

I am trying to get the expression, 'df.resample('1T', how='mean').sum()' to work in Dask but, running into an issue where it seems like Dask needs me to explicitly set_index on even a pre-sorted DataFrame before performing resample. I get an error as below...
>>> c.gather(df).compute()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/distributed/client.py", line 1508, in gather
    asynchronous=asynchronous)
  File "/usr/local/lib/python2.7/site-packages/distributed/client.py", line 615, in sync
    return sync(self.loop, func, *args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/distributed/utils.py", line 253, in sync
    six.reraise(*error[0])
  File "/usr/local/lib/python2.7/site-packages/distributed/utils.py", line 238, in f
    result[0] = yield make_coro()
  File "/usr/local/lib64/python2.7/site-packages/tornado/gen.py", line 1055, in run
    value = future.result()
  File "/usr/local/lib64/python2.7/site-packages/tornado/concurrent.py", line 238, in result
    raise_exc_info(self._exc_info)
  File "/usr/local/lib64/python2.7/site-packages/tornado/gen.py", line 1063, in run
    yielded = self.gen.throw(*exc_info)
  File "/usr/local/lib/python2.7/site-packages/distributed/client.py", line 1385, in _gather
    traceback)
  File "/usr/local/lib/python2.7/site-packages/dask/dataframe/core.py", line 1633, in resample
    return _resample(self, rule, how=how, closed=closed, label=label)
  File "/usr/local/lib/python2.7/site-packages/dask/dataframe/tseries/resample.py", line 33, in _resample
    return getattr(resampler, how)()
  File "/usr/local/lib/python2.7/site-packages/dask/dataframe/tseries/resample.py", line 151, in mean
    return self._agg('mean')
  File "/usr/local/lib/python2.7/site-packages/dask/dataframe/tseries/resample.py", line 126, in _agg
    meta_r = self.obj._meta_nonempty.resample(self._rule, **self._kwargs)
  File "/usr/local/lib64/python2.7/site-packages/pandas/core/generic.py", line 7104, in resample
    base=base, key=on, level=level)
  File "/usr/local/lib64/python2.7/site-packages/pandas/core/resample.py", line 1148, in resample
    return tg._get_resampler(obj, kind=kind)
  File "/usr/local/lib64/python2.7/site-packages/pandas/core/resample.py", line 1276, in _get_resampler
    "but got an instance of %r" % type(ax).__name__)
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'

Below is the python code which I am using. Since the pandas DFs being returned by my delayed objects were already timestamp indexed, my expectation was for Dask to infer/construct an index from those DFs' timestamp indices instead of me having to explicitly set one. Although, I am unsure how an explicit set_index can be called in this case (what are the arguments to be passed?). Setting a pd.DatetimeIndex on the meta dataframe (commented line as below) works. Is constructing the index by hand and feeding it to meta the only realistic way to do this? Am I missing something?
#! /usr/bin/env python

# Start dask scheduler and workers
# dask-scheduler &
# dask-worker --nthreads 1 --nprocs 6 --memory-limit 3GB localhost:8786 --local-directory /dev/shm &

from dask.distributed import Client
from dask.delayed import delayed
import pandas as pd
import numpy as np
import dask.dataframe as dd
import time

c = Client('<IP_ADDRESS>:8786')

def load(epoch):
    #<PHONE_NUMBER> - 1/5
    #<PHONE_NUMBER> - 1/6
    num_ts=100
    idx = []
    for ts in range(0, 86400, 15):
        idx.append(epoch + ts)
    d = np.random.rand(86400/15, num_ts)
    ts = []
    for i in range(0, num_ts):
        # tsname = "ts_%s_%s" % (i, epoch)
        tsname = "ts_%s" % (i)
        ts.append(tsname)
        gts.append(tsname)
    res = pd.DataFrame(index=idx, data=d, columns=ts, dtype=np.float64)
    res.index = pd.to_datetime(arg=res.index, unit='s')
    return res

gts = []
load(1525132800)

print time.time()
i = pd.DatetimeIndex(start=1525132800, freq='15S', end=1527811185, dtype='datetime64[s]')
# meta = pd.DataFrame(index=i, data=[], columns=gts, dtype=np.float64)
meta = pd.DataFrame(index=[], data=[], columns=gts, dtype=np.float64)
dfs = [delayed(load)(fn) for fn in range(1525132800,<PHONE_NUMBER>, 86400)]

print time.time()
df = dd.from_delayed(dfs, meta, 'sorted')
print time.time()

df.npartitions
df.divisions

print time.time()
df = c.submit(dd.DataFrame.resample, df, rule='1T', how='mean')
print time.time()

#df = c.submit(dd.DataFrame.sum, df, axis=1)
print time.time()
c.gather(df).compute()
print time.time()

#c.gather(df).visualize(filename='/usr/share/nginx/html/svg/df4.svg')

Please feel free to answer the same at SO too... https://stackoverflow.com/questions/50911256/how-to-avoid-set-index-on-a-pre-sorted-dataframe-constructed-with-from-delayed
Thanks!
Phani

SO was the right place, this is a usage question rather than a bug.


Enable passing tree_sitter parser instance to CodeSplitter

Description
This adds ability to pass instances from of tree_sitter parser to CodeSplitter. The default tree_sitter_languages has limited number of supported languages, mostly due to licensing restrictions.
We can use any custom tree-sitter instances.
git clone <tree-sitter-my-language-url> tree-sitter-mylanguage

from llama_index.text_splitter import CodeSplitter
from tree_sitter import Language, Parser

Language.build_library(
    # Store the library in the `build` directory
    "build/my-languages.so",
    # Include one or more languages
    ["vendor/tree-sitter-my-language"],
)

MY_LANGUAGE = Language("build/my-languages.so", "mylanguage")

parser = Parser()
parser.set_language(MY_LANGUAGE )

code_splitter = CodeSplitter(
        language="mylanguage", parser=parser )

Type of Change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?

[x] Added new unit/integration tests
[ ] Added new notebook (that tests end-to-end)
[x] I stared at the code and made sure it makes sense

Suggested Checklist:

[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added Google Colab support for the newly added notebooks.
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] I ran make format; make lint to appease the lint gods

There is a bug with this PR:
This line should be f"Could not get parser for language {language}. Check " as self.language hasn't been assigned, it will throw exception.


update docs related to Metals

With the new stable release of Metals, 0.8.0, there is no need for a user to include the plugin in order to generate the necessary files. It will all happen automatically.

Thanks!


split repo to 3

IOS betas, mac betas, Chinese IOS apps betas.
make it just more clear.

it was unrightfully closed @pluwen
please consider cleaning out this mess.


Add AddToEndSingleTagStrategy.java

This strategy is a great example of custom strategy. But in most cases it can confuse, what of strategy user should uses.
PS: It was added in Wiki, inside section of "View State Strategy"


Add support for the c2pa.deleted action

This has been added as part of https://github.com/contentauth/c2pa-js/releases/tag/c2pa_v0.18.0.


[v0.16.0] Default Admission Controllers

Changes

This PR explicitly lists the admission controllers enabled by default as described [here]https://v1-16.docs.kubernetes.io/docs/reference/access-authn-authz/admission-controllers/).
We also remove the Initializer admission controller, it hasn't existed since Kubernetes v1.10.x.

Codecov Report

Merging #1857 into master will increase coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1857      +/-   ##
==========================================
+ Coverage   24.40%   24.42%   +0.01%
==========================================
  Files          98       98
  Lines        5117     5114       -3
==========================================
  Hits         1249     1249
+ Misses       3728     3725       -3
  Partials      140      140

Impacted Files
Coverage Δ

pkg/api/cluster.go
0.00% <ø> (ø)

pkg/api/types.go
0.00% <ø> (ø)

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 bdc0325...9d5048a. Read the comment docs.

/lgtm


typo in sample nested list item markdown literal

Why:
Sample test is 100. First list item, so the first five characters are 100.  (point BEFORE space) not 100 . (point AFTER space).
Closes: -

What's being changed (if available, include any code snippets, screenshots, or gifs):

https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#nested-lists
Check off the following:

[x] I have reviewed my changes in staging, available via the View deployment link in this PR's timeline (this link will be available after opening the PR).

For content changes, you will also see an automatically generated comment with links directly to pages you've modified. The comment won't appear if your PR only edits files in the data directory.

[x] For content changes, I have completed the self-review checklist.

@djbrown Thanks so much for opening a PR with these fixes! I'll update the branch and get this merged once tests are passing 🍏


Hotreloading into mobile targets

Feature Request
Currently our IPC system doesn't bridge the simulator boundaries for iOS/Android. This would be achievable if we simply reused the websocket logic for the web since that currently operates over the network boundary instead of an interprocess socket.

We now use websockets, so this works properly.


CMAKE error with CUBLAS_LIBRARIES

Hello ,
I am getting error with fresh installation of Autoware Proposal Architecture, as below please could anyone help me to fix this.
Getting error message after running command;
catkin build --cmake-args -DCMAKE_BUILD_TYPE=Release
Error Message:

Log file error message:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUBLAS_LIBRARIES  linked by target "tensorrt_apollo_cnn_lib" in directory /home/ajay/AutowareArchitectureProposal/src/perception/object_recognition/detection/lidar_apollo_instance_segmentation
Environment:
Ubuntu 18.04
ROS: Melodic
Cmake: 3.18.1
Could you please suggest me, Am i missing something ?

I got the same error, now I can build successfully.
In my case, I changed
find_library(CUBLAS_LIBRARIES cublas HINTS
  ${CUDA_TOOLKIT_ROOT_DIR}/lib)

to
find_library(CUBLAS_LIBRARIES cublas HINTS
  ${CUDA_TOOLKIT_ROOT_DIR}/lib64)

for the four files.

src/perception/object_recognition/detection/lidar_apollo_instance_segmentation/CMakeLists.txt
src/perception/object_recognition/detection/tensorrt_yolo3/CMakeLists.txt
src/perception/traffic_light_recognition/traffic_light_classifier/CMakeLists.txt
src/perception/traffic_light_recognition/traffic_light_fine_detector/CMakeLists.txt

In my environment, there is no directory /usr/local/cuda/lib.
$ ls /usr/local/cuda/lib
ls: cannot access '/usr/local/cuda/lib': No such file or directory
$ echo $LD_LIBRARY_PATH
/opt/ros/melodic/lib:/usr/local/cuda/lib64:

@yukke42 Thank you so much

@ajay1606 Thank you for reporting this issue and thank you @yukke42 for providing an initial workaround. The relevant CMakeLists files have been updated and so this issue should no longer occur.


Add resourceId to onSelecting callback

I've added resourceId to onSelecting callback since without its impossible to detect which column is selecting when we have resources.

@jquense any chance to merge it? or you need more insights from me why this would be useful?

Thanks! Sorry for the delay


Inconsistent behaviour of  fullscreen and offscreen options for Plotter

Hi Marco,
I'm trying to get a Plotter to have size='full' and render with offscreen=True, but the behaviour seems to be a bit inconsistent.
Some minimal code examples to reproduce:

if I specify the size when I create the plotter, then the offscreen parameter is ignored:

from vedo import Plotter

plt = Plotter(
            axes=4,
            size="full",
        )

plt.show(offscreen=True)

if I specify the size when I call show, then the size parameter is ignored:

from vedo import Plotter

plt = Plotter(
            axes=4,

        )

plt.show(offscreen=True, size="full",)

if I specify both when I crate the plotter then the plotter window closes instantly as if I used interactive=False (perhaps this is the intended behaviour?)

from vedo import Plotter

plt = Plotter(
            axes=4,
            offscreen=True,
            size="full"
        )

plt.show()

Option 3 works for what I need (avoid rendering on screen during video creation), but I just thought I'd report this.

Hey Marco,
After I've changed brainrender to use option 3 above, I'm getting this error
ERROR: In /Users/prabhu/src/git/VTKPythonPackage/standalone-build/VTK-source/Interaction/Widgets/vtkOrientationMarkerWidget.cxx, line 129
vtkOrientationMarkerWidget (0x7f9a5cf16c70): The interactor must be set prior to enabling/disabling widget

[1]    77156 segmentation fault  /Users/federicoclaudi/miniconda3/envs/dev/bin/python

when trying to add an inset with:
self.plotter.showInset(inset, pos=(0.95, 0.1), draggable=False)

If I don't pass offscreen to Plotter then the inset creates fine.

Hi Federico - sorry for the late reply, I've checked this, in fact is is not possible to have an "inset" renderer in offscreen mode as it needs an interactor object that is not going to be created in that case.
I only added a line to return None if that combination happens.

offscreen keyword should be used in Plotter initiation not in show (it's a limitation i'm afraid..)
fixed in the next release
that is indeed an intended behavior.

Hi Marco thanks for getting back to me.
Thanks for the clarification, that makes a lot of sense.

Just pushed what should become v2020.4.2. Have a look if you wish before I upload it to pip.
The requirement for vtk<9 has now been dropped.
PS: I see you have an extra space in https://github.com/brainglobe/brainrender/blob/32dd43db00fe96ba4949c3c97ecd9682ef3f05c9/setup.py#L11
I wonder if that may cause troubles on some OS

thanks for the heads up!
Will check it out (and remove the space ;)

everything seems to be working fine here!


Use DOM API instead of creating Trusted Types policy to append a markup

Trusted Types policy creation fails when there is a Trusted Type policy enforcement on the document and addResizeListener is called twice.
Use DOM API to create the same tree so that we don't need to make Trusted Types policy creation little more complicated.

@bvaughn any ETA for next release so I get this change? Thanks!

Hi! We faced an issue when React-virtualize tries to create the Trusted Policy entries several times. It leads to the error "Policy already exists". Seemingly, this commit fixes the issue. But somehow, it's not appeared in the 9.22.3 version. Can you publish the next version 9.22.4 with this fix?


improve ClasspathHellDuplicatesCheckRuleTest (req. by FINERACT-953)

to ignore all META-INF/groovy** such as META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModule which is part of both groovy-xml-3.0.3.jar as well as e.g. ical4j-3.0.18.jar.
Required by FINERACT-953.

@ptuomola do you want to LGTM this so that I can (self) merge this? :smiley:
@nnatarajan this should unblock your #907.

@xurror perhaps you'd also like to review and merge this if build passes? Tx!

@nnatarajan I'm not sure exactly how your "git foo" skills are, but it occurred to me that something "fun" but very very useful which you could try to learn, if you'd like, if you don't know this already, is how to "fetch" this change and "cherry-pick" to a local Git branch "on top of" your #907, to convince yourself that it fixes that problem, after you have first managed to get ClasspathHellDuplicatesCheckRuleTest to fail. The interesting part is learning the process for how to do this WITHOUT having to wait for this PR to be merged...

LGTM

Did we finally merge this? Or we merged and reverted?

Did we finally merge this? Or we merged and reverted?

Yes it is, merged it myself. Made funny merge commit so I was trying to troubleshoot a work around on remote fork. Didn't notice it was appearing here.
I'll just say my 1st merge didn't go quite well. But it's merged


user_activity retrieves <500 posts, retrieving more requires logging in

Gettr seems to have changed its public API, and now only allows ~500 posts to be retrieved without logging in. This is also apparent when looking at a user's timeline in a web browser: scrolling to the bottom of a user timeline when you're not logged in shows ~500 user posts and says "END" when you reach the limit, while scrolling to the bottom of the timeline when you ARE logged in shows all user posts (see attached image)

Adding an X-App-Auth header parameter from the logged-in user containing the username and a generated token allows you to retrieve all of a user's posts, i.e.:
HEADERS = {
    'X-App-Auth': json.dumps({
        'user': '$MY_USERNAME',
        'token': '$MY_TOKEN'}),
}
 resp = requests.get(
    url,
    params=params,
    timeout=10,
    headers=HEADERS,
)

Is implementing a login flow within the scope of this project? I could potentially take a crack at implementing it.
Might be related to issue https://github.com/stanfordio/gogettr/issues/21

I implemented a quick workaround in commit https://github.com/bellingcat/gogettr/commit/0a698e5406edd65c65b2d4525df4a2072595d8cb. Supplying the PrivateClient with a username and token, user_activity successfully retrieves all posts.

Thanks for the heads up, and for implementing a workaround. This prompts a larger question on the extent to which we're comfortable with GoGettr accessing "private" API endpoints. @lxcode, do you think we should incorporate a way to do private auth upstream?

I don't see any problem with having an authenticated mode. I'd make it optional, since I assume other endpoints still allow pulling unauthed.

The artificially limited "end" response has results.aux.cursor set to 0, and so does a full result response (tested with a controlled account). Would be cool if the code, when running user_activity in unauthenticated mode would throw a warning to switch to authenticated when reaching the end, in case there are more posts (can't see a way to get total posts count from the api).


Remove FF React Native SDK v1 details

Thanks for contributing to the Harness Developer Hub! Our code owners will review your submission.
Description

Please describe your changes: Removed FF React Native v1 details
Jira/GitHub Issue numbers (if any): FFM-11423
Preview links/images (Internal contributors only):

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[ ] Successful preview build.
[ ] Code owner review.
[ ] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6633afa3c4befc0080275534--harness-developer.netlify.app


Cannot load driver class: org.mariadb.jdbc.Driver while building NFVO-3.2.0

I need to work with NFVO-3.0.1 and Genereic-VNFM-3.0.0 for a project.
But on setting these versions in the config file and running
./bootstrap develop --config-file=/home/ubuntu/config NFVO is not staring on port 8080 and I am getting the following error message in my openbaton.log

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.mariadb.jdbc.Driver

I am facing this same issue if I build NFVO-3.2.0 and Genereic-VNFM-3.2.0
Could someone tell me what parameters need to be changed to make this work ?

You could check an older version of the bootstrap available at: http://get.openbaton.org/bootstraps/
I assume that the latest bootstrap does not support older versions, especially source code installation.


Desired instance type rule

The desired instance type rule does not seem to work using desiredInstanceType as a parameter because after it's through evaluating it says, "no results are available."  I'm not using t2.smalls in my environment so I would expect there to be multiple violations.  I tried changing instance types because I figured that would trigger the rule, but the results didn't change.  When I looked at the monitoring tab for the lambda function, it didn't appear that the function was invoked even though I specified in the ARN of the function in the rule.

This was confirmed as a transient issue with the AWS Lambda service (reported at http://status.aws.amazon.com/). If you are still experiencing issues, please feel free to reopen.


/dev/input/js0 file hangs with Beaglebone Black

Platform:
Beaglebone black
root@beaglebone:~# uname -a
Linux beaglebone 3.8.13-bone79 #1 SMP Tue Oct 13 20:44:55 UTC 2015 armv7l GNU/Linux

root@beaglebone:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 7.9 (wheezy)
Release:	7.9
Codename:	wheezy

js0 file hangs whenever DC motor stalls momentarily (controlled using UART pin) in beaglebone black. It stops updating value in js0 and had to reboot it every time to be able to use joystick (PS3) again.

Do you think this is an issue with this library or with your environment (drivers/hardware)?
Are you setting blocking to true?

All the hardware including PS3 works well with Arduino so it's not a hardware problem. Linux environment or/and joystick library or driver might be causing this problem.
I didn't get blocking part. Do I have to set it true and from where?

Constructor (or open) accept boolean blocking argument. Setting this to 'false' means your read operations won't block, but also might not return anything if the driver is in a broken state.

Closing this as I cannot see anything actionable here.


feat: lake formation tag support

Description
Add support for:

Adding default lake formation tags to databases created by dbt
Allow overwriting lake formation tags on a per model basis

Checklist

[x] You followed contributing section
[x] You added unit testing when necessary
[x] You added functional testing when necessary

@henriblancke thanks for the great work.
I see many feature in this Pull requests, would you mind to split your pr in many:

1 pr for Add defau lt lake formation tags to databases created by dbt and Allow overwriting lake formation tags on a per model basis - please add unit tests
1 pr for Upload seeds to s3 - please unit tests
prs for additional fixes
Render tmp_relation with render_hive for table_hive_ha should have be fixed already

Reviewing all this changes at once is hard, and we need to ensure to test each properly before merging!

@nicor88 absolutely, I can split them into separate PRs

@nicor88 this PR should now focus on lf tags

@nicor88 anything I can do here as a follow up?

@henriblancke Sorry I didn't manage to review this pr, could you fix the conflicts and I will try to have a look at this within the week, thanks.

@henriblancke nice job, code looks good to me, I want to run bunch of integration test on this on my setup, then we can merge it.

@nicor88 @svdimchenko thanks for the review! Pushed a few commits that should address your comments 🙏


Fixed small bug related to issue #2662.

We were showing "1 characters". This fix will remove the "s" when count is singluar.

ping @SofianHn


ApiVerisonv 2beta1

Is it possible to migrate kubeflow from ApiVersion v1beta1 to v2beta1? How?
The following procedure:
export PIPELINE_VERSION="2.0.0-alpha.4"
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=$PIPELINE_VERSION"
kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/dev?ref=$PIPELINE_VERSION"

gives the error:
{"metadata":{"annotations":{"internal.kpt.dev/upstream-identifier":null,"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apps/v1\"...```

Thank you for your answer!

@uhatikus The commands you pasted is for Kubeflow Pipelines standalone deployment (there's no other Kubeflow components). If that's what you intended, you can simply point PIPELINE_VERSION=2.0.2, which would support v2beta1 API.
If you do want full Kubeflow, the upcoming Kubeflow 1.8 release would also upgrade KFP API to v2beta1.


Add React 18 peer dependency

React 18 has been out for a while now, could it be added as a supported dependency? (Same reasons as for the React 17 update; #334).

Yes It does work with 18 but we can update the peers in package json!

Ok this is updated in latest release 4.19.2


Accuracy average

Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ x ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

What does this PR do?
Fixes #99 .
I have added the average argument with all other required arguments. For subset_accuracy I have retained some sections of the previous code. New test cases will also have to be added. I am creating this draft first so that I can know if any other changes have to be made to the code.
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Hello @arvindmuralie77! Thanks for opening this PR.

In the file torchmetrics/classification/accuracy.py:

Line 20:121: E501 line too long (121 > 120 characters)
Line 166:22: E711 comparison to None should be 'if cond is None:'
Line 168:24: E711 comparison to None should be 'if cond is None:'

In the file torchmetrics/functional/classification/accuracy.py:

Line 27:37: W504 line break after binary operator
Line 28:45: W291 trailing whitespace

Do see the Hitchhiker's guide to code style

@arvindmuralie77 how is it going here, do you think we can squeeze it to 0.3.0?

Hi @Borda ,

@arvindmuralie77 I was just asking what is you estimate to finish this PR :]

Dear @Borda , I didn't know there was a deadline for 0.3.0. Everything is complete, if default value of mdmc_average is set as global, then the code is passing on all the previously existing test cases. Now only new test cases need to be created since new parameters have been added to accuracy.

I didn't know there was a deadline for 0.3.0

there is no deadline, I just thought that it would be nice to have it there, so just asking how do you feel about it :]

Hey @Borda , I have added some new test cases for the updated class. I was having some issues understanding the multi-dimension-multilabel class. Apart from that, I think I have covered all other cases. Should I convert this draft to a PR so that you can review it.

@SkafteNicki , I have corrected the mentioned issues.

Done @Borda :]

I have added more test cases as mentioned


[FAIL] Error: Chromium revision is not downloaded. Provide TAIKO BROWSER PATH or Install taiko again to download bundled chromium., run .trace for more info

Error: Chromium revision is not downloaded. Provide TAIKO_BROWSER_PATH or Install taiko again to download bundled chromium.
at BrowserFetcher.getExecutablePath (node_modules/taiko/lib/browserFetcher.js:237:13)
at launchBrowser (node_modules/taiko/lib/browserLauncher.js:324:44)
at module.exports.openBrowser (node_modules/taiko/lib/taiko.js:95:65)
at module.exports. (node_modules/taiko/lib/taiko.js:2612:36)
at Context.beforeAll (setUp.js:93:11)
at processTicksAndRejections (node:internal/process/task_queues:94:5)
It runs fine in docker mode.Tried installing-uninstalling/removing node_modules(whatever possible solutions availabe in google), but no luck.
From my understanding, it is not able to download the taiko dependencies locally(no idea why).
Any thoughts what is wrong or any other alternate way to fix this ?

This is being tracked at https://github.com/getgauge/taiko/issues/2235


Refactor the way walk_to_point and look_at_point are used by client code

Description
Working on #233 we noticed that both walk_to_point and look_at_point need to be transformed to global coordinate during game execution.
Formerly a getter was present, to return the local or global coordinates of those points depeing on the execution context (in editor or in game), but that remnant was creating more harm than good and the function was unused.
Now the calling code globalize the positions in its own way, providing defaults as needed. We can make things more coherent if we create two specific methods the client code can call from the clickable to get the global positions of those coordinates, maybe with sensible fallback defaults.

Mentioning @drbbgh


App crash in iOS Device

Hello all,
I had integrated "AuthorizeNetAccept" in my project. It was working fine in simulator as well as in real device but now it crash when I want to create object for "AcceptSDKCardFieldsValidator" as well as "AcceptSDKHandler" class.
My project is in swift 2.3. Can anyone please help me out in this??
@brianmc can you please help me out in this?

We have updated our SDK. Please update the pod and try again (make sure you run pod repo update first). If you still face the problem please get back to us.


Can't get invite to Envoy slack channel

Hi,  I sent out a request to join the slack channel but didn't get the invite. Is the envoy slack channel open for people who're interested in this project?
Thanks!

Yes it's open. See https://github.com/envoyproxy/envoy#contact


how to access request headers...

Where can i access request headers within the controllers ?
I'm new to decorators...so i'm trying to find out how to debug the function behind the decorator and access basic functionality within the express server...

You have multiple ways to get the request headers.
One is the normal express way, use @Request decorator to get the express request instance, and then use request.headers.
https://github.com/Romakita/ts-express-decorators/wiki/Controllers#response-and-request
The other one is that use @Header to directly get the header.
https://github.com/Romakita/ts-express-decorators/wiki/Controllers#header
Hope this is helpful.