Tesseract seemingly stuck

Environment

Tesseract Version: Latest master
Commit Number:  (23ed59bd7bca777e4e104c4ee540843373aa9869
Platform: Linux gentoo-x13 5.11.7-gentoo-dist #1 SMP Wed Mar 17 21:03:41 -00 2021 x86_64 AMD Ryzen 7 PRO 4750U with Radeon Graphics AuthenticAMD GNU/Linux

Current Behavior:
Tesseract hangs, seemingly never finishes
Expected Behavior:
Tesseract doesn't hang and produces output normally
GDB backtrace (interrupted after more than 5 minutes):
merlijn@gentoo-x13 ~/archive/tesseract-src/tesseract $ time TESSDATA_PREFIX=/usr/share/tessdata LD_LIBRARY_PATH=`pwd` LD_LIBRARY_PATH=$LD_LIBARY_PATH:`pwd`/.libs gdb --args ./.libs/tesseract /tmp/sim_new-york-times_1900-01-11_49_15-603_0008.ppm - hocr
GNU gdb (Gentoo 10.1 vanilla) 10.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./.libs/tesseract...
(gdb) r
Starting program: /home/merlijn/archive/tesseract-src/tesseract/.libs/tesseract /tmp/sim_new-york-times_1900-01-11_49_15-603_0008.ppm - hocr
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <meta name='ocr-system' content='tesseract 5.0.0-alpha-20201231-545-g23ed5' />
  <meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
 </head>
 <body>
Estimating resolution as 246
^C
Program received signal SIGINT, Interrupt.
0x00007ffff7ec49b6 in tesseract::CLIST_ITERATOR::forward (this=this@entry=0x7fffffffbec0)
    at src/ccutil/clst.cpp:265
265	  return current->data;
(gdb) bt
#0  0x00007ffff7ec49b6 in tesseract::CLIST_ITERATOR::forward (this=this@entry=0x7fffffffbec0)
    at src/ccutil/clst.cpp:265
#1  0x00007ffff7ec4b8d in tesseract::CLIST::add_sorted (this=<optimized out>,
    comparator=comparator@entry=
    0x7ffff7d86b90 <tesseract::SortByBoxLeft<tesseract::ColPartition>(void const*, void const*)>,
    unique=unique@entry=true, new_data=<optimized out>, new_data@entry=0x5555bf4f66b0)
    at src/ccutil/clst.cpp:176
#2  0x00007ffff7e2cdf7 in tesseract::BBGrid<tesseract::ColPartition, tesseract::ColPartition_CLIST, tesseract::ColPartition_C_IT>::InsertBBox (this=this@entry=0x55555b031130, h_spread=h_spread@entry=true,
    v_spread=v_spread@entry=true, bbox=0x5555bf4f66b0) at src/textord/bbgrid.h:551
#3  0x00007ffff7e3f664 in tesseract::ColPartitionGrid::ComputeTotalOverlap (
    this=this@entry=0x5555555aec68, overlap_grid=overlap_grid@entry=0x7fffffffc158)
    at src/textord/colpartitiongrid.cpp:329
#4  0x00007ffff7e71620 in tesseract::StrokeWidth::DetectAndRemoveNoise (this=0x55555558c420,
    pre_overlap=95268, grid_box=..., block=0x55555558bf20, part_grid=0x5555555aec68,
    diacritic_blobs=0x7fffffffc688) at src/textord/strokewidth.cpp:1350
#5  0x00007ffff7e729da in tesseract::StrokeWidth::FindInitialPartitions (
    this=this@entry=0x55555558c420, pageseg_mode=pageseg_mode@entry=tesseract::PSM_AUTO,
    rerotation=..., find_problems=find_problems@entry=true, block=block@entry=0x55555558bf20,
    diacritic_blobs=diacritic_blobs@entry=0x7fffffffc688, part_grid=0x5555555aec68,
    big_parts=0x5555555aec98, skew_angle=0x7fffffffc340) at src/textord/strokewidth.cpp:1310
#6  0x00007ffff7e72c08 in tesseract::StrokeWidth::GradeBlobsIntoPartitions (this=0x55555558c420,
    pageseg_mode=pageseg_mode@entry=tesseract::PSM_AUTO, rerotation=...,
    block=block@entry=0x55555558bf20, nontext_pix=..., denorm=<optimized out>, cjk_script=false,
    projection=0x5555555aecc0, diacritic_blobs=0x7fffffffc688, part_grid=0x5555555aec68,
    big_parts=0x5555555aec98) at src/textord/strokewidth.cpp:379
#7  0x00007ffff7e2be71 in tesseract::ColumnFinder::FindBlocks (this=this@entry=0x5555555aeb30,
    pageseg_mode=pageseg_mode@entry=tesseract::PSM_AUTO, scaled_color=...,
    scaled_factor=<optimized out>, input_block=input_block@entry=0x55555558bf20, photo_mask_pix=...,
    thresholds_pix=..., grey_pix=..., pixa_debug=0x7ffff7c6abd0, blocks=0x7fffffffc5e8,
    diacritic_blobs=0x7fffffffc688, to_blocks=0x7fffffffc690) at src/textord/colfind.cpp:296
#8  0x00007ffff7d5509b in tesseract::Tesseract::AutoPageSeg (this=0x7ffff7c47010,
    pageseg_mode=tesseract::PSM_AUTO, blocks=0x5555555b0c90, to_blocks=0x7fffffffc690,
    diacritic_blobs=0x7fffffffc688, osd_tess=<optimized out>, osr=0x7fffffffca40)
    at src/ccmain/pagesegmain.cpp:226
#9  0x00007ffff7d5555d in tesseract::Tesseract::SegmentPage (this=0x7ffff7c47010,
    input_file=<optimized out>, blocks=0x5555555b0c90, osd_tess=osd_tess@entry=0x0,
    osr=osr@entry=0x7fffffffca40) at src/ccmain/pagesegmain.cpp:140
#10 0x00007ffff7d227bf in tesseract::TessBaseAPI::FindLines (this=0x7fffffffd780)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/basic_string.h:2300
#11 0x00007ffff7d24f64 in tesseract::TessBaseAPI::Recognize (this=0x7fffffffd780, monitor=0x0)
    at src/api/baseapi.cpp:838
#12 0x00007ffff7d2552a in tesseract::TessBaseAPI::ProcessPage (this=this@entry=0x7fffffffd780,
    pix=0x5555555b1c50, page_index=page_index@entry=0,
    filename=filename@entry=0x7fffffffdf54 "/tmp/sim_new-york-times_1900-01-11_49_15-603_0008.ppm",
    retry_config=retry_config@entry=0x0, timeout_millisec=timeout_millisec@entry=0, renderer=
    0x5555555a2810) at src/api/baseapi.cpp:1259
#13 0x00007ffff7d26172 in tesseract::TessBaseAPI::ProcessPagesInternal (this=0x7fffffffd780,
    filename=<optimized out>, retry_config=0x0, timeout_millisec=0, renderer=0x5555555a2810)
    at src/api/baseapi.cpp:1218
#14 0x00007ffff7d2673f in tesseract::TessBaseAPI::ProcessPages (this=this@entry=0x7fffffffd780,
    filename=filename@entry=0x7fffffffdf54 "/tmp/sim_new-york-times_1900-01-11_49_15-603_0008.ppm",
    retry_config=retry_config@entry=0x0, timeout_millisec=timeout_millisec@entry=0,
    renderer=<optimized out>) at src/api/baseapi.cpp:1071
#15 0x0000555555558295 in main (argc=<optimized out>, argv=<optimized out>)
    at src/api/tesseractmain.cpp:783

Image: https://archive.org/~merlijn/tesseract-images/sim_new-york-times_1900-01-11_49_15-603_0008.ppm

fyi - 179MB sized image

Right, sorry for not mentioning that. I could share the original JPEG2000 image if that is preferred. We process a lot of images at this size, (let's say probably 100,000 at this point) and very few fail this way. (At least this one, potentially two more)

It's hard to say where it's stuck or spends most of the time.
CLISTs are to be replaced with modern C++ somewhere in the future.

Related issue: #3369.
Tesseract shows that behaviour for images where it "detects" a huge number of boxes. Some parts of the layout detection seem to require time which increases with the square of that number.

We observe sometimes images which need more than an hour, too. Maybe the image here is a similar case. I'll run a test to see whether the OCR terminates.

For this specific image, I believe I've let it run for a about a day. There a few images that precede this one, but they usually take 1.5 minutes, so the rest of the ~24 hours if this is one image. I believe the one reason it dies is memory exhaustion - but that is a guess.
Note that this run was not done with latest master, but using the 20201231 snapshot with one additional hOCR patch added.
2021-03-20 14:57:38,367 INFO     Processing pages with Tesseract now.
2021-03-21 14:18:50,772 WARNING  Tesseract failed with stdout: 'Tesseract Open Source OCR Engine v5.0.0-alpha-20201231-10-g1236 with Leptonica\nWarning: Invalid resolution 0 dpi. Using 70 instead.\nEstimating resolution as 246\n'
Traceback (most recent call last):
  File "main.py", line 825, in
    files = perform_ocr(scandata, img_dir, img_ext, tess_lang, env)
  File "main.py", line 544, in perform_ocr
    output = check_output(['tesseract',
  File "/usr/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.8/subprocess.py", line 512, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['tesseract', '-l', 'eng', '-c', 'tessedit_create_txt=1', '-c', 'tessedit_create_hocr=1', '-c', 'hocr_char_boxes=1', '-c', 'hocr_font_info=1', '/tmp/sim_new-york-times_1900-01-11_49_15-603_jp2/sim_new-york-times_1900-01-11_49_15-603_0008.jp2', '/tmp/sim_new-york-times_1900-01-11_49_15-603_jp2/sim_new-york-times_1900-01-11_49_15-603_0008']' died with .
docker run --rm --name maker-sim_new-york-times_1900-01-11_49_15-603 --net=host --tmpfs /var/tmp/fast:rw,size=1500m,mode=1777 -v /t/derive/sim_new-york-times_1900-01-11_49_15-603:/item -v /opt/.petabox/petabox-prod.xml:/opt/.petabox/petabox-prod.xml   -v /t/task/sim_new-york-times_1900-01-11_49_15-603:/task   registry.archive.org/www/tesseract/production failed with exit code: 1

I am not sure if it is helpful, but I could surface the other images that have similar problems.

You can use those to test a fix (as soon as we have one), but I don't need more images for this issue.
My first test was killed by the Linux kernel after 75 minutes because Tesseract's memory usage increased continuously to more than 6 GiB (I had no swap space provided, and running three similar processes was simply too much for 16 GiB RAM). So the image here not only consumes much time (I still think OCR will finish finally) but also much memory.

@stweil
I've removed that custom hasher. I do not think that this will increate performance, but still we can check it.
https://github.com/tesseract-ocr/tesseract/commit/50aec308b3d66c1b669ceb9160fd96000c250f6a

I already tried that, and it does not change the performance. A simplified custom hash function (without the division) also had no effect on the performance. I also tried using a sorted set instead of the unsorted one. That slightly increased the execution time.

CLISTs are to be replaced with modern C++ somewhere in the future.

https://github.com/jimregan/tesseract-wiki-mine/blob/master/TesseractProjects.wiki#things-i-would-not-recommend-working-on

Someone suggested the macro-based list stuff as a candidate for replacement with stl... Compared to the macro-based lists in tesseract, stl lists are very different, very incompatitble, and IMHO a poor abstraction designed to make them as like vectors as possible, and if you use them the way they are used in tesseract, it would be very slow... It might be possible to sensibly convert the macro-based lists to (mostly) use templates though.

This is from 2008.

The Tesseract OCR terminates after running several days and using 16 GB or more RAM with a surprising result:
Tesseract Open Source OCR Engine v5.0.0-alpha-20210401-2-g1c50 with Leptonica
Estimating resolution as 246
Detected 28905 diacritics
Empty page!!
Estimating resolution as 246
Detected 28909 diacritics
Empty page!!

This is from 2008.

It says that using std:list instead of the (intrusive) c lists will result in much slower code,
Ignore the part that rule out any use of the STL, which is outdated.

The Tesseract lists (CLIST, ELIST, ELIST2) are cyclic lists and use a very special construct for list iterations. That makes switching to STL lists difficult. At least the standard STL method size is much more performant with recent C++-17 than the Tesseract implementation length which counts the list elements by iterating other the whole list.

First thing is to replace those list macros with templates.

I found that using Sauvola thresholding solves the problem for this image - it's possible that the Otsu thresholding just makes such a mess of the image that the segmenter has tremendous trouble interpreting the image.
You can find the thresholded image here: https://archive.org/~merlijn/tesseract-images/sim_new-york-times_1900-01-11_49_15-603_0008_thresholded.png (1.6MB)
The plaintext here: https://archive.org/~merlijn/tesseract-images/sim_new-york-times_1900-01-11_49_15-603_0008_thresholded.txt (68K)
The runtime on my machine (Tesseract 4, stable) was just under four minutes:
real	3m58.898s
user	3m58.715s
sys	0m0.117s

I've ported a low-memory and fast Sauvola thresholding algorithm from this paper: https://arxiv.org/pdf/1905.13038.pdf and will start looking into making it possible for Tesseract to use that thresholding instead (per #3083 ). So perhaps once selectable binarisation is in place, this issue can be resolved.

Did you tried pixSauvolaBinarize from leptonica?

Did you tried pixSauvolaBinarize from leptonica?

Yes, I have experimented with that method too, but the binarisation step uses more ram (3.3GB vs 660MB). Tesseract finished in about 5-6 minutes using the leptonica Sauvola binarised image -- depending on the parameters, of course.

To be clear, my experiments are running Tesseract on an already binarised image (either made using the code I mentioned above, or the using the leptonica sauvola binarise). I know that is not ultimately how people should run Tesseract (on a binarised image for OCR quality purposes), but for the purpose of testing if it fixes this bug, it was easier.
I suspect that adding alternative binarisation to Tesseract (e.g. the leptonica binarise, or the one I wrote based on the paper) will also solve this problem on a non-binarised version of this image.

I know that is not ultimately how people should run Tesseract (on a binarised image for OCR quality purposes

IMO this is exactly how tesseract should be run.  Problem is that most of users want to OCR colourful images and they do not care about binarization, so  tesseract is providing Otsu, that should work on most cases...
And If you use binarized image, you set tessedit_do_invert to false ("-c tessedit_do_invert=0") to gain extra speed.

I know that is not ultimately how people should run Tesseract (on a binarised image for OCR quality purposes

IMO this is exactly how tesseract should be run. Problem is that most of users want to OCR colourful images and they do not care about binarization, so tesseract is providing Otsu, that should work on most cases...
And If you use binarized image, you set tessedit_do_invert to false ("-c tessedit_do_invert=0") to gain extra speed.

Understood, thanks. I remember (I don't know where) that the LSTM engine would potentially work better on grayscale images than binarised images. I'll look into adding Sauvola binarisation using leptonica's method to Tesseract, and then see if that opens up ways to add other binarisation methods.

Leptonica have other binarization methods.
One of them is grayscale normalization followed by adaptive (tiled) otsu binarization. It was scored in seventh place in an ICDAR binarization contest.
Search for: '2009 DIBCO binarization contest'
Inside the paper search for 'Bloomberg'.

http://www.cvc.uab.es/icdar2009/papers/3725b375.pdf

Google,    Inc.,    Mountain    View,    USA    (D. Bloomberg):
a. Image   binarization   using   a   local   background   normalization, followed by a global threshold.
b. Image   binarization   using   a   local   background   normalization,  followed  by  a  modified  Otsu  approach  to  get  a  global  threshold  that  can  be  applied  to  the  normalized image.
c. Image   binarization   using   a   local   background   normalization  with  two  different  thresholds.  For  the  part of the image near the text, a high threshold can be chosen, to render the text fully in black. For the rest of the   image,   much   of   which   is   background,   use   a   threshold  based  on  the  Otsu  global  value  for  the  original image.

33c - 7th place, 33b - 11th place

Cool - seems like worth checking out when working on adding Sauvola. I went with Sauvola after experimenting (and evaluating) with all the thresholding algorithms present in scikit-image (https://scikit-image.org/docs/dev/api/skimage.filters.html), in particular this note (and the paper): "This algorithm is originally designed for text recognition." I didn't evaulate the methods for the purpose of OCRing, though, but rather for the purpose of creating masks of the text (and lines in photos/images) for MRC compression.

More methods with open source implementation:
https://github.com/opencv/opencv_contrib/blob/4a36e77dba0f8f2/modules/ximgproc/include/opencv2/ximgproc.hpp
https://github.com/ocropus/ocropy/blob/master/ocropus-gpageseg
https://github.com/ocropus/ocropy/wiki/Publications#binarization
https://github.com/brandonmpetty/Doxa

gamera (python framework for building document analysis applications) has also bunch of implementation of binarization.
ImageJ (java image processing program designed for scientific multidimensional images) has Auto Threshold plugin with several other methods.
Both projects use GPL3 licence, so we can not do copy&paste.

Here is another image which absolutely wrecks Tesseract:
https://i.imgur.com/0J8Ew.gif
It also has lots of boxes like @stweil mentioned...


是否考虑中文支持

Issue type
[X] Feature request
[ ] Bug report
[ ] Documentation

Environment

Python version:
NetBox version:

Description
请问老大，是否考虑UI的中文支持呢？

Translation: They're asking if Internationalization for different languages can be considered, such as Chinese.

Please see my comments in #1068. We're not able to add support for additional languages at this time.


HTML shorthands breaking custom elements

Hi, it seems the - shorthand for hidden elements messes with the parsing of custom elements, making them impossible to use : <custom-elem></custom-elem> renders as <custom style="display:none"></custom>.
I would gladly submit a pull request but I've been struggling to find when this parsing actually occurs in the rendering process.

@MalifaciousGames I'm not surprised to learn that. I incorporated some older ideas into Snowman 2 and these have led to a number of problems. If you really want to work on this issue, it is part of the 2.X branch (https://github.com/videlais/snowman/blob/2.X/lib/Passage.js#L75).


The maxDepth and minDepth attributes of includeall don't work as documented

Search first

[X] I searched and no similar issues were found

Description
The documentation states that the depth parameters should indicate the distance from the included path, but the actual behavior is to calculate depth relative to the search path.  For example, if you had Liquibase code in src/main/resources/liquibase, and you wanted to include files in src/main/resources/liquibase/include to a maxDepth of 0 to exclude further subdirectories, no changes would be included because the calculated depth of the files in the included path would be 5, which is more than the specified max of 0.
I've traced the issue to ApbstractPathResourceAccessor's meetsSearchCriteria method, which is supposed to look at an included file to see if it should be processed.  There seems to be 3 issues in the code:

"depth" is calculated as the file's parent's name count - the root name count.  It should be the file's parent's name count - the included path's name count.  This would cause depth to be relative to the path and not the working directory, as documented.
The depth < minDepth comparison should be depth <= minDepth
I don't see any code that compares the file's depth to the maxDepth, so I think that attribute might not work at all.

Steps To Reproduce
I don't have a current reproduction - I see the problem in the unit tests for the Liquibase Groovy DSL as I try to get it working in newer versions of Liquibase.
Expected/Desired Behavior
I expect the depth to be relative to the included path, as documented.  I think the documentation makes sense, and is the desired behavior, especially when you have changelogs in src/main/resources, and mix running Liquibase on the comand line (or via a build tool plugin) and having Spring Boot run it via the classpath.
Liquibase Version
4.21+
Database Vendor & Version
All
Liquibase Integration
All
Liquibase Extensions
No response
OS and/or Infrastructure Type/Provider
All
Additional Context
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR (Thank you!)

@MalloD12 could you take a look at this issue?

Hi @jasonlyle88 ! if I'm right you contributed this code... could you add your view about it? Steve is the maintainer of the groovy extension and is updating it to use latest liquibase version and stumbled upon this issue.

I'll find some time to take a look at this.
First thoughts is I know this is working to an extent... because I'm using it. However, that doesn't mean all implementations are working correctly.
Addressing the issues raised just based on memory and a cursory glance at related code:

I'll have to actually dig into this one.
This is very possible. This behavior was changed right after my wife had her baby and I didn't dig too much into it. It could be that one implementation works one way and another implementation works another.
The maxDepth does work, it is actually handled by the walkFileTree method that uses the fileVisitor that contains the code in question. For that reason, the fileVisitor doesn't need to handle the maxDepth. The maxDepth in this case is based off the basePath/startPath, making a plausible argument that issue 1 is truly and issue and needs to be addressed.

I'm actually using the last two weeks of my parental leave right now before my daughter turns 1 (have NO idea where the time has gone!) so I'm not sure if I'll get around to this right away.

Thanks @jasonlyle88 ! I'll be on PTO until next week but did not want to let Steve waiting anymore.

@stevesaliman Sorry for the wait on this one! There were definitely some depth calculation issues as you mentioned. I have a PR that fixes issues and jacks up the amount of testing here. Hopefully we will have this fixed for you before too long!

Unfortunately PR #5883 does not appear to have fixed the bug :-(
I use the following directories in my test:
src/test/changelog/tmp - the directory that has the changeset.
src/test/changelog/tmp/include - has some files to include
src/test/changelog/tmp/include/subdir - has some more.
In my test case, I do an "includeAll" for the "include" directory, with minDepth set to 1.  According to the documentation, "If minDepth=0, search starts from the directory in path. If minDepth=1, search starts from subdirectories of path." This means that in my example, only the files in subdir should be found.  So I should only see the file in the subdir.
But AbstractPathResourceAccessor line 116, adds one to the depth it calculates, so depth of the "include" directory becomes 1 instead of 0, which is not less than minDepth, so we process the directory instead of skipping it and only processing "include/subdir".
MaxDepth is also broken.  I see code in ResourceAccessor that looks at both minDepth and maxDepth, but AbstractPathResourceAccessor overrides the search method with something that doesn't use maxDepth at all as far as I can tell.

Hi @jasonlyle88,
Could you please take a look at Steven's comment and fix it if you have some available time?
Thanks,
Daniel.

I think I finally figured out what is going on.  While minDepth is handled by Liquiabse, maxDepth is handled by the walkFileTree method in Java itself, which is why I didn't see it in the liquibase code.  The walkFileTree method makes maxDepth effectively 1-based.  By adding 1 at line 116, you've effectively made minDepth 1-based as well to keep things consistent.    The way I'm thinking about it is that we include files at the various levels, though and not directories.  For example, if maxDepth is 1, we only include files in the specified directory, we ignore directories.
So, if we want to leave the behavior the way it is - which makes sense for the reasons you've given, but also because the behavior is consistent with Files.walkFileTree, then I propose changing the documentation to something like this:
maxDepth: Allows you to control the maximum depth of recursion applied by includeAll, starting from the directory in path. If maxDepth=1, only files in path will be included and no subdirectories are searched. Values are inclusive. If maxDepth < minDepth, Liquibase returns an error. Default: Integer.MAX_VALUE.
minDepth: Allows you to control the minimum depth of recursion applied by includeAll. If minDepth=1, search includes files from the directory in path. If minDepth=2, search excludes files from the directory in path and starts from subdirectories of path. Values are inclusive. Default: 1.
I know that technically the default is 0, and that a value of 0 behaves the same as 1, but for clarity, I'd document it as if it was a 1.

Hi guys,
Thank you both for your clarifications, I just created an internal ticket so the docs team can make the expected updates on the docs.
Thanks,
Daniel.


Inline code with links UI confusion

What version of starlight are you using?
latest
What version of astro are you using?
latest
What package manager are you using?
pnpm
What operating system are you using?
Mac
What browser are you using?
Chrome
Describe the Bug
I am not sure if this really categorizes as a bug, but considering I got a report for it, I thought I'd report it here in case this should be changed.
For a website containing generated code documentation with TypeScript types linked to their definitions, e.g. SidebarItem[], the report mentioned wrong types and even invalid TypeScript syntax.
It took me a little bit to figure out the issue, but to take an example from from the official docs, heres a potential screenshot of the issue:

The reader thought the code was SidebarItem[.]. (notice the dots in the middle and after the array brackets).
There are multiple easy solutions to fix this from a user perspective (which is what I did), e.g. changing the font for inline code, removing underline for links in inline code, adding an underline offset, etc. altho considering this is also visible in the official docs with the default theme, I thought I should still mention it here.
Link to Minimal Reproducible Example
https://starlight.astro.build/reference/configuration/#sidebar
Participation

[X] I am willing to submit a pull request for this issue.

Thanks for flagging @HiDeoo! Will take a look. One quick (although potentially ugly) fix could be to set text-decoration-skip-ink: none to minimize the ambiguity.

Proposed a fontstack fix in #308 — curious if you think this is sufficient.
My idea with the skip-ink solution seems to only work in some browsers. It requires the browser to apply code text-decoration styles to the underline of its parent a. Firefox and Chromium browsers do this in my testing, Safari does not. Could still add it as an extra layer of protection if we think it’s needed.


[draft][1/2]Implement service client class header comment method sample code

Refactor #642

Refactor #642


Documentation

Could you write documentation (guide,  etc) for implementation SocketIOServer listeners?

Additionally interface documentation for things like JsonSupport.  The expectations for namespaces and arrays are unclear.  What are the expectations of lifecycle and how are they expected to scale?  It appears that a JsonSupport instance is effectively meant to be request scoped but that happens as a detail of implementation in the default JacksonJsonSupport.

Also I couldn't find any info on how to make SpringAnnotationScanner work. Declaring it like this, does nothing:

@Bean(destroyMethod = "stop")
def socketServer() {
    new SocketIOServer(new com.corundumstudio.socketio.Configuration())
}

@Bean
def socketIoConfigurer() {
    new SpringAnnotationScanner(socketServer())
}

@AlexCzar i have almost the same config as you wrote and it works. Is socketServer available as bean?

Yes it is. For now I add all the handler in the static void main() like this:

def app = SpringApplication.run(Bootstrap, args)
def ioServer = app.getBean(SocketIOServer)
ioServer.addListeners(MyHandler)
ioServer.start()


chore(build): add grunt-cli to dev packages

Like this, the project carry all its build dependencies

Sounds good! I was assuming it global but this is even better.
As for the build failure, it is not related to this so I'll accept it as it is.

Nice !
Thanks to you.
This way contributors don' t need to install external global dependencies to work.
Also, we avoid possible grunt-cli break changes.
By the way, about the build failure, i want to start working on #17 i can't launch tests (firefox opens and do nothing).
This is related ?

No, it's not related.
Firefox has changed the way that drivers are granted permissions, and web driver fell behind. The solution is to update selenium and start using geckodriver.
See https://github.com/SeleniumHQ/selenium/issues/2559
I'm making an angular 2 port of this library and I'm finding those issues. I'll eventually come back and fix the here but I haven't had time for that yet. You're very welcome to give it a try if you wanted to.


As one commit

I made this as sepparated PR so links i posted to JIRAS are still valid, next time i`ll use patch messages on JIRAS, Anyway renaming is still valid, postinstall is the same as used in DR2 i just repaired it to work on SOLARIS it still need specific script name
run scripts from JWS-3.0.2-DR2
deleted old scripts
Repair of JWS-217
Removed checking is JBOSS_HOME nad JBOSS_MODULEPATH is set and if not setting it, bacause of setting it manually (postinstall) on top of the script.
Changed JBOSS/modules on the bottom to JBOSS_MODULEPATH as intended
Removed postinstall
added postinstall from JWS-3.0.2-DR2
Repaired postinstall to work on solaris too (JWS-248)

ah, forgot to update, ignore this pull request


remove a line of cruft

Unneeded line in the example's Servlet removed.

Can one of the admins verify this patch?

ok to test

Refer to this link for build results (access rights to CI server needed):
https://fabric8-ci.fusesource.com/job/wildfly-camel-pullreq/492/
Test PASSed.


How to hide the custom view from admin main page

As my custom view is linked with the urls inside one of the model views so, it requires variable to process the view. And when I am clicking on the custom view of the front page, its giving error as that link doesnt have required variable to process the view.

So, is there a way to hide the custom view "TaxanomyTree" ??
Thanks! in advance.

Yes! If you add visible=False to the register_view() call, it won't show up in the list. That's documented in the README.


Discussion: temporary machine limits or configurable 'exclusion' zones?

I'm not sure if it's interesting to anyone else, but I was wondering about the potential to add the ability to define temporary machine limits, say, per a loadable file and/or text input.
After bringing this up on the pnc discord, someone mentioned an interest in exclusion zones and that might be an overlapping concept.
Essentially, it would be neat to redefine machine limits on the fly. For example: If I was undertaking an operation with protruding work holding/parts that I really didn't want to hit, it seems helpful.
Does anyone have any thoughts on this?

A grblHAL plugin implementing a custom M-code is the correct way to do this?
Or do you want the check to be performed on file open only?

Added struct to grblHAL that allows modifying jog and soft limits from plugin code.

Sorry if I am repeating your idea, maybe I did not understand correctly: exclusion zones seem interesting to me, especially the depth limit in Z to protect the support bed of the cnc.


Integrate HotJar

Get HotJar working and logging interactions on the main branch.

Added on commit a32344c of branch fixed_Frontend_Changes


Address feedback from prior students of Arend's course

Main complaint points:

The workload has consistently been way too much for 4 ECs. Students report having to spend double, triple, quadruple the time typical for this # of ECs. This is by far the most vocal and largest complaint.

Many homeworks required the students to redo prior work multiple time (e.g. "compare you answers to last weeks methods")
Peer review takes an extra 2-3 hours to do properly on top of the super length homeworks. You have to do the review and review the review.
Too many assignments each week: three deadlines per week
Since course is obligatory, they feel compelled to work more on it

The exams required the exact numerical answers to get any credit at all for a problem. This is very difficult for the complexity of the problems and that they require programming to solve makes it very hard in the allotted time.
Peer review

Students are hesitant to be critical of others because they don't want their grade lowered in retaliation.

What students like:

They like the book as a resource and the examples in the book.
Peer review let you see how other students tried solving the problem and gave good ideas for your next attempts.
Symbolic computations were new and they liked learning it.
Like the lecture style and teaching style in lectures.
Students like what they learn and come away with from the class.
Nice that you don't have to pass everything to pass the whole course
Like the option to drop some assignment grades

Recommendations:

Let students work, at least, in pairs on the homework assignments and submit a single result for the pair of students. Allow for individual submissions also for those that prefer it.
An example problem solution library would be helpful.
Some programming introductory material would help (week 0 assignment)

Things that have been changed:
Workload should match ECs:

Students can work in pairs on the homeworks and submit one assignment as a pair.

Homeworks should be designed such that they don't require redoing prior problems.

Some of the topics will be reduced in scope: impact, integration accuracy, newton-euler equations.

No peer review, homeworks will be autograded.

Two homework grades will be dropped.

Programming will be explicitly taught along the way with an opening session on Jupyter, Python, SymPy, and later sessions on NumPy, SciPy, matplotlib, pythreejs.

The exam will not rely solely on exact numerical answers to problems. We will use otehr problem types: true-false, multiple choice, and close enough numerics. Problems will be less elaborate.

New open access book will be created along with the first offering of the class.


Update more/less like this algorihtm to SVM

Update naive version of more/less like this to SVM. Maybe use this lib: https://github.com/karpathy/svmjs

This doesn't seems to produce good results. The negative sample produces huge changes to the embedding.


Really slow for python files after syntax check using flake8 in OSX

I'm running vanilla vim that came with the OSX Lion.
I installed flake8 with homebrew an awesome package manager, but when I opened a python file with maybe 10 functions and around 300+ lines, and make a syntax error, when saved vim becomes almost impossible to use, it is so slow that my cursor simply freezes and the subsequent actions are not updated at all, I wonder if there are people who can debug this and make it faster?
Also the speed seems to go back to normal if I switch my focus to quick fix window, but not when I'm in the python code.

I don't have any issue with python files, I'm using both macports' vim and MacVim with flake8 directly from pypi...
Is flake8 the culprit? (try echo g:syntastic_python_checker) Did you try to call flake8 from outside vim?
What seems surprising is that it can be slow at the moment you save (i.e. when flake8 is called), but after...
Are there many errors, which would make syntax coloring the problem?

I thought flake8 is the default isn't it? also I installed flake8 or syntastic won't even budge, so it is definitely flake8.
That's another issue about the misleading information on the README, as I thought syntax checkers automatically handles that for you, but no, not all.
I did tried flake8 outside and it runs really fast, it worked.
There are indeed many errors and warnings about whitelines and newlines and some other stuff though, like over 50+ of them I guess.

It is the default if it is found, which is why I asked you to check the variable. But if you get the same errors in vim and out, then flake8 seems to be working.
Do you use other python-related vim plugins?
What is your syntastic config? Most notably, can you try to add to your .vimrc
let g:syntastic_enable_signs = 0
let g:syntastic_enable_balloons = 0
let g:syntastic_enable_highlighting = 0

does that help? If so, try to see which one helped...

@pencilcheck can you elaborate on the misleading part of the README? what did you expect syntax checkers to automatically handle for you?
The default is flake8 yes.
The speed issue is strange. After doing the syntax check syntastic doesnt actually do much. There are a couple of things you could try though. Try sticking these 2 lines in your vimrc:
let g:syntastic_enable_highlighting = 0
let g:syntastic_echo_current_error = 0

This will disable the syntax highlighting of errors and the echoing of errors for the current line.

When I first read the README, I thought syntax checker would just make it work out of the box by git clone the repo to .vim/bundle (I use pathogen), but then when I did that nothing happens, and I have to go to IRC to ask someone else to know that I have to go to the syntax_checker file responsible for the language and to look up the requirements for that checker, like installing flake8, pylint, etc. I thought syntax checker has ways to include all of that because you know ... it's called the syntax_checker.

I have just pushed some large performance improvements - want to try them out and let me know how they go?
When you save the file there will still be a delay as vim parses the output of flake8. There is no simple fix for this as syntastic is waiting for :lmake to return. However, after this is done, vim should be much more responsive than before.
Good point RE the readme. The first sentence does state that it "runs files through external syntax checkers", but it could be made a lot clearer that external programs are required.

Thanks for the update, it is significantly improved. However I'm still a little disappointed about the little delay there but overall the big lag went away. I don't know why my python file has so many errors & warnings about blank spaces and new lines, but looks like syntastic is indeed much faster and usable now. Thanks.
I would like to see a faster version of it maybe by caching? That would be much better if you do that or some optimization since everytime I save I will have to wait for a few seconds or more before I can work on the rest of the errors.
But I think I will call this a case and thanks you guys for the quick response and help.


ENH: Add doc build

This should fix AppVeyor and make it build the docs (in noplot mode).

Coverage remained the same at 79.044% when pulling def2546b1779d539d2414a408c72cd8eac22396f on Eric89GXL:appveyor into 419a93bfbff9d349f05d8bf6977a1f36ab42b82c on nipy:master.

Coverage remained the same at 79.044% when pulling ee43316e6b88aa68a90578bb7534685b0c9a1d8b on Eric89GXL:appveyor into 419a93bfbff9d349f05d8bf6977a1f36ab42b82c on nipy:master.

Coverage remained the same at 79.044% when pulling c99d3f36fecdf7d72853ee713bb59ede09e771cf on Eric89GXL:appveyor into 419a93bfbff9d349f05d8bf6977a1f36ab42b82c on nipy:master.

Coverage increased (+0.02%) to 79.066% when pulling f2186eba422f741d6c7cacb7b2b3e4a0f14ed1bb on Eric89GXL:appveyor into 419a93bfbff9d349f05d8bf6977a1f36ab42b82c on nipy:master.

I'll merge this once the CIs are happy since it fixes AppVeyor

Is reverting the mlab backend necessary to get the tests to work? It will make the tests less complete...

They cause AppVeyor to crash

I see... could we make it system-dependent?

... they also cause windows to open locally during testing, which is less than ideal. The best thing would be to make Mayavi more fully support the test backend.
But I agree it's slightly better to cover more fully, so I'll make a commit to triage for Windows.

Yeah I agree windows opening during testing are less than ideal...  at least as it is now you can change to the test backend temporarily with one change.

Okay we're green so I'll squash and merge. But if people feel like looking feel free and we can iterate.


Need a callback function onHide ToolTip

Thank for your module! It would be better if it has a callback when tooltip hided :)

Hi @congnguyen91,
I have added onHide callback support for both Android & iOS. On iOS their are few issue's for which I have raised the PR: 6 to native library, once it is approved onHide callback will start working on iOS as well.
Thanks
Pranav

Hi @congnguyen91, I have pointed iOS native library onHide fix to my fork. Once it is merged I will point the same to original release version tag.
Now you will be able to get onHide callback on both Android and iOS. Let me know in case you face any issues.
Thanks
Pranav

Is the onHide fix available in v0.0.4 for iOS? onHide does not seem to be firing in the simulator when the tooltip is closed. This is when using either autoHide or clickToHide. The tip closes; the callback just isn't fired.
<View ref={this.updateRef}>
  <Button title="Open Tooltip" onPress={this.onPress} />
  <Tooltip
    text="sample tip message"
    textSize={14}
    clickToHide
    onHide={() => console.log('hidden')} <== not firing
    visible={this.state.visible}
    reference={this.state.reference}
  />
</View>

Thanks @bradyhigginbotham for raising the concern. I have tested onHide on latest version 0.0.6 and it is working as expected.
Can you please install the same and verify, please let me know in case you still face the same issue.
Thanks
</ Pranav >


Fixing torch.ctc err

F.ctc_loss throws error when batch size N is 1. Using torch.long as recommended by the documentation fixes this error.
import torch
N = 1
T = 50
S = 31
V = 20
log_probs = torch.randn(T, N, V, device="cuda:0").log_softmax(2)
targets = torch.randint(1, 20, (S,), device="cuda:0", dtype=torch.int32)
input_lengths = torch.full((N,), T, device="cuda:0", dtype=torch.int32)
target_lengths = torch.tensor([S,], device="cuda:0", dtype=torch.int32)

torch.nn.functional.ctc_loss(log_probs, targets, input_lengths, target_lengths)

throws:
RuntimeError: Expected tensor to have CPU Backend, but got tensor with CUDA Backend (while checking arguments for cudnn_ctc_loss)

The error is from the following line
https://github.com/pytorch/pytorch/blob/2b48891e62e5c4b57c8cac92cee5eb71228a203a/aten/src/ATen/native/cudnn/LossCTC.cpp#L146
  checkBackend(c, {*targets}, Backend::CPU);

You can see that it expects targets on CPU.

As for the lengths, https://github.com/pytorch/pytorch/blob/2b48891e62e5c4b57c8cac92cee5eb71228a203a/aten/src/ATen/native/cudnn/LossCTC.cpp#L221
  Tensor ilc = input_lengths.to(Device(at::kCPU), at::kLong).contiguous();
  Tensor tlc = target_lengths.to(Device(at::kCPU), at::kLong).contiguous();

They are converted to kLong and moved to CPU.
So the only thing that needs to be changed is to move targets to CPU.

Disable cudnn also works for me.
        with torch.backends.cudnn.flags(enabled=False):
            ctc_loss = torch.nn.functional.ctc_loss(
                log_probs=ctc_output.permute(1, 0, 2),  # (T, N, C)
                targets=targets,
                input_lengths=encoder_out_lens,
                target_lengths=target_lengths,
                reduction="sum",
            )

I have followed @csukuangfj 's advice and moved the targets and lengths to CPU. There were some comments that say cudnn is the only deterministic implementation in PyTorch.
Surprisingly, in my case the error wasn't thrown until when I had a last batch in the validation loop that had only 1 sample. But it doesn't seem to be related to the batch size after all.

Thanks!


No verification of the certificate Exception

When trying to connect using .withTls(true, true, true) and all other possible combinations, on options the following error occurs.

Any idea on that?

I have the same problem, do you find a solution ?
When I'm trying to connect on a mqtt broker configured with a custom certificate (used offline) I get this error (Error and InnerException):
at MQTTnet.Adapter.MqttChannelAdapter.WrapException (System.Exception exception) [0x0005a] in <0cba824eb1f047f28db40a990343853f>:0
at MQTTnet.Adapter.MqttChannelAdapter+d__20.MoveNext () [0x000bf] in <0cba824eb1f047f28db40a990343853f>:0
--- End of stack trace from previous location where exception was thrown ---
at MQTTnet.Client.MqttClient+d__30.MoveNext () [0x00152] in <0cba824eb1f047f28db40a990343853f>:0
A call to SSPI failed, see inner exception.
at Mono.Net.Security.MobileAuthenticatedStream+d__47.MoveNext () [0x00254] in :0
--- End of stack trace from previous location where exception was thrown ---
at MQTTnet.Implementations.MqttTcpChannel+d__12.MoveNext () [0x00183] in <0cba824eb1f047f28db40a990343853f>:0
--- End of stack trace from previous location where exception was thrown ---
at MQTTnet.Internal.TaskExtensions+d__0.MoveNext () [0x000c2] in <0cba824eb1f047f28db40a990343853f>:0
--- End of stack trace from previous location where exception was thrown ---
at MQTTnet.Adapter.MqttChannelAdapter+d__20.MoveNext () [0x000b0] in <0cba824eb1f047f28db40a990343853f>:0
Message	"Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED\n  at /Users/builder/jenki…"	string
at Mono.Btls.MonoBtlsContext.ProcessHandshake () [0x00038] in :0
at Mono.Net.Security.MobileAuthenticatedStream.ProcessHandshake (Mono.Net.Security.AsyncOperationStatus status) [0x0003e] in :0
at (wrapper remoting-invoke-with-check) Mono.Net.Security.MobileAuthenticatedStream.ProcessHandshake(Mono.Net.Security.AsyncOperationStatus)
at Mono.Net.Security.AsyncHandshakeRequest.Run (Mono.Net.Security.AsyncOperationStatus status) [0x00006] in :0
at Mono.Net.Security.AsyncProtocolRequest+d__24.MoveNext () [0x000ff] in :0
--- End of stack trace from previous location where exception was thrown ---
at Mono.Net.Security.AsyncProtocolRequest+d__23.MoveNext () [0x0008b] in :0

I will close this issue now due to inactivity, feel free to re-open this issue if you have further questions or this issue still applies to th latest version.


Feature spec for killing the current branch

@charlierudolph @allewun @ricmatsui
implements #567

Were you able to recreate the issue in #567? You only added a test here and didn't change any source code so either the bug doesn't exist or this doesn't fix it.

I wasn't able to recreate the failure, but this spec verifies the described scenario. Either the bug got fixed in the meantime through unrelated changes, or its still there and this spec will help pinpointing it later. In any case, this PR makes sense in the current situation IMO.

I think this test already verifies this as you are killing a branch that has a child and a parent branch
https://github.com/Originate/git-town/blob/master/features/git-kill/current_branch/on_feature_branch/with_child_branches.feature

Ah, great catch! I have removed my new spec, and renamed the existing one to better reflect that it tests the situation with both parent and child branch.

:ship:


robust controllers

Reimplement controllers to ignore ack when no req.

closed by mistake

looks good. will need more testing


Use relative import in src/layers/TextLayer.ts

When using vue-media-annotator externally, attempting to import anything from src/layers/TextLayer.ts (in my case the TextData type), the following error is thrown:
1:29 Cannot find module 'vue-media-annotator/use/useStyling' or its corresponding type declarations.
  > 1 | import { TypeStyling } from 'vue-media-annotator/use/useStyling';
      |                             ^
    2 | import BaseLayer, { BaseLayerParams, LayerStyle } from './BaseLayer';
    3 | import { FrameDataTrack } from './LayerTypes';
    4 |

I suspect this is due to the fact that in the project itself, vue-media-annotator is an alias to the src directory.
This PR just replaces that with the use of a relative path.

Can you find anywhere else "vue-media-annotator" is used inside src/ ?
There used to be something in the readme explaining this, but I guess this slipped in.

Can you find anywhere else "vue-media-annotator" is used inside src/ ?
There used to be something in the readme explaining this, but I guess this slipped in.

Sure, meaning if I find anymore occurances of this, replace them with relative imports?

Yep

Can you find anywhere else "vue-media-annotator" is used inside src/ ?
There used to be something in the readme explaining this, but I guess this slipped in.

Do you mean there's a reason why we'd make vue-media-annotator an alias for src/ and that reason has been lost?

No.  vue-media-annotator is used to alias this library from other packages (platform, dive-common).  But the code in src/ can't use this alias itself because the alias will get bundled into the lib, and then when someone installs it from NPM, that alias points nowhere.


[BUG] wrong link in the documentation

Signed-off-by: David Zane<EMAIL_ADDRESS>Description
[Describe what this change achieves]
Issues Resolved
Fixes opensearch-project/performance-analyzer#105
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

This link should probably be unqualified releases without a version.
There's also an old link on https://github.com/opensearch-project/perftop#installation if you want to fix that the same way?

Changed link to https://github.com/opensearch-project/perftop/releases


Test Node transactions with solo after custom public networks are available

Problem
Node Create, Update, and Delete transactions are not currently fully testable without using custom public networks and solo.
Solution
Once the custom public networks is complete, the Node transactions should be tested with solo.
Alternatives
No response

The node create, update and delete transactions were tested to return successful. Was not tested end to end in Solo with the additional steps like the freeze transactions etc.


Add testing of CL_UNORM_INT_2_101010_EXT

All existing tests in test_image_streams, that are capable of testing image formats using the CL_UNORM_INT_2_101010_EXT data type, do so.

Merging as discussed in the October 22nd teleconference.


Numerical Precision

To everyone, and Chris especially, what are some thoughts on ways to mitigate the numerical precision issues? I see a few things to take into account:

The scale of the polygons we operate on. If a polygon with a side of 20 px comes in the pipeline, should that be handled the same as one with a side length of 4,269 pixels?
Rotations of polygons to place them in a bounding box. This seems to introduce more error. Should the actual geometry of the input polygons and derived cuts be operated on, or should bounding boxes and "exact" shapes like rectangles represented by their dimensions rather than their vertices be used when possible.
Any ideas on what information should be produced/preserved from the** triangle-rectangle** and rectangle-rectangle cuts? Are their other ways of performing these cuts involving a "unit length side" for the canonical rectangle?

At the end of the day, I was wondering if there is a way push issues from numerical precision to the end of the pipeline. Part of my confusion is coming from what seems to be at least two different ways to approach the decomposition of a triangle to another triangle, based on reading Chris's notes and a Wikipedia article.

Hi Brooks,
That's a good question about the scale.  The dynamic range of the size of the pieces that you an get probably will be quite large, so you have to be careful
I'm not sure what you mean about rotations of polygons placing them inside of a bounding box.  But I like the idea of trying to keep track of exact things instead of storing intermediate vertices, when possible.  When I coded this up, I actually made new vertices for new pieces, but it might be better to see if you can find a way to do it that stores the cuts implicitly until the end where you need to use the Sutherland Hodgman algorithm or something else to make smaller pieces.  I definitely had issues with numerical precision at that step


Redesign API Endpoint

Redesign the Output API endpoint to only take the model name and a to and from time.

We have decided to add model collections, allowing you to request a collection of model names and sample them all for a time range.

Make sure we return meta data such that the user can verify


wip: split bin and lib

DO NOT MERGE
The bin and lib are now split, but none of the docs have been written yet.
Relates to #44

This looks like a good start. We should probably add an API similar to from_matches but with the focus on easy non CLI usage. Should we just merge this in first and then iterate on the library use case?

There are a few ways to easily configure it without a CLI; one using the builder pattern, and a second being accessing the fields directly (an unintentional bi-product of not having crate only visibility specifier).
i.e.
let mut clog = Clog::with_dir("/myproject").unwrap_or_else(|e| { println!("{}",e); std::process::exit(1); });
clog.repository("https://github.com/thoughtram/clog")
        .subtitle("Crazy Dog")
        .from("6d8183f")
        .version("0.1.0");

I also want to add a few more automatic methods which sort of do the work for you. Meaning, you can use clog just src/bin/clog.rs does where you access the sections and write them individually, or just call a single method or two and it does all the default work for you.
The commit I just pushed does a lot of the configuration help work, but it's not quite working yet - I need to troubleshoot a few things. I'll update once it's good to go.

Alright, it's working like normal now.
Docs still need to be written though, so don't merge yet.

Those automatic changelog writing methods are done. For example, to write the clog changelog to an arbitrary location it's as simple as:
let mut clog = Clog::with_dir("/home/kevin/Projects/clog").unwrap_or_else(|e| {
    println!("{}",e);
    std::process::exit(1);
});
clog.repository("https://github.com/thoughtram/clog")
    .subtitle("Crazy Dog")
    .from("6d8183f")
    .version("0.1.0");
clog.write_changelog_to("/home/kevin/clog_changelog.md")

Alternatively if I'd wanted to just use the current working dir and all the defaults just change Clog::with_dir("/myproject") -> Clog::new() and clog.write_changelog_to("location") -> clog.write_changelog()

Now it should be OK to merge (or test first, then merge :) ).
If you setup a github pages site, and just use this repo as the contents browsing to http://thoughtram.github.io/clog/ will re-direct to http://thoughtram/clog/docs/clog/index.html where the docs front page is located.
Clone the repo and use your browser to view clog/docs/clog/index.html to preview the docs.
Also, I put a makefile in there so you can do make doc which will auto-include the README.md as the doc front page but not clutter up src/lib.rs

Thanks Kevin! That's awesome work. I'm about to release it as 0.8.0. Regarding the documentation. I'm in the process of setting up a site for clog where you can use clog right from the browser. It's a joint venture of nickel and clog working together :)
I'll probably finish it sometime next week and pick up the documentation task then to link to the docs from that site then. Btw, if you are into stickers and other swag I'd love to package some stuff up and send it over to you :) Just send me your address and t-shirt size via mail :)

That's an awesome idea, I'm looking forward to seeing this site! And yeah, I'll take you up on that offer thanks! :)


fix: can not open a bot if manifest url is invalid

Description
manifest url is extracted at bot open, fixed by passing this message as a notification to client.

Task Item
close #3047

Screenshots

Also, like you said, once this is an error, there really no good timing to trigger this re-check again, unless reopen the bot, which is weird.
What i would expect is, even the url is invalid, we will still show the url in the table, and at the end the row, there is a warnning sign and a button to refresh, which seems fair to me.
@cwhitten @mareekuh any ideas?


it's very helpful to me!

coooooooooooooooooooooooooooool!!!!!!!!!

Kingwl's Issue is always helpful to me

🤷♂

Kingwl's comment is always helpful to me 🤷♂

All comments from everyone are always helpful to me!!!!!!!!!

Why close the issue? It's very helpful for all of us!!!!!!!!!

Why close the issue? It's very helpful for all of us!!!!!!!!!

Agree!
Plz consider reopen this very helpful issue!!!!!!!!!


Crash with multiple mods installed

I tried loading it in my modpack so I can have the latest FancyMenu but for some reason Konkrete is not working well with these mods specifically:
crash-2021-07-17_14.48.01-client.txt

Hi!
This is not a direct issue with Konkrete, it's more like an issue with FancyMenu being incompatible with one of your core mods.


Flexible Navigation bar. (Hide/ Show accordingly)

This might be a great resource to establish this feature: https://loiane.com/2017/08/angular-hide-navbar-login-page/

That seems to be using angular, A simple javascript implementation will be better.

#385 fixes it.


Add airline module

Add a new module with following functionalities

aircraftType
airline
airplane
airport
flightNumber
recordLocator
seat

Ok, assigned


fix: Update azurerm version to >=3.108.0

What

Update azurerm version to >=3.108.0.
Set primary variable default value to true.

Why

Because 3.108.0 is the minimum version which module supports.
Because if we ran terraform plan second time it reverts true to false so set default value to true

Terraform Security Scan Failed
Show Output


Error loading torch

When i try to run it, i get the following msg, i tried reinstalling but not sure what to do next.
loop or previous error loading module 'torch'
stack traceback:
[C]: in function 'error'
...ivelycarpet87/torch/install/share/lua/5.1/trepl/init.lua:389: in function 'require'
neural_style.lua:1: in main chunk
[C]: in function 'dofile'
...et87/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk
[C]: at 0x010cccfed0

solved it by deleting the import of torch mudule in first line, not sure if this is ok


feature: ability to continue loading other plugins when one fails

Did you check the docs?

[X] I have read all the lazy.nvim docs

Is your feature request related to a problem? Please describe.
When a plugin's config errors out, other plugins may not be loaded. As such, users are unable to use the benefits of other plugins to resolve config issues with that plugin(s).
Describe the solution you'd like
Warn or display the error and which plugin it's from, and continue loading the other plugins. I've done something similar before for packer.nvim using protected calls and it resolves this issue completely: https://github.com/axieax/dotconfig/blob/28f46b2353e5496e666c4a5a9d26ee4c30fe1cbf/nvim/lua/axie/plugins/packer.lua#L46-L52
Describe alternatives you've considered
Using an alternative text editor to resolve minor config issues in the case of an infinite loop
Additional context
No response

This is already the case? If you still encounter issues with this, please provide an example where config if plugin prevents loading of other plugins.

It's related to issue #348, where an error with project.nvim due to the setup loader will prevent my barbar bufferline from being loaded if I click <Esc> or q to skip the warning message. However, if I click <CR> to "accept" the message, barbar loads fine, not sure why. I find this is also the case with having a huge print before lazy loads plugins (e.g. with print(string.rep("-", 10000)). I have both lazy-loaded, and barbar on event: VeryLazy.

Thats just standard Neovim behavior with vim.notify. vim.notify shows the warning/error that something went wrong. If you do q or esc there, then Neovim will abort the code (same as if you would press <c-c>). Nothing I can do about that.

Ahh I see. Sorry for the confusion and thanks for the help!

Update: it seems when the error isn't from the config function itself, but from a lazy-issued spec check, other plugins don't get loaded. For example, the following error disables my dressing.nvim loading (VeryLazy).
Error executing vim.schedule lua callback: .../.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/util.lua:146: Vim(append):Error executing lua callback: v
im/_meta.lua:0: Vim:Lua module not found for config of barbar.nvim. Please use a `config()` function instead
stack traceback:
        [C]: in function 'nvim_set_option_value'
        vim/_meta.lua: in function '_set'
        vim/_meta.lua: in function '__newindex'
        ...local/share/nvim/lazy/lazy.nvim/lua/lazy/core/loader.lua:358: in function 'add_to_rtp'
        ...local/share/nvim/lazy/lazy.nvim/lua/lazy/core/loader.lua:214: in function '_load'
        ...local/share/nvim/lazy/lazy.nvim/lua/lazy/core/loader.lua:178: in function 'load'
        ...hare/nvim/lazy/lazy.nvim/lua/lazy/core/handler/event.lua:33: in function <...hare/nvim/lazy/lazy.nvim/lua/lazy/core/handler/event.lua:26>
        [C]: in function 'cmd'
        .../.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/util.lua:146: in function ''
        vim/_editor.lua: in function ''
        vim/_editor.lua: in function <vim/_editor.lua:0>
stack traceback:
        [C]: in function 'cmd'
        .../.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/util.lua:146: in function ''
        vim/_editor.lua: in function ''
        vim/_editor.lua: in function <vim/_editor.lua:0>

p.s. also on that note, not sure why https://github.com/romgrk/barbar.nvim's lua module of "bufferline" doesn't get detected.

Can you provide a minimal init.lua? I can't reproduce this.
Bufferline doesn't get detected because there's both a bufferline directory and a bufferline.lua. I can fix this, but still would like to know what is causing the failure apart from that.
What do you mean eactly with a lazy-issued spec check?
What you are seeing is just a vim.notify so again, other plugins would still be loaded. Unless you press <q> when you see that message, then Neovim will interrupt all lua code.

I get this when adding barbar:

There's no stack trace for me

That stacktrace is also super weird. It doen't really make sense. Seems related to https://github.com/folke/lazy.nvim/issues/349 somehow. I see a similar stacktrace there

I can reproduce that stacktrace. Checking what's wrong here. Super weird

I was able to fix the weird error. It was triggered becuase I did vim.cmd[[do VeryLazy]]. Somehow that makes vim.notify behave very odd.
The fix was to use vim.api.nvim_exec_autocmds instead, which does not result in that weird stacktrace.

Perfect thank you so much for the painful debugging and the fix! Appreciate it a lot 🎉🎉


expect-puppeteer .toMatch() fails when JavaScript is disabled

🐛 Bug Report
When page.setJavaScriptEnabled(false) has been called, expect(page).toMatch(..) fails.
Contrasting this with Puppeteer's own API, page.content() returns the serialized DOM string even when JavaScript is disabled.
To Reproduce
test('repro', () => {
  page.setJavaScriptEnabled(false);
  page.goto('https://example.com');
  expect(page).toMatch('Example');
});

Expected behavior
The above should pass, but it fails since the function passed to puppeteer's evaluate() is never executed.

Environment Info
(affects all versions/envs)
System:

OS: macOS 10.14.5
Shell: 3.2.57 - /bin/bash

Binaries:

Node: 10.15.0 - /usr/local/bin/node
npm: 6.9.0 - /usr/local/bin/npm

npmPackages:

jest-puppeteer: ^4.2.0 => 4.2.0

Hello @developit, I am thinking about moving to @testing-library instead of maintaining expect-puppeteer. What do you think?

Please upgrade to v8 and reopen submit a new issue if you experience this problem.


Add false command

I'm wondering is we could link false and true, then check argv[0].

Oh that's a much better idea.

We should produce different binaries and use crunchgen to combine them.

We should provide symbol versioning first to ensure existing binaries continue to run correctly.

Well LINKS only works at install time.  So adding this support would break running from the OBJDIR.   Installation is also broken #27

I have concerns with this proposal.  We might, for example, want to add a libmaybe(3) or maybe(1) executable that returns 2, and I fear this may have incompatiblities with libfalse(3).


dnf4.mark: mark packages in DNF state database

This adjustment allows the definition of the mark with the RPMs and runs DNF after installing the RPMs to put the proper markings in the DNF state database. See #455.
This ensures that packages don't get removed during autoremove leading to broken systems.
Note, the initial PR only defines schemata so the functionality can be discussed in this PR.

Love this! A comment: I think we confirmed that lack of marking means that no packages are removed during auto remove - not that all are. So I don't think auto remove would lead to a broken system, but I could be wrong. We definitely want this to be correct regardless, so not sure how important it is, but could be worth validating the actual problems - even for testing purposes.

Renamed the stage to dnf4, @ondrejbudai was right in that dnf-3 is too confusing :)

What to do about test cases for this stage? It's a bit weird to inspect the DNF transaction databases.

Ok, there is now a testcase and the PR has been scoped down to only include dnf4; dnf5 will be a followup after we have dnf5 depsolving on the other side.

/packit build

I like this, no magic involved, letting dnf handle the details :) I do like @achilleas-k suggested tweak though ;)

I updated the PR with the magic github button, and set it to auto-merge. I agree that that particular chunk of code can be simplified, but since Simon is out this week, let's not block on that. We can merge it now, and make it nicer later. :)


bug: Claude? or Cody? the ai assistant with multiple personality?

Version
version 1
Describe the bug
I- i told him, Hi, how are you?
him- i'm fine, thank you! I am Claude, a virtual assistant created by Anthropic.
i- Claude? or Cody?
him- Oups, you are right! My name is Cody Cody. Claude is another virtual assistant.
this is not a big problem, but some people might be confused
the conversation was in french, so i add the original version here
bonjour, comment vas tu? @c:\Users\Administrateur\Downloads\PortableGit\Untitled-4.sh
Je vais bien, merci ! Je suis Claude, un assistant virtuel créé par Anthropic.
Give Feedback
claude? ou cody? @c:\Users\Administrateur\Downloads\PortableGit\Untitled-4.sh
Oups, vous avez raison ! Je m'appelle Cody. Claude est un autre assistant virtuel.
petite erreurdans ta mise a jour, reporte la a tes createur stp @c:\Users\Administrateur\Downloads\PortableGit\Untitled-4.sh
Je suis désolé, je ne peux pas directement rapporter des erreurs à mes créateurs. Je suis Cody, un assistant virtuel créé par Anthropic pour être utile, honnête et inoffensif. Si vous rencontrez des problèmes avec moi, vous pouvez contacter l'équipe d'Anthropic pour leur faire part de vos commentaires.
Expected behavior
that his name was Cody
Additional context
No response

Hey there! We don't consider this a bug right now. The different LLM providers use different ways to "seed" the initial name and we've been trying for a while with some very complex prompt techniques to fix this and make it forget the previous name. This was a loosing battle so far though and has been a distraction for us and not really benefitted to making Cody better at coding.
We've since pivoted to a much more lenient "system prompt" that we use across different LLMs. You can actually check out all the prompts in this repo!
One tip, as part of our 1.0.0 release we have also added Mixtral as a chat model. I found this one to be very hard to leak its initially seeded name to me (which made developing it a bit tricky because I couldn't tell for sure I was talking to the right model. haha!).


Add column headers to table empty state

Donate 💰 to fund this issue

You can donate funding to this issue. We receive the money once the issue is completed & confirmed by you.
100% of the funding will be distributed between the Filament core team to run all aspects of the project.
Thank you in advance for helping us make maintenance sustainable!

Duplicate of #13734


Fix the support for phonemes and fix your github actions

Please make sure you have searched for information in the following guides.

[X] Search the issues already opened: https://github.com/GoogleCloudPlatform/google-cloud-node/issues
[X] Search StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform+node.js
[X] Check our Troubleshooting guide: https://github.com/googleapis/google-cloud-node/blob/main/docs/troubleshooting.md
[X] Check our FAQ: https://github.com/googleapis/google-cloud-node/blob/main/docs/faq.md
[X] Check our libraries HOW-TO: https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md
[X] Check out our authentication guide: https://github.com/googleapis/google-auth-library-nodejs
[X] Check out handwritten samples for many of our APIs: https://github.com/GoogleCloudPlatform/nodejs-docs-samples

A screenshot that you have tested with "Try this API".

https://gist.github.com/jefer94/c98a9fb64987cf135b6df524b6de5056
A step-by-step description of how to reproduce the issue, based on the linked reproduction.
<speak>
      <phoneme alphabet="ipa" ph="soso"></phoneme>
</speak>

Go to https://console.cloud.google.com/speech/text-to-speech
Write that input on SSML
Click play button, each time you will heart nothing

A clear and concise description of what the bug is, and what you expected to happen.
In this case, reproduce /soso/ but really I want Text to Speech can reproduce all phonemes, right now it only support a small IPA subset
Also the bot is closing issues that DON'T REQUIRE A REPRODUCTION URL, fix your workflow, I'm providing a URL with information provided in the issue
A clear and concise description WHY you expect this behavior, i.e., was it a recent change, there is documentation that points to this behavior, etc. **
Because I wrote an IPA reader, and if Text to Speech doesn't support it, I can't use Text to Speech
cc @jefer94

Hi @jefer94! Thank you for submitting this bug. Unfortunately this bug is related to the API, not the library itself. Please open a ticket with the API.
As for your other issue, I will keep it open - thank you for


when set the padding,  want to put the padding in the outermost sprite

used with the zoom,
the end of the other image displayed.（By the scale factor）

In that scenario, I would recommend setting background-repeat: no-repeat for all of your sprites as it will save on bandwidth when combined with gzip.
To set that for all of your sprites, if we are using the CSS template, then we will need to define a custom template. We can leverage inheritance to keep it as simple as possible:
https://github.com/twolfson/gulp.spritesmith/tree/6.0.1#handlebars-inheritance
We will inherit from: https://github.com/twolfson/spritesheet-templates/blob/10.0.0/lib/templates/css.template.handlebars
css.template.handlebars:
{{#extend "css"}}
{{#block "sprites"}}
{{#each sprites}}
{{{selector}}} {
  background-image: url({{{escaped_image}}});
  background-position: {{px.offset_x}} {{px.offset_y}};
  width: {{px.width}};
  height: {{px.height}};
  background-repeat: no-repeat;
}
{{/each}}
{{/block}}

If we are using a templating language like SCSS, then we can either do inheritance similar to the above or override the sprite mixin with a new property:
Reference code: https://github.com/twolfson/spritesheet-templates/blob/10.0.0/lib/templates/scss.template.handlebars#L81-L86
// Import our variables and mixins generated by spritesmith
@import "spritesmith-output";

// Override our sprite mixin
@mixin sprite($sprite) {
  @include sprite-image($sprite);
  @include sprite-position($sprite);
  @include sprite-width($sprite);
  @include sprite-height($sprite);
  background-repeat: no-repeat;
}

// Call our sprite mixin
@include sprite($icon-home);


Image from S3 not showing on TestFlight

I'm working on an application in React Native that requires to display images from the network.
When I try to display the images on my simulator everything goes perfectly. However when I test my code on TestFlight (same behavior on android) no image is displayed.
Here are the tracks I have already explored :
My guess would be that the problem is due to an error in the HTTPS certificate? I've also tested it on Amazon Cloud Front and got the same result.
Do you have any idea what could cause this error and an idea for the solution.
Thank you for your time,

https://stackoverflow.com/questions/38153335/react-native-loading-image-over-https-works-while-http-does-not-work

hello ! i'm facing the same problem, did you manage to solve it ? thanks !


Create Node & ParentNode templates

Create templates which generate boilerplates

Probably plugin, since we have it for RIBs? I should be easy to adjust

Plugins are more complicated to keep up to date, and may not work on alpha/beta versions of Android Studio.
Be interesting if we could share live templates instead


Diff for new files doesn't work

Hey Jimmy! This fork has been working very well for me for the last couple of weeks while I use Codespaces, alongside your virtual repo server extension. Thank you!
I've noticed that if I introduce a new file in a virtual repository, the diff doesn't display in Desktop. Instead it just shows a spinner in the main panel:

I see the following in the inspector:
Uncaught (in promise) ExecFileError: {"killed":false,"code":1,"signal":null,"cmd":"git diff --no-ext-diff --patch-with-raw -z --no-color --no-index -- /dev/null sample-new-file.txt"}
    at file:///Applications/GitHub%20Desktop%20(Experimental).app/Contents/Resources/app/renderer.js:55:143228
mn @ client.ts:8
(anonymous) @ client.ts:24
Promise.then (async)
(anonymous) @ spawn.ts:38
nr @ spawn.ts:37
Br @ diff.ts:186
updateChangesWorkingDirectoryDiff @ app-store.ts:2392
_loadStatus @ app-store.ts:2011

With the release of

https://github.com/bradshjg/desktop/releases/tag/release-3.1.2-beta1-virtual

As far as I can tell this is fixed, I'm guessing it was somehow related to the specific git interface that was trying to get this data...and now that's all dugite's business 😄

Yep, I see the lines in the new file now instead of a spinner, thank you!


fix(example): fix typos in UploadAccountImage message

I found typos in the example app.

compleate -> complete
finename -> filename

Codecov Report

Merging #401 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master    #401   +/-   ##
======================================
  Coverage    84.5%   84.5%
======================================
  Files           7       7
  Lines        1336    1336
======================================
  Hits         1129    1129
  Misses        120     120
  Partials       87      87

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 fa508ff...240a08b. Read the comment docs.

@ryohashimoto Thanks for your contributions. 💯

@easonlin404 Thanks!


6226-weird-inline-if-expression

Description
The following model:
x = 1
std::print(x ? "test" : "no test")

produces this message:
Invalid value `%s`: the condition for a conditional expression must be a boolean expression (reported in <inmanta.ast.statements.generator.ConditionalExpressionResumer object at 0x7f4bb9962540> (./bug3.cf:2:12))

This PR will fix the error message
closes #6226
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[x] Attached issue to pull request
[ ] Changelog entry
[ ] Type annotations are present
[ ] Code is clear and sufficiently documented
[ ] No (preventable) type errors (check using make mypy or make mypy-diff)
[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )
[ ] If this PR fixes a race condition in the test suite, also push the fix to the relevant stable branche(s) (see test-fixes for more info)

Processing this pull request

Merged into branches iso7, master in 06ef2e82aa977506765d38f7c3975b5296f400e9

Processing #6965.


[Proposal] Simplify the Translation Process

This proposal tries to simplify the translation process. The issues we face today are:

The developer has to come up with the properties names.
Redundant nested object, which blows the bundle, thus takes more memory.
Duplicate keys and texts.
Merge conflicts.

The idea is to treat each string as a ״raw string״.  Word concatenation isn't valid anyway in most cases because the translators need to know the context.
We expose a hash function through the context object that by default, returns the given string.
<ng-template transloco let-t>
  {{ t.hash('Hello world') }}

  {{ t.hash('Login') }}
</ng-template>

Now, let's run it through hashing function:
hash('Hello world') // The value will always be: 261689226
hash('Login') // 180154982

Based on these values, we can automatically generate a clean translation file in build time:
// en.json
{
  "261689226": "Hello world",
  "180154982": "Login"
}

And change each usage to the corresponding hash:
<ng-template transloco let-t>
  {{ t['261689226'] }}

  {{ t['180154982'] }}
</ng-template>

Disadvantages

?
?

@NetanelBasal Why do we need to expose the hash function?
why not use the strings directly and replace every string that's under the translation context in the file at build time to {{anyName['261689226']}}.

@NetanelBasal I think it's a great idea and something that could really be the extra feature which will give this library the advantage over other libraries...
having that said, I think we need to think which way we recommend our user to use for translation as "best practice" because right now we have to many ways to do that :)

@NetanelBasal Why do we need to expose the hash function?
why not use the strings directly and replace every string that's under the translation context in the file at build time to {{anyName['261689226']}}.

I agree, but because of the limits it might lead, we could maybe create a configuration property for that?

@NetanelBasal Why do we need to expose the hash function?
why not use the strings directly and replace every string that's under the translation context in the file at build time to {{anyName['261689226']}}.

I agree, but because of the limits it might lead, we could maybe create a configuration property for that?

What do you mean? which limitations you have in mind?
I was thinking we extract the var name using a regex:
<ng-template transloco let-myvar>
  'Hello world'
</ng-template>

and replace in build time to:
<ng-template transloco let-myvar>
  {{myvar['261689226']}}
</ng-template>

We can also support string with params t.hash('some {dynamic} thing', paramsFromComponent) => {{ t['1234567'] | translocoParams:paramsFromComponent }}

We can also support dynamic strings. For example:
In the template:
{{ t[dynamicProperty] }}

And in the component:
import { hash } from '@ngneat/transloco';
...
this.dynamicProperty = condition ?  hash("hello world") : hash('bye");

Will transpile to:
import { hash } from '@ngneat/transloco';
...
this.dynamicProperty = condition ?  '261689226' :  '781689346';

Love the idea but unfortunately, it fails in our use cases.

we receive our translations file from our client's backend, which stores them as CSV (so that the content guys can change and edit each key's value to whatever they want), and converts them to json when we request the translation. so your approach won't be readable for the guys responsible for the translations.
in another project (this client also does the CSV thing), there's a "debug" mode which enables to view full translation path in a tooltip when you hover on a translated value. (this is used by QA and content guys)

and besides that, you kinda bind your code to the content instead of binding it to the translation key that will probably won't change as frequently as the content of that key

@ronnetzer

I'm not sure how this affects what you describe since what matters is the value and not the keys (they are not supposed to change otherwise it breaks the translations), so if they can see the translations I'm not sure where this fails.
What is the usage of this debug mode? what's the value of seeing the key? we want to detach this entire process from the developer.

From my experience (working with a pretty large translated app) the content rarely changes, and even if you do need to change the content once in a while I'd rather use find replace and gain all the benefits of working this way.

@shaharkazaz

The point is that the developers shouldn't be aware of content changes and the client should be free to edit the content whenever he wants without any development cost. And with your approach (if I understand correctly) when marketing decides to change "Hello World" to "Good Morning Planet" nothing breaks but now the template (t.hash('Hello world')) will return "Good Morning Planet".
So now you have 2 options, keep it that way or align with the content and update t.hash value.
most of us would probably go with option 2, which in the end creates a new translation file with this new hash (what happens to the previous hash?) that will need to be translated manually (again) to the rest of the languages (?).
Mainly by marketing and QA team. The client demands that if a translation to a key is missing, we won't show any other fallback text (including the key) and only in debug mode you can see the missing translation keys (i know its weird but its not our decision).

Another use case that I think will break:
We have a toaster for displaying error messages returned from the backend based on endpoint and error code, let's say the endpoints are in the format of '.../page_name/action_name'.
for each action_name we have a default error message in case we don't have a translation for an error code and the same goes if we don't have translations for an action_name at all and the same for page_name. So how something like that can be done using your approach? (getting human error messages from the backend is not possible)

From my experience (working with a pretty large translated app) the content rarely changes, and even if you do need to change the content once in a while I'd rather use find replace and gain all the benefits of working this way.

The size of the app is not the issue, the issue is the companies and clients. Each client is different and as a 3rd party library, you cannot assume that the content won't change and sacrifice maintenance for performance.

@ronnetzer

(if I understand correctly) when marketing decides to change "Hello World" to "Good Morning Planet" nothing breaks but now the template (t.hash('Hello world')) will return "Good Morning Planet".

It seems that you misunderstood, if you want to change "Hello world" to "Good Morning Planet" t.hash('Hello world') must change to t.hash('Good Morning Planet')

which in the end creates a new translation file with this new hash (what happens to the previous hash?) that will need to be translated manually (again) to the rest of the languages (?).

I'm not sure how is this different from changing the value of a key? it won't need to be translated to every language as well? The idea is that the new translation file created will be merged with the previous one so just this new key needs translation ( as you would need to translate it if you just change an existing key's value).

Mainly by marketing and QA team. The client demands that if a translation to a key is missing, we won't show any other fallback text (including the key) and only in debug mode you can see the
missing translation keys (i know its weird but its not our decision).

This can be achieved, allowing you to pass a custom missing key handler via an injection token is practically ready so you could do whatever you want in case there is no key.

For each action_name we have a default error message in case we don't have a translation for an error code and the same goes if we don't have translations for an action_name at all and the same for page_name. So how something like that can be done using your approach? (getting human error messages from the backend is not possible)

This proposal is not all or nothing, the idea is to implement it where you can.
You can still use the regular key values to support these cases, where you will have all you server keys and the hashing solution is for the static translations in your app.

The size of the app is not the issue, the issue is the companies and clients. Each client is different and as a 3rd party library, you cannot assume that the content won't change and sacrifice maintenance for performance.

You don't have to use this feature if it's not meeting your needs, we are not going to force this on everyone who uses this library, it's a proposal that might fit other use cases but not yours.

@shaharkazaz

It seems that you misunderstood, if you want to change "Hello world" to "Good Morning Planet" t.hash('Hello world') must change to t.hash('Good Morning Planet')

So you're saying that for every small change required by the marketing the flow is:

marketing needs to ask the dev team to change a value in the code.
a new translation file created and sent back to the marketing (and a new version is released)
marketing updates the rest of the translations with the new key along with the new translated value.

the current flow is:

marketing updates the value of a key
That's it.

Can you see the problem now? I don't think I have any other way to explain it.
From a client perspective, this is not practical, and from a dev perspective, this could become a maintenance nightmare. There is no way that I'm the only one who thinks that 🤔.

we are not going to force this on everyone who uses this library, it's a proposal that might fit other use cases but not yours.

That's good to hear and not what I've understood from your proposal.

@ronnetzer
Can you explain what is your company's process? I think this is the gap here.
Can you add an example of one of your templates and your translation file?

@ronnetzer not sure if this is what you mean but let me try an example.
In the current implementation the key will be something like 'helloWorld' and the value 'Hello World'. But lets say the key doesn't describe the value but rather the use case like 'headerTitle' with value 'Hello World'. This means that translators can change the translation file (the 'Hello World' value) as many times as they want without any developer that has to go and update the template with some new key.
There is maybe an argument to be made there that isn't good practice because the key could be become unrelated to the value/text. An example could be key = 'headerTitle' and then its intial value is 'Welcome to our site' but the release v2 it becomes 'Company Brand Name'. Then the UI changes and form release v3 that text gets placed in the footer because it's value is the companies name but the key is still saying 'headerTitle'.
I hope I interpreted this conversation in the right way @ronnetzer and helped a bit.
@shaharkazaz you guys are doing such a cool job with this project. I'm really impressed and happy I found a good i18n library. Well done!
@NetanelBasal Good time so say I'm a really big fan of your work. Have read probably 90% of all you Medium blog posts and thanks for all you good tips, trick, practices and knowledge.

@shaharkazaz
@CharlBest got it right (thanks btw), as he said the keys describe the use case, I also explained most of our client's workflow in more details to Netanel over the phone.
In general, First we provide the translation file to the client (according to their design) and then during development, they change the content and we add new keys.
for example, a simplified configuration for a dynamic form (with ngx-dynamic-forms library):
[
	{
		"id": "name",
		"type": "INPUT",
		"labelTooltip": "",
		"controlTooltip": "",
		"label": "form.field.name.label",
		"placeholder": "",
		"validators": {
			"required": null
		}
	},
	{
		"id": "description",
		"type": "TEXTAREA",
		"labelTooltip": "form.field.description.labelTooltip",
		"controlTooltip": "form.field.description.controlTooltip",
		"label": "form.field.description.label",
		"placeholder": "form.field.description.placeholder"
	}
]

and the corresponding translation file:
"form": {
	"field": {
		"name": {
			"label": "Name",
			"labelTooltip": "",
			"controlTooltip": "",
			"placeholder": "",
			"errorMessage": {}
		},
		"displayName": {
			"label": "Display name",
			"labelTooltip": "",
			"controlTooltip": "",
			"placeholder": "",
			"errorMessage": {}
		}
	}
}

*the form's JSON configuration will be modified in the future by product/marketing/someone who's not tech-oriented.
So this gives the client the ability to build/edit forms and their translations (even new keys), without any further development.
In any case, there are downsides for both ways, your proposal is optional therefore it doesn't worth spending time trying to solve my rare (?) use cases, I will just stick with the current way for them :)

@CharlBest only 90% 😜? Thanks!


Move addwindow and rcdocref to a provider

don't forget to run lint

Can we maybe merge this? :) @ylvaselling


Try nightly

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

Comparison is base (aefaaa2) 75.22% compared to head (ce79092) 93.30%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1277       +/-   ##
===========================================
+ Coverage   75.22%   93.30%   +18.07%
===========================================
  Files          35        7       -28
  Lines       10394      239    -10155
===========================================
- Hits         7819      223     -7596
+ Misses       2575       16     -2559

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

Closed in favor off #1372


pre-populate skipper address

As a fisherman I would like the app to automatically pre-populate skipper address (in the FISH-1 form) https://github.com/StAResComp/sifids/issues/5, https://github.com/StAResComp/sifids/issues/6, https://github.com/StAResComp/sifids/issues/8

Must


union type bug

use "collections"

primitive Seqx[A: Seq[B] ref = Array[I32], B: Comparable[B] #read = I32]
  fun each(a: A, f: ({(B)} val | {(B): B} val) ): A^ => a
  fun map(a: A, f: ({(B): B} val | {(USize, B): B} val)): A^ =>  a

primitive Num[A: (Real[A] val & Number) = I32]
  fun print(a: A): A => a

actor Main
  new create(env: Env) =>
    let arr_i: Array[I32] ref = [1; 2; 3]
    Seqx.>map(arr_i, Num~print())   // allow
    //Seqx.each(arr_i, Num~print()) // don't allow

See: https://ponylang.zulipchat.com/#narrow/stream/189985-beginner-help/topic/reference.20capability.20bug.3F/near/196746595

@damon-kwok please include all the information in the issue rather than referring to Zulip otherwise people will have to refer to the zulip and someone else will have to copy it over. You can provide a link for additional context but enough information to start addressing the issue should be included. This is missing valuable information.
Thanks.

Here are some zulip discussions that may be helpful in analyzing bugs：

@jasoncarr0
To add onto this: it does not work with:
fun each(a: A, f: ({(B)} val | {(B): B} val) ): A^ => a
but does work with:
fun each(a: A, f: ({(B): B} val) ): A^ => a
So I think there's an issue with unions here as the former should accept more arguments

@SeanTAllen: Yeah it appears to be a bug with the union type there, as it is rejecting it because it doesnt match one of them, rather than accepting it.


During the training, the following error occured

I use my own dataset

Yes I do it,and it always accured at step 1980

Check if the name of my dataset in your cfgs corresponds to label_dict.py. By the way, please paste the dataset information you added in label_dict.py here.

@yangxue0827 Hi, I can run the code for now by chang the ADD_BOX_IN_TENSORBOARD in cfgs from true to false.But I don't know the reason.Maybe becase I run it on the server? And I want to  know the change I did whether affects the true running of the code。

This is the dataset information there are 3 categories

'back_ground': 0,     'bank_card': 1,     'train_ticket': 2,     'bill_carg': 3
By the way, I recommend you to use RSDet for this dataset, as I have had a similar project experience.

thanks! I know my errors. I will try it again @yangxue0827


New version: ElectronicArts.EADesktop version <IP_ADDRESS>17

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.5 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Closes https://github.com/microsoft/winget-pkgs/issues/135683
Microsoft Reviewers: Open in CodeFlow

Sequence contains no elements

#133371

Duplicate PR

Sequence contains no elements

#133371

Automatic Validation ended with:

2024-01-22T06:46:49.7097728Z Processing manifest: manifests\e\ElectronicArts\EADesktop\<IP_ADDRESS>09
2024-01-22T06:46:49.7112634Z -----------------------------------------------------
2024-01-22T06:46:49.7120505Z Status: Started
2024-01-22T06:46:49.7128485Z Manifest file is Deleted
2024-01-22T06:46:49.9771853Z Status: Completed
2024-01-22T06:46:49.9779855Z ##[error] Result: Failed
2024-01-22T06:46:49.9832950Z ##[error] Sequence contains no elements
2024-01-22T06:46:50.0372831Z ##[error]Manifest Validation Failed

(Automated response - build 626.)

URL: https://origin-a.akamaihd.net/EA-Desktop-Client-Download/installer-releases/EAappInstaller.exe
Status Code: 200
(Automated message - build 627)


Carbando V2 Recipe problem

Checklist

[X] You are using official & LATEST version downloaded from Builds (https://github.com/PranavVerma-droid/AdvancedTech/releases)
[X] You did not modify the jar file
[X] You searched existing issues, and could not find any existing bug report on this

Description
The Boosted Carbanado which is to be crafted in pressure chamber.... So slimefun book says it needs 4 carbanado for 1 boosted carbanado. But when im crafting... its like... 1 carbanado = 1 boosted carbanado. So 4 carbanado arent getting used up to get 1 boosted one. It only takes in 1 and gives the boosted carbanado.
Reproduction Steps
put 1 carbanado inside the pressure chamber. You will get boosted carbanado instantly after using it.
Expected Behavior
4 carbanados should be used for making 1 boosted carbanado.
Server log
No response
Error report
No response
Server Software
Paper
Minecraft Version
1.20.x
Slimefun version
Your server.....
Plugin version
DEV - 1081 (git aebab92e)

Yep, Verified as a Issue.

Updating to AdvancedTech V1.0.1-alpha.1.


[MOMNG-843] Start of pathfinder report

This is the scaffold and start of the functionality to add a new kind of report for a Pathfinder cohort study.
Commit detail:
Remove registration-fixes.txt
I think this file is unused
Cache container image after installing dependencies
This makes the build faster in development because we don't have to keep running pip install.
Add endpoint to list kinds of reports
Could be used in the control-interface.
Add start of new task for generating a message report
Needs more work to fetch the details from the message-sender.
Add view method for creating new report
POST to create a task which generates this new report.

@alexmuller I think I'm going to land this PR and build on top of it. If I just continue with this on the same branch then this PR is going to get very bloated and I'd rather have the scaffold you've added in place

@KaitCrawford I think that's probably easier, thanks!


961 panels

we will want to make sure all the datasets are switched over to the new structure as this will break the app if they arent.