Failed to format with ruff

Describe the bug
Error server side with log level=debug when forcing the format the code:
[E 240927 08:55:25 formatter:74] Failed to format code with ruff
[D 240927 08:55:25 formatter:75] Command '['ruff', 'format', '--line-length', '79', '-']' returned non-zero exit status 1.

Expectation:

configure the formatting / --line-length(maybe using a
(.)ruff.toml?) so some rules could be added/removed as needed?
better debug log (debug log request should cascade to ruff?)

Environment
{
"marimo": "0.8.20",
"OS": "Linux",
"OS Version": "6.10.10-zabbly+",
"Processor": "x86_64",
"Python Version": "3.10.12",
"Binaries": {
"Browser": "129.0.6668.58",
"Node": "v22.9.0"
},
"Dependencies": {
"click": "8.1.7",
"importlib-resources": "6.4.4",
"jedi": "0.19.1",
"markdown": "3.7",
"pygments": "2.18.0",
"pymdown-extensions": "10.9",
"ruff": "0.6.4",
"starlette": "0.38.5",
"tomlkit": "0.13.2",
"typing-extensions": "4.12.2",
"uvicorn": "0.30.6",
"websockets": "12.0"
},
"Optional Dependencies": {
"altair": "5.4.1",
"anywidget": "0.9.13",
"duckdb": "1.0.0",
"pandas": "2.2.2",
"polars": "1.6.0",
"pyarrow": "17.0.0"
}
}
Code to reproduce
not sure which line brings the problem (would be a nice addition) and if it relates to ruff error E501.

@shuther - this error is a correct error if you python code is not formattable. this can be the case if its not valid code (which can happen as you write it)
can you confirm is this error happens all the time or just when it is invalid code?
for example, can you format with:
[1, 2,]

and also format with
[1, 2,]]

the second should fail

@shuther - also ruff should pick up your ruff.toml or ruff config in pyproject.toml already


valheim: set createHome for valheim user

I meant to contribute this for a while, just got reminded when I reworked my server flake for 23.11.
When I initially added this module, I needed to set createHome, so adding it in the module itself might make sense.

No, I had to bootstrap the module with createHome in 23.05 as well, IIRC it complained about /var/lib/valheim not existing before createHome created it.


TurboJPEG error?

when creating a Valis object and use it to register the slides in slide_src_dir:
registration.Valis(slide_src_dir, results_dst_dir)
showed error:
java.lang.RuntimeException: java.lang.RuntimeException: TurboJPEG could not be loaded;
my image format is mrxs.
Thanks

Hello @billnjcn111,
Could you please verify that you have turbojpeg installed? It's not a Python dependency, and so doesn't get installed via pip and may need to be installed separately.
Best,
-Chandler

Hi @cdgatenbee,
I'm running into the same issue. I've installed jpeg-turbo via homebrew, and added the path pointing to the installation in my PATH, but the error still pops up and I am unable to create the VALIS object.
For reference, I'm running this on MacOS ARM64.

Hi @kayleefang,
Sorry to hear that you're having this issue too. I'm also running on macos arm64, so I don't think this is necessarily an apple silicon issue, so could you tell me a bit more about your environment (i.e. any conda? all homebrew?)? Just wondering if there is any way that maybe libvips/pyvips/java/openslide was installed one way (conda), and turbojpeg another (homebrew), which could be a possible reason why turbojpeg isn't being found. Also, to help narrow things down, are you able to import pyvips, scyjava, and jpype ok? Is it possible to initialize the JVM via slide_io.init_jvm()? Please let me know and we'll go from there.
Best,
-Chandler

I can import pyvips, scyjava, and jpype; slide_io.init_jvm() will just produce the error: java.lang.RuntimeException: TurboJPEG could not be loaded

Hi @cdgatenbee,
Thanks for your quick response! I'm working in a conda environment, and used pip to install valis in the environment along with necessary packages through pip install valis-wsi. Before this, I installed libvips and turbojpeg through homebrew, and I reinstalled Java and installed Maven as per the installation instructions. Could something with these different installations be causing the issue?
I'm able to import pyvips, scyjava, and jpype perfectly well. Initializing the JVM via slide_io.init_jvm does not return any errors, and running jpype.isJVMStarted() returns True. The issue comes when I run slide_io.get_bf_readable_formats(), which is where the original error is thrown when trying to create the valis object. This causes the "TurboJPEG could not be loaded" error.

Hi @kayleefang and @billnjcn111,
Do you happen to know which version of bioformats you are using? Apparently, 7.0.1 is problematic on M1 macs, and it's recommended to use 7.0.0 until 7.1.0 comes out: https://forum.image.sc/t/bioformats-7-0-1-apple-arm-processor-regression/88713
As an alternative, if you're ok using Docker, there is a container available on DockerHub that has everything installed and should at least get you to where you can test out valis. It's worth noting that it is also possible to launch that container using a different entrypoint so that you can use the container's environment inside of Visual Studio Code, allowing you to run your code and debug like you would normally. If that sounds like something you'd be interested in but have questions about, let me know and I can put together some instructions on how to do it.
Best,
-Chandler

Hi @cdgatenbee,
This seems to be the fix on my machine! Switching bioformats from 7.0.1 to 7.0.0 immediately resolved all the issues. Thank you so much for all of your help!!

Great, glad to hear it @kayleefang! Good luck, and please let know if you run into any more issues.
Best,
-Chandler

@kayleefang can I ask how you changed to 7.0.0 of bio formats? thanks!

Hi @billnjcn111,
Bioformats 7.0.0 is available here, but you just need bioformats_package.jar. After you've downloaded bioformats_package.jar, you can use that version by passing its path to slide_io.init_jvm, which you might want to do at the top of your script:
from valis import registration, slide_io
slide_io.init_jvm(jar="/path/to/bioformats_package.jar")

registrar = registration.Valis(src_dir, dst_dir)
rigid_registrar, non_rigid_registrar, error_df = registrar.register()

Please give that a try and let me know how it goes.
Best,
-Chandler

Great news, @billnjcn111! I'll go ahead and close this issue, but if you run into any other problems please don't hesitate to open a new one.


DWARF DIE Cache Option

Is your feature request related to a problem? Please describe.
Currently the options in the DWARF Importer are to either preload all dies or to limit the max number of dies. This poses a problem for binaries with extensive amounts of DWARF info as pre-loading all the dies causes an OutOfMemoryError yet not pre-loading would take days if not weeks or more to finish.
Describe the solution you'd like
I am assuming from the available options that there is no caching of the dies occurring. If there is I have yet to stumble across it.
Describe alternatives you've considered
Run the DWARF importer for days and hope it eventually finishes before my patients runs out. This is bad for productivity though.
Additional context
@dev747368 libwebkit2gtk-3.0-25-dbg is an excellent stress test for the DWARF importer. As a reference I am launching Ghidra with the -Xmx28672m vmarg and am still running out of memory. (That gets rounded to about ~30Gb)
Also to load that file the .got and .plt.got sections need to be removed due to #2416

Pre-loading all DIEs isn't a performance option.  It exists because there were tool chains that produced DIEs that referenced DIEs in other compile units.  The normal mode of operation is to load the DIEs for a compile unit, process them all, discard them, go to the next compile unit, and lather, rinse repeat.
The slowness you are seeing is probably due to data type resolution / conflict handling.  :)  Can't get away from that it seems.
There have been a few changes that might help, and there is one change hopefully hitting before 9.2 with the naming of anon data types that might reduce the amount of work.

I will use your example binary as well in the future.

I see. It was impossible to tell as I'd run out of memory when pre loading all the dies.
If some dies are being referenced from other compile units wouldn't caching them help with that? This way if they are referenced the cache could be checked and if it isn't there then the compile unit gets reloaded. It would definitely help for when this occurs and you don't have enough ram to pre-load them.
Also changes to anonymous types are good. I'm not a fan of them or the .conflict(inf)

Do you remember where in the various steps (per the progress meter) it bogs down / starts taking lots of memory?

Do you remember where in the various steps (per the progress meter) it bogs down / starts taking lots of memory?

While checking the pre-conditions I think or just after. I can double check tonight.

I saw it take a bit of time to do the pre-condition checking, but after those several minutes, I'm into the part where its importing types in each compilation unit.  I haven't really gone above 2gb of used memory either.

I saw it take a bit of time to do the pre-condition checking, but after those several minutes, I'm into the part where its importing types in each compilation unit. I haven't really gone above 2gb of used memory either.

I'm stuck waiting on "DWARF Move Types" at the moment and will have to let it run overnight. I modified the dwarf conflict handler so I could get at least some of the data I was looking for. I'll rebuild ghidra, re-import and re-run tomorrow to see exactly where in the dwarf analysis the memory issue is occurring. I may modify the task monitor to log the changes in message to the application log so I don't need to monitor it.

Ah.  Yeah, you are right at the end.  FYI, closing the data type manager UI may help a little by reducing the number of queries going into the data type db tables.

Ah. Yeah, you are right at the end. FYI, closing the data type manager UI may help a little by reducing the number of queries going into the data type db tables.

I closed all the windows and it seemed to help a bit. It finally finished around 9:00 am so I'll rebuild and run again as described above later.
2020-11-06 09:01:43 ERROR ghidra.app.plugin.core.analysis.DwarfLineNumberAnalyzer Unexpected Exception: Index values do not match! java.lang.IllegalStateException: Index values do not match!
	at ghidra.app.util.bin.format.dwarf.line.StatementProgramInstructions.executeExtended(StatementProgramInstructions.java:114)
	at ghidra.app.util.bin.format.dwarf.line.StatementProgramInstructions.execute(StatementProgramInstructions.java:71)
	at ghidra.app.plugin.core.analysis.DwarfLineNumberAnalyzer.added(DwarfLineNumberAnalyzer.java:75)
	at ghidra.app.plugin.core.analysis.AnalysisScheduler.runAnalyzer(AnalysisScheduler.java:186)
	at ghidra.app.plugin.core.analysis.AnalysisTask.applyTo(AnalysisTask.java:39)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisTaskWrapper.run(AutoAnalysisManager.java:688)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:788)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:667)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:632)
	at ghidra.app.plugin.core.analysis.AnalysisBackgroundCommand.applyTo(AnalysisBackgroundCommand.java:58)
	at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:102)
	at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:315)
	at java.base/java.lang.Thread.run(Thread.java:832)

2020-11-06 09:01:43 INFO  ghidra.app.plugin.core.analysis.AutoAnalysisManager -----------------------------------------------------
    DWARF                                  76952.021 secs
    DWARF Line Number                          0.009 secs
-----------------------------------------------------
     Total Time   76952 secs
-----------------------------------------------------

DWARF Import: 1, Nevada: 0

@dev747368 The memory usage does explode during "DWARF Checking Preconditions". The JVM was taking 17294.6 MB before I killed it since my computer was lagging.
application.log

Yeah.  This is a debug image.  It looks like they are created with a "strip --only-keep-debug".
The memory usage during precondition is worrying.  My JVM only had 4gb to begin with and didn't go above 2 while doing most of its work.  (I didn't go to completion as I kept interrupting it to debug some data type resolve stuff)
One thing with java memory management, if you give it an excessive amount of memory, it will use it, even if it could have managed with a smaller amount... it just delays the GC until later.

Yeah. This is a debug image. It looks like they are created with a "strip --only-keep-debug".
The memory usage during precondition is worrying. My JVM only had 4gb to begin with and didn't go above 2 while doing most of its work. (I didn't go to completion as I kept interrupting it to debug some data type resolve stuff)
One thing with java memory management, if you give it an excessive amount of memory, it will use it, even if it could have managed with a smaller amount... it just delays the GC until later.

So I lowered the memory to 8GB and this does appear to be the case. I do eventually get an OutOfMemoryError though. I'm assuming it occurs in the next stage as it vm is still trying to manage all the dies and eventually cannot handle it any longer.

FYI, I did track down an issue with comparing structures that contain bitfields.  With this fixed, the number of .conflicts will reduce dramatically.

@dev747368 this isn't directly related to the topic here but I just had a thought about having the DWARF conflict handler check to see if the two types came from the same die. Since the equality check can be quite expensive for large composite types this could be an effective means of improving performance if it does occur.

I am working on large DWARF issues and have  queued up several improvements.  I've got your example down to <6gb ram needed and (excluding the "moving types" step at the end) to 4'ish hours.
RE: DIE to data type comparisions... It does re-use types in some situations (which effectively gets to what you are saying), but looking over the code right now there are a few more places it could do it.

I am working on large DWARF issues and have  queued up several improvements.  I've got your example down to <6gb ram needed and (excluding the "moving types" step at the end) to 4'ish hours.
RE: DIE to data type comparisions... It does re-use types in some situations (which effectively gets to what you are saying), but looking over the code right now there are a few more places it could do it.

Iirc the dwarf importer initially imports everything into /DWARF/UNCATEGORIZED. Since you can only import the dwarf info once and all conflicts would have been resolved in the initial import I think the conflict handler can be set to KEEP_HANDLER during the "move types" step if it isn't already. I'm not currently looking at any code and am going of the top of my head so I could be remembering wrong.

7aa6cdce9fa66dec367f8b4c1e3f80a0cd7d9cc2 should address most of the issues we talked about here.  Debug image binary files (stripped with --only-keep-debug) are not addressed in this commit.

7aa6cdce9fa66dec367f8b4c1e3f80a0cd7d9cc2 should address most of the issues we talked about here.  Debug image binary files (stripped with --only-keep-debug) are not addressed in this commit.


Addition of Signify (Hue) Light LTB002

Checklist

[X] I have filled out the template to the best of my ability.
[X] This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
[X] This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.
This light bulb part number is not a part of the extensive list of hue light bulbs.
Describe the solution you'd like
I would like to see it added to the list of lights.
Describe alternatives you've considered
Ive tried adding it through the YAML but would like it to be official.
Additional context
N/A

Please see https://homeassistant-powercalc.readthedocs.io/en/latest/troubleshooting/faq.html#my-light-model-is-not-supported-what-can-i-do. The issue tracker is not for requesting new light models.

Please see https://homeassistant-powercalc.readthedocs.io/en/latest/troubleshooting/faq.html#my-light-model-is-not-supported-what-can-i-do. The issue tracker is not for requesting new light models.

I apologize for this oversight.  I have reviewed this link and appreciate it!  Will be working on this next.  Thanks.


Fix Windows CI

Note to self to eventually go back and troubleshoot the windows-latest runner in the CI, which is currently removed entirely. This will likely be easier if/when we're able to excise some more Python dependencies, since the last time around the errors had to do with numpy C-extensions...

Reopening because this needs to be fixed properly, and the current 'fix' breaks ] build sometimes.
+CC @DhairyaLGandhi as reverting the current 'fix' would break Windows CI as well.


github_runner_matrix: remove GITHUB_RUN_ATTEMPT

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew style with your changes locally?
[ ] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

This should no longer be needed after Homebrew/ci-orchestrator@845d26ccc03ffebb06c39d0b9ce81134e8a6688b.

Oh right this is in a different repo now so we can't really test. Can you try change .github/workflows/doctor.yml so we can confirm it works there?

Oh right this is in a different repo now so we can't really test.

We can, it just requires some workflow file changes.

Can you try remove it from .github/workflows/doctor.yml too so we can confirm it works there?

👍


Nullables bug

The algorithm in Jay Earley's original paper has a bug, which I will call the nullables bug.  We should add it to the test suite.  When the nullables bug is present, “a” is a valid input for, but is rejected by, the following grammar:

S ′ ::= S
S ::= AAAA
A ::= a
A ::= E
E ::=

Most Earley implementations follow Earley's paper or PhD thesis, and therefore have this bug.  I expect our current implementation of the Earley algorithm also has it.
My request in this issue is only to add the test, mark it XFAIL or PASS, as appropriate, and close the issue.  I see the fix as outside the scope of this issue, and as the first step toward a roadmap which will fix this bug and lay the groundwork for, among other things:

Incorporating Joop Leo's speedup, which will make our implementation linear for the vast class of LR-regular grammars.
Supporting LR-attributed grammars, via an event mechanism.

This also passes:
def test_ll_nullable_bug():
    e = string("")
    a = select([e, "a"])
    s = capture(a + a + a + a, "S")
    grm = select([s, "foo"])
    check_grammar(grm, ["", "a‧≺EOS≻"])

The grammar is:
  [1] str_n2  (Literal "foo") contextual
  [2] str_n7  (Literal "a") contextual

n0              ⇦ S
n0              ⇦ n2
S               ⇦ n5 n5 n5 n5   CAPTURE
n5              ⇦ ϵ
n5              ⇦ n7

It's like we said in the meeting, there are never any bugs in your code. 🙂
Can you try it with the augment rule, S' ::= S ?  I don't think it will make a difference, but just in case.
One way of fixing the bug (although expensive, and does not lead to the new features I discussed), is to make repeated loops when building the Earley set, until no more items can be added.  Skimming the Python and Rust code, I did not see such a loop, but I might easily have missed it.  Does the current algorithm have such a loop?
Thanks,
Jeffrey

From: Michał Moskal @.>
Sent: Wednesday, September 11, 2024 12:21 PM
To: microsoft/llguidance @.>
Cc: Jeffrey Kegler (Muse and Gordon Consulting PLLC) @.>; Author @.>
Subject: Re: [microsoft/llguidance] Nullables bug (Issue #11)
I tried the following in test_ll.py:
def test_ll_nullable_bug():
e = string("")
a = select([e, "a"])
s = a + a + a + a
grm = s
check_grammar(grm, ["", "a‧≺EOS≻"])
after optimization in llguidance the following grammar is used:
Grammar:
n0              ⇦ n2 n2 n2 n2
n2              ⇦ ϵ
n2              ⇦ n4
so it doesn't have the S' ::= S production - is that important? If not, I can do a PR with the test.
The test passes, you can see with:
pytest ../guidance/tests/unit/test_ll.py::test_ll_nullable_bug  -s
in particular, the following tokens are allowed at start:
bias: (pref: ""; accpt: true) TokenSet: 5/32011; EOS, "a", "aa", "aaaa", "a"
and after the first a the following are:
bias: (pref: ""; accpt: true) TokenSet: 4/32011; EOS, "a", "aa", "a"
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/llguidance/issues/11#issuecomment-2344113915, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BLFFSVV2XJX4S6RQURVN6T3ZWBU2NAVCNFSM6AAAAABOBD5H2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNBUGEYTGOJRGU.
You are receiving this because you authored the thread.

The only way I could add the S' ::= S is by also adding S' := "unrelated terminal" (see above). But it appears to work.

In the present implementation, you can't just stick in a new unit rule?

From: Michał Moskal @.>
Sent: Wednesday, September 11, 2024 12:32 PM
To: microsoft/llguidance @.>
Cc: Jeffrey Kegler (Muse and Gordon Consulting PLLC) @.>; Author @.>
Subject: Re: [microsoft/llguidance] Nullables bug (Issue #11)
The only way I could add the S' ::= S is by also adding S' := "unrelated terminal" (see above). But it appears to work.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/llguidance/issues/11#issuecomment-2344133580, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BLFFSVV5LUUNVQF6VR2RY6TZWBWBFAVCNFSM6AAAAABOBD5H2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNBUGEZTGNJYGA.
You are receiving this because you authored the thread.Message ID: @.***>

The rule gets optimized away, I can disable the optimization but the grammar getting out of Guidance is somewhat more convoluted.
BTW, for implementation I used this https://user.phil-fak.uni-duesseldorf.de/~kallmeyer/Parsing/earley.pdf

OK.  Thanks for the fast response! -- Jeffrey

From: Michał Moskal @.>
Sent: Wednesday, September 11, 2024 12:44 PM
To: microsoft/llguidance @.>
Cc: Jeffrey Kegler (Muse and Gordon Consulting PLLC) @.>; Author @.>
Subject: Re: [microsoft/llguidance] Nullables bug (Issue #11)
The rule gets optimized away, I can disable the optimization but the grammar getting out of Guidance is somewhat more convoluted.
BTW, for implementation I used this https://user.phil-fak.uni-duesseldorf.de/~kallmeyer/Parsing/earley.pdf
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/llguidance/issues/11#issuecomment-2344155561, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BLFFSVUE5GYN4XN2AMPR6JTZWBXOLAVCNFSM6AAAAABOBD5H2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNBUGE2TKNJWGE.
You are receiving this because you authored the thread.Message ID: @.***>

The Kallemeyer description looks good.  It does fix the bug.  In "Tabulation (3)" there is this line: "do until chart does not change any more:".  So it has the looping fix.
We can close this issue.  Thanks, Jeffrey

From: Michał Moskal @.>
Sent: Wednesday, September 11, 2024 12:44 PM
To: microsoft/llguidance @.>
Cc: Jeffrey Kegler (Muse and Gordon Consulting PLLC) @.>; Author @.>
Subject: Re: [microsoft/llguidance] Nullables bug (Issue #11)
The rule gets optimized away, I can disable the optimization but the grammar getting out of Guidance is somewhat more convoluted.
BTW, for implementation I used this https://user.phil-fak.uni-duesseldorf.de/~kallmeyer/Parsing/earley.pdf
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/llguidance/issues/11#issuecomment-2344155561, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BLFFSVUE5GYN4XN2AMPR6JTZWBXOLAVCNFSM6AAAAABOBD5H2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNBUGE2TKNJWGE.
You are receiving this because you authored the thread.
T

There are topics for investigation, but my core question is answered.  I therefore am closing this issue.

The Kallemeyer description looks good. It does fix the bug. In "Tabulation (3)" there is this line: "do until chart does not change any more:". So it has the looping fix. We can close this issue. Thanks, Jeffrey

I may be totally off-base (still a parsing beginner...), but this discussion looks to be talking about the same bug mentioned in Loupe Vaillant's Earley Parsing tutorial.
To steal some quotes and references from that tutorial...
That approach sounds like the one in Grune and Jacob (1990):

The easiest way to handle this mare’s nest is to stay calm and keep running the Predictor and Completer in turn until neither has anything more to add

If so, Loupe suggests a different fix attributed to Aycock and Horspool (2002):

When performing a prediction, if the predicted symbol is nullable, then advance the predictor one step.

The benefit of the second approach would be removing a layer of nesting -- not sure if there is a practical performance benefit or not though. Again, apologies if I'm off-base -- this just sounded familiar.

Yes, what I called the nullables bug is the one being described in that quote from Grune and Jacob 1990.  Marpa takes its solution from the other quoted source: Aycock and Horspool 2002.  I did an arxiv.org article on Earley and nullableshttps://arxiv.org/pdf/2303.04093.

From: Hudson Cooper @.>
Sent: Thursday, September 19, 2024 7:29 PM
To: microsoft/llguidance @.>
Cc: Jeffrey Kegler (Muse and Gordon Consulting PLLC) @.>; State change @.>
Subject: Re: [microsoft/llguidance] Nullables bug (Issue #11)
The Kallemeyer description looks good. It does fix the bug. In "Tabulation (3)" there is this line: "do until chart does not change any more:". So it has the looping fix. We can close this issue. Thanks, Jeffrey
I may be totally off-base (still a parsing beginner...), but this discussion looks to be talking about the same bug mentioned in Loupe Vaillant's Earley Parsing tutorialhttps://loup-vaillant.fr/tutorials/earley-parsing/empty-rules.
To steal some quotes and references from that tutorial...
That approach sounds like the one in Grune and Jacob (1990)http://dickgrune.com/Books/PTAPG_1st_Edition/:
The easiest way to handle this mare’s nest is to stay calm and keep running the Predictor and Completer in turn until neither has anything more to add
If so, Loupe suggests a different fix attributed to Aycock and Horspool (2002)https://courses.grainger.illinois.edu/cs421/sp2012/project/PracticalEarleyParsing.pdf:
When performing a prediction, if the predicted symbol is nullable, then advance the predictor one step.
The benefit of the second approach would be removing a layer of nesting -- not sure if there is a practical performance benefit or not though. Again, apologies if I'm off-base -- this just sounded familiar.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/llguidance/issues/11#issuecomment-2362370964, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BLFFSVTH3UHIBPP4EP4GZXLZXNM53AVCNFSM6AAAAABOBD5H2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNRSGM3TAOJWGQ.
You are receiving this because you modified the open/close state.


chore: update deployment image

Codecov Report

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

@@           Coverage Diff           @@
##           master     #147   +/-   ##
=======================================
  Coverage   26.41%   26.41%
=======================================
  Files          46       46
  Lines        3585     3585
=======================================
  Hits          947      947
  Misses       2524     2524
  Partials      114      114

Continue to review full report at Codecov.

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


Sort branch/tag dropdown by last modified

Description
I wonder if it's possible to add an option to sort the branch and tags list by last modified instead of alphabetical?
Screenshot

Example URLs
https://github.com/refined-github/refined-github

This annoys me too, I don't like the current order.
However I don't think we can actually do this here, we'd need to query the API and build the list ourselves, basically.
Can you send a request to GitHub?


'FileRouter' must be all exported or all local.ts(2395)

(alias) type FileRouter = {
[x: string]: Uploader;
}
import FileRouter
var FileRouter: any
Individual declarations in merged declaration 'FileRouter' must be all exported or all local.ts(2395)

Please reopen once you can provide a reproduction repo in order for us to debug what issue you're having.

I ran into a similar issue just now and the solution was to simply have VSCode use the workspace version of TypeScript (5.2.2 for me) rather than the default (4.8.4 for me).
I believe the root cause here is that satisfies was introduced to TypeScript into 4.9 so the default of version of TypeScript that VSCode was using didn't recognize it and showed errors as a result.
Before

After


Fix + improve vprintf implementation

We were trying to debug a kernel with printf, but then we realized %d and friends didn't work at all! So we dug in and made changes to vprintf that should allow it to support all sorts of common printf calls
Test code (mostly taken from https://cplusplus.com/reference/cstdio/printf/)
#include <stdio.h>
#include <cuda.h>

__global__ void kernel() {
    printf("Characters: %c %c \n", 'a', 65);
    printf("Decimals: %d %ld\n", 1977, 650000L);
    printf("Preceding with blanks: %10d \n", 1977);
    printf("Preceding with zeros: %010d \n", 1977);
    printf("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
    printf("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
    printf("Width trick: %*d \n", 5, 10);
    printf("%s \n", "A string");
    printf("I'm not formatting anything: %%s!\n");
}

Expected output (currently identical to CUDA's)
Characters: a A
Decimals: 1977 650000
Preceding with blanks:       1977
Preceding with zeros:<PHONE_NUMBER>
Some different radices: 100 64 144 0x64 0144
floats: 3.14 +3e+00 3.141600E+00
Width trick:    10
A string
I'm not formatting anything: %s!

Some of the code could've been done better, but well, at least now it works properly

Some of the code could've been done better, but well, at least now it works properly

Yes, te vprintf code is not very good. And difficult to test properly: last time I tried to capture from stdout handle it didn't work with HIP.
I should probably split printf into a separate file and test it on CPU with mocked __ockl_printf_*, but it's a story for another day.


Allow relabeling for promitor-agent-resource-discovery servicemonitor

Hey,
Would it be possible to add relabeling for the service monitor of the agent discovery, like it's done for the agent scrapper:
https://github.com/promitor/charts/blob/14c11c9ab76a34d1ab8598e3f622854d898d4ebe/promitor-agent-scraper/templates/servicemonitor.yaml#L30-L33
Thanks.

I'm open to contributions!


Memory leak

  get '/', provides: 'text/event-stream' do
    sse_stream &:close
  end

Just doing this and running this about 10 times shows an increase in mem usage.
httperf --server=localhost --port=3000 --uri=/ --num-conns=500 --rate=500

I've used EM.add_periodic_timer(5) { CG.start } and found it doesn't get collected.

Think EM is to blame here, see: https://github.com/eventmachine/eventmachine/issues/566

Jason, thank you for looking into that. I am not able to look into the issue right now, but I would happily accept patches if you find sinatra-sse to blame (or just a workaround.)


Threat model issue: warning against non-soft adversaries

Please look and consider the old but relevant: https://defuse.ca/truecrypt-plausible-deniability-useless-by-game-theory.htm
The same reasoning would be valid for your tool as well.
If your adversary is a soft and lawful adversary, plausible deniability is a reasonable measure.
If your adversary on the contrary is a hard adversary resorting to rubber-hose cryptanalysis (xkcd 5$ wrench, enhanced interrogation, or just plain torture), then this tool might worsen the situation considerably.

This article is about the problem of using TrueCrypt, which allows you to create a single hidden layer;
In case TrueCrypt usage is detected, the requirement to give out the hidden layer password would be quite reasonable, because then you can be sure that the container is decrypted in its entirety.
In the case of FractalCrypt, only part of the container can be decrypted, even knowing all the passwords; hence, denying the existence of truly secret data can be quite convincing, for example, by first giving out unclassified, and after a long interrogation giving out semisecret ones.
In addition, the article states that

In other scenarios the feature can be useful. If the attacker has limited resources (i.e. can only torture you for 30 minutes), or if you are "innocent until proven guilty" under the law, then it can be advantageous to use a hidden volume. Just don't recommend TrueCrypt to your friends in North Korea, or at least make sure they use a hidden volume.

In most situations, such as a police raid or criminal robbery, you will not be tortured to death.
However, it is really better not to use FractalCrypt in North Korea.
Translated with www.DeepL.com/Translator (free version)

This article is about the problem of using TrueCrypt, which allows you to create a single hidden layer;
In case TrueCrypt usage is detected, the requirement to give out the hidden layer password would be quite reasonable, because then you can be sure that the container is decrypted in its entirety.
In the case of FractalCrypt, only part of the container can be decrypted, even knowing all the passwords; hence, denying the existence of truly secret data can be quite convincing, for example, by first giving out unclassified, and after a long interrogation giving out semisecret ones.
In addition, the article states that
In other scenarios the feature can be useful. If the attacker has limited resources (i.e. can only torture you for 30 minutes), or if you are "innocent until proven guilty" under the law, then it can be advantageous to use a hidden volume. Just don't recommend TrueCrypt to your friends in North Korea, or at least make sure they use a hidden volume.

In most situations, such as a police raid or criminal robbery, you will not be tortured to death.
However, it is really better not to use FractalCrypt in North Korea.

The point is, if you use FractalCrypt against someone willing to torture you, they have zero incentive to not keep torturing you forever just in case you're not giving all the keys.
Your README is a bit misleading in making think it could be a good idea to use your project against those adversaries when it's not.

FractalCrypt is used to create the convincing illusion that you have issued all keys.
Being tortured for having FractalCrypt is like being tortured for suggesting that you may have buried a box of classified information somewhere in the woods.
If they want to torture you to death, no program can stop them from doing it. If they want to test you for some files on the disk, with FractalCrypt you can deny it convincingly enough.

FractalCrypt is used to create the convincing illusion that you have issued all keys.
Being tortured for having FractalCrypt is like being tortured for suggesting that you may have buried a box of classified information somewhere in the woods.

Except that, in this case, they found you with all the necessary tools to bury something in the woods on you.

If they want to torture you to death, no program can stop them from doing it. If they want to test you for some files on the disk, with FractalCrypt you can deny it convincingly enough.


fixes linker issue

First thank you for the excellent library and article with detailed benchmarks. When using this header with an extern struct defined which had a map field. I was getting the following linker issue
[build] duplicate symbol '_cc_omap_post_erase_fixup' in:
[build]     /VSCode/cc-cmake-issue/cmake-build-debug/CMakeFiles/test_cc_cmake_issue.dir/tests/test_cc_cmake_issue.c.o
[build]     libcc_cmake_issue.a[2](main.c.o)
[build] ld: 1 duplicate symbols

Changing the method signature to include static inline which matches the other function definitions resolved the issue.

Thanks for finding this bug! Certainly, that function should be static inline, like the others. I'll merge the pull request and issue a patch release ASAP.


Migrate prisma migrations into go-migrate

use auto generation by Prisma

migration files are already written manually for goapi
godelegator already used auto generation functionality, but it turns out to be missing some features, had to also manually update query files.
since there aren't much more left to migrate, closing the issue


When an IP (or whole endpoint) is removed, remove conntrack entries

@plwhite this should improve #618 and #617 as well as closing a potential security hole caused by address reuse.
Please can you review, then I'll add UT if you agree it's the right approach?
Oh, I also need to add the conntrack tool as a dependency of our debs/RPMs etc.

Couple of markups and back to you. I agree with the general idea of using the conntrack tool, but would like to see it moved into where we set the IP addresses up (devices.set_routes)
You'll also need to update our dependencies / docs (as you say), and add a line to CHANGE.md.

@fasaxc can we please get this marked-up, UTed and merged so we can close the issue down?  Thanks.

@matthewdupre I'll try to get to this today/tomorrow but I don't think it's critical to get it into this release if it slips out.

Made my markups, just UTs to fix and add.

@plwhite @matthewdupre Made my markups and added UT.  Back to you for rereview...

I haven't tested the deb/RPM changes, I figure the easiest (only?) way to test those is to let it build?

Deb / RPM changes look good.  Agreed there's no need for other testing there.
With you Peter to merge.

@matthewdupre I made a trivial markup to Shaun's fix - removing a few lines that he added, then failed to remove when he refactored. Can you please review the very final commit (should be utterly uncontroversial), after which I'll merge. Thanks


Is the package being maintained?

@ericnewton76
I notice it has been 2 years since a preview was made.
Is the project still being maintained? I hope so. Hope the maintainers are ok. 🤗

#900


add observer for CDVPluginHandleOpenURLNotification in branchsdk for fixing issue 478

👍

Thanks for this. I seem to have a similar issue. I tried targeting the branch directly in my project but failed.
Do you have any idea when a new version will be released containix this fix ?

@sambauwens it was merged yesterday. Can you please check . It should solve the issue else please let us know what you are facing and we will work on a fix

Well as I said, last time I tried targeting the fork directly from my project it failed :
ionic cordova plugin add https://github.com/sequoiaat/cordova-ionic-phonegap-branch-deep-linking.git#issue-478-fix

It threw an error when building through xocde, I'm not sure how to use the master branch which is not in a released version in npm. When I tried fixing the error it threw me down a cascade of build errors.
Cordova is not a very stable platform, sometimes I have to summon some black magic to bring my project back to sanity (like deleting the plugins folder), so I'm afraid of using unofficial releases of plugins.

Any word on when you'll have an official release?

I tried the 3.1.3 release and I get an error, the Branch global object is undefined (window['Branch']). I tried reinstalling 3.1.0 and worked fine, then tried the 3.1.3 again and the Branch object was undefined. I'm using ionic.

@sambauwens  - we saw the issue . there were some other PR's also that were merged into this release . i think we know the root cause.  We will try to isolate and release a fix it.What we saw is  Branch sdk is not getting installed/added automatically .

@sequoiaat do you have an idea on when a fix will be in place?

@sean-browze we are working on it right now as high priority item  We do not have a ETA but will try to release a fix before middle of next week.

@sequoiaat has this issue been resolved with 3.1.5?

We had to roll back this because of the issue in 3.1.3 release . we will do a release again with this feature.

@sequoiaat @aaaronlopez when are we going to get this released? I tested 3.1.5 and I'm having the same issue.

@sean-browze to reproduce want to confirm that with the new release 3.1.5 you are still getting  Branch global object is undefined (window['Branch']) error  on ionic ?

@sequoiaat 3.1.5 builds properly and I'm no longer getting that error. Still having the issue with #478. I know you had a fix for that so I'm wondering when it'll be released?

@sequoiaat doing a bit more testing and it seems that that fix for #478 is included in 3.1.5. All good now.


Java Tensorflow save & restore without using filesystem

System information

TensorFlow version (you are using): Up to date
Are you willing to contribute it (Yes/No):

Describe the feature and the current behaviour/state.
I previously opened a feature ticket and asking for a python approach.
https://github.com/tensorflow/tensorflow/issues/25839
I wasn't aware there is java tensorflow.
I would like to retrieve(instead of Save) training information and restore it to a Tensorflow session when necessary (without using a file system). I want to bypass filesystem.
I want to know a line of code or method that I can use to extract training data(as an object) and import it to (tf)session when necessary without me handling file path etc
to elaborate =>
I found that there is a way to retrieve updated weight values.
https://www.quora.com/How-do-I-print-weights-of-a-fully-connected-neural-network-in-tensorflow
//train your network here
sess.run(optimizer, feed_dict={x:data, y:labels}
print("layer 1 weights:", sess.run(W1))
print("layer 2 weights:", sess.run(W2))
Rather than handling each individual tensor information, I want to extract the whole training information (as an object) and import it to (tf)session when necessary.
I have looked at the followings and searched but was not successful.
https://www.tensorflow.org/guide/saved_model
https://stackoverflow.com/questions/33759623/tensorflow-how-to-save-restore-a-model
Why does this feature not appear already present?
Will this change the current API? How?
no, I just need(or to know) an additional API.
Who will benefit with this feature?
It will make the use of Tensorflow lib much more flexible.
Any Other info.

@allenlavoie @jvishnuvardhan   Thank you for working on this feature! I really appreciate it 👍

@cosmir17,
Have you got the chance to check SavedModelBundle and SavedModelBundle.Loader, where SavedModelBundle represents a model loaded from storage and SavedModelBundle.Loader will provide the options for loading a SavedModel.

SavedModelBundle
load()Load a SavedModelBundle with the configured options.

SavedModelBundle.Loader
withConfigProto(byte[] configProto)Set configuration of the Session object created when loading the model.

SavedModelBundle.Loader
withRunOptions(byte[] options)Sets options to use when executing model initialization operations.

SavedModelBundle.Loader
withTags(String... tags)Sets the set of tags that identify the specific graph in the saved model to load.

https://www.tensorflow.org/api_docs/java/org/tensorflow/SavedModelBundle
https://www.tensorflow.org/api_docs/java/org/tensorflow/SavedModelBundle.Loader
Thank you!


mav_local_planner failing to plan around the obstacles

Greetings,
I am trying to plan the local path in the known ESDF map in simulation. The launch file is as supplied with the package , firefly_sim.launch, is used for experimentation. The waypoint are fed using the planner panel of the RViz.
The planner was unable to plan around obstacles. Is there any crieteria defined for choosing waypoints? Is it expected by mav_local_planner that the sequence of waypoints will avoid the obstacles i.e. the straight line path between current location to the waypoint will not be through the obstacle.
Although, the associated paper "Safe Local Exploration for Replanning in Cluttered Unknown Environments for Micro-Aerial Vehicles" do mention that obstacles can be avoided by the local planner. How I can use the released code to run the exploration behaviour of the cited paper?
Thank you for your time and releasing the code.
Regards,
Nitin

I also met the same problem ,have you solve it?

No


Expose SortingColumn when reading and writing parquet metadata

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Storing sorted data in parquet is often a key performance technique as it "clusters" data in interesting ways than can make predicate evaluation and other query techniques faster.
The parquet file format contains a way to encode the sortedness of data stored there using a "SortingColumn" in the format
https://github.com/apache/parquet-format/blob/54e53e5d7794d383529dd30746378f19a12afd58/src/main/thrift/parquet.thrift#L685-L698
Which is then in the RowGroup metadata:
https://github.com/apache/parquet-format/blob/master/src/main/thrift/parquet.thrift#L829-L832
However, I did not find any code to read/write this metadata yet in the parquet crate
https://sourcegraph.com/search?q=context:global+repo:^github\.com/apache/arrow-rs%24+SortingColumn&patternType=standard
Describe the solution you'd like
I would like some way to provide the parquet writer the SortingColumn when creating RowgroupMetadata
Perhaps we could add something to the WriterProperties
https://docs.rs/parquet/26.0.0/parquet/file/properties/struct.WriterProperties.html
Likewise, I would like a way to get the relevant SortingColumn list from RowGroupMetadata:
https://docs.rs/parquet/26.0.0/parquet/file/metadata/struct.RowGroupMetaData.html
Describe alternatives you've considered
It might be worth considering having the parquet writer determine automatically if the data was sorted (maybe this would be better than letting the caller have to verify it)? However, verifying in the writer would likely be a significant performance hit.
Additional context
DataFusion is getting more sophisticated in its ability to track and use sortedness information (e.g. https://github.com/apache/arrow-datafusion/pull/4122). If this metadata was included in the parquet file, DataFusion might be able to take more advantage of it: https://github.com/apache/arrow-datafusion/issues/4177.
There is more discussion about this topic here https://github.com/apache/arrow-datafusion/issues/4169#issuecomment-1311572149

I'll attempt this one.

Looks like even the Java parquet implementations didn't read the Sort Columns info when it read the footer and try to convert the parquet meta.
https://github.com/apache/parquet-mr/blob/master/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java

It seems to have been around a while https://github.com/apache/parquet-format/commit/934da01871738a54e545a29ed52cd62d99c9e3d9
But I don't know the history.
Interesting


Running Flutter Gallery from Kernel fails unless disable causal-async-stacks

Unless disable causal-async-stacks, running Flutter dill files on the devices fails again because https://codereview.chromium.org/2936793003/ for original dartbug.com/30058 got reverted.
Running flutter app dill in debug mode with '--causal-async-stacks' results in the following error produced during runtime:
I/flutter (19066): The following assertion was thrown building Title("Flutter Galllery"; color: MaterialColor(primary
I/flutter (19066): value: Color(0xff9e9e9e)); dirty):
I/flutter (19066): type 'int' is not a subtype of type 'Function' of 'async_op' where
I/flutter (19066):   int is from dart:core
I/flutter (19066):   Function is from dart:core
I/flutter (19066):
I/flutter (19066): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter (19066): more information in this error message to help you determine and fix the underlying cause.
I/flutter (19066): In either case, please report this assertion by filing a bug on GitHub:
I/flutter (19066):   https://github.com/flutter/flutter/issues/new
I/flutter (19066):
I/flutter (19066): When the exception was thrown, this was the stack:
I/flutter (19066): #0      _asyncStackTraceHelper (dart:async)
I/flutter (19066): #1      SystemChrome.setApplicationSwitcherDescription (package:flutter/src/services/system_chrome.dart)
I/flutter (19066): #2      Title.build (package:flutter/src/widgets/title.dart:33:18)
I/flutter (19066): #3      StatelessElement.build (package:flutter/src/widgets/framework.dart:3489:28)
...

Isn't this a duplicate of #30058?


docs: mention http fetcher and poster in README.md

About the changes

Added a small mention in documentation that it is possible to override the http calls done by the SDK to perform actions such as certificate pinning.

Closes #9

Important files

README.md
Discussion points

Felt that it was missing, I had to dig into the SDK code to discover that it was possible to override the http calls.
I plan to have some "hidden" things behind flips and having pinning is one way to make it a bit more complex for attackers to intercept traffic. I guess this will be the same for many people with production apps.

Sure, let's make it more discoverable for people. The fetcher and poster are supposed to be swappable for whatever reason you have. We can leave your example in the docs.


pip_audit, test: generalize caching middleware

This makes our OSV adaptor use the same caching middleware as our PyPI adaptor. Notably it does not currently improve performance, since OSV doesn't appear to be sending ETags or other caching headers with its response:
content-type: application/json
grpc-accept-encoding: identity,deflate,gzip
accept-encoding: identity,gzip
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
grpc-status: 0
grpc-message:
x-envoy-decorator-operation: ingress QueryAffected
x-cloud-trace-context: 0fce3535ef964b43794e46a0431db0f1
date: Mon, 06 Dec 2021 16:18:56 GMT
server: Google Frontend
content-length: 1197

That being said, I think we should still merge it -- it'll be handy for #187 as well, and it will improve our performance on OSV if/when ETags are added.
Closes #179.

Notably it does not currently improve performance, since OSV doesn't appear to be sending ETags or other caching headers with its response

Given that the OSV API uses POST requests, we might never get ETags there. I created https://github.com/google/osv/issues/274 to determine what the right way to cache OSV should be. In the meantime, we should move forward with this regardless.


Need to create 'postCard' for each individual post

i'm only displaying the big array of JSON right now, and it should be a nice card that links to the details page

The post cards are created but now they need to be linked up with details page.


Datepicker shows selected date when opened

fixes #1671 by having the calendar with the selected date visible when the datepicker is shown. If no selected date is present today's date is used.
Also adds show and hide methods, along with 'shown' and 'hidden' events. These will need to be documented.
Unit tests have been added to accompany these additions.
I've funneled all entry and exit points through the show and hide methods. I wanted to make use of show.bs.dropdown instead of shown.bs.dropdown (in order to switch the calendar screen before the dropdown was made visible) but could not due to a bug with Bootstrap's dropdown (https://github.com/twbs/bootstrap/blob/master/js/dropdown.js#L80 should be return false;). That bug is unlikely to be fixed, so shown.bs.dropdown will have to do. There is no visible impact anyway since the calendar screen renders very quickly (it's the same thing used when switching months)

see https://github.com/ExactTarget/fuelux/issues/1671#issuecomment-175112271 for "enhancement" label removal


Ensure binary messages are serialized to base64 in Panel Comm layer

📝 Summary
Ensures binary messages sent from the frontend to Python are serialized from binary ArrayBuffers to base64 strings.
🔍 Description of Changes
Adds code on the frontend to convert Bokeh Buffer objects to base64 and convert the base64 buffers arriving in Python into memoryview objects expected by the Bokeh protocol
📋 Checklist

[x] Fixes https://github.com/marimo-team/marimo/issues/979
[x] I have read the contributor guidelines.
[ ] For large changes, or changes that affect the public API: this change was discussed or approved through an issue, on Discord, or the community discussions (Please provide a link if applicable).
[ ] I have added tests for the changes made.
[x] I have run the code and verified that it works as expected.

📜 Reviewers
@mscolnick please review.
I wasn't aware that binary transport was not supported at all. Is there any chance this could be enabled? Panel applications often push a lot of data across the websocket and base64 encoding/decoding adds major overhead.

awesome, thank you for the fix! going to merge and fix the unrelated errors on main

Thanks @mscolnick, any prospect of adding binary support eventually?


External configuration for pipelines  is no longer working since 2.4.0

Component
server
Describe the bug
When WOODPECKER_CONFIG_SERVICE_ENDPOINT is set, woodpecker server does not attempt (not even calls the remote endpoint). It works correctly when woodpecker is downgraded to v2.3.0
System Info
Linux, both debian and ubuntu

Additional context
No response
Validations

[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Checked that the bug isn't fixed in the next version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]

:ok_hand:  I missed it sorry. @qwerty287 is not this an issue severe enough to release a fix version? thanks


fix: prisma2 introspect for mysql database

When using prisma2 init I can create a connection with my mysql connection and get a prisma.schema generated. However when I run prisma2 introspect it gives me Please provide a database name error. Schema is not necessary for mysql but it is for Postgres so I updated the statements to support MySQL as well.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Ha, database vs. schema already caused bugs in Prisma 1 ;)

Thanks for the PR!
This bug was not reported but I can confirm it.

@divyenduz will look into both the bug and the possible fix via this PR to check if this solves the problem.

Do you want me to post a before/after gif?

@wardpeet That would be great thanks 🙌


Importing @digitalcredentials/did-method-key in React Native breaks iOS build

The library: https://github.com/digitalcredentials/did-method-key-js
Expected behavior:

Library can be imported using ES6 modules with import syntax
Build is not broken after importing library

Actual behavior:

When using import syntax, this error shows up in XCode when building the application: esm.js: module could not be found within the project
When using require syntax (seen in Cred Wallet repo), a new error occurs during XCode build: Error loading assets JSON from Metro. Ensure you've followed all expo-updates installation steps correctly. Unable to resolve module crypto from<EMAIL_ADDRESS>crypto could not be found within the project.

What I have tried:

Removing all imports of @digitalcredentials/did-method-key-js fixes the build
I tried varying import and require syntax
I tried installing crypto via yarn add crypto with no change in symptoms

Code from only file so far where I import this library:
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import { generateSecureRandom } from 'react-native-securerandom';
import DidMethodKey from '@digitalbazaar/did-method-key';

import { DidKey, DidDocument } from '../../types/did';
import { DidRecord, DidRecordRaw } from '../../model';

const didKeyDriver = DidMethodKey.driver();

export type DidState = {
  rawDidRecords: DidRecordRaw[];
};

const initialState: DidState = {
  rawDidRecords: [],
};

const mintDid = createAsyncThunk('didState/mintDid', async (_, { dispatch }) => {
  const { didDocument, keyPairs } = await didKeyDriver.generate({
    randomBytes: await generateSecureRandom(32),
  });

  const [
    verificationKey,
    keyAgreementKey,
  ]: DidKey[] = Array.from(keyPairs.entries()).map(
    (pair) => pair.export({ publicKey: true, privateKey: true }),
  );

  await dispatch(addDidRecord({ didDocument, verificationKey, keyAgreementKey }));
  await dispatch(getAllDidRecords());
});

const getAllDidRecords = createAsyncThunk('didState/getAllDidRecords', async () => ({
  rawDidRecords: await DidRecord.getAllDidRecords(),
}));

const addDidRecord = createAsyncThunk('didState/addDidRecord', async ({
  didDocument,
  verificationKey,
  keyAgreementKey,
}: {
  didDocument: DidDocument,
  verificationKey: DidKey,
  keyAgreementKey: DidKey,
}, { dispatch }) => {
  await DidRecord.addDidRecord(didDocument, verificationKey, keyAgreementKey);
  await dispatch(getAllDidKeys());
});

const deleteDidRecord = createAsyncThunk('didState/deleteDidRecord', async (rawRecord: DidRecordRaw, { dispatch }) => {
  await DidRecord.deleteDidRecord(rawRecord);
  await dispatch(getAllDidRecords());
});

const didSlice = createSlice({
  name: 'didState',
  initialState,
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getAllDidRecords.fulfilled, (state, action) => ({
      ...state,
      ...action.payload,
    }));
  },
});

export default didSlice.reducer;
export {
  mintDid,
  getAllDidRecords,
  addDidRecord,
  deleteDidRecord,
};

Packages currently installed in project:
{
  "scripts": {
    "start": "react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "lint": "eslint --max-warnings 0 ./app ./App.tsx && tsc --noEmit"
  },
  "dependencies": {
    "@digitalbazaar/did-method-key": "^2.0.0",
    "@digitalbazaar/ed25519-verification-key-2020": "^3.1.0",
    "@digitalbazaar/vc": "^1.0.0",
    "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0",
    "@digitalcredentials/did-method-key": "^1.0.0",
    "@expo-google-fonts/rubik": "^0.2.0",
    "@expo/vector-icons": "^12.0.0",
    "@react-native-community/masked-view": "0.1.10",
    "@react-navigation/material-bottom-tabs": "^6.0.1",
    "@react-navigation/native": "^6.0.1",
    "@react-navigation/stack": "^6.0.1",
    "@reduxjs/toolkit": "^1.6.1",
    "@types/bson": "^4.0.5",
    "@types/text-encoding": "^0.0.36",
    "bson": "^4.4.1",
    "crypto": "^1.0.1",
    "expo": "~42.0.1",
    "expo-app-loading": "^1.1.2",
    "expo-font": "~9.2.1",
    "expo-secure-store": "~10.2.0",
    "expo-splash-screen": "~0.11.2",
    "expo-status-bar": "~1.0.4",
    "expo-updates": "~0.8.1",
    "moment": "^2.29.1",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "~0.63.4",
    "react-native-aes-cipher": "^1.0.9",
    "react-native-camera": "^4.0.3",
    "react-native-circular-progress": "^1.3.7",
    "react-native-element": "^1.2.1",
    "react-native-elements": "^3.4.2",
    "react-native-fs": "^2.18.0",
    "react-native-gesture-handler": "~1.10.2",
    "react-native-get-random-values": "^1.7.0",
    "react-native-keyboard-aware-scroll-view": "^0.9.4",
    "react-native-pager-view": "5.0.12",
    "react-native-paper": "^4.9.2",
    "react-native-permissions": "^3.0.5",
    "react-native-qrcode-scanner": "^1.5.4",
    "react-native-reanimated": "~2.2.0",
    "react-native-safe-area-context": "3.2.0",
    "react-native-screens": "~3.4.0",
    "react-native-securerandom": "^1.0.0",
    "react-native-share": "^7.0.2",
    "react-native-svg": "^12.1.1",
    "react-native-tab-view": "^3.0.0",
    "react-native-unimodules": "~0.14.5",
    "react-native-uuid": "^2.0.1",
    "react-native-vector-icons": "^8.1.0",
    "react-native-web": "~0.13.12",
    "react-redux": "^7.2.4",
    "realm": "^10.6.1",
    "text-encoding": "^0.7.0"
  },
  "devDependencies": {
    "@babel/core": "^7.9.0",
    "@types/react": "~16.9.35",
    "@types/react-native": "~0.63.2",
    "@typescript-eslint/eslint-plugin": "^4.29.1",
    "@typescript-eslint/parser": "^4.29.1",
    "eslint": "^7.32.0",
    "eslint-plugin-react": "^7.24.0",
    "eslint-plugin-react-native": "^3.11.0",
    "typescript": "~4.0.0"
  },
  "private": true,
  "name": "expo-edu-wallet",
  "version": "1.0.0"
}

@dmitrizagidulin - can this issue be closed?

@dmitrizagidulin - can this issue be closed?

Yeah, let's close it as overtaken by events.


Service resolution returns incorrect interface for keyvalue.expirable

I've encountered a minor issue with the container service resolution returning an incorrect interface when loading the keyvalue.expirable service through the container.
This can be duplicated using just core files with:
phpstan analyze --level 3 web/core/lib/Drupal.php
 380    Method Drupal::keyValueExpirable() should return Drupal\Core\KeyValueStore\KeyValueStoreExpirableInterface but returns Drupal\Core\KeyValueStore\KeyValueStoreInterface.
I've also duplicated this in a plugin implementing ContainerFactoryPluginInterface using $container->get('keyvalue.expirable')->get('something')

I had originally though this was a phpstan-drupal issue due to an incorrect test case on the PHPStan playground, however after creating a more accurate test case I can see this is able to be duplicated without phpstan-drupal.
https://phpstan.org/r/287481fe-f00d-4b58-94a6-b70542131abf/
I'm going to have to look into if this is a Drupal Core issue or a PHPStan issue however this issue can be closed.


sx prop re-renders

I really like the API of being able to pass styles directly to components inline using sx.
The one downside is that it can trigger re-renders on every parent render, since the styles create a new sx object prop.
A few possible solutions:

Follow a styled components type approach, and create a styled function:

import { styled, Box } from 'dripsy'

const Page = styled(Box)(props => ({
  backgroundColor: ['primary', 'secondary']
}))

Could there be some sort of smart memoization / deep comparison that checks the sx prop, and doesn't re-render if it matches? I am usually very, very way of deep comparison, as it's not recommended by react in almost all cases (see here.)

One option could be to JSON.stringify the sx prop and compare if this changed. The problem with that approach is that styles can a) contain animated values, and b) have functions:
// not JSON serializable...
<View sx={{ height: theme => theme.sizes[1] }} />

Basically, it would be nice if there were no concerns about passing style props inline for performance. I haven't done extensive testing on this, but I imagine it could have some downsides.

Not sure if this is 100% related but it does relate to the sx prop. Is jsx pragma something that we want to consider including?
Now that you brought this up I'm not sure what the performance implications might be or if it's even necessary if we export the majority of components, but I can see a scenario where someone might want to style a component outside of the library with the sx prop.

Is jsx pragma something that we want to consider including?

I hadn't thought about it too much. I'm open to it, the only problem is that the pragma uses just CSS styles, whereas this lib requires hooks to track the screen width and such. I can see how it's really convenient. I personally prefer just importing components and using them, but if people find it really convenient maybe it'd be better to try to include it. We would have to wrap the entire component that is receiving the sx prop with the createThemedComponent function, rather than just inject a style function the way theme-ui does.

I thought more about the performance here. I think the easiest solution is to just use a styled function:
import { styled, View } from 'dripsy'

const Background = styled(View)({
  backgroundColor: ['secondary', 'primary']
})

// or
const Background = styled(View)(props => ({
  backgroundColor: ['secondary', props.selected ? 'primary' : 'grey']
}))

And similar to styled-components, you'd declare these outside of your component code.

I hadn't thought about it too much. I'm open to it, the only problem is that the pragma uses just CSS styles, whereas this lib requires hooks to track the screen width and such. I can see how it's really convenient. I personally prefer just importing components and using them, but if people find it really convenient maybe it'd be better to try to include it. We would have to wrap the entire component that is receiving the sx prop with the createThemedComponent function, rather than just inject a style function the way theme-ui does.

I don't mind importing the component either. The main use case for the jsx pragma in my experience is the ability to style components from outside libraries without needing to create a new component. Obviously this is easily alleviated by using the styled function or createThemedComponent function to wrap a third party component but it can be handy to just style it using sx without anything but the jsx pragma. Personally I'm fine with either approach and don't have a huge opinion either way.

I thought more about the performance here. I think the easiest solution is to just use a styled function:

Would this replace the sx prop entirely? I personally think the styled function is a less elegant solution than the sx prop because in my experience it often leads to writing much more code than you would with just the sx prop. It's also annoying to have to pass additional props to the styled component then redeclare the prop types for your newly styled component when using typescript.
Performance is definitely important especially when we start to get on the native side of things. I'm curious if there's a way to get the sx prop without a drop in performance or unnecessary rerenders. Does this library https://github.com/samjbmason/theme-ui-native run into a similar issue? I'm not sure if they have something that we're missing. I'd be glad to help look into a solution for this because I do feel strongly about the sx prop.

I definitely view the sx prop as staying forever and being the primary API. The styled function would just be an option if you want to avoid re-renders / style your components outside of the scope. It would be strictly optional and secondary to the sx prop.

I'd love to look into performance optimizations for the sx prop too, since I'll likely rely on this API often as well.

This may be relevant https://github.com/FormidableLabs/react-fast-compare

Another idea thinking about this. Not the most "simple", but dripsy could implement something like https://github.com/andywer/use-inline-memo and provide a useSx hook that lets you generate memoized styles.

This article (https://sebastienlorber.com/records-and-tuples-for-react) by @slorber about upcoming Records/Tuples appears to be promising. I'm not too familiar with how they'll work yet, but this is my impression.
It seems like records would help for any SX prop that only uses primitive values within objects. For example:
// works
const Memoized = () => <Box
  sx={#{ bg: #['blue', 'red'] }}
/>

// fails
const Fails = () => <Box
  sx={#{ bg: theme => [theme.primary, theme.secondary] }}
/>

For the case of wanting to use dynamic theme values, we could allow the sx prop to be a function, as discussed above, where it returns an immutable record:
const Styled = () => <Box
  sx={theme => {
    return #{ bg: #[theme.primary, theme.secondary] }
  }}
/>

For the function prop example here, we could have a `React.memo` function that compares `prevProps.sx(theme) === nexxtProps.sx(theme)`, and not re-render if they match.

I'll close this once the styled issues are fixed, and when the style prop is moved to StyleSheet.create()

What does it take to move the style prop over to Stylesheet.create(). Is it a matter of simply wrapping the styles as they are being processed in the css function?

Yeah, I believe so. I think I'd turn them into stylesheet objects in useMemo in createThemedComponent. It's unclear to me how much better this would be, but I see on RNW's docs that it's recommended for better performance. As for the responsiveSSRStyles, I'd probably have to loop through each one of these and use StyleSheet.create for each.
I think it would have no effect on native, where StyleSheet.create is nothing more than a JS object.

I'm bubbling this issue back up.
Lately I've been thinking about static extraction of styles.
This tweet prompted me to think about performance solutions.
Ideally, any sx prop that receives an object inline that is static (ie doesn't use any variables from render code), should get turned into an object outside of render code. This means that any static styles get generated at build time, not runtime. This prevents react from recalculating styles on the fly. We could also use StyleSheet.create outside of render code.
Perhaps this could be done as some sort of Babel/Webpack plugin. I wish I had experience with either, but I don't. It could fit nicely with the JSX pragma, perhaps(?)
Some inspiration for the idea:

https://github.com/martinandert/babel-plugin-css-in-js
https://github.com/z0al/react-native-styled.macro
https://github.com/jsxstyle/jsxstyle/ (see webpack plugin) heard through

Could use this maybe: https://github.com/kentcdodds/babel-plugin-macros

For what it's worth there are some useful presets here
https://github.com/jamiebuilds/babel-react-optimize
But not sure it handles this case.
Read the babel handbook to understand how to write such optim plugin
Le lun. 2 nov. 2020 à 07:47, Fernando Rojo<EMAIL_ADDRESS>a
écrit :

Could use this maybe: https://github.com/kentcdodds/babel-plugin-macros
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nandorojo/dripsy/issues/12#issuecomment-720273828,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFW6PTWUNZ6F2KRSEOBREDSNZIZRANCNFSM4O6WQ6JA
.

Got it, good to know, thanks @slorber. I'll look into that.
I got some guidance from it here. It seems that it might be a bit complicated, given that we have to traverse the root app theme to determine if styles are constants. Not really sure since I'm so new to Babel.

This project from @natew looks very interesting. He mentioned to me on Twitter that he plans to use the array syntax for media queries, too. Since snack UI figured out a way to compile down to HTML views, using it under the hood could mean abandoning Fresnel for an approach that is closer to the metal. This assumes Snack UI ends up figuring out how to do media queries with CSS, meaning it's compatible with SSR.
(It also assumes all styles map from react native primitives to web styles the way that RNW intends. I haven't tested, but it would appear that it does.)
Link: https://github.com/natew/snackui

More discussion on this at https://github.com/necolas/react-native-web/issues/1801 and https://github.com/react-native-community/discussions-and-proposals/issues/254#issuecomment-650392950.

I've been looking more at Snack UI: https://github.com/snackui/snackui
The static and Babel plugin truly go over my head, but it might be worth trying to learn how this all works. Seems like it makes pretty big performance strides.

I've been looking more at Snack UI: https://github.com/snackui/snackui
The static and Babel plugin truly go over my head, but it might be worth trying to learn how this all works. Seems like it makes pretty big performance strides.

Yeah, it looks pretty cool. From my understanding, if we were to create a babel plugin, would we be able to drop fresnel in lieu of media queries?

Yeah, it looks pretty cool. From my understanding, if we were to create a babel plugin, would we be able to drop fresnel in lieu of media queries?

Good question...I'm actually not sure. Judging by this plugin alone, I think the answer is no, since it seems like they use JS client-side media queries and thus don't support SSR.
If we built on top of it, possibly.
It seems like a key benefit we'd get is that any Views that don't use RN logic would be compiled down to simple divs, and their styles would use optimized CSS rather than recomputing constantly. Apparently this leads to much snappier rendering.
As for getting rid of fresnel, this would require applying our styles in pure CSS. Maybe we could add this feature for the simple divs, but any RN View with more logic would probably still require fresnel. The only workaround would be to patch-package RNW to allow className, which doesn't seem like a great idea.
On another note, I have found the Sizer component I mentioned in another issue super useful in my app. I also creates a native div and uses theme-ui for breakpoints, meaning it only uses CSS. It's nice for flex boxes and such. I plan on adding it to Dripsy's core.

Good question...I'm actually not sure. Judging by this plugin alone, I think the answer is no, since it seems like they use JS client-side media queries and thus don't support SSR.
If we built on top of it, possibly.
It seems like a key benefit we'd get is that any Views that don't use RN logic would be compiled down to simple divs, and their styles would use optimized CSS rather than recomputing constantly. Apparently this leads to much snappier rendering.
As for getting rid of fresnel, this would require applying our styles in pure CSS. Maybe we could add this feature for the simple divs, but any RN View with more logic would probably still require fresnel. The only workaround would be to patch-package RNW to allow className, which doesn't seem like a great idea.
On another note, I have found the Sizer component I mentioned in another issue super useful in my app. I also creates a native div and uses theme-ui for breakpoints, meaning it only uses CSS. It's nice for flex boxes and such. I plan on adding it to Dripsy's core.

This is certainly a lower priority, but I might look into it as a weekend project.

This is certainly a lower priority, but I might look into it as a weekend project.

Recent optimizations with stylesheet should solve most of this, since it's now cached and stringified.

@nandorojo @cmaycumber  Do you think a plugin like this might be worth?
function App() {
  return (
    <>
      <View sx={{ backgroundColor: "black" }} />
      <View sx={{ marginTop: "100", paddingVertical: 20 }} />
    </>
  );
}

Converts to
import { useMemo as _useMemo } from "react";

function App() {
  const _sx = _useMemo(
    () => ({
      1: {
        backgroundColor: "black",
      },
      2: {
        marginTop: "100",
        paddingVertical: 20,
      },
    }),
    []
  );

  return (
    <>
      <View sx={_sx["1"]} />
      <View sx={_sx["2"]} />
    </>
  );
}

Cases
1. sx remains untouched if it contains any variables.
function App() {
  const padding = 10;
  return (
    <>
      <View sx={{ backgroundColor: "black", padding }} />
      <View sx={{ marginTop: "100", paddingVertical: 20 }} />
    </>
  );
}

will be converted to
import { useMemo as _useMemo } from "react";

function App() {
  const _sx = _useMemo(
    () => ({
      2: {
        marginTop: "100",
        paddingVertical: 20,
      },
    }),
    []
  );

  const padding = 10;
  return (
    <>
      <View
        sx={{
          backgroundColor: "black",
          padding,
        }}
      />
      <View sx={_sx["2"]} />
    </>
  );
}

This case is considered because when it contains a variable, it gets harder to find location to put useMemo.
e.g.
function App() {
    if (boolean) return null;

    const a = 10;
    return <View  sx={{padding: a}} />
}

Here, we might have to move the variable a above the condition and add useMemo.
2. Nit pick but it's hard to tell if a function returning JSX will be used as a react component.
e.g.
const Component = () => <View sx={{bg: "black" }} />

can be used as <Component /> or Component();
This makes it difficult to recognize whether useMemo should be added or not, one heuristic I can think of is if a function name starts with a capital letter it can be considered as a react component and try to memoize sx props.

@intergalacticspacehighway very cool! what do you think of this case?
const Component = () => {
  const renderBox = () => <View sx={{ bg: 'background' }} />

  return <View>{renderBox()}</View>
}

I also was thinking that under the hood, I could use the new SWR hashing function to deep compare sx props under the hood, created from this issue: https://github.com/vercel/swr/pull/1429

@nandorojo  This output was generated from the plugin. The plugin is simple, it works like this.

Verify function starts with capital letter (To detect react component)
Traverse all the JSX elements and search for sx attribute that is an object. e.g. sx={{x: y}}
Check if sx doesn't have a variable, If not, prepare to put it in useMemo or else don't touch it.
Construct the memo object and put it at the start of the function and replace sx attributes.

I can push a version and a playground file where one can test all the cases.
import { useMemo as _useMemo } from "react";

const Component = () => {
  const _sx = _useMemo(() => ({
    1: {
      bg: 'background'
    }
  }), []);

  const renderBox = () => <View sx={_sx["1"]} />;

  return <View>{renderBox()}</View>;
};

The hashing function looks cool! Maybe we can test the performance with new hash function on any app and try the babel plugin as well and verify if it adds any overall benefit.

Technically, if there are no variables, the sx variable could be outside of render. However, this could make things more complicated if there are multiple components, etc

Yes. This can be done by creating global like object and using it for each component with an identifier. I still think useMemo "might" be better as it'll be shortlived and gets garbage collected on component unmount. This needs performance testing to confirm though.

Yeah the garbage collection is a good point

Dripsy v3 will automatically memoize the sx prop under the hood using stableHash from swr. See here


PR for search page

Correction nav href in search page
Reuse home page header for the homogeneity of the site
Display 3 articles per row

** I noticed that you have the web site 2 times in your repo (root and public/ ). I modified the file in the root.
If you want some other modifications, I'm open.
Thanks giving me the opportunity for my first pull request !

@uybera Thanks for your contribution your pr will be shortly review and merge by the maintainer.

Hey @uybera I appreciate your work. But it could be more perfect if you do these things
Articles will look much better if you put them vertically
my blogs are already written you can add that link directly
Hope you understand. Looking forward to collaborate on more such work.

Hello @Sajiyah-Salat ,
I've made the modification to display articles vertically.
Concerning your blogs, I don't see where you put them.
I just see 2 blogs  :

The charming Toaday  [blogspot2.html]
The Miracle of Exercise  [blogspot.html]

but not the others.
Thanks;

Thanks for contributing you pr will be merged after being reviewed by maintainer in 24 hours. Happy coding

Hey @uybera I appreciate your work and changes you have made shows your progress but  I would like to know you that your pr is still not upto mark and you can do this to get it merged
Take inspiration from this : https://blogweb-c94c0.web.app/
put some sapce at left and make it little bit center
Remove line box from year
Excited for your pr to be merged
Happy Coding

Hey @Sajiyah-Salat ,
I have taken your remarks into consideration.
Please tell me if any other modification is necessary.
Thanks,

Hey can you please change the color to f8f3f3 of home-articles. What do you think if this color changes this will look good then... right?

Hey @uybera can I know your LinkedIn handle as I want to give you shout out there because of your good work for community


Change Rails/RootPathnameMethods to detect offenses on Dir.[]

Added support for Dir.[].
One of the most commonly used example of this pattern is the following code, generated by rspec-rails gem:
# bad
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }

# good
Rails.root.glob('spec/support/**/*.rb').each { |f| require f }

Before submitting the PR make sure the following are checked:

[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
[x] Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.
[ ] If this is a new cop, consider making a corresponding update to the Rails Style Guide.

This looks good to me. Can you rebase with the latest master branch?


tiny rewording for clarity

I believe it’s time to leave the “tl;dr” joke behind (in general) and
use a simple (standard… if not stylish) word that is easier to
translate and to understand for all: “summary”.

Kkk
Sent from my iPhone

On Nov 25, 2017, at 4:20 PM, Kevin Busby<EMAIL_ADDRESS>wrote:
I believe it’s time to leave the “tl;dr” joke behind (in general) and
use a simple (standard… if not stylish) word that is easier to
translate and to understand for all: “summary”.
You can view, comment on, or merge this pull request online at:
https://github.com/standard/standard/pull/1020
Commit Summary
tiny rewording for clarity
File Changes
M docs/RULES-en.md (2)
Patch Links:
https://github.com/standard/standard/pull/1020.patch
https://github.com/standard/standard/pull/1020.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@earthrid Thanks for the PR. I'm fine with this change, but it looks like this PR doesn't merge cleanly anymore. Sorry to bother you, but can you resend it?


Is this template set up to use scss, less, styles, pug, haml, etc...?

In the vue-webpack template I can simply declare to use scss or pug or whatever preprocessor on a per component file basis, like so:
<style lang="scss" scoped>

Is it the same for this template?
Thank you :-)

Yes, it is supported, just make sure you install the right dependencies:
# npm
npm install -D sass-loader node-sass pug

# yarn
yarn add --dev sass-loader node-sass pug

schweet, thanks :-)


On what hardware did you conduct the experiments?

On what hardware did you conduct the experiments? How long did training from scratch take? Just to get sense of the hardware requirements.
Thanks!

We use the Titan X Pascal.

Thanks.


Incorrect argument label in call (have 'where:', expected 'after:')

Hi,
Since updating to the latest version of Bond, I'm now getting this error:
Incorrect argument label in call (have 'where:', expected 'after:')

on this code:
if let index = fcpRecentLibraries.index(where: { $0.url == url })

I can't find a new equivalent for this function. What's happened to it?

Due to changes in Swift, ObservableArray could no longer conform to Collection protocol. It's noted on top of the readme under Xcode 9 support.
You need to call the method on the underlying array:
if let index = fcpRecentLibraries.array.index(where: { $0.url == url })