Instances within generate block

It seems that generate blocks are ignored in svinst/pysvinst. If you save the SV code as top.sv and the Python code as test.py, then python test.py will prove the concept. There are 16 instances described in top.sv, but only one identified by pysvinst.
// top.sv
module top (
  input logic i_clk,
  output logic [15:0] o_clks
);

  genvar i;
  generate
    for (i=0; i < 16; i++) begin : generate_test
      my_module my_module_inst (
        .i_clk(i_clk),
        .o_clk(o_clks[i])
      );
    end : generate_test
  endgenerate

endmodule

# test.py
defs = svinst.get_defs("top.sv")
print("len(defs):", len(defs))
print("len(defs[0].insts):", len(defs[0].insts))
print("defs[0].insts[0]:", defs[0].insts[0])
# result:
"""
len(defs): 1
len(defs[0].insts): 1
defs[0].insts[0]: ModInst("my_module", "my_module_inst")
"""

It might be a little tricky to add such functionality but I don't think it would necessitate a full elaboration of the design. All that would be needed is to keep track of elab-time constants (defines/parameters/localparams/literal constants/etc...) in order to interpret a generate block's behavior accordingly. The only two constructs that would steer a generate block that I can think of are if/else (something is either instantiated or it isn't) and for loops (something is instantiated N times).
I haven't looked at the Rust code in svinst so I don't know how difficult it would be to add this functionality, but what's your guess? I'm no Rust aficionado but I'm happy to help if you reckon it ought to be within the scope of this project.

Thanks for reporting this!  If you wanted to try to add the feature to svinst, you could look into adding a new pattern to the analyze_defs function in svinst/src/main.rs:
https://github.com/sgherbst/svinst/blob/432069dd23370db7aa7c7ec57e3b5213b16b1791/src/main.rs#L172
Typically I first run svinst --full-tree myfile.sv so that I can see what the syntax tree looks like, and then try to figure out a pattern to capture it.  That said, I think it would be a lot of work because the syntax tree produced by svparser, which is the library underpinning svinst, is very low-level and does not do any abstraction.
For awhile, I have been interested to try adding slang as an alternative backend to do this sort of higher-level processing.  If you're interested to explore that route, I think it could open up a lot of possibilities.  (It would still be useful to keep the svparser-based option, though, because it has better support of SystemVerilog features that I use for analog/mixed-signal modeling.)
Unfortunately, I don't have bandwidth to look into this issue for the next few weeks.  But if you want to work on it in the meantime, I'm happy to keep the discussion going on this thread.  Thanks again for the feedback!

Sorry for the delay on this.  I looked into using slang to do elaboration, and it seems promising.  Running slang top.sv --ast-json - produces this JSON output.  (here's top.sv)
As you can see, slang elaborates the design, so there are multiple instances of my_module with different values of the parameter i.  There is a lot of extra information, too, but I think you could extract just what you need for your application.
If you want to try it out, I've bundled the slang binary with a development version of pysvinst (and will include it in subsequent releases), which you can get like this:
pip install svinst==0.1.7.dev15

In terms of integration with the svinst Python interface, I have already set up get_defs to use slang if you set tool='slang' (the default is 'sv-parser').  You can get a Python dictionary containing the slang output by calling get_syntax_tree with tool='slang' (these features are currently on the slang branch of pysvinst, and will be merged to master soon).
Since I've taken care of setting up the build flow for slang, it should be possible to develop the rest of this feature entirely Python (i.e., no Rust, C++, etc. necessary).  Does that still interest you?

This is great. I'll try stress-testing it with a larger design that uses more SV language features and see what else needs to be added. For the time being, check this out:
// top.sv
module top (
  input logic i_clk,
  output logic [15:0] o_clks
);

  my_module3 my_module3_inst (
    .i_clk(i_clk),
    .o_clk(o_clks[15])
  );

  genvar i;
  generate
    for (i=0; i < 2; i++) begin : generate_test
      my_module my_module_inst (
        .i_clk(i_clk),
        .o_clk(o_clks[i])
      );
    end : generate_test
    for (i=0; i < 2; i++) begin : generate_test2
      my_module2 my_module2_inst (
        .i_clk(i_clk),
        .o_clk(o_clks[i])
      );
    end : generate_test2
  endgenerate

endmodule

module my_module2 (
  input  logic i_clk,
  output logic o_clk
);
endmodule

module my_module3 (
  input  logic i_clk,
  output logic o_clk
);
  my_module my_module_inst (
    .i_clk(i_clk),
    .o_clk(o_clk)
  );
endmodule

module my_module (
  input  logic i_clk,
  output logic o_clk
);

my_module2 my_module2_inst (
  .i_clk(i_clk),
  .o_clk(o_clk)
);

endmodule

#test.py
import svinst
import json

def get_instances(ast_item, parent_hierarchy=""):
    result = []
    if ast_item["kind"] == "Root":
        for i, member in enumerate(ast_item["members"]):
            result += get_instances(member, parent_hierarchy)
    elif ast_item["kind"] == "CompilationUnit":   return result
    elif ast_item["kind"] == "Port":              return result
    elif ast_item["kind"] == "Net":               return result
    elif ast_item["kind"] == "Variable":          return result
    elif ast_item["kind"] == "Genvar":            return result
    elif ast_item["kind"] == "GenerateBlockArray":
        parent_hierarchy += f'.{ast_item["name"]}'
        for i, member in enumerate(ast_item["members"]):
            result += get_instances(member, parent_hierarchy=f'{parent_hierarchy}')
    elif ast_item["kind"] == "GenerateBlock":
        for i, member in enumerate(ast_item["members"]):
            if i == 0:
                if member["kind"] != "Parameter": # Setting a trap in case my assumption of this aspect of the ast dict structure isn't always the case
                    raise Exception(f"First member of GenerateBlock is not a parameter: revisit elif GenerateBlock clause.")
                current_param_val = f'{member["value"]}'
            else:
                result += get_instances(member, parent_hierarchy=f'{parent_hierarchy}[{current_param_val}]')
    elif ast_item["kind"] == "Instance":
        parent_hierarchy = f'{parent_hierarchy}.{ast_item["name"]}'
        result += [parent_hierarchy]
        result += get_instances(ast_item['body'], parent_hierarchy=f'{parent_hierarchy}')
    elif ast_item["kind"] == "InstanceBody":
        for i, body_item in enumerate(ast_item["members"]):
            result += get_instances(body_item, parent_hierarchy=f'{parent_hierarchy}')
    else:
        raise Exception(f"Unknown ast_item kind: {ast_item['kind']}")
    return result

ast = svinst.get_syntax_tree("top.sv", tool='slang')
insts = get_instances(ast)
print(json.dumps(insts, indent=4))

# Output of test.py
[
    ".top",
    ".top.my_module3_inst",
    ".top.my_module3_inst.my_module_inst",
    ".top.my_module3_inst.my_module_inst.my_module2_inst",
    ".top.generate_test[0].my_module_inst",
    ".top.generate_test[0].my_module_inst.my_module2_inst",
    ".top.generate_test[1].my_module_inst",
    ".top.generate_test[1].my_module_inst.my_module2_inst",
    ".top.generate_test2[0].my_module2_inst",
    ".top.generate_test2[1].my_module2_inst"
]

Awesome, great job!  Feel free to create a pull request for this feature when it is to your liking.  I'm happy to help with any integration issues that arise.


Allow specifying extra parameters to fig.savefig in CockpitPlotter.plot

Description
I suggest to extend CockpitPlotter.plot such that a keyword dictionary can be passed to it specifying parameters to fig.savefig. This is to be able to choose 1) a DPI value or 2) a different file format (e.g. PDF).
Currently, the stored image files have a poor resolution and thus are not very readable. Being able to choose a DPI value or saving to PDF would fix this issue.

Hi,
this seems like a good idea!
Could you have a look at the savefig_handeling branch where I tried to address this? Specifically, I now added a savefig_kwargs argument to the CockpitPlotter.plot function.
https://github.com/f-dangel/cockpit/blob/67257a68cd55e4c3dfa83875aaddab72cd1e02bb/cockpit/plotter.py#L61-L75
@f-dangel Could you also have a look over my changes?

Yap, I can review a PR once it's ready.

Looks good to me :+1:

Should be solved with #16.


Query: EntityEqualityRewritingExpressionVisitor doesn't work with object.Equals method

from c1 in ctx.Customers
from c2 in ctx.Customers
where c1.CustomerID == "ALFKI"
where c1 == c2
select c1.CustomerID

works fine (returns 1 result), however:
from c1 in ctx.Customers
from c2 in ctx.Customers
where c1.CustomerID == "ALFKI"
where c1.Equals(c2)
select c1.CustomerID

doesn't return any results, basically we perform client eval here and do reference comparison between c1 and c2, which is always false.
We should handle this case also, for the most part should be a matter of translating it to c1 == c2 and revisiting

Interesting, shouldn't c1 & c2 should resolve to single tracked reference in the context?

This is probably because we materialize both collections with MaterializeCollectionNavigation, creating new instances every time. Here is the query plan:
(QueryContext queryContext) => IEnumerable<<>f__AnonymousType68<string, string>> _InterceptExceptions(
    source: IEnumerable<<>f__AnonymousType68<string, string>> _Select(
        source: IEnumerable<TransparentIdentifier<ValueBuffer, ValueBuffer>> _Where(
            source: IEnumerable<TransparentIdentifier<ValueBuffer, ValueBuffer>> _ShapedQuery(
                queryContext: queryContext,
                shaperCommandContext: SelectExpression:
                    SELECT [c1].[CustomerID] AS [Id1], [c2].[CustomerID] AS [Id2]
                    FROM [Customers] AS [c1]
                    CROSS JOIN [Customers] AS [c2]
                    WHERE ([c1].[CustomerID] = N'ALFKI') AND ([c2].[CustomerID] = N'ALFKI'),
                shaper: TypedCompositeShaper<ValueBufferShaper, ValueBuffer, ValueBufferShaper, ValueBuffer, TransparentIdentifier<ValueBuffer, ValueBuffer>>),
            predicate: (TransparentIdentifier<ValueBuffer, ValueBuffer> t0) => bool ICollection<Order> MaterializeCollectionNavigation(
                navigation: Customer.Orders,
                elements: IEnumerable<Order> _InjectParameters(
                    queryContext: queryContext,
                    source: IEnumerable<Order> _ShapedQuery(
                        queryContext: queryContext,
                        shaperCommandContext: SelectExpression:
                            SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
                            FROM [Orders] AS [o]
                            WHERE @_outer_CustomerID = [o].[CustomerID],
                        shaper: BufferedEntityShaper<Order>),
                    parameterNames: new string[]{ "_outer_CustomerID" },
                    parameterValues: new object[]{ string TryReadValue(t0.Outer, 0, Customer.CustomerID) })).Equals(ICollection<Order> MaterializeCollectionNavigation(
                    navigation: Customer.Orders,
                    elements: IEnumerable<Order> _InjectParameters(
                        queryContext: queryContext,
                        source: IEnumerable<Order> _ShapedQuery(
                            queryContext: queryContext,
                            shaperCommandContext: SelectExpression:
                                SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
                                FROM [Orders] AS [o0]
                                WHERE @_outer_CustomerID1 = [o0].[CustomerID],
                            shaper: BufferedEntityShaper<Order>),
                        parameterNames: new string[]{ "_outer_CustomerID1" },
                        parameterValues: new object[]{ string TryReadValue(t0.Inner, 1, Customer.CustomerID) })))),
        selector: (TransparentIdentifier<ValueBuffer, ValueBuffer> t0) => new <>f__AnonymousType68<string, string>(
            string TryReadValue(t0.Outer, 0, Customer.CustomerID),
            string TryReadValue(t0.Inner, 1, Customer.CustomerID)
        )),
    contextType: Specification.Tests.TestModels.Northwind.NorthwindContext,
    logger: DiagnosticsLogger<Query>,
    queryContext: queryContext)

@anpete @divega - thoughts?

Looks like same issue as #7569. MaterializeCollectionNavigation is by-passing everything 🐛

Fixed in c4129dc2bef433f5ce55a21ec7a417ba8f153752

The commit it references actually marks the test disabled with this issue number.


Raspberry Pi's extensions

we should add
Raspberry Pi GPIO Extension
Raspberry Pi Sense HAT Extension
Raspberry Pi Simple Electronics Extension, into one

I might make another issue on the desktop editor for Raspberry Pi support


Fix Active Item Cooldowns and Range

The old regex method of sourcing cooldowns from the wiki is no longer necessary, and has been replaced with a simple working version that grabs the cooldown as a string (to prevent issues of non-float values being replaces with null or 0).
Global range item actives show a range of 0, fixed by making range a string value, allowing the data to be stored.

One thing is that we're pretty hesitant to change data types. It's perfectly fine to add a new field to the JSON, but changing a data type can immediately break people's production code for any typed language. For example, if Java gets an unexpected/incorrect type in the JSON, then the parsing fails and the data is not available to the rest of the code (or an exception is thrown). If any production apps rely on the fields where the data type was changed, this PR could take their app down immediately and with no warning.
Is there a strong reason to change the data types? What problem is it solving?
I'm also hesitant to change data types from float/int to str, because that effectively is requiring the user to perform the parsing that this library is supposed to be doing. We do our best to provide accurate and usable information, rather than just accurate information. If someone wants perfectly accurate information, they will need to go beyond this tool to get it, but this tool does provide usable (if sometimes inaccurate) information. So this is a tradeoff that we want to be careful about, and I'd like to better understand the pros and cons of changing these data types before doing so.

Hey! Currently, several values in those fields are lost completely. Check the current value of active cooldowns, from what I could see they are all null, which no one can actively use anyways.
Currently "Global" range actives such as Anathema's are listed as 0, which is obviously incorrect, as well as other items containing wikitext which is lost.

A separate solution I just thought of is implement the change to correctly grab the active cooldown, but continue parsing as float. THEN we could add a subsequent field (cooldownString?) that contains the full value (including wikitext), could add a similar field for range (rangeString?).
This could allow us to server both versions, however I would think it would be more usable to allow the user to decide what to do with the values, whether to just look at float/int values (which is not very expensive to parse), or be able to use and display the text with extra information.

We've been thinking about this. For now, we don't want to break backwards compatibility so the field types will need to stay as float and int. We also don't want to add more fields to the JSON to cover the str cases.
If we were to go for perfectly accurate data, we would want the range and cooldown fields to be converted into an object with various subfields. That would be the ideal case, but there are two concerns: 1) backwards compatibility because the types would change from float/int to objects, and 2) the code becomes less maintainable because we are trying to identify all the nuances inside an object representation.
So for now let's keep the fields as float/int, and if you want to fork the repo to convert them to strings or if you want to create objects out of them then this repo will be a good starting point. If, eventually, you convert a bunch of the int/float/str fields into objects and the overall data is much more accurate, and you'd like to submit a PR with those changes across the board, that would be awesome. We'd love to have more accurate data, and if it is maintainable then all the better. (Maintainability is a big thing because we don't have time to do the updates right now, so we rely on other people contributing.)
If there is a way to improve the quality of the ints/floats that would be great as well.

Heya! thanks for the update. I've been thinking about how to improve the quality of the existing datatypes, and I'm going to make some commits and come back with some examples (mainly going to check if range of 0 exists, and if not, we can continue treating  0 as "Global".
For cooldowns, if we can strip the number out of the text field then that works just as well, the main fix here is that the regex used in the current fork is old.


Problem Inserting Curly Quotes

Instructions: Replace the template text and remove irrelevant text (including this line)
Describe the bug
macOS’s default key bindings for inserting curly quotes “, ”, ‘, and ’ (Option + (Shift + )[/]) is not working correctly.
To Reproduce
Detailed steps to reproduce the behavior:

Enter Insert Mode;
Press macOS’s default key binding for the left curly double quote “ (Option + [);
The character Û is inserted instead of the expected “.

Expected behavior
The left curly double quote “ is expected to be inserted as in other GUI macOS apps.
Screenshots
N/A
Environment (please complete the following information):

Vim version 8.2
OS: macOS 11.1
Terminal: GUI

Do you have set macmeta on? If you do, the Option- combo is not going to work and you have to turn it off.
I do want to fix this and deprecate macmeta in the future (probably part of #1052) but the work has not started yet.

I do have set macmeta in my gvimrc. However, removing it and restarting MacVim doesn’t seem helpful.

Are you sure? Have you tried running MacVim with the --clean flag, or double check that macmeta is not set? You can do :set macmeta? to see the value.

My bad, I forgot to remove set macmeta from a separate rc file sourced. Fixing that enables curly quotes input as expected. Thanks a lot for your patience.


Make sequenceI stack-safe

Somehow #180 turned up a (pre-existing) bug involving the stack-safety of sequenceI, which is currently causing tests to fail occasionally. The issue is that sequenceI flat-maps recursively, which can cause problems on large chunks for monads that don't provide their own stack-safe recursive binding. For example:
import cats.Monad
import io.iteratee.{ Enumerator, Iteratee }

def checkStackSafety[F[_]: Monad]: F[Long] =
  Enumerator.enumVector[F, Int]((0 to 10000).toVector).grouped(3).into(Iteratee.length)

And then:
scala> import cats.instances.option._
import cats.instances.option._

scala> checkStackSafety[Option]
java.lang.StackOverflowError
  at scala.collection.immutable.Vector.take(Vector.scala:160)
  at scala.collection.immutable.Vector.splitAt(Vector.scala:215)
  at io.iteratee.internal.Step$TakeCont.feedNonEmptyPure(Step.scala:441)
  ...

But this for example is just fine:
import io.iteratee.monix.task._
import monix.eval.Task
import monix.execution.Scheduler.Implicits.global

checkStackSafety[Task].foreach(println)

The Option case would also be okay if we'd defined checkStackSafety like this:
def checkStackSafety[F[_]: Monad]: F[Long] =
  Enumerator.iterate[F, Int](0)(_ + 1).take(10000).grouped(3).into(Iteratee.length)

This PR addresses the issue by writing sequenceI in terms of tailRecM.
There are two problems we need to address before this gets merged. First, a couple of tests are currently failing for iteratee-monix with this error:
[info]   IllegalArgumentException was thrown during property evaluation.
[info]     Message: requirement failed: size=0 and step=0, but both must be positive

I'm not sure what this means, and googling doesn't help much.
The other (easier) issue is that I want to add some tests to verify the fix.
As soon as these things are done I'll publish 0.10.0.

Okay, I've fixed the sequenceI implementation and added a test.


struct.error: 'l' format requires -2147483648 <= number <=<PHONE_NUMBER>

There are thousands of PDFs for which this error is occurring. I am attaching whole traceback.
Traceback (most recent call last):
  File "/mnt/c/Users/aq4'july/Desktop/CleanTextAPI_withNewPdfAnalyser/PdfAnalyzer.py", line 108, in GetTextFromPdf
    for page in PDFPage.get_pages(pdfFile):
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfpage.py", line 129, in get_pages
    doc = PDFDocument(parser, password=password, caching=caching)
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 577, in __init__
    self._initialize_password(password)
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 603, in _initialize_password
    handler = factory(docid, param, password)
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 303, in __init__
    self.init()
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 310, in init
    self.init_key()
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 323, in init_key
    self.key = self.authenticate(self.password)
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 372, in authenticate
    key = self.authenticate_user_password(password)
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 378, in authenticate_user_password
    key = self.compute_encryption_key(password)
  File "/usr/local/lib/python3.5/dist-packages/pdfminer/pdfdocument.py", line 357, in compute_encryption_key
    hash.update(struct.pack('<l', self.p))  # 4
struct.error: 'l' format requires -2147483648 <= number <=<PHONE_NUMBER>

However these PDFs were successfully parsed before and text was extracted. Here is the sample PDF
Note: I'm have pdfminer.six==20170720 and Python3.5.2

I have the same results with the current version of pdfminer.six.
I did some research to understand this error and this is what I understood.
The PDF reference (Table 3.19) says something about the P key in the encryption dictionairy:

(Required) A set of flags specifying which operations are permitted when the document is opened with user access (see Table 3.20).

And:

The value of the P entry is an unsigned 32-bit integer containing a set of flags specifying which access permissions should be granted when the document is opened with user access. Table 3.20 shows the meanings of these flags. Bit positions within the flag word are numbered from 1 (low-order) to 32 (high-order). A 1 bit in any position enables the corresponding access permission. Which bits are meaningful, and in some cases how they are interpreted, depends on the security handler’s revision number (specified in the encryption dictionary’s R entry).

The struct.pack('<l', self.p) command packs creates a bytes object with the least significant byte at the first address containing a signed long integer of 4 bytes (i.e. 32 bits).
And thus, the struct.pack command erroneously uses a signed long instead of an unsigned long.


chore: release 1.3.0

:robot: I have created a release *beep* *boop*
1.3.0 (2019-09-16)
Features

load protos from JSON, grpc-fallback support (7e284c8)

This PR was generated with Release Please.

Release is at https://github.com/googleapis/nodejs-dataproc/releases/tag/v1.3.0

The release build has started, the log can be viewed here. :sunflower:

:egg: You hatched a release! The release build finished successfully! :purple_heart:


NLTK package missing

Hi there, I was exploring the library. Trying to install it via pip with conda env. and I'm getting ModuleNotFoundError
ModuleNotFoundError: No module named 'nltk'
version : sinling 0.3.5
environment : conda
os : BSD
Thank you for the library 👍

I'm unable to replicate the issue with my setup. Can you try installing nltk using pip before installing sinling? You can use following command
pip install nltk
However, the package does not require you to install nltk as a base package for it to work. If the above does not work for you, you might want to clone this repository and add the path to the cloned repository to PYTHONPATH env variable.
Let me know how it goes.

Hi, Thank you for your prompt replying.
Yes 👍 it worked once i install nltk.
I was trying to reproduce by doing a fresh installation. This what I get when I run an examples
test_1.py
from sinling import preprocess, word_joiner
w1 = preprocess('මුනි')
w2 = preprocess('උතුමා')
results = word_joiner.join(w1, w2)
print(results)

This the error I get
  File "test_1.py", line 1, in <module>
    from sinling import preprocess, word_joiner
  File "/usr/local/Caskroom/miniconda/base/envs/py38-sinling/lib/python3.8/site-packages/sinling/__init__.py", line 1, in <module>
    from sinling.sinhala import *
  File "/usr/local/Caskroom/miniconda/base/envs/py38-sinling/lib/python3.8/site-packages/sinling/sinhala/__init__.py", line 3, in <module>
    from sinling.sinhala.splitter import *
  File "/usr/local/Caskroom/miniconda/base/envs/py38-sinling/lib/python3.8/site-packages/sinling/sinhala/splitter.py", line 62, in <module>
    word_splitter = CorpusBasedSplitter(_data_path)
  File "/usr/local/Caskroom/miniconda/base/envs/py38-sinling/lib/python3.8/site-packages/sinling/sinhala/splitter.py", line 23, in __init__
    self.data = pickle.load(file)
ModuleNotFoundError: No module named 'nltk'

Dose Pickle module using  nltk as dependency again i can see its under nltk is under requirements.txt

Thank you for providing the error. Yes, it seems that I used a nltk package in the pickled resource. It is not a problem of conda, just current version is not configured to automatically install nltk when installing via pip. I'll update the configurations to fix the issue.
P.S. All packages that will be automatically installed when installing the package are listed in this file.


Add support for screen recording endpoints

https://github.com/appium/java-client/pull/814

@jamie-sherriff we'll need your e-mail somehow for the invite. you can DM me on twitter (@jlipps) if you don't want to put it here in public.


changed charaxcter names

I changed the character names and ruined functionality.

Looks great! Better than the original.


drclusters: rearrange the order of validate functions

Co-Authored-by: rakeshgm<EMAIL_ADDRESS>Signed-off-by: Raghavendra Talur<EMAIL_ADDRESS>

Hi @raghavendra-talur I don't think I understand this change. Why can't we validate the s3profile if the cluster is fenced?

There was one linter error which I have fixed now. On my laptop, I see thatmake test is failing but it is also failing for the main branch. Looks unrelated to this PR.
  GetVolumeSnapshotClassFromPVCStorageClass() should not find a match if no volume snapshot classes matche the driver from the storageclass
  /home/rtalur/Code/go/src/github.com/red-hat-storage/ramen/controllers/volsync/vshandler_test.go:138
1.6566195979090896e+09  INFO    Fetching VolumeSnapshotClass    {"labelSelector": {"matchLabels":{"i-like-ramen":"true"}}}
1.656619597909126e+09   ERROR   No VolumeSnapshotClass found    {"error": "unable to find matching volumesnapshotclass for storage provisioner test.
storage.provisioner"}
github.com/ramendr/ramen/controllers/volsync_test.glob..func<IP_ADDRESS>
        /home/rtalur/Code/go/src/github.com/red-hat-storage/ramen/controllers/volsync/vshandler_test.go:140
github.com/onsi/ginkgo/internal/leafnodes.(*runner).runSync
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/runner.go:113
github.com/onsi/ginkgo/internal/leafnodes.(*runner).run
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/runner.go:64
github.com/onsi/ginkgo/internal/leafnodes.(*ItNode).Run
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/it_node.go:26
github.com/onsi/ginkgo/internal/spec.(*Spec).runSample
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/spec/spec.go:215
github.com/onsi/ginkgo/internal/spec.(*Spec).Run
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/spec/spec.go:138
github.com/onsi/ginkgo/internal/specrunner.(*SpecRunner).runSpec
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/specrunner/spec_runner.go:200
github.com/onsi/ginkgo/internal/specrunner.(*SpecRunner).runSpecs
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/specrunner/spec_runner.go:170
github.com/onsi/ginkgo/internal/specrunner.(*SpecRunner).Run
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/specrunner/spec_runner.go:66
github.com/onsi/ginkgo/internal/suite.(*Suite).Run
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/suite/suite.go:79
github.com/onsi/ginkgo.runSpecsWithCustomReporters
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/ginkgo_dsl.go:245
github.com/onsi/ginkgo.RunSpecs
        /home/rtalur/Code/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/ginkgo_dsl.go:220
github.com/ramendr/ramen/controllers/volsync_test.TestVolsync
        /home/rtalur/Code/go/src/github.com/red-hat-storage/ramen/controllers/volsync/volsync_suite_test.go:49
testing.tRunner
        /usr/local/go/src/testing/testing.go:1259


preFileLine line index is not incremented for the second line or row in CSV

Hello,
I am using the following sample code to convert CSV to JSON. while iterating csv rows, first iteration the lineIdx value coming as 1 and second-iteration also lineIdx value coming as 1. actually preFileLine line index value is not incremented for the second line in CSV. but the third line incrementing by 1 and the value is 2.
Is it an npm module issue? How can I solve this problem?
Note: I am using "csvtojson": "^1.1.9", verions
csv().fromStream(request.get('http://localhost:3000/response'))
    .preFileLine((fileLineString, lineIdx) => {
            if (lineIdx === 1) {
                return fileLineString.replace(/ /g,'')
            }
        return fileLineString;
    })

Same just ran into this. Good to know I was not crazy here.


Refactor markov

This implements a few things:

reorganize markov chain tools into the markov folder
loosen some type constraints to be AbstractArray instead of only Array
Add support for sparse transition matrices in the MarkovChain type.

Note, travis failures here are only on julia 0.5 (downstream issue with a dependency not loading on unreleased julia).
I have updated the travis.yml file in #100 to allow failures on 0.5, but haven't duplicated that commit here. If there are no objections I'm ok to merge this.

Added a few more things:

state_values as a field on MarkovChain. This is any AbstractVector and defaults to 1:size(p, 1), where p is the transition matrix
Methods simulate_values to do a simulation and report state_values instead of state indices
simulate now always returns a Matrix (as does simulate_values)
To do a single simulation and get a vector use simulation or value_simulation
Extended DiscreteRV to allow for q and Q to be different types of AbstractVector. I did this so q could be a SubArray in simulate! and simulate_values! to avoid allocations
Added inner constructor check on DiscreteRV that sum(q) == Q[end] == 1.0

failing tests are a result of a dependency not working on the dev version of Julia. In another PR I have specified that these tests are allowed to fail. We can merge this without waiting for tests to pass.

Last change for now, I promise: tauchen and rouwenhorst now return instances of MarkovChain instead of a state_values, p tuple

This doesn't have to belong to this PR, but random_markov_chain and random_stochastic_matrix in random_mc.jl should support sparse matrix (by the way, this file should go to markov/ too). Compare the python version.

Good point, see #102


Age g

I was all proud about opening my first ever issue on a self-owned repo, only to come back the next day and see this... I'm leaving it 😅


[chore|sde-backend] Docker notice.md added

Description

Docker notice.md added.

Pre-review checks
Please ensure to do as many of the following checks as possible, before asking for committer review:

[x] DEPENDENCIES are up-to-date. Dash license tool. Committers can open IP issues for restricted libs.
[x] Copyright and license header are present on all affected files

Need to remove "Notice for Docker image" from README.md
& create a link in README.md referering DOCKER_NOTICE.md

Looks fine now

@hzierer  As notice file already exit created the docker_notice.md file.

@hzierer As notice file already exit created the docker_notice.md file.

yeah, sorry my bad. Haven't described it in detail enough. The "notice for docker" has to be in the same directory as the Docker file - so it is no problem to be named notice.md.
Sorry for any inconveniences caused.

@hzierer please review.

@hzierer As notice file already exit created the docker_notice.md file.

yeah, sorry my bad. Haven't described it in detail enough. The "notice for docker" has to be in the same directory as the Docker file - so it is no problem to be named notice.md.
Sorry for any inconveniences caused.

No worries :)

sorry missed a upper case link in this PR that is not nessesary... so created a new one to fix but also don´t know your workflow how to change theese files...
will close it... right now https://github.com/eclipse-tractusx/managed-simple-data-exchanger-backend/pull/105


Change OpenSSL to dynamically link when not on windows

This allows for security updates related to OpenSSL to come faster for Unix systems that have dynamically linked OpenSSL as well as allowing building on Unix systems that do not have statically linked OpenSSL.

I've considered that dynamically linking OpenSSL on Mac's might imply that they need to have OpenSSL installed themselves in order to run the generated binaries


Improve Route53 instructions

If you follow the Route53 instructions, for cross accounts, You won't be able to create the Roles, since both roles trust policies reference each other. And they do not exist.

Thanks @gargrag
Fixed in https://github.com/cert-manager/website/pull/290
/close

Thanks @gargrag
Fixed in https://github.com/cert-manager/website/pull/290
/close


Image added and readme updated

Signed-off-by: Barun Debnath<EMAIL_ADDRESS>
Description

This PR fixes #
Notes to reviewers
Checklist

[ ] Signed commits.
[ ] PR title includes [<name of area>]:<description>

I have initiated another pull request from another branch so I am closing this pr.


DEBUG=true flag

Hi Micheal,
thanks for bignumber.js!
.DEBUG=true is quite useful for additional validations before starting to calculate.
Right now its available via debug=true - which sounds more like something that is not supposed to run in prod.
Right now a few validations are run with it (NaN and exponentials afaik). Also, at some point maybe other debug functionalities are added, which makes me worry to use it right away.
Does something speak against a THROW_ON_NAN setting (just an example), maybe additional to the current debug mode?
All the best,
Robert

Apologies for not responding at the time but I left this issue open for consideration.
I don't want to add another setting but perhaps I should have made DEBUG = true throw on NaN, and perhaps Infinity also, in the first place. I also should probably have called it STRICT not DEBUG.

Hi Michael,
I hope you're doing well.
I wanted to follow up on this discussion regarding theDEBUG mode and the suggestion to rename it to STRICT mode. We're currently using bignumber.js in a cryptocurrency project and recently we encountered a critical issue where NaN wasn't thrown, which led to some serious consequences.
As I see it, throwing error for invalid inputs (e.g undefined) passed to BigNumber constructor should ideally be the default behaviour, regardless of the mode.
Any updates or thoughts on this issue would be greatly appreciated.
Lastly, thank you for all the work you’ve put into bignumber.js.

Pavan

@pavanvora
Hello
I think the idea behind returning BigNumber NaN rather than throwing, was that instead of users having to try catch so much, they can just check if instance.isNaN() if there is a possibility of an invalid input.
Should I now change the API to always throw on invalid input? No, I don't think it's worth it. The demand isn't there.
Similarly with DEBUG mode - which currently makes the constructor throw on invalid input or on numbers with more than 15 sig digs, and makes BigNumber.isBigNumber(x) check x is properly formed as well as that it is a BigNumber - I might as well leave it as it is.
I think it's numbers with more than 15 sig digs becoming BigNumber NaN that probably trips users up the most. I did get rid of that behaviour in my other library, so I could probably be persuaded to do that here as well.
Basically, it someone wants change around this, they would need to do the thinking and come with exactly what changes should be made, and then I will consider their proposals, but I am not going to initiate change here myself.
Thnaks for the feedback.


Bug: Incorrect type BaseBuilder::$tableName

Direction
Property: string
https://github.com/codeigniter4/CodeIgniter4/blob/8322f3aa396ce91b7e56185cc7eb7c8a0dcf8b56/system/Database/BaseBuilder.php#L163-L165
But in the constructor, you can assign an array to the property. (See docBlock)
https://github.com/codeigniter4/CodeIgniter4/blob/8322f3aa396ce91b7e56185cc7eb7c8a0dcf8b56/system/Database/BaseBuilder.php#L254-L269
The method returns a string. ( See docBlock and the return typehint)
https://github.com/codeigniter4/CodeIgniter4/blob/8322f3aa396ce91b7e56185cc7eb7c8a0dcf8b56/system/Database/BaseBuilder.php#L317-L321
Affected module(s)
BaseBuilder аnd maybe somewhere else

There is no test case to use array for the BaseBuilder constructor param $tableName.
Another array tableName is found in BaseConnection::table().
It seems there is no code to use array to the method.
https://github.com/codeigniter4/CodeIgniter4/blob/8322f3aa396ce91b7e56185cc7eb7c8a0dcf8b56/system/Database/BaseConnection.php#L957-L962
It is the primary table name, so it should be string. It seems array is just a mistake.
https://github.com/codeigniter4/CodeIgniter4/blob/8322f3aa396ce91b7e56185cc7eb7c8a0dcf8b56/system/Database/BaseBuilder.php#L158-L165

https://github.com/codeigniter4/CodeIgniter4/blob/622d1bf140fffa62edd59ee79a78a1e173352433/tests/system/Database/Builder/AliasTest.php#L32-L39

I think that in BaseBuilder::__construct() may assign an array to the property $tableName is a bug.
By the way, what is the primary table? For what?

The primary table is a table of CodeIgniter\Model?

I only found one place where this is used.
https://github.com/codeigniter4/CodeIgniter4/blob/35bf87cc050f5619b6ee41ce41b34fc5bf350388/system/Model.php#L563
The content of the method is causing me confusion. If the method should return a shared instance of the BaseBuilder class for this model. Why add the ability to specify a table other than the model table?

I honestly don't understand why bind a query builder to a table permanently at all. This should be optional.

Yeah, I think Query Builder's responsibility is to build SQL query.
It doesn't need the primary table.

After looking closely at the BaseBuilder class, I came to the conclusion that this is not a QueryBuilder.
This is a ModelQueryBuilder.
Methods that change the state of the database do not expect a table name as an argument. (insert, update, delete).
Instead of implementing the query builder in the model, the query builder was redesigned for the model.
In this case, the CI3 QueryBuilder will be of better quality than the CI4 QueryBuilder.

Why add the ability to specify a table other than the model table?

This was a compromise to bring functionality in line with expectations set by the User Guide. It was very confusing to be able to call table() and have the behavior differ form instance to instance.

To the original issue, I don't think $table should be an array. I would have to look deeper what the alias function for a table is, but I think the rest of framework assumes it's a string and an array will cause failures elsewhere.

This was a compromise to bring functionality in line with expectations set by the User Guide.

What do you mean? What is the compromise? What functionality?

CI4 is a cargo cult for Laravel.
The db->table() method is a parody of DB::table() written on crutches.
We can copy functionality from other frameworks, but do it wisely.

@kenjis because we already allowed access to the builder() and table() method it wasn't feasible to back out of offering the full function of those (e.g. passing a table name as a parameter to get a table-specific builder). Once the bug was discovered (e.g. $usedModel->builder('widgets') always returned a Builder for users table) we either had to embrace it or create a breaking change to restrict access. I would like version 5 to have much clearer lines between models and the database layer, but that's a ways off.
@iRedds I'm not sure what your comment means, but the reality is that the database layer was almost entirely complete before the current group of maintainers started. We work with what we have, which may not be ideal but it is well documented and consistent. An overhaul to the database layer is definitely on my "wish list" but it is a pretty large task and requires knowledge in a lot of areas.

@MGatner Thank you for your explanation.

The db->table() method is a parody of DB::table() written on crutches.

I don't know Laravel.
What is the advantage of DB::table() over $db->table()?

CI4 is a cargo cult for Laravel.
The db->table() method is a parody of DB::table() written on crutches.
We can copy functionality from other frameworks, but do it wisely.

While there has been some changes I missed (like table taking an array) table() had one very simple intent: return a non-shared instance of the query builder. IIRC almost every single other PHP framework has the same method, not just Laravel. It was added because in CI3 you could accidentally intermingle two queries if you had to perform a query to look data up after starting a query elsewhere. By returning a non-shared instance of the QueryBuilder, it stops that from happening. That's all the table method  in BaseBuilder does.
Since the Model is a layer of convenience methods, when you call builder() from within the model it assumes that you want a QueryBuilder targeted for the table the model is designed to work with. While within a model, you can still call $this->builder('otherTable') to get a new, non-shared instance of a QueryBuilder for that specific table.
Either way, once you have the new instance, it is the QueryBuilder/Connection that is used through the rest of that call.
In short, though, I don't recall when the ability to have multiple tables specified being added and a very quick glance through the history of BaseConnection didn't make it obvious. Tracing through the code it looks like it likely only supports an array of table names because the BaseBuilder's from method supports multiple tables, which is used in the BaseBullder constructor to set the table after it's called by $db->table('foo').
This makes sense as you can have queries like:
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'

So it does appear the original post is correct, that the $tableName docblock needs updating, as does the getTable method to support arrays also.

Difference between CI table() and Laravel table() implementation in:
//CI table()  =
new BaseBuilder('table', $connection)

// Laravel table()  =
$this->query()->from('table');  //where the query() methed return new QueryBuilder instance;

In Lara, we can get a simple Builder without a predefined table.
Multiple tables can be passed as a string. table('table_1, table_2') from('table_1, table_2')
This is already implemented in the builder.

So it does appear the original post is correct, that the $tableName docblock needs updating, as does the getTable method to support arrays also.

I don't know why the property $tableName should support array.

@iRedds Thanks for the explanation.

table() had one very simple intent: return a non-shared instance of the query builder. ... It was added because in CI3 you could accidentally intermingle two queries if you had to perform a query to look data up after starting a query elsewhere. By returning a non-shared instance of the QueryBuilder, it stops that from happening. That's all the table method in BaseBuilder does.

https://github.com/codeigniter4/CodeIgniter4/blob/de8d7f40d799d584d86af2945deac113e1a7c840/system/Database/BaseConnection.php#L962-L971
table() always returns new instance. So the argument $tableName does not matter to return a non-shared instance.

My current opinion:
The property BaseBuilder::$tableName, BaseBuilder::__construct($tableName), BaseConnection::table($tableName)

All the $tableName should be ?string.
It represents the primay table name (single table) if not null.
It is used in FROM clause in BaseBuilder if not null.

Deprecated

BaseBuilder::__construct($tableName) as array and string with multiple tables.
BaseConnection::table($tableName) as array and string with multiple tables.

What do you think about excluding the $tableName parameter from the constructor and add a public method like defaultTable(), which contains the constructor code that handles $tableName.

Do you mean remove $tableName from BaseBuilder::__construct()?
I think it is good.
But It is BC break. It seems to be difficult to do it in a short term.

We cannot update method signatures in a way that would break existing extensions.

@MGatner I understand that we can not break BC in 4.x. But we can do it in 5.0.

I changed my opinion. I sent a PR #5378.


Update to define better default for user-defined target labels

This small change will adaptive set the length for the CAS variable "label" to the largest number of characters in all the labels provided.  Thus if the "label" column contains the the values "AA", "BB", "C" and "#", the number of characters for all observations will be set to 2.  This is the solution for issue #203 .

I do not have a unit test as yet.

would you please add one, then I will merge it. thanks a lot.

I just updated get_user_defined_labels_table and added a test to test_utils.py.  I believe these changes should address your request @ethem-kinginthenorth.


Blog Section

There seems to be some branch conflicts,my branch was outdated,i pulled the changes and initiated the pr,must have had some effect on the existing roject,wil check and get back

I am pushing more changes and resolve the issue by tonight


[JAVA]:  Relational and Boolean operators in JAVA

Description
Description
Domain
Java_Domain
Type of Contribution
Documentation
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of this project.

/assign


IdpMetadata#idp_cert_multi should always be assigned

Currently IdpMetadata#idp_cert_multi is only assigned to a value when the IdP Metadata XML contains multiple unique certs. It would be useful for me if this variable were always assigned, so that I won't get different behavior for the 1 vs. N certificate cases.

I'm ok with such behavior change

PR raised


Proposal: Improved multi-repo experience

Codespaces has a customization key customizations.codespaces.repositories for specifying the permissions the container user should have on a set of one or more repositories. Currently in the Codespaces implementation, the devcontainer maintainer must also manually clone the repos into the workspace separately which adds a maintenance and clarity burden.
There are likely other use cases and implementations that would be able to take advantage of the dev container specifying one or more repositories to be cloned into a workspace.  I've opened this issue to prompt a discussion around those use cases and the best method of specifying.
One option that occurs to me is to add a new top level key repositories that could (or requires?) including which repository would be the default workspaceFolder if not overridden elsewhere. An example might look like this:
"repositories": {
  "my_org/repoA": {
    "defaultWorkspace": "true"
    "permissions": {
      "contents": "write",
      "pull_requests": "write",
    }
  },
  "my_other_org/repoB": {
    "permissions": {
      "contents": "write",
      "pull_requests": "write",
    }
  }
}

In Codespaces case, this could be used to automatically clone both the repositories to the environment, set the appropriate user permissions for the token, and set the workspaceFolder unless overridden elsewhere.

As a top-level property we would want to support it in local Dev Containers where the user clones the repository containing the devcontainer.json themselves and only then reopens the local folder in the dev container.
Would the default folder layout in Codespaces be /workspaces/mainRepo, /workspaces/repoA, /workspaces/repoB?
The Dev Containers extension also has the Clone in Volume flow where it clones the repository in a Docker volume, in that case it could probably clone the other repositories automatically, similar to how Codespaces is going to implement this.
I guess instead of adding defaultWorkspace, you could let the user use workspaceFolder when that needs to be different from the main repository's root folder.
This sounds a lot like Git submodules, could these be used to achieve what is being asked for by users? E.g., the main repository could have a .devcontainer folder and include the other repositories in top-level folders.


ARROW-11668: [C++] Sporadic UBSAN error in FutureStessTest.TryAddCallback

The UBSAN test was periodically failing because an uninitialized std::atomic could have any value.  I did a review of std::atomic and found at least one other place where I had made this incorrect assumption.  Both are fixed here.

@pitrou Please review.  1 failing test seems unrelated.

I've restarted the failing check.


Support for compound variables in UnusedLocalVariable

This adds the logic to look for compound variables, which must be
directly within a string to avoid conflicting with the test
testRuleDoesNotApplyToLocalVariableUsedInCompoundVariable.
This also adds the test to ensure that this use of compound variables is
well implemented.

Resolves #442

Thanks!


Rewrite code to remove commons-io entirely using standard java

includes rest of bringing up to date.

includes concurrency as well per error prone considerations although not likely any issue here.


Update iOS TextRecognition to 6.0.0

Any reason not to?

no reason as far I can see. did you try this version? is it working fine?

Hi @ismaelsousa,
Is it possible to reopen this PR? Currently it is not possible to build under iOS, because GoogleMLKit/TextRecognition (= 6.0.0) is needed. Thx.

@ j0na1han could you patch locally to see if it will solve your problem?

Hi,
I built it locally, it works. Now I have the problem that the plugin does not recognize any text.
Maybe this is because of the version update, but I haven't checked it yet.

I built it locally, it works. Components: vision-camera-ocr 3.2.0-1 React-native-vision-camera: 4.5.3

Hey j0na1han, can you provide more details on your deps?
im updating my App from react-native-vision-camera 4.0.3 to 4.5.3 and this plugin seems to stop working

any updates on this PR? I'm facing the same issue as @j0na1han

any updates on this PR? I'm facing the same issue as @j0na1han

Hey @jyxia i've managed to solve this issue with a local patch on the pod version of ML Kit to use 6.0.0
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index cc18696..4c296dd 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -22,14 +22,14 @@ Pod::Spec.new do |s|

   s.dependency "React"
   # To recognize Latin script
-  s.dependency 'GoogleMLKit/TextRecognition', '4.0.0'
+  s.dependency 'GoogleMLKit/TextRecognition', '3.1.0'
   # To recognize Chinese script
-  s.dependency 'GoogleMLKit/TextRecognitionChinese', '4.0.0'
+  s.dependency 'GoogleMLKit/TextRecognitionChinese', '3.1.0'
   # To recognize Devanagari script
-  s.dependency 'GoogleMLKit/TextRecognitionDevanagari', '4.0.0'
+  s.dependency 'GoogleMLKit/TextRecognitionDevanagari', '3.1.0'
   # To recognize Japanese script
-  s.dependency 'GoogleMLKit/TextRecognitionJapanese', '4.0.0'
+  s.dependency 'GoogleMLKit/TextRecognitionJapanese', '3.1.0'
   # To recognize Korean script
-  s.dependency 'GoogleMLKit/TextRecognitionKorean', '4.0.0'
+  s.dependency 'GoogleMLKit/TextRecognitionKorean', '3.1.0'
 end

this is an old example, just instead of setting 4.0.0 set it to 6.0.0 or dont leave the version in your s.dependency that the podsec will use the latest release
i'm also attaching a shared Chat that can instruct you on how to create local patch
https://chatgpt.com/share/676558b2-89b8-8005-b571-07b889087a59


Bug respect action

If the caller specifies an action to use, then respect that choice.
That allows for callers to pick up the keypress events that browsers
sometimes fire even when control keys are in use

This addresses https://github.com/ccampbell/mousetrap/issues/351


iGate on SSID-11 won't beacon via KISS over IP set to same SSID as iGate

running igate 2024.06.27 on a ttgo Lora32 v1.6
default_envs = ttgo-lora32-v21
Works fine, will Tx a beacon if I press the send beacon now web page button from the web page.
Device set to MYCALL-11 (using my own callsign not MYCALL ;)
APRS-IS is off,
Enable TNC server is on
I am only looking at RF here. I Rx my signal from 32 miles away checking on aprs.fi. So far so good.
I connect to the TNC using Pinpoint APRS set to MYCALL-11. This seemed a logical thing to do, the unit and its antenna is MYCALL-11.
Will send messages via Pinpoint. iGate will NOT transmit a position beacon from PP. If I change the SSID in pinpoint to anything else the beacon is sent from PP (as well as from the web page, but on their respective SSIDs)
Switched to APRS-IS 32. I observe the same oddity - will not send position beacon if KISS program has the same SSID
Is this a bug or am I doing something that is wrong? Oddly enough with the tracker  2024.07.01 I can set APRSdroid to the same call-SSID as the tracker and it's perfectly happy to send a beacon either by the standalone tracker or from APRSdroid Send Position, so this is inconsistent between devices

maybe its the filter to avoid listening to yourself (same ssid ) when you hear a (repeated) beacon which was "like you sended"

ts the filter to avoid listening to yourself

This is purely RF Tx, it's not connected to APRS-IS. The iGate never Tx's in response to the pinpoint command over the KISS modem - the green light doesn't come on. And only the position beacon, I can send messages OK from Pinpoint APRS32
I'm happy to accept that using the same SSID is just a weird thing to try and do. It's not a killer issue, but I wasted some time trying to get it to work on the same SSID in testing. A warning saying don't use the same SSID on the KISS modem as the unit itself would save others the time finding that out ;)

Go to iGate WebUI and enable "accept own frames via KISS" in TNC section. Then it will work.
It definitly makes sense to have the same ssid in iGate and aprsdroid.
BR
Mane

Then it will work.

It does now. Sometimes, and I am not able to determine why in a repeatable fashion :(
Thanks for confirming it wasn't barmy to set the same SSID. I've turned off the KISS modem now as these boards are cheap enough I'll make another tracker w/o GPS, and value this iGate for what it does well, being an iGate


Unable install atom on my Window7. Getting following Error

2016-01-09 15:53:33> Program: Starting Squirrel Updater: --install .
2016-01-09 15:53:34> Program: Starting install, writing to C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 15:53:34> Program: About to install to: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom
2016-01-09 15:53:34> CheckForUpdateImpl: Failed to load local releases, starting from scratch: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\packages\RELEASES'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Squirrel.Utility.LoadLocalReleases(String localReleaseFile)
at Squirrel.UpdateManager.CheckForUpdateImpl.d__3d.MoveNext()
2016-01-09 15:53:34> CheckForUpdateImpl: Reading RELEASES file from C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 15:53:35> CheckForUpdateImpl: First run or local directory is corrupt, starting from scratch
2016-01-09 15:53:35> ApplyReleasesImpl: Writing files to app directory: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\app-1.3.3
2016-01-09 15:54:01> IEnableLogger: Failed to install package to app dir: System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__541.MoveNext() 2016-01-09 15:54:01> Unhandled exception: System.AggregateException: One or more errors occurred. ---> System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.    at System.IO.PathHelper.GetFullPathName()    at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)    at System.IO.Path.GetFullPathInternal(String path)    at System.IO.Path.GetFullPath(String path)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)    at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<<installPackageToAppDir>b__a8>d__b8.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Squirrel.Utility.<LogIfThrows>d__541.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Squirrel.Update.Program.executeCommandLine(String[] args)
at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__54`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()<---
2016-01-09 15:54:23> Program: Starting Squirrel Updater: --install .
2016-01-09 15:54:23> Program: Starting install, writing to C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 15:54:23> Program: About to install to: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom
2016-01-09 15:54:23> Program: Install path C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom already exists, burning it to the ground
2016-01-09 15:54:28> CheckForUpdateImpl: Failed to load local releases, starting from scratch: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\packages\RELEASES'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Squirrel.Utility.LoadLocalReleases(String localReleaseFile)
at Squirrel.UpdateManager.CheckForUpdateImpl.d__3d.MoveNext()
2016-01-09 15:54:28> CheckForUpdateImpl: Reading RELEASES file from C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 15:54:28> CheckForUpdateImpl: First run or local directory is corrupt, starting from scratch
2016-01-09 15:54:29> ApplyReleasesImpl: Writing files to app directory: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\app-1.3.3
2016-01-09 15:54:53> IEnableLogger: Failed to install package to app dir: System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__541.MoveNext() 2016-01-09 15:54:53> Unhandled exception: System.AggregateException: One or more errors occurred. ---> System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.    at System.IO.PathHelper.GetFullPathName()    at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)    at System.IO.Path.GetFullPathInternal(String path)    at System.IO.Path.GetFullPath(String path)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)    at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<<installPackageToAppDir>b__a8>d__b8.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Squirrel.Utility.<LogIfThrows>d__541.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Squirrel.Update.Program.executeCommandLine(String[] args)
at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__54`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()<---
2016-01-09 16:09:05> Program: Starting Squirrel Updater: --install .
2016-01-09 16:09:05> Program: Starting install, writing to C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 16:09:05> Program: About to install to: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom
2016-01-09 16:09:05> Program: Install path C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom already exists, burning it to the ground
2016-01-09 16:09:06> CheckForUpdateImpl: Failed to load local releases, starting from scratch: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\packages\RELEASES'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Squirrel.Utility.LoadLocalReleases(String localReleaseFile)
at Squirrel.UpdateManager.CheckForUpdateImpl.d__3d.MoveNext()
2016-01-09 16:09:06> CheckForUpdateImpl: Reading RELEASES file from C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 16:09:06> CheckForUpdateImpl: First run or local directory is corrupt, starting from scratch
2016-01-09 16:09:06> ApplyReleasesImpl: Writing files to app directory: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\app-1.3.3
2016-01-09 16:09:30> IEnableLogger: Failed to install package to app dir: System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__541.MoveNext() 2016-01-09 16:09:30> Unhandled exception: System.AggregateException: One or more errors occurred. ---> System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.    at System.IO.PathHelper.GetFullPathName()    at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)    at System.IO.Path.GetFullPathInternal(String path)    at System.IO.Path.GetFullPath(String path)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)    at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<<installPackageToAppDir>b__a8>d__b8.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Squirrel.Utility.<LogIfThrows>d__541.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Squirrel.Update.Program.executeCommandLine(String[] args)
at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__54`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()<---
2016-01-09 16:27:45> Program: Starting Squirrel Updater: --install .
2016-01-09 16:27:45> Program: Starting install, writing to C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 16:27:45> Program: About to install to: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom
2016-01-09 16:27:45> Program: Install path C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom already exists, burning it to the ground
2016-01-09 16:27:47> CheckForUpdateImpl: Failed to load local releases, starting from scratch: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\packages\RELEASES'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Squirrel.Utility.LoadLocalReleases(String localReleaseFile)
at Squirrel.UpdateManager.CheckForUpdateImpl.d__3d.MoveNext()
2016-01-09 16:27:47> CheckForUpdateImpl: Reading RELEASES file from C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 16:27:47> CheckForUpdateImpl: First run or local directory is corrupt, starting from scratch
2016-01-09 16:27:47> ApplyReleasesImpl: Writing files to app directory: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\app-1.3.3
2016-01-09 16:27:54> IEnableLogger: Failed to install package to app dir: System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__541.MoveNext() 2016-01-09 16:27:54> Unhandled exception: System.AggregateException: One or more errors occurred. ---> System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.    at System.IO.PathHelper.GetFullPathName()    at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)    at System.IO.Path.GetFullPathInternal(String path)    at System.IO.Path.GetFullPath(String path)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)    at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<<installPackageToAppDir>b__a8>d__b8.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Squirrel.Utility.<LogIfThrows>d__541.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Squirrel.Update.Program.executeCommandLine(String[] args)
at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__54`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()<---
2016-01-09 16:36:47> Program: Starting Squirrel Updater: --install .
2016-01-09 16:36:47> Program: Starting install, writing to C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 16:36:47> Program: About to install to: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom
2016-01-09 16:36:47> Program: Install path C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom already exists, burning it to the ground
2016-01-09 16:36:56> CheckForUpdateImpl: Failed to load local releases, starting from scratch: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\packages\RELEASES'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Squirrel.Utility.LoadLocalReleases(String localReleaseFile)
at Squirrel.UpdateManager.CheckForUpdateImpl.d__3d.MoveNext()
2016-01-09 16:36:56> CheckForUpdateImpl: Reading RELEASES file from C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\SquirrelTemp
2016-01-09 16:36:56> CheckForUpdateImpl: First run or local directory is corrupt, starting from scratch
2016-01-09 16:36:56> ApplyReleasesImpl: Writing files to app directory: C:\Users\optimuslap17.OPTIMUSDOM\AppData\Local\atom\app-1.3.3
2016-01-09 16:37:17> IEnableLogger: Failed to install package to app dir: System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__541.MoveNext() 2016-01-09 16:37:17> Unhandled exception: System.AggregateException: One or more errors occurred. ---> System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.    at System.IO.PathHelper.GetFullPathName()    at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)    at System.IO.Path.GetFullPathInternal(String path)    at System.IO.Path.GetFullPath(String path)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)    at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)    at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<<installPackageToAppDir>b__a8>d__b8.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Squirrel.Utility.<LogIfThrows>d__541.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Squirrel.Update.Program.executeCommandLine(String[] args)
at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry(ZipEntry entry)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(Stream inputStream, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter, Boolean restoreDateTime, Boolean isStreamOwner)
at Squirrel.UpdateManager.ApplyReleasesImpl.<>c__DisplayClassaf.<b__a8>d__b8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.Utility.d__54`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.UpdateManager.ApplyReleasesImpl.d__78.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Squirrel.UpdateManager.d__f.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Squirrel.Update.Program.d__37.MoveNext()<---

Looks like your path is too long.
Is optimuslap17.OPTIMUSDOM your username?

Yes, optimuslap17.OPTIMUSDOM is the user name and I can not change the username of my system as it is my official system.
Is there any other way to install the atom ? I also tried to install the latest and also the previous versions of atom using choco from powershell but didn't succeed.
Currently, I downloaded the atom-windows package and using it.
If you have any solution without changing the username. Please suggest.

This is a duplicate of #5109, which also lists some workarounds.


Improve DX of type errors from inside pipe and flow

Type

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

Description
See https://github.com/Effect-TS/effect/issues/3257.
Related

Closes https://github.com/Effect-TS/effect/issues/3257

@OliverJAsh I think we can apply the same trick to the Pipeable interface
import { identity, Option } from "effect"

// We should only have one error for the missing definition.
const _x = (): number =>
  Option.some(1).pipe(
    // @ts-expect-error
    add(1),
    identity
  )

Thank you for the PR!
Do we know what are the limits of this? Like, was there any casualty or is this a straight-up DX win? I'd assume the latter, but we should make sure 😄
After adding that to the Pipeable interface and checking if this fails in any case (in a way that was worse than before) I think we can merge it in 💪🏻

@OliverJAsh I made the change for pipeable interface here: https://github.com/Effect-TS/effect/pull/3731/commits/8e0907c59c8e4dc805d474c28a403f6e65407758


Adding babel polyfill

Babel has polyfill for supplying methods such as Array.from. However if I use
require('babel/polyfill')
It doesn't return an error, but doesn't seem to work, either. This may be a pipe dream, since I'm not sure how the notebook is being implemented. Does it seem possible for a person to use the polyfill in a notebook?

 Leaving this post as a testament to how much I'm loving jupyter-nodejs (but feel free to delete it ;).


The character '~' is invalid ascii key. Could not initialize win-vind, so terminate. (Windows Error Code: 0)

Tried both the portable x64 version, and the winget get version.
I suspect this is a similar issue to: https://github.com/pit-ray/win-vind/issues/53
Except I use a (slighty modified) dvorak layout. The tilde button creates the following characters:
normal: §
Shift key: ½
Edit
Selecting a traditional QWERTY US keyboard layout, does indeed resolve the issue. It seems I can swap back to my DVORAK layout after the application has loaded, though.
Error message:
An runtime exception occured from class std::unordered_set<class vind::core::KeyCode,struct std::hash<class vind::core::KeyCode>,struct std::equal_to<class vind::core::KeyCode>,class std::allocator<class vind::core::KeyCode> > __cdecl vind::core::parse_ascii_command(char). The character '~' is invalid ascii key code. Could not initialize win-vind, so terminate. (Windows Error Code: 0)
Environment (please complete the following information):
Windows 11
OS Type: 64bit
OS Version: 22H2
OS Build: 22621.1413
win-vind Version: 5.0.0
win-vind Type: winget and portable
Is it reproducible?: Yes

How can I reproduce it?
Can I reproduce it by installing US Dvorak on Windows?

My apologies, I originally thought it had to do with the tilde key representing the following characters.
Tilde = §
Tildie + shift = ½
I tested this with 2 other keyboard layouts (Swedish and Dvorak US) but both didn't trigger this error. So it must be something else that is to do with my keyboard layout.

Attached the keyboard layout I'm using myself.
I can share my keyboard layout (you could install or open it with Microsoft Keyboard Layout Creator) if you're interested. If not, I'd also be okay with closing this bug as the chance of this affecting someone else will be probably close to none.

Whoops, mis clicked the wrong button.

Sorry for my late reply.
If you can, please share your keyboard layout.
win-vind suffers from language problems due to the keyboard layout, so its details help for solving this.
Thanks a lot.

Sorry for my late reply. If you can, please share your keyboard layout. win-vind suffers from language problems due to the keyboard layout, so its details help for solving this.
Thanks a lot.

https://filetransfer.io/data-package/xe1hT1cH#link
You should be able to edit/open the layout using the Microsoft Keyboard Layout Creator tool.

@kvgelder @Gabritorre
Thank you all for information.
I confirm to reproduce it.
For now, I registered this issue as a top priority task.
So, when this issue is fixed, I release new version.
Thanks.
https://github.com/users/pit-ray/projects/2/views/6?pane=issue&itemId=11489613

Fixed at v5.2.3.