Expose Helmet config

Currently, in the app-config .yaml, the only available Helmet config is Content-Security-Policy options. As mentioned here https://github.com/backstage/backstage/blob/master/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts#L224, it would be useful to have more access to the Helmet options.
In our specific situation, the header Strict-Transport-Security is causing us issues, as we have not yet deployed Backstage with tls.
Feature Suggestion
Allow customization of helmet options in the app-config.yaml.
Possible Implementation
In the app-config.yaml under backend add a key httpSecurity or httpHeaderSecurity, the values under this key would each relate to an option in Helmet ie contentSecurityPolicy or hsts, as a starting point they can have false or true values, with the defaults being the same to what is currently implemented.
Example
backend:
  httpHeaderSecurity:
    hsts: false
    originAgentCluster: false

Happy to contribute this, if this is something that sounds good.

Yeah it makes sense to open up this for a bit more configuration. I'll assign you to this then.
I think as we progress with the so called "backend system" work, we should probably make this easier to drive through code rather than just config. As in, making it easy to hook into the setup phase and wholesale replace or remove helmet, if you prefer something else or different behaviors. But that's a bit farther down the line!

Oh and are you sure that it's HSTS biting you? If it could be CSP Upgrade-Insecure-Request, which is reported commonly by others, you can disable that in config:
backend:
  csp:
    upgrade-insecure-requests: false

TBH not sure - we have since deployed behind tls so we are no longer having the issue.
Happy to put this on the back burner, as no longer an issue for us.
Unless you believe this would benefit others?

Alright, thanks for reporting back!
Honestly you are now on a good path anyway, and we'd like to hold off on the design of these extra exposed fields until there's a strong need for them. So all good from our end as well. I'll close this for now, but thank you for offering!

Oh and are you sure that it's HSTS biting you? If it could be CSP Upgrade-Insecure-Request, which is reported commonly by others, you can disable that in config:
backend:
  csp:
    upgrade-insecure-requests: false

Hi, I am setting this element to false before deploying the app because previously my app wasn't displaying any contents from the HTML page once after deploying, I was giving me a blank page. Now after following the above method its working fine.  But just a doubt, could anyone please help shed some light if it is safe in the long run and/or What are the  other alternatives. ?


Downloading dat link blocks the terminal

Doing :
dat dat://link downloads the expected data but the command never terminates.
This give the impression that it has still not finished.

Thanks dav, this will be fixed in the next release! This is our experimental api https://github.com/datproject/docs/blob/master/api.md


[BUG] Done/Reset not initiated when using PettingZooWrapper with Custom PettingZoo environment

Describe the bug
I followed the custom pettingzoo parallel env creation guideline https://pettingzoo.farama.org/content/environment_creation/#example-custom-parallel-environment
and wrapped with pettingzoowrapper. It seems like the done or env_truncation/terminations/truncations are not passed correctly when wrapped.
Reset function is never called after terminations= true, truncations = true.
When my environment was "done", it returns
       if env_truncation:             self.agents = []
which I followed the pettingzoo env creation guideline
To Reproduce
please refer to this colab notebook:
https://colab.research.google.com/gist/mchoilab/0bc43674f9234efd10dd281579e15abb/torchrl_custompettingzoo.ipynb
Expected behavior
Reset function to be called after terminations= true, truncations = true.
System info

Python version (local machine: 3.8.19 / google colab default)
torchrl 0.4.0

Reason and Possible fixes
because  of self.agents = [] when done, this seems to crash with line 686 in pettingzoo.py
Checklist

[ checked ] I have checked that there is no similar issue in the repo (required)
[ checked  ] I have read the documentation (required)
[ checked  ] I have provided a minimal working example to reproduce the bug (required)

In the section when you remove self.agents = [], if i run env.rollout(max_steps=10_000, break_when_any_done=False) i see the environement resetting

and this works also in the case you keep self.agents = []

Maybe there is a confusion stemming from how the rollout function works:

env.rollout(max_steps=10_000, break_when_any_done=False) will reset after every done and reach max_steps
env.rollout(max_steps=10_000, break_when_any_done=True) will reach the first done or max_steps and break without resetting

We can move the discussion to benchmarl if there is no issue in torchrl.
Basically I think that the benchmarl issue should be solved if you remove the self.agents =[].
Could you confirm that this is the case?


[FR] Board server listing to include "mine" property?

RE: #2184, we don't currently tie the username in the board listings to anything held locally. Locally we have the API key, and remotely we present a board as @username/board.json. This means it's tricky to know if you're the owner of a board or not.
Options that I can think of:

Store a username locally (seems unnecessary)
Return an optional "mine": boolean property in the board listing
Infer from the readonly property that you're the owner

FWIW I feel like 2 is the least worst of those options, because 1 feels superfluous, and 3 doesn't feel like it would hold for a more lenient board server. wdyt?

And FWIW I can see it being a separate flag to readonly because I could imagine cases where you might want to "lock" a board, even though you own it, to prevent accidental overwrites. Kinda like the little tab you pulled out of a VHS tape to stop it being recorded over, or the slidable tab on an SD card.

If we're changing this around, could we also include the board title? I think there might be an option to use the board title & URL in the left nav in a more compelling way. I can get most of that information quite easily from the other providers, but the RemoteGraphProvider would have to ping all boards individually to get their titles, and I think it might be handy if the listing included it. wdyt?

There are now title and mine properties being sent with the board list, along with the existing path and readonly.
Also, there's now a published tag that you can set on the board (in GraphMetadata.tags). If the tag is present, the board will appear in the list for everyone. If the tag is not present, it will only show up for you.

I also added this bit for now:
https://github.com/breadboard-ai/breadboard/blob/7c1b4cbb4dcf27e9a79255356c7e93d2d2fd8600/packages/breadboard-web/src/providers/remote.ts#L251
Once the published/unpublished UI is working, we need to not forget to remove the "published" by default flag

As of https://github.com/breadboard-ai/breadboard/pull/2221 we should be good to go.

Would it be possible to add "published": boolean to the board listing when "mine" is set? We always list someone's boards, but I think having something in the listing that quickly indicates to them whether or not the board is public would be really helpful.

Actually let me make a new bug for that...


Error output after installation on Android / Termux

Hello friends,
I have installed playsound however when I try to play a simple test.wav file, I get a big spam of errors.  I am a novice user and do not know how to troubleshoot this.
Thank you
>>> from playsound import playsound
>>> playsound('test.wav')
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 244, in <module>
    playsound(argv[1])
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 146, in _playsoundNix
    gi.require_version('Gst', '1.0')
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/gi/__init__.py", line 126, in require_version
    raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace Gst not available
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 237, in <lambda>
    playsound = lambda sound, block = True: _playsoundAnotherPython('/usr/bin/python3', sound, block, macOS = False)
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 212, in _playsoundAnotherPython
    t.join()
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 201, in join
    raise self.exc
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 194, in run
    self.ret = self._target(*self._args, **self._kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 209, in <lambda>
    t = PropogatingThread(target = lambda: check_call([otherPython, playsoundPath, _handlePathOSX(sound) if macOS else sound]))
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/usr/lib/python3.11/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python3', '/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py', 'test.wav']' returned non-zero exit status 1.
>>>

Python Discord informed me this was related to something called gstreamer, which I was able to install with no problems by doing 'pkg install gstreamer'
Error output is now reduced to this one last remaining error:
>>> from playsound import playsound
>>> playsound('test.wav')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 158, in _playsoundNix
    playbin.props.uri = 'file://' + pathname2url(path)
    ^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'props'
>>>

Linux is barely/poorly supported by playsound.Android is not supported at all. I don’t know where one would begin - I don’t think Travis can run instances of Android to run tests against, can it?Anyways, I provided you with playsound. You should now provide improvements, not requests for more from me. I really aught to just disable reporting issues on GitHub since people only misuse it.Sent from my iPhoneOn Apr 24, 2023, at 17:50, frozen @.***> wrote:
Python Discord informed me this was related to something called gstreamer, which I was able to install with no problems by doing 'pkg install gstreamer'
Error output is now reduced to this one last remaining error:

from playsound import playsound
playsound('test.wav')
Traceback (most recent call last):
File "", line 1, in
File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/playsound-1.3.0-py3.11.egg/playsound.py", line 158, in _playsoundNix
playbin.props.uri = 'file://' + pathname2url(path)
^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'props'

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>


fix broken link from pulseaudio in dockerfile

Thanks for this project :100: !
I've been trying to work with resolve in linux for some time, and this saved me a lot of time!
I've just found out that this link in the Dockerfile was broken:
http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/alsa-plugins-pulseaudio-1.1.9-1.el8.x86_64.rpm
Fixed it by replacing with an updated one:
https://vault.centos.org/8-stream/AppStream/x86_64/os/Packages/alsa-plugins-pulseaudio-1.1.9-1.el8.x86_64.rpm

This looks good!  sha256 is the same, all looks good :)  Thanks!


Remote Code Execution (Security)

For full pytorch support we will need remote code execution of arbitrary code (defined by someone who has defined a model)
We will also likely need remote code execution for data adapters, although these are more auditable (would still be nice to have, though)
some things I have considered so far (as well as their downsides)
chroot jail
what it is
Basically we tell a process that /grid/runhere is the root directory and we manually link everything they are allowed to do (basically nothing) this is not that secure because there are ways to break out of it.
docker
We can look into docker, I have read docker is also no truly secure

related #48 & #58
@Mike96Angelo has experience with remote code execution

docker

I would also like to stay clean of docker unless necessary.  Installation is way easier right now than if we were using docker imo

We could export tensors to a CSV https://stackoverflow.com/questions/36158058/torch-save-tensor-to-csv-file

and then we support specific layer wrappers - aka - "Sequential" and "Recurrent"

How do we recreate the whole Module from that though?

Marking this resolved, as the new approach for integrating pytorch allows us to make sure commands we receive are in the local torch module before executing it.  This will be actualized with #129, so feel free to direct further discussion there.


Ref portal to be reusable

This PR fixes the first two acceptance criteria in #542

The Root folder of portal.js is re-structured
Existing components in single-dataset are refactored to be reusable

@risenW are we going the mono-repo route? I thought we were keeping stuff at top level for now? Reading here it seems we have packages/portal/src/components/ vs src/components/. I'm happy either way but would be good to understand a bit in PR description why one approach vs another.
Also i think @anuveyatsu may be a better reviewer here than me ...

@risenW are we going the mono-repo route? I thought we were keeping stuff at top level for now? Reading here it seems we have packages/portal/src/components/ vs src/components/. I'm happy either way but would be good to understand a bit in PR description why one approach vs another.
Also i think @anuveyatsu may be a better reviewer here than me ...

I made a comment in the issue about just going with the package route from the start. But if you think this is better for now. I'll clean it up.

@risenW @rufuspollock this PR looks good to me 👍  however, if we aren't having create-portal-app, it make sense to move to src/components/ structure.

@risenW @rufuspollock this PR looks good to me 👍 however, if we aren't having create-portal-app, it make sense to move to src/components/ structure.

Okay, I'll do that now before sending the second PR

@anuveyatsu Updated.

@anuveyatsu this looks good to me. Do you want to a quick review too and do the merge?

Merging this now since @anuveyatsu wanted me to just change the root structure. This has been done already, and I need this merged so I can send the second PR.


⚠ WSINGRESOS - RECIBOPAGO has degraded performance

In 7df10cf, WSINGRESOS - RECIBOPAGO (https://srvshyweb.yucatan.gob.mx/cgi-bin/wspd_cgi.sh/WService=wsingresos/internet/servicios/wsRecibosPagosWeb.r) experienced degraded performance:

HTTP code: 200
Response time: 2393 ms

Resolved: WSINGRESOS - RECIBOPAGO performance has improved in 42f29a4 after 307 days, 2 hours, 11 minutes.


Question - Animate dots.

I want to make a line chart with the last dot with some animated effects, just like the Robinhood chart.
It's possible to do that actually, a pulse animation?

I tried with the getDotPainter and trying to extend to some other widget but with no luck, do you have some input on how to achieve this?

Unfortunately, we don't support this kind of animation yet.


Bootstrapper may create invalid column identifiers with dashes but no quotes

Reported issue with H2 1.4.196 and the uni DB of the Ontop tutorial.
Ontop 4.1.0.
ontop > ./ontop bootstrap -m ../mapping.obda -p ../basic.properties -t ../ontology.ttl -b http://example.org/
ontop > ./ontop materialize -m ../mapping.obda -p ../basic.properties -t ../ontology.ttl -o ../rdf-dataset.ttl -f turtle
FAILED TO PARSE: SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id" net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "-" "-"
    at line 1, column 53.

Was expecting one of:

    ","
    ";"
    "CONNECT"
    "EXCEPT"
    "FOR"
    "FROM"
    "GROUP"
    "HAVING"
    "INTERSECT"
    "INTO"
    "MINUS"
    "ORDER"
    "START"
    "UNION"
    "WHERE"
    "WINDOW"
    <EOF>

PARSER VIEW FOR SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."student"."s_id" AS student_s_id FROM "uni1"."course-registration", "uni1"."student" WHERE "uni1"."course-registration"."s_id" = "uni1"."student"."s_id"
CQC-REMOVED: EXTENSIONAL "uni1"."academic"(0:a_id2) FROM [EXTENSIONAL "uni1"."teaching"(0:c_id1,1:a_id2), EXTENSIONAL "uni1"."academic"(0:a_id2)]
CQC-REMOVED: EXTENSIONAL "uni1"."course"(0:c_id2) FROM [EXTENSIONAL "uni1"."teaching"(0:c_id2,1:a_id1), EXTENSIONAL "uni1"."course"(0:c_id2)]
CQC-REMOVED: EXTENSIONAL "uni2"."person"(0:pid2) FROM [EXTENSIONAL "uni2"."course"(0:cid1,1:pid2), EXTENSIONAL "uni2"."person"(0:pid2)]
CQC-REMOVED: EXTENSIONAL "uni2"."person"(0:pid2) FROM [EXTENSIONAL "uni2"."course"(0:cid1,2:pid2), EXTENSIONAL "uni2"."person"(0:pid2)]
CQC-REMOVED: EXTENSIONAL "uni2"."course"(0:cid2) FROM [EXTENSIONAL "uni2"."registration"(0:pid1,1:cid2), EXTENSIONAL "uni2"."course"(0:cid2)]
CQC-REMOVED: EXTENSIONAL "uni2"."person"(0:pid2) FROM [EXTENSIONAL "uni2"."registration"(0:pid2,1:cid1), EXTENSIONAL "uni2"."person"(0:pid2)]
13:11:40.405 |-INFO  in i.u.i.o.a.r.impl.QuestQueryProcessor - Ontop has completed the setup and it is ready for query answering!
13:11:40.714 |-ERROR in i.u.i.o.a.c.impl.QuestStatement - org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.getSyntaxError(DbException.java:205)
at org.h2.command.Parser.getSyntaxError(Parser.java:541)
at org.h2.command.Parser.read(Parser.java:3258)
at org.h2.command.Parser.readTableFilter(Parser.java:1191)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:297)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.server.TcpServerThread.process(TcpServerThread.java:264)
at org.h2.server.TcpServerThread.run(TcpServerThread.java:158)
at java.base/java.lang.Thread.run(Thread.java:832)

it.unibz.inf.ontop.exception.OntopQueryEvaluationException: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.getSyntaxError(DbException.java:205)
at org.h2.command.Parser.getSyntaxError(Parser.java:541)
at org.h2.command.Parser.read(Parser.java:3258)
at org.h2.command.Parser.readTableFilter(Parser.java:1191)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:297)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.server.TcpServerThread.process(TcpServerThread.java:264)
at org.h2.server.TcpServerThread.run(TcpServerThread.java:158)
at java.base/java.lang.Thread.run(Thread.java:832)

at it.unibz.inf.ontop.answering.connection.impl.SQLQuestStatement.executeSelectQuery(SQLQuestStatement.java:205)
at it.unibz.inf.ontop.answering.connection.impl.QuestStatement.executeSelectQuery(QuestStatement.java:122)
at it.unibz.inf.ontop.answering.connection.impl.QuestStatement.executeSelectQuery(QuestStatement.java:114)
at it.unibz.inf.ontop.answering.connection.impl.QuestStatement$QueryExecutionThread.run(QuestStatement.java:97)
Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.engine.SessionRemote.done(SessionRemote.java:629)
at org.h2.command.CommandRemote.prepare(CommandRemote.java:83)
at org.h2.command.CommandRemote.<init>(CommandRemote.java:49)
at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:499)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:73)
at jdk.internal.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
at com.sun.proxy.$Proxy44.executeQuery(Unknown Source)
at it.unibz.inf.ontop.answering.connection.impl.SQLQuestStatement.executeSelectQuery(SQLQuestStatement.java:197)
... 3 common frames omitted
13:11:40.715 |-ERROR in i.u.i.o.m.i.DefaultMaterializedGraphResultSet - Problem materializing the class/property http://example.org/course-registration#ref-c_id/2
java.lang.RuntimeException: org.eclipse.rdf4j.query.QueryEvaluationException: it.unibz.inf.ontop.exception.OntopQueryEvaluationException: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.getSyntaxError(DbException.java:205)
at org.h2.command.Parser.getSyntaxError(Parser.java:541)
at org.h2.command.Parser.read(Parser.java:3258)
at org.h2.command.Parser.readTableFilter(Parser.java:1191)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:297)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.server.TcpServerThread.process(TcpServerThread.java:264)
at org.h2.server.TcpServerThread.run(TcpServerThread.java:158)
at java.base/java.lang.Thread.run(Thread.java:832)

at it.unibz.inf.ontop.cli.OntopMaterialize.runWithSingleFile(OntopMaterialize.java:159)
at it.unibz.inf.ontop.cli.OntopMaterialize.run(OntopMaterialize.java:109)
at it.unibz.inf.ontop.cli.Ontop.main(Ontop.java:20)
Caused by: org.eclipse.rdf4j.query.QueryEvaluationException: it.unibz.inf.ontop.exception.OntopQueryEvaluationException: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.getSyntaxError(DbException.java:205)
at org.h2.command.Parser.getSyntaxError(Parser.java:541)
at org.h2.command.Parser.read(Parser.java:3258)
at org.h2.command.Parser.readTableFilter(Parser.java:1191)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:297)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.server.TcpServerThread.process(TcpServerThread.java:264)
at org.h2.server.TcpServerThread.run(TcpServerThread.java:158)
at java.base/java.lang.Thread.run(Thread.java:832)

at it.unibz.inf.ontop.rdf4j.materialization.impl.DefaultRDF4JMaterializer$GraphMaterializationIteration.hasNext(DefaultRDF4JMaterializer.java:249)
at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63)
at it.unibz.inf.ontop.cli.OntopMaterialize.serializeTripleBatch(OntopMaterialize.java:242)
at it.unibz.inf.ontop.cli.OntopMaterialize.runWithSingleFile(OntopMaterialize.java:152)
... 2 more
Caused by: it.unibz.inf.ontop.exception.OntopQueryEvaluationException: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.getSyntaxError(DbException.java:205)
at org.h2.command.Parser.getSyntaxError(Parser.java:541)
at org.h2.command.Parser.read(Parser.java:3258)
at org.h2.command.Parser.readTableFilter(Parser.java:1191)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:297)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.server.TcpServerThread.process(TcpServerThread.java:264)
at org.h2.server.TcpServerThread.run(TcpServerThread.java:158)
at java.base/java.lang.Thread.run(Thread.java:832)

at it.unibz.inf.ontop.answering.connection.impl.SQLQuestStatement.executeSelectQuery(SQLQuestStatement.java:205)
at it.unibz.inf.ontop.answering.connection.impl.QuestStatement.executeSelectQuery(QuestStatement.java:122)
at it.unibz.inf.ontop.answering.connection.impl.QuestStatement.executeSelectQuery(QuestStatement.java:114)
at it.unibz.inf.ontop.answering.connection.impl.QuestStatement$QueryExecutionThread.run(QuestStatement.java:97)
Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS ""v0"", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS ""v1"", CAST(V1.COURSE_C_ID AS TEXT) AS ""v2""
FROM (SELECT ""uni1"".""course-registration"".""c_id"" AS COURSE-[*]REGISTRATION_C_ID, ""uni1"".""course-registration"".""s_id"" AS COURSE-REGISTRATION_S_ID, ""uni1"".""course"".""c_id"" AS COURSE_C_ID FROM ""uni1"".""course-registration"", ""uni1"".""course"" WHERE ""uni1"".""course-registration"".""c_id"" = ""uni1"".""course"".""c_id"") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 "; expected ",, FROM, WHERE, GROUP, HAVING, UNION, MINUS, EXCEPT, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, FOR, )"; SQL statement:
SELECT DISTINCT CAST(V1.COURSE-REGISTRATION_C_ID AS TEXT) AS "v0", CAST(V1.COURSE-REGISTRATION_S_ID AS TEXT) AS "v1", CAST(V1.COURSE_C_ID AS TEXT) AS "v2"
FROM (SELECT "uni1"."course-registration"."c_id" AS course-registration_c_id, "uni1"."course-registration"."s_id" AS course-registration_s_id, "uni1"."course"."c_id" AS course_c_id FROM "uni1"."course-registration", "uni1"."course" WHERE "uni1"."course-registration"."c_id" = "uni1"."course"."c_id") V1
WHERE (V1.COURSE-REGISTRATION_C_ID IS NOT NULL AND V1.COURSE-REGISTRATION_S_ID IS NOT NULL AND V1.COURSE_C_ID IS NOT NULL)
 [42001-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.getSyntaxError(DbException.java:205)
at org.h2.command.Parser.getSyntaxError(Parser.java:541)
at org.h2.command.Parser.read(Parser.java:3258)
at org.h2.command.Parser.readTableFilter(Parser.java:1191)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:297)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.server.TcpServerThread.process(TcpServerThread.java:264)
at org.h2.server.TcpServerThread.run(TcpServerThread.java:158)
at java.base/java.lang.Thread.run(Thread.java:832)

at org.h2.engine.SessionRemote.done(SessionRemote.java:629)
at org.h2.command.CommandRemote.prepare(CommandRemote.java:83)
at org.h2.command.CommandRemote.<init>(CommandRemote.java:49)
at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:499)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:73)
at jdk.internal.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
at com.sun.proxy.$Proxy44.executeQuery(Unknown Source)
at it.unibz.inf.ontop.answering.connection.impl.SQLQuestStatement.executeSelectQuery(SQLQuestStatement.java:197)
... 3 more
Exception in thread "main" java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:87)
at org.junit.Assert.fail(Assert.java:96)
at it.unibz.inf.ontop.cli.Ontop.main(Ontop.java:32)
ontop >

Both the internal SQL parser of Ontop and H2 do no parse the SQL query generated by the bootstrapper.

Closed by 4e31ade402f9ed831090e7e12a6b1fa743ffe7fb


unwanted completions frequently inserted when return is pressed

I find unwanted completions are frequently inserted when I press return at the end of a line. Is it possible to configure kite so completions are not inserted when return is pressed?

Please could you elaborate a little?
Is this when you press return after normal editing?  Or is it when you accept a completion by pressing return?  Or accept a completion with <C-y> and then press return?
Also, have you got auto-completion on (:echo g:kite_auto_complete)?

when completions appear, I can insert a completion by pressing return, but I would like to disable that and always use <C-y> or possibly tab because its frequently the case that completions are shown when I want to use return in the usual way. I know I can use let g:kite_tab_complete=1 to configure "tab complete", but I don't know how to configure "return complete".
:echo g:kite_auto_complete shows 1

Thanks for the extra details.
The way completions work in Vim, pressing enter will insert the current completion choice followed by a line break – unless you have simply changed the completion choice with ctrl-n / ctrl-p / cursor keys, in which case no line break is inserted.
From vim's help (:help ins-completion-menu):

There are three states:

A complete match has been inserted, e.g., after using CTRL-N or CTRL-P.
A cursor key has been used to select another match.  The match was not
inserted then, only the entry in the popup menu is highlighted.
Only part of a match has been inserted and characters were typed or the
backspace key was used.  The list of matches was then adjusted for what is
in front of the cursor.

You normally start in the first state, with the first match being inserted.

[snip]

If you select another match, e.g., with CTRL-N or CTRL-P, you go to the first
state.  This doesn't change the list of matches.

[snip]

The behavior of the <Enter> key depends on the state you are in:
first state:	  Use the text as it is and insert a line break.
second state:	  Insert the currently selected match.
third state:	  Use the text as it is and insert a line break.
In other words: If you used the cursor keys to select another entry in the
list of matches then the  key inserts that match.  If you typed
something else then  inserts a line break.

If you want <enter> never to insert a completion, that's not the way Vim works.  I suppose we could add an option which maps <enter> to <C-e><CR> when the popup menu is open.  But perhaps you could try that first in your vimrc to see if it does what you want.
imap <expr> <CR> pumvisible() ? "\<C-e>\<CR>" : "\<CR>"

Ah, probably the plugin is over-writing the mapping.  Please could you try just setting by hand in vim once you have a Python file open, to see if it helps?

that doesn't work either. also setting :imap <cr> test by hand from inside vim doesn't have any effect.

What does :imap <cr> show?

with imap <CR> test1 in my vimrc, after opening vim :imap <CR> shows:
i  <CR>         @kite#completion#popup_exit("\<CR>")
i  <CR>          test1

after setting :imap <CR> test2 by hand from inside vim, then :imap <CR> shows
i  <CR>         @kite#completion#popup_exit("\<CR>")
i  <CR>          test2

the test1 map and test2 map dont seem to have any effect. I can still use  to insert line breaks and accept completions.

if I set :imap <buffer> <expr> <CR> pumvisible() ? "\<C-e>\<CR>" : "\<CR>" by hand from inside vim, then it works exactly as hoped. but putting this in my vimrc doesn't work unfortunately.

the map gets overwritten whenever theres a new buffer, but putting autocmd InsertEnter * imap <buffer> <expr> <CR> pumvisible() ? "\<C-e>\<CR>" : "\<CR>" in vimrc works.

The plugin's mappings are set on BufEnter and they are buffer-local so they should only be set once per (Python / Go) buffer.
Your vimrc will be read before the plugin which is why your test maps were getting overwritten.  Anyway, I'm glad you found a solution.
Are you happy to close this issue now?

ya, thanks!


Correct spelling mistakes.

The Travis CI failures are unrelated to your changes. We need to update the multibuild submodule to the latest version to support the latest pip 10.


Support PostgreSQL arrays

Fixes https://github.com/aminalaee/sqladmin/issues/412

This works fine for the create page which stores data correctly, but in the edit form, the existing tags are not pre-populated:
https://github.com/aminalaee/sqladmin/blob/06f101741daef60c2a90d40cf98157ff25291996/sqladmin/application.py#L469
I expected the above code to populate select choices but it doesn't.


More updates for SDL3 stable API and misc fixes

This updates more return value handling for SDL3 stable API and fixes dereferencing NULL device passed from the application to the ControllerImage API functions. (The demo can do this if controllerimage-standard.bin is missing.)
This also adds SDLCALL to ControllerImage API functions that were missing it and replaces stray tabs with spaces that existed before this PR.

The things that return an int should probably return a bool now, to match a policy change SDL3 had right before it locked the API down.
I'll change that in the morning if you don't beat me to it tonight.  :)

I can change the API from returning int to bool this weekend. Let me know if you're already working on it.


release version 1.0

We should go ahead and release version 1.0 of this artifact. @dadoonet any chance that you can take a look over the pom before we release it?

@jaymode I left comments in your commits.

Thanks @dadoonet. I went through them and think the only one to change right now was the group id and I pushed a commit to change that

You can release as is. We can fix other things later if needed.


Do not work on remote hosts

I'm running vscode on a server with the official ssh extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit
When opening the plugin I get a blank screen. I'm guessing it's a port forwarding issue.

Did you try installing the extension on the remote host ?
My guess is that the extension might not handle the ssh file system properly (I never tested it).

Yeah it is installed on the server

I had a similar problem.
I use code-server, and the problem is the same as yours. Through network packet capture, I found that my problem may be due to the failure to load js and css files successfully.
The js and css loading of the other extensions is normal, I'm not sure whose problem it is.
So there is another issue in code-server.
https://github.com/coder/code-server/issues/6306


[Enum Request] Warehouse Tables and codeunit procedure variables

Hi team,
Could you change following table fields to extensible Enum?
Table 7309 "Warehouse Journal Template" field Type
Table 7310 "Warehouse Journal Batch" field "Template Type"
Table 7324 "Whse. Put-away Request" field "Document Type"
Table 7325 "Whse. Pick Request" field "Document Type"
Could you change following codeunit procedures variables to extensible Enum?
Codeunit 5775 "Whse. Management" procedure GetSourceDocument variable SourceDocument
Codeunit 7302 "WMS Management" procedure ShowWhseDocLine variable WhseDocType

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


chore(avm-simulator): be explicit about wrapping arithmetic

Please read contributing guidelines and remove this line.

#5287  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @fcarreiro and the rest of your teammates on  Graphite

Benchmark results
No metrics with a significant change found.

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit e9beeca7 and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
5,668
18,820
36,356

l1_rollup_calldata_gas
66,112
238,816
469,004

l1_rollup_execution_gas
647,210
929,174
1,305,184

l2_block_processing_time_in_ms
1,315
4,866
9,023 (-6%)

note_successful_decrypting_time_in_ms
179 (-3%)
514 (-2%)
985 (+1%)

note_trial_decrypting_time_in_ms
86.2 (-4%)
31.3 (-24%)
117 (+10%)

l2_block_building_time_in_ms
18,150
68,548
136,341

l2_block_rollup_simulation_time_in_ms
8,112
28,750
56,827

l2_block_public_tx_process_time_in_ms
10,017
39,737
79,413

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,011 (+1%)
26,378 (-2%)

note_history_successful_decrypting_time_in_ms
1,237 (-4%)
2,450 (-2%)

note_history_trial_decrypting_time_in_ms
85.1 (-18%)
155 (-13%)

node_database_size_in_bytes
19,046,480
35,704,912

pxe_database_size_in_bytes
29,859
59,414

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
285 (+1%)
44,366
28,244

private-kernel-ordering
217
52,868
14,326

base-parity
1,784
128
311

base-rollup
720
165,787
925

root-parity
1,630 (+1%)
1,244
311

root-rollup
62.6 (-1%)
4,487
789

private-kernel-inner
655 (+1%)
73,771
28,244

public-kernel-app-logic
444 (-2%)
35,260
28,215

public-kernel-tail
172 (-1%)
40,926
28,215

merge-rollup
8.27 (-1%)
2,696
925

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.1 (+1%)
16.0
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.6
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.589 (+1%)
0.495
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
45.8 (-1%)
72.8 (+1%)
230
443 (-1%)
877
1,732 (+1%)
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
96.0
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.471 (-1%)
0.447
0.420
0.415 (-1%)
0.416
0.415 (+1%)
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
54.0 (-2%)
107 (+1%)
338 (+1%)
657
1,316
2,625 (+1%)
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
104
207
691
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.481 (-2%)
0.482
0.458 (+1%)
0.453
0.455
0.454 (+1%)
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
61.0

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
109

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.534

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes

tx_size_in_bytes
22,012

Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes

tx_pxe_processing_time_ms
3,272 (-1%)
1,770 (+1%)

Metric
0 public data writes
1 public data writes

tx_sequencer_processing_time_ms
11.1 (-1%)
1,238 (-1%)


Update from original

Trying to update my fork, two commits below are just a comment and an uncomment, no change

Can I close this pull request without merge then ?

Sure, I'm just trying to figure out how to update my own fork with your latest commits.
I don't use github often enough, always need to figure it out again :)

Do you have my branch set up as your remote upstream?
if so, then you just need to git fetch that upstream then git rebase upstream master
(if that doesn't make sense, let me know I'll help out more)

I tried using the github documentation. But I just did a merge instead of a rebase.
I think my fork is up to date again but I have the feeling all your updates have now been rolled up into a commit on my branch.
Come to think of it, this might be why you said rebase :)

Ah I found a way out, I reset my branch to your latest version. Worked like a charm. :)
FYI
http://stackoverflow.com/questions/9646167/clean-up-a-fork-and-restart-it-from-the-upstream
Sorry for the hassle :)


Inlines in django-admin

What version of Django do You use for this project?
1.6.11 requires next changes in admin.py
+ from django.contrib.contenttypes.generic import GenericTabularInline

- class CommentInline(admin.TabularInline):
+ class CommentInline(GenericTabularInline):
+     ct_field = 'object_content_type'
+     ct_fk_field = 'object_id'

1.7+ does not support related_name in GenericRelation

I'm using 1.5.4, but I would appreciate compatibility up to latest version of Django. If you make pull request, it would be very helpful


[Bug]: When running with commit-on-fail + git auto-push options, fail and revert commits are not pushed

Contact Details
<EMAIL_ADDRESS>Describe the bug
When running with commit-on-fail + git auto-push options, fail and revert commits are not pushed right away.
The push only happens after a passing-test commit
To Reproduce
Steps to reproduce the behavior:

Run TCR with --auto-push and --commit-failures options
Update source code to have at least one test failing
Save changes. This will trigger a TCR cycle
At the end of the cycle, there are 2 new local commits (1 with failure, 1 reverting changes)

Expected behavior
The 2 commits should be pushed to origin right after the second commit operation
Working Environment

TCR v0.17.0
All OS

Additional Context
Additional information
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Fixed in v0.17.1


Support JQuery selectors

It would be great if effroi handled jquery results seamlessly.
For example:
effroi.mouse.click($("li:contains('My Item')"))

This would also make it possible to provide meaningful exception/error messages that mention the element selector.
If you give the :+1: I'll work on a pull request.

Not sure this is a good idea to rely on JQuery, why not just wrap this lib in another one?  We'd be glad to add it on the README file.


WithCustomClaims in Verify token options should accept a type instead of pointer

Currently WithCustomClaims function in token_option.go accepts a pointer to a struct variable. So we have to define and pass the struct pointer when initializing the WithSessionV2 middleware. The same struct pointer is used for unmarshalling the custom claims for all incoming requests. This can cause consistency issues when multiple requests are processed at the same time.
This can be solved by either

Accept a Custom claim struct type in WithCustomClaims function and dynamically create, populate the struct and set the value in context
Provide a function hook for dealing with custom claims

Hello @vijathanga ! Sorry that you encountered this issue and thanks for reporting. Your observation is correct:

This can cause consistency issues when multiple requests are processed at the same time.

The WithCustomClaims option was designed for direct calls to VerifyToken since the custom claims are assigned directly to the referenced struct instance which would be constructed before each VerifyToken call:
https://github.com/clerk/clerk-sdk-go/blob/2f041fef8d673473d84d5b8360b0650d43b11ae3/clerk/clerk.go#L51

Accept a Custom claim struct type in WithCustomClaims function

Do you perhaps mean a constructor function for new objects that will be populated with the custom claims? Something like:
WithSessionV2(client, WithSessionClaimsFunc(func() interface{} {
  return &MyCustomClaims{}
})

populate the struct and set the value in context

Would exposing the custom claims as a field in the SessionClaims struct that's already available in the context work instead?
https://github.com/clerk/clerk-sdk-go/blob/2f041fef8d673473d84d5b8360b0650d43b11ae3/clerk/middleware_v2.go#L38
So to sum up the approach assuming a custom struct MyCustomClaims:
client, err := clerk.NewClient(apiKey)
// Configure the middleware
clerk.WithSessionV2(client, WithSessionClaimsFunc(func() interface{} {
  return &MyCustomClaims{}
})

// In the request
sessionClaims, ok := clerk.SessionFromContext(req.Context())
if !ok {
  // unauthenticated
}
customClaims, ok := sessionClaims.Custom.(*MyCustomClaims)
if ok {
  // use customClaims
}

Mostly asking if the final snippet would address your use case, this change will require some additional design considerations from our side!

Hi @georgepsarakis, I appreciate the quick response.
The final snippet looks good, It should satisfy our needs.

Thanks for the quick follow-up @vijathanga , I've opened a ticket internally so that we can look into this.

@vijathanga Hello, sorry this took so long. We were preparing a new version for the Go SDK.
Here's an attempt to solve the concurrent access issue by providing a constructor for the custom claims.
https://github.com/clerk/clerk-sdk-go/pull/253
Feel free to provide feedback and follow along with the discussion.

Closing this since it is fixed in v2.


Speech: allow auto setting for language to derive from display language

Fyi @TylerLeonhardt

Verification:

install the speech extension: https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-speech
make sure accessibility.voice.speechLanguage is configured to auto (it should be by default)
switch VS Code display language to another language such as german or portuguese
start voice dictation in a text editor via "Start Dictation in Editor"
verify you get prompted to install the related language pack for the display language you picked


Add test for Z-wave switch

Description:
Add testcase for zwave switch platform

Let's wait for #6565 first, since it's going to update the test structure slightly.

Did not make the same mistake twice and reran the tests after I noticed that 6565 was merged. And yep, the tests fail now.

Porting should just be a matter of adding this line: https://github.com/home-assistant/home-assistant/blob/dev/tests/components/binary_sensor/test_zwave.py#L18 and passing values into get_device instead of value.


GUI - Is there necessity of two scroll bars in the device list page?

Notice there are two scroll bars in the device list page

I'm not sure if it's related - but there's also a "dead" footer on this page:

I'm guessing the "inner" scrollbar is scrolling the div before that fixed footer.

The 2nd scroll bar has been removed from the device list page:


Climatenet Coordinate Bug Fix

Earth2Studio Pull Request
Description
Closes #78
Checklist

[ ] I am familiar with the Contributing Guidelines.
[ ] New or existing tests cover these changes.
[ ] The documentation is up to date with these changes.
[ ] The CHANGELOG.md is up to date with these changes.
[ ] An issue is linked to this pull request.

/blossom-ci

/blossom-ci


Support Xonsh shell

Is your feature request related to a problem? Please describe.
Currently only Bash and Zsh are supported.
Describe the solution you'd like
Please add support for the Xonsh shelll 🙏

Could be handled as part of #144 ?


Event

Events Component : Design a events page which has 3 sections

Upcoming events
Ongoing Events
Past Events
For reference you may use this site :  https://fasmesra.vercel.app/

I can work upon it.
kindly assign this issue to me.


_posts not rendering, doesn't seem to register model-id

I tried creating a new markdown file in the _posts directory, but when rendering with github pages, all the sample projects are rendering correctly except mine. It seems that my "project" is not assigned a modal-id during build.
``
title: Choiceversial
subtitle: Mobile Development
layout: default
modal-id: 1
date: 2020-05-27
img: dreams.png
thumbnail: dreams-thumbnail.png
alt: image-alt
project-date: May 2020
client: Personal
category: Mobile Development
description: Choiceversial is a mobile app project made with React Native for cross-platform publishing. It's an application
that makes you react on controversial subjects, it also takes all the results in a database through a web api to make clear statistics based
on the country of the player.
Skills developed

Javascript with React Native
PostgreSQL database
Local database hosting
RESTApi with Django(Python)

``
img
The link from the  returns #portfolioModal with no ids
Thanks!

I tried creating a new markdown file in the _posts directory, but when rendering with github pages, all the sample projects are rendering correctly except mine. It seems that my "project" is not assigned a modal-id during build.

I ran into a similar issue with this theme. I fixed it in my version:
raviriley/agency-jekyll-theme/
I wanted to use this theme but saw that this and SotiriosVrachas's versions are both outdated and not maintained, so I decided to convert the newest Bootstrap code to a Jekyll theme from scratch. Then, once I started using the theme, I realized I could make some additions to make the original theme more useful, such as Google Analytics support, an actually functional contact form, customizable styling, etc.
Check out the details here!


app store compatibility?

CPFT is only the second safari extension i've bought, as i use firefox primarily on desktop, so my experience with their cross device usage is very limited and i may have missed something; however, the previous extension [dark reader] i bought was 1 payment and it was functional on macos, ipados, and ios. i assumed this was going to be the case with CPFT too, and the layout of the app store listing strongly corroborated that. however, after buying the extension on my mac (i was bein lazy cos its the only device i have with a finger print sensor lmao) i found that i was unable to access the extension on ipad or iphone at all, and it is only after buying that i found anywhere that showed it was apparently a mac-only extension if bought here. my only option is to purchase it again, which i am gonna hold off on until the refund is hopefully allowed.
is the purchase even functioning as intended, because literally nothing on the app store page that i could find suggests that it is 2+ separate device dependant extensions - the listing literally shows all of them in the compatibilities! - , and tbh it left me feelin a bit stupid and i would just like some clarity pls :')
thank u for the baller extension she's been keepin me sane for years, pls let me know if this is an issue i need to mention to apple instead or smth i guess

It should work as you've said, buying the app gets you all versions for all platforms.
I'd definitely ask Apple support why it's not working for you - their term for how it's sold for multiple platforms is "Universal Purchase"

oh i'm glad to know, thank u!!


CLI: search optimistically for message definitions

Public-Facing Changes
Replaces the logic in mcap convert for ROS 2 files that looks for schema definitions. Previously we would look for message definitions using the ament resource index, but this is a fragile mechanism especially for workspaces with message definitions in nested subdirectories. Several users have had trouble using this, and debugging why their install space isn't exactly correct is a slog. Instead, mcap convert searches for a path with the form <packageName>/msg/<MsgName>.msg anywhere in one of the directories specified with ament-prefix-path.

Is this an alternative to #789 or how are they related? Seems like #789 is better?

This was a misclick, I mistakenly merged. I'll merge #789 over it before the next release.


Update prefix management

Cleaned up the code to remove excessive nesting.  All sub-request errors are now kicked back.  Issues closed: #62 #64 #65

Test and add OpenAPI docs to the views.py file for each of the Prefix Management API endpoints:

[x] biocompute-objects/bco_api#61  api/prefixes/create
[ ] biocompute-objects/bco_api#64 api/prefixes/delete
[ ] biocompute-objects/bco_api#66 api/prefixes/permissions/set
[ ] biocompute-objects/bco_api#65 api/prefixes/token
[ ] biocompute-objects/bco_api#62 api/prefixes/update


How customize the style of MatNavMenu via CSS

Hi! and congratulations on this project!
I would like to know if it is possible to customize the MatNavMenu div via a CSS file? Thank you !

OMG!!! I'm ashamed, I haven't seen Class=""


API calls for Clan command

Adding new callers for the Destiny2 API
Context
The new clan command that is being added to Spirit requires access to additional Destiny2 API endpoints and manifest information.
How Has This Been Tested?
I have tested it locally with success but further testing needed.
Screenshots :
Successful output

Types of changes
New entry points into the Destiny2 API
Checklist:

[X] My code follows the code style of this project.

Awesome work! Really like the refactoring of the integrations tests :)


WIP: [KEP-1748]: Add capacity planning documentation

Placeholder PR for https://github.com/kubernetes/enhancements/issues/1748.

/sig instrumentation

@dgrisonnet Where are we now?

I am still working on the doc and should be done with it soon

@dgrisonnet As a friendly reminder, tomorrow is the Docs complete — All PRs reviewed and ready to merge deadline. Please do what you can to get your doc merged by the end of the day tomorrow.

Hey @mickeyboxell, I've been swamped for the last couple of weeks and won't be able to deliver that doc and get the reviews on time. How do you advise proceeding?

This feature doesn't have a gate, so it should not confuse the users: https://github.com/kubernetes/enhancements/blob/master/keps/sig-instrumentation/1748-pod-resource-metrics/README.md#feature-enablement-and-rollback
Pushing the documentation to a later date should only make that feature less visible to the users.

/close


Generate graphql.schema file during compile time

Description:
At the moment there is no way to get the generated schema except for using introspection. It will be better if we can generate the graphql.schema file during compile time and maybe save it in the target directory.

[x] #1766

Is this really required?
My concern is, usually, this should be done in the other way around: Generate the service code using the graphql.schema file.
But this might help the backend developers to directly create the service and then share the generated schema file, but I think that is a rare case. Usually, people start with the schema file, and then create the service, right?
Will do some more research on this anyway. Then again is it okay to save this in the target directory? Or should we save it somewhere else?

Proposal: Generate GraphQL Schema at the Compile Time
Summary
Currently, the GraphQL schema for a given Ballerina GraphQL service is generated in the runtime, which has some limitations such as adding documentation. Since this missing information can be retrieved at the compile time, this proposal suggests generating the schema at the compile time.
Goals

Generate the schema at the compile time by walking through the Ballerina GraphQL service
Include documentation, deprecated information for the GraphQL fields

Non-Goals

Change the current structure of the generated schema

Motivation
In the current Ballerina GraphQL package, there are some limitations in the runtime schema generation. The most notable limitations are:

Cannot retrieve the documentation for the types and the fields
Cannot define deprecated fields
Cannot retrieve the default values for the arguments

Due to these limitations, the Ballerina GraphQL module is missing some key features. To overcome these issues, we propose to generate the GraphQL schema at the compile time, where this missing information is available.
This will slightly increase the server start time as well since the schema generation will be moved out from the service attach method.
Description
The existing GraphQL compiler plugin will be used to generate the schema as well, although we might introduce a new ServiceAnalyzer to decouple service validation and the schema generation.
The service identification and type identification will be similar to the existing compiler plugin. Both the SyntaxAPI and the SemanticAPI will be used to read the documentation and other information. Default values are also read in the compile-time since only constant values are allowed as the default values.
After generating the schema, it will be serialized as POJO and passed to the runtime as a resource of the Ballerina package. It will then be used to create the __Schema record.
This can affect the current test structure as well since the new schema generation will not be available at the graphql module build. Therefore, a new test approach should be introduced (probably with the language support for integration tests). The current test setup might be changed a little due to this. Most of the existing tests will end up being integration tests, and new unit tests have to be introduced in the graphql top level module. Furthermore, modularizing the graphql module should be considered, by decoupling the Engine and the Listener.
Dependencies

Integration Tests support from the Language
Adding resources to the package using the PackageAPI.


feat(snippets): support replacement functions

fixes #16.
initially touched on this in #219.
open to feedback/suggestions.
adds support for replacement functions (replacers), taking the input and being able to transform it with javascript for replacement.
documentation is added, but somewhat bare. not sure the best way to approach it while keeping the basics simple for end users.
dependencies

valibot added for runtime validation of raw snippets. it's fairly lightweight and imo made validation a lot cleaner.
typescript upgraded to latest version. i believe valibot depends on some newer typescript features, but either way having a newer typescript shouldn't hurt

architecture
a Snippet (renamed from ParsedSnippet) is now one of three types of snippets: visual, regex, or string. visual snippets operate on selections; regex snippets use regex; string snippets are any other type of snippet. a visual snippet is distinguished by the v option, or its replacement being a string with the substring ${VISUAL}. a regex snippet is distinguished by the r option, or its trigger being a RegExp literal.
snippet types are distinct: a snippet cannot be both regex and visual, and a snippet that appears to satisfy both is considered invalid (i think technically this is a breaking change, but in practice i don't think anyone has a case like this?).
working with parsed Snippets, then, is simply done by matching on the snippet's type and performing actions accordingly.
all snippet parsing logic is moved into parse_snippets.ts (previously, parsing the raw snippets was there, while converting them to parsed Snippets was in snippets.ts).
sortSnippets, previously in parse_snippets.ts, is moved to its own file sort.ts. i also rewrote it so it clearly sorts by priority, followed by trigger length.
snippets.ts now contains just snippet-wide information that may be useful elsewhere in the plugin: the Snippet type definition, the ${VISUAL} magic string, and utilities for working with snippet-like things. math environment and environment exclusion information is moved from snippets.ts to a separate file environment.ts.
with the consolidation of parsing, additional checks have also been added to provide more useful error messages with invalid snippets. checks are also added to make parsing invalid snippets more robust.
replacer behavior
replacers are supported on all three types of snippets. replacers are expected to return a string; a snippet does not apply if a non-string value is returned (as such, if returning e.g. a number, it should be stringified).
visual snippet replacers take a single parameter, the selection.
regex snippet replacers take a single parameter, the RegExpExecArray result of re.exec("string").
string snippet replacers take a single parameter, the matched string.
example
snippets
[
  // string replacer
  { trigger: `hello`, replacement: hello => hello.split('').join(' '), options: 'A' },
  // visual replacer
  { trigger: "-", replacement: sel => { if (!sel.includes(" ")) { return false } return sel.replaceAll(/\s+/g, "-")}, options: "vA" },
  // regex replacer, #16
  { trigger: /mxi(?<n>\d)/,
    replacement: match => {
    const n = match?.groups?.n;
    let arr = [];
    for(let j = 0; j < n; j++) {
      arr[j] = [];
      for(let i = 0; i < n; i++) {
        arr[j][i] = (i === j) ? 1 : 0;
      }
    }
    let output = arr.map(el => el.join(" & ")).join(" \\\\\n");
    output = `\\begin{pmatrix}\n${output}\n\\end{pmatrix}`;
    return output;
    },
    options: 'mA',
  },
  {trigger: "dm", replacement: "$$\n$0\n$$", options: "tAw"},
]

usage

Thank you very much for the PR! I'll try to review it as soon as I'm able.

Some initial thoughts (I haven't dived too deeply into the code yet):

Classifying snippets into the three types (string/regex/visual) sounds good to me
Never heard of valibot before, but improving type validation sounds great. Does this make it possible to show more precise error messages (e.g. errors pointing to a specific snippet causing issues) under the snippets editor to the user?

Does this make it possible to show more precise error messages (e.g. errors pointing to a specific snippet causing issues) under the snippets editor to the user?

can't capture a specific line number, but yes we can print a serialized snippet (with replacement functions it'll just print those as [[Function]], but at least trigger and options should be serialized properly); this is done by the serializeSnippet function in snippets/snippets.ts and doesn't need the validation library.
the validation library is more so of having a way to describe the expected shape of something and getting a validator + correct typescript types together from that single source of truth, v.s. defining a typescript type and manually creating validators to verify that values satisfy that type.
valibot honestly seems pretty new and its documentation isn't great, but i picked it for the time being for its small size. more featureful/mature alternatives zod adds ~105kb to the plugin size, typebox ~95kb, while valibot adds only ~9kb (and the plugin as a whole, excluding them, is ~355kb)
in any case all of them should have errors that provide information that could be used to pinpoint which part of a snippet is invalid as well, in addition to just which snippet errored as well.

I see, thanks! Based on your explanation I'm happy to go with valibot for now as well.

the serializeSnippet function

Would be nice to move this to a toString override method inside Snippet. Guessing this wouldn't really work though because Snippet is a type, not a class.

Would be nice to move this to a toString override method inside Snippet. Guessing this wouldn't really work though because Snippet is a type, not a class.

if really needed, might be able to turn it back to a class, would need to double check but iirc something like this should work types-wise:
class Snippet<T extends SnippetType> {
  type: T
  data: SnippetData<T>
}

I see. Perhaps turning it back into a class is something to consider?
Currently, processSnippet in run_snippets.ts works by matching on the snippet's type and performing actions accordingly, using a switch statement:
https://github.com/artisticat1/obsidian-latex-suite/blob/22728cb8ef2034bdfae5097799f8517677d6d5d4/src/features/run_snippets.ts#L116-L133
and, in all cases, returns a ProcessSnippetResult. What would your thoughts be on

Turning Snippet into an abstract class, moving serializeString to a method toString inside it, with processSnippet as an abstract method,
creating three classes StringSnippet, RegexSnippet and VisualSnippet that each extend Snippet,
moving the processSnippet logic for each SnippetType case into their respective classes,
and replacing the processSnippet call in run_snippets.ts with a simple call to processSnippet on each Snippet instance?

This would remove the need to match on each snippet's type by delegating the implementation of the snippet logic to each derived Snippet class. I think processSnippet would be pretty much the only instance method though, so I'm not sure how much sense it'd make for Snippet to be a class.

personally tend to favor more functional-like approaches and don't really mind the switch statement, but seeing how the rest of the codebase is more imperative and oo-like it might be fair to move it into a class.
experimenting with refactoring it into a class at the moment, generally might not have the most immediate turnaround for the next few days though.

bulk of changes is listed in the commit, but summary:

snippets refactored back into class, snippet types are subclasses
regex snippets store trigger as final regexp (including trailing $), computed at parse time
exclusions are also computed at parse time now and stored as part of each snippet. i've also made it so each snippet stores exclusions as an array of excluded environments, so they can be excluded from multiple environments if needed without needing too much additional refactoring.
processSnippet() logic is moved into Snippet.process()
sortSnippets is refactored since triggers aren't always strings anymore. looks very different, but behavior should be the same, outside of the fact that it no longer mutates the array passed in so the the result needs to be assigned (and callers have been refactored accordingly)

Ah, I hadn't considered that storing triggers as RegExps would create issues sorting by trigger length. Your solution looks good though. I did a small amount of refactoring as the normalised snippets now always take the form { type, trigger, replacement, options, priority, description } and the normalisation step was adding a bit of unnecessary overhead, and fleshed out the docs. I'll push out a new update soon.
Thank you for your work!


Asbatch in dataframe.cc seems to have bug in converting the float number

Describe your problem
when I call the asBatch function, it reports a null value for the float number.
I use example input on the website https://v6d.io/notes/getting-started.html#creating-a-dataframe
>>> import numpy as np
>>> import pandas as pd
>>> import vineyard.data.dataframe
>>> df = pd.DataFrame({'u': [0, 0, 1, 2, 2, 3],
>>>                    'v': [1, 2, 3, 3, 4, 4],
>>>                    'weight': [1.5, 3.2, 4.7, 0.3, 0.8, 2.5]})
>>> df_id = client.put(df)

And I use this
#include "common/util/logging.h"
#include "client/client.h"
#include "basic/ds/arrow.h"
#include "common/util/typename.h"
#include "basic/ds/dataframe.h"
#include <iostream>

int main() {
   std::string ipc_socket = "/var/run/vineyard.sock";
  vineyard::logging::InitGoogleLogging("vineyard");
  vineyard::Client client;
  VINEYARD_CHECK_OK(client.Connect(ipc_socket));
  LOG(INFO) << "Connected to IPCServer: " << ipc_socket;

    vineyard::ObjectID df_id = 0x00020e02666c8964;
    auto r_df = std::dynamic_pointer_cast<vineyard::DataFrame>(client.GetObject(df_id));
    auto bool_array = r_df->AsBatch();

  return 0;
}

modules/playground/playground.cc in the repo
And I added some logs to the dataframe.cc,  here

If I run playground.cc then it prints out

however, at column2 start element: null should be at column2 start element: 1.5,

If is is a bug report, to help us reproducing this bug, please provide information below:

Your Operation System version (Ubuntu20.04`):
The version of vineyard you use (0.6.0):

To reproduce the bug,  run CMake .. with some options, I can not remember the exact configuration, and run make play

solved, the python client stores tensor as float64 type, my current fix is to add a single line in type.cc : >

Problem is fixed


LogCleaner: Fix relative paths and add a new test

Overview
Currently, if the user sets the log destination using a relative path (e.g., "testdir/"), then the log cleaner will scan "." for logs instead of "testdir/". This PR fixes the problem and adds a new test.
Root Cause

The second parameter pos of string::find_last_of indicates the position at which the search is to finish.
We should pass string::npos instead of 0 at line 1333.

https://github.com/google/glog/blob/3362cc6c79014170f80e1b8a5c74e7fd61fcb5e4/src/logging.cc#L1333-L1341
Fix

Pass string::npos instead of 0 at line 1333.
A new test is added (modified from src/cleanup_with_prefix_unittest.cc)

In ${TEST_DIR}, create a subdirectory named "test_subdir"
After executing the unit test, it expects a single log file in ${TEST_DIR}/test_subdir
In ${TEST_DIR}, remove the "test_subdir" directory

Codecov Report

Merging #754 (2f4779b) into master (f4dd77a) will increase coverage by 5.30%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #754      +/-   ##
==========================================
+ Coverage   71.38%   76.68%   +5.30%
==========================================
  Files          17       13       -4
  Lines        3208     2471     -737
==========================================
- Hits         2290     1895     -395
+ Misses        918      576     -342

Impacted Files
Coverage Δ

src/logging.cc
75.55% <100.00%> (+2.78%)
:arrow_up:

src/base/mutex.h
100.00% <0.00%> (ø)

src/raw_logging.cc
100.00% <0.00%> (ø)

src/windows/dirent.h

src/stacktrace_x86_64-inl.h

src/windows/port.cc

src/windows/port.h

src/demangle.cc
97.50% <0.00%> (+0.02%)
:arrow_up:

src/signalhandler.cc
6.81% <0.00%> (+0.28%)
:arrow_up:

... and 4 more

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 6e9b2f1...2f4779b. Read the comment docs.

[...] the log cleaner will not behave as intended.

What does this mean exactly, i.e., what is the intended behavior?

[...] the log cleaner will not behave as intended.

What does this mean exactly, i.e., what is the intended behavior?

I've updated the description of this PR.
if the user sets the log destination using a relative path (e.g., "testdir/"), then the log cleaner will scan "." for logs instead of "testdir/"

Thanks!


Unexpected "Indent" in class body when the real problem is different, and in another line.

Godot version
v4.1.1.stable.official.bd6af8e0e
System information
Windows 10.0.19045 - Vulkan (Compatibility) - GeForce GT 540M- Intel Core i7-2670QM CPU @ 2.20GHz (8 Threads)
Issue description
Writing something after func definition, for example:

Causes an "Unexpected Indent in class body" error to appear one line below, as shown.
This message does not inform the user about the real problem in their code, and makes them look for a problem in a perfectly correct line below instead, confusing them and making debugging unnecessarily harder and longer.
Steps to reproduce
Copy and paste this code, or write a similar one in the editor, then observe the bug:
extends Node

func _ready():K
	var rng = RandomNumberGenerator.new()

	rng.randomize()
	print(rng.seed)

Minimal reproduction project
N/A

Yes, we have certain problems with cascading errors in the parser and analyzer. See also:

#27702
#75052

Yes, we have certain problems with cascading errors in the parser and analyzer. See also:
* [Single GDScript syntax mistake causes multiple errors #27702](https://github.com/godotengine/godot/issues/27702)

* [Having .. gives incorrect error reports. #75052](https://github.com/godotengine/godot/issues/75052)

Uhh...? So, it wouldn't be fixed?

So, it wouldn't be fixed?

No, I didn't mean it. Your issue is correct. I just mentioned probably related issues to make it easier to find them when someone will fix some one. :slightly_smiling_face:


WCAG 2.0 - missing attributes.

...nt" style="float: left;">
<button type="button" id="cboxPrevious"></button><button type="button" id="cboxN...

This button element does not have a name available to an accessibility API. Valid names are: title attribute, element content.

http://www.w3.org/TR/WCAG20/#robust
http://www.w3.org/TR/WCAG20-TECHS/H91

Pretty sure the ones I see in the WAVE toolbar are:
<button style="" id="cboxPrevious" type="button"></button>
<button style="" id="cboxNext" type="button"></button>
<button style="" id="cboxSlideshow"></button>
Would be nice to see that these have proper attributes.

Does anyone have a patch, hack or instructions for eliminating this accessibility error?  I'm in the public sector here, and our site has received a complaint letter.  At this point I need to fix these errors, or I have to replace Colorbox altogether.  Thanks for any help.

The default Colorbox options place text in those button elements. If you are using icons instead, you can specify the aria-label attribute yourself. Here's the configuration I used on a recent project where I used Font Awesome icons for the controls:
var colorboxOpts={ 	rel: 'group1', 	close:'', 	previous:'', 	next:'' };

One more comment is the image in the lightbox carousel needs an alt tag. Our checkers are flagging the image for having no alt tag even if the tag should be empty.

Duplicate of #765.


Syntax error on line 40 of /etc/httpd/conf.modules.d/00-base.conf: Cannot load modules/mod_http2.so into se..._stream_priority

Morning,
I am receiving this error on startup of the httpd service.
Syntax error on line 40 of /etc/httpd/conf.modules.d/00-base.conf: Cannot load modules/mod_http2.so into se..._stream_priority

Any ideas?

After I performed the following
dnf update

I was able to get past that error. Guess there are some library udpates that need to occur to get this build working. Will submit a patch shortly.

full error message is httpd: Syntax error on line 56 of /etc/httpd/conf/httpd.conf: Syntax error on line 40 of /etc/httpd/conf.modules.d/00-base.conf: Cannot load modules/mod_http2.so into server: /etc/httpd/modules/mod_http2.so: undefined symbol: nghttp2_session_change_stream_priority

the missing nghttp2_session_change_stream_priority is defined in libnghttp2, so update this lib should fix this problem

If you could submit a PR that would be great.

@wstrange Hi, I have submitted a pull request for this issue, please review


JWT TCK tests are failing

Almost all tests are failing because the request is not getting authorized. The method JakartaSecurityManager.isUserInRole is returning false for the authenticated users, causing the tests to fail with status 403.
I think it's only checking for users in web.xml, but maybe I'm wrong

@arjantijms Can you have a look?


FIX BREAKING CODE: Convert lists into numpy arrays

The results from caer.train_val_split() were in the form of lists which was not compatible with the latest requirements of canaro.generators.imageDataGenerator().flow(). The current requirement is to convert them into numpy arrays. The same is done in the python file. Kindly accept the pull request and do the same update in the notebook

LGTM! Thanks for this. I'm merging the PR now. Feel free to open this up if the issue still persists sometime in the future.

LGTM! Thanks for this. I'm merging the PR now. Feel free to open this up if the issue still persists sometime in the future.


64-bit detection doesn't work if the user agent string is missing "Win64"

Problem
https://git-scm.com/download/win
Currently, the download page tries to detect the bit-ness of the system and automatically provide the correct download option. However, not all browsers provide this information the same way.
I've found that when the user agent contains "Win64", the website correctly detects that it's a 64-bit system. However, when the user agent is missing this, the website provides 32-bit downloads, even if the user agent string also contains "x64" or "x86_64".
To fix this issue, the 64-bit detection should also look for the presence of "x64" and "x86_64".
Alternatively, the website could default to 64-bit, and detect 32-bit platforms.

Thanks for reporting the issue @aaronfranke !
The 'bitness' detection is done at https://github.com/git/git-scm.com/blob/master/app/controllers/downloads_controller.rb#L49, and it's fairly basic.
user agent it's not very reliable. It can be faked, different browsers act slightly different, and there are also other situations like a 32 bits browser running on a 64 bits OS. And then there's google trying to stop user-agent: https://9to5google.com/2020/01/14/google-deprecate-chrome-user-agent-string-privacy/
So, we can extend the detection for now (I found this in a quick search https://stackoverflow.com/questions/27188292/detect-if-chrome-browser-installation-is-64-bit), but maybe it's not the path we want to follow in the future.
Let us know if you want to contribute by improving the browser detection for now :)
Random idea: a page with 3 nav-panes/tabs where the user would select the OS and list the existing options. And sort them by most visited

more on the topic:
apps that don't try to auto-detect the OS:

https://www.sublimetext.com/3
https://visualstudio.microsoft.com/

apps that auto-detect OS:

https://www.jetbrains.com/idea/download/
https://desktop.telegram.org/
https://www.whatsapp.com/download
https://www.google.com/chrome/
https://www.mozilla.org/en-US/firefox/new/
https://www.skype.com/en/get-skype/download-skype-for-desktop/
https://zoom.us/download

May be worth to check how they try to detect the OS

@dscho may have some input here as the GfW maintainer. Possibly on techniques for detecting the platform, but mainly I'd be curious what you'd most like to see on the download page (default to 64-bit, or stop default-downloading at all and just give options, or something else...).

In my opinion, it would be nice for 64-bit to be the default, and to discourage users from downloading the 32-bit version (such as by making the 32-bit links have a smaller font size). In my experience, most of the time the reason people are running 32-bit software is by accident. However, I completely understand if Git-SCM wants to try and auto-detect the user's system information.

Certainly in the Linux world, I'd agree that 64-bit is the vast majority these days, and 32-bit users usually know that they need a special version. I have no clue how true that is on Windows, though. I could well believe it's the same. Let's see what @dscho says; my preference is to defer to the Git for Windows project here.

32-bit is still the safe bet, as it also works in 64-bit OSes.
I'd rather tweak the bit-ness detection than defaulting to 64-bit.

32-bit is still the safe bet, as it also works in 64-bit OSes.

I should have clarified: it is the safe bet because it works, while 64-bit won't work in a 32-bit OS. Also, 32-bit works on ARM64 while 64-bit Git for Windows does not (ARM64 has an x86 emulator but not an x86_64 one).

Thanks. So it sounds like a pretty safe and small change would be to tweak the detection to match x64 and x86_64 in the user-agent string.
It also doesn't need to be part of the same fix, but I think we should consider moving the check out to the browser-side as part of our long-term effort to make all pages static and cachable.

I'm on a new device, Windows 11 for ARM (64-bit ARM64). Starting with Windows 11, it can run x86_64 apps, so 64-bit x86 is preferred over 32-bit x86 (although it would be nice if there were native ARM builds available).
My user agent in Firefox is this:
Mozilla/5.0 (Windows NT 10.0; rv:95.0) Gecko/20100101 Firefox/95.0

And my user agent in Chrome is this:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

In Chrome, the website successfully gives me the 64-bit version (although note that the user agent still claims to be x64 despite the system being ARM), but in Firefox it gives me the 32-bit version.
It may be that when the bitness is missing from the user agent, it's still a safer bet to default to the 32-bit version, but maybe this will change in the future. Also, at the same time, it's likely a bug that Firefox doesn't include the architecture in the UA. So I'm not sure that there's anything that the Git SCM website team needs to do, but I just wanted to leave a note here :)

thanks for exposing the issue @aaronfranke . i also think there may be little to do here. user-agent is just an effort to provide the best version, but there will always be edge cases
furthermore https://github.com/git/git-scm.com/pull/1660 is removing the auto download feature


compatibility with Laravel 5

Hi! Any roadmap to have the version working with L5?

I'm working on it... I think it will work as a middleware so I need to
rewrite most of it. I'll try to publish development branch rapidly.
Xavier
2015-02-08 17:07 GMT+01:00 robertobarbiera<EMAIL_ADDRESS>
Hi! Any roadmap to have the version working with L5?
—
Reply to this email directly or view it on GitHub
https://github.com/XavRsl/Cas/issues/14.

--
Xavier

Well,
we are looking forward to try it!

Be my guest !
Version 1.2.* works on Laravel 5. It's a very simple version, I got rid of
a few elements such as auth and session objects used when logout. I didn't
want to deal with the Laravel Session an the Laravel Auth systems in my
plugin as it was made in earlier versions. So if you need to end a session
and logout from Laravel's Auth, do it before using Cas's logout and
everything should be fine.
Xavier
2015-02-27 11:08 GMT+01:00 peyobr<EMAIL_ADDRESS>
Well,
we are looking forward to try it!
—
Reply to this email directly or view it on GitHub
https://github.com/XavRsl/Cas/issues/14#issuecomment-76368734.

--
Xavier

This simply works for me. It's up to me handling the logout.
Thank you!
Route::filter('cas', function(){
Cas::authenticate();

Auth::login(User::where('username', Cas::getCurrentUser())->first());

});
Route::group(['before' => 'cas'], function(){
Route::resource('nets', 'NetsController');

});

It handles the logout but probably doesn't kill the session. Although it
should as Cas itself renames the SESSIONID to one that it is able to kill...
I have to make more tests...
Xavier
2015-02-27 16:18 GMT+01:00 peyobr<EMAIL_ADDRESS>
This simply works for me. It's up to me handling the logout.
Thank you!
Route::filter('cas', function(){
Cas::authenticate();
Auth::login(User::where('username', Cas::getCurrentUser())->first());
});
Route::group(['before' => 'cas'], function(){
Route::resource('nets', 'NetsController');
});
—
Reply to this email directly or view it on GitHub
https://github.com/XavRsl/Cas/issues/14#issuecomment-76410181.

--
Xavier


Launched applications are not detached from the launcher process when resident

As per the title, applications are not detached from the launcher process when the drawer instance is resident.

Normally this goes unnoticed, but if SIGKILL is sent to the launcher, all child processes are terminated as well.
Probably related, in the screenshot it's also possible to notice gimp as a zombie process; this happened after quitting gimp.
It would be better instead if processes were left to the init system to handle, similarly as it happens when a standalone instance of the drawer executes an app, then quits.

Took a look at golang docs and at the launch function of nwg-drawer.
The fix might be really easy, actually:
the cmd object provided by os/exec contains the lower level Process object as per golang docs.
A Process object should be detached upon calling Release on it, so cmd.Process.Release() should do the trick.
Don't take my word for granted though, I'm just at the beginning with golang.

I'm just at the beginning with golang

LOL, so am I. Thanks for looking into it. Possibly I'll be able to push forward this, and some more pending tasks in next few days.

No problem!
Anyway, I managed to make it work, but I needed to include "sys" and add the setsid attribute to the child process.
cmd.Process.Release() didn't seem to impact in any way.
cmd.SysProcAttr = &syscall.SysProcAttr {
    Setsid: true,
}

cmd.Start()

This way, the child process isn't killed when the launcher is killed with SIGKILL.
As far as I know, this shouldn't prevent the program to be used on BSD if it previously worked, but I can't test right now.
I'm still searching a solution for the zombie processes.

edit: updated my fork, see nightly-brew@b78092c

This could be applied, but to be honest I can't reproduce the issue on my machine. If I starts some apps from the resident drawer instance, and then kill the drawer, the apps are still alive. Strange.

Interesting. You are right, but I still manage to reproduce the issue.
After testing some more though the behaviour seems to be weirdier than I was expecting and I'm starting to doubt if this is an issue with my setup, my knowledge of the system or something else.
Would you mind if I explained what I did?
I'm running archlinux on an x86_64 computer.
I tested this with keepassxc, gnome clocks and gnome calendar, all of them at the latest release.
To launch the resident instance I opened a kitty-terminal window, with bash as a shell, and promptly typed "nwg-drawer -r".
I opened another kitty window on the right with htop, to track the process tree.

If I open one of the mentioned programs, then send a signal with htop to the resident instance, the program is reparented correctly. I tried SIGKILL, SIGQUIT and SIGINT, no issue here.
The same can be said if I terminate the drawer by using killall -9 nwg-drawer (the number varies per signal).

What baffles me is the fact that ctrl+c is the same as sending SIGINT.
Am I missing something?

I launch the resident instance of the drawer from the sway config, like exec nwg-drawer -r. Possibly this makes the difference.

So it might be because of the terminal, or it might be caused by bash.
I'm going to investigate it tomorrow.

Found out what was happening.
Shells like bash, sh and so on handle started processes as jobs. Each one of the jobs can start other sub-processes to carry on their work.
The caller process and its spawns are put in what is called a process group. The process group is identified by the group's leader.
When pressing ctrl+c in bash, a SIGINT is sent to the entire process group of the foreground job, not only to its leader.
The difference is that htop and kill do not normally send the signal to the process group, but to the specified pid.
Well... I was sending SIGINT only to nwg-drawer, not to the spawned processes.
I verified that the behaviour becomes consistent if I use kill with a 'minus' in front of nwg-drawer's pid, as it sends the signal to the entire group.
What my fix did was effectively separate the spawned processes from the drawer's group process, preventing SIGINT and any other signal intended for the drawer's process group from reaching them.

What my fix did was (...)

If you think it should be added, feel free to PR.

I hope I'm not introducing any hassle with this PR, it would be a bummer.

Thanks!