[BUG] Invalid Generated SQL for TDVT string.contains test cases using CASE WHEN

Describe the bug
The TDVT framework is generating invalid SQL statements for string.contains test cases when Actian connector dialect formulas use Actian CASE WHEN syntax that is valid when tested manually apart from TDVT.
System Environment:

OS: MS Windows 10 Enterprise
Tableau Desktop Version 2023.2
connector-plugin-sdk repository cloned from master branch on Sep 26, 2023

About you:
Name: Michael Habiger
Company: Actian Corporation
Table Data Used for Test
Column definition:  str2  VARCHAR(255) from Calcs.sql and populated from Calcs.csv
=> select str2 from actian."Calcs"
str2
one
two
three
null
five
six
null
eight
nine
ten
eleven
twelve
null
fourteen
fifteen
sixteen
null

Failing TDVT tests

Test Set
TDSName
TestName
Test Case

expression.standard
cast_calcs
string.contains.empty
CONTAINS(str2,   LEFT(str2, 0))

expression.standard
cast_calcs
string.contains.null
CONTAINS([str1], Null)

expression.standard
cast_calcs
string.contains.null
CONTAINS([str2], Null)

expression.standard
cast_calcs
string.contains.regex
CONTAINS(str2, "A(")

expression.standard
cast_calcs
string.contains.regex
CONTAINS(str2, "A(")

expression.standard
cast_calcs
string.contains
CONTAINS(str2, "e")

expression.standard
cast_calcs
string.contains
CONTAINS(str1, "IND")

Example 1 - Use of Actian CONTAINING Predicate
Dialect Function/Formula Definition
<function group='string' name='CONTAINS' return-type='bool'>
            <formula>(CASE WHEN %1 IS NULL OR %2 IS NULL THEN NULL WHEN CHARACTER_LENGTH(%2) >= 1 AND %1 CONTAINING (%2) THEN TRUE ELSE FALSE END)</formula>
            <argument type='str' />
            <argument type='str' />
</function>

Manual SQL Check of Desired SQL
=> SELECT (CASE WHEN 'e' IS NULL OR str2 IS NULL THEN NULL WHEN CHARACTER_LENGTH('e') >= 1 AND str2 CONTAINING ('e') THEN TRUE ELSE FALSE END) from actian."Calcs"
col1
true
false
true
null
true
false
null
true
true
true
true
true
null
true
true
true
null

TDVT Generated SQL - INVALID
SELECT (CASE WHEN (CASE WHEN 'e' IS NULL OR ""Calcs"".""str2"" IS NULL THEN NULL WHEN CHARACTER_LENGTH('e') >= 1  AND ""Calcs"".""str2"" CONTAINING ('e') THEN TRUE ELSE FALSE END) THEN 1 WHEN NOT (CASE WHEN 'e' IS NULL  OR ""Calcs"".""str2"" IS NULL THEN NULL WHEN CHARACTER_LENGTH('e') >= 1 AND ""Calcs"".""str2"" CONTAINING ('e')  THEN TRUE ELSE FALSE END) THEN 0 ELSE NULL END) AS ""TEMP_Test__1364536471__0_""  FROM ""actian"".""Calcs"" ""Calcs"" GROUP BY 1
Error Message from TDVT Results
line 1, Syntax error on 'THEN'.  The correct syntax is:
 OPEN CURSORID CURSOR FOR fullselect
   [FOR [DIRECT | DEFERRED] UPDATE OF column {, ...   The correct syntax is:
 OPEN CURSORID CURSOR FOR fullselect
   [FOR [DIRECT | DEFERRED] UPDATE OF column {, ...   The correct syntax is:
 OPEN CURSORID CURSOR FOR fullselect
   [FOR [DIRECT | DEFERRED] UPDATE OF column {, ...   The correct syntax is:
 OPEN CURSORID CURSOR FOR fullselect
   [FOR [DIRECT | DEFERRED] UPDATE OF column {, ... }]
   [FOR READONLY]

Test Results CSV Files
test_results_combined-Contains-CONTAINING.csv
test_results_combined-Contains-LOCATE.csv

First, see if you can get a more specific line number out of the database error by adding some formatting to the CONTAINS function. Example:
<function group='string' name='CONTAINS' return-type='bool'>
  <formula>(CASE
	WHEN %1 IS NULL OR %2 IS NULL THEN NULL#10;	WHEN CHARACTER_LENGTH(%2) >= 1 AND %1 CONTAINING (%2) THEN TRUE#10;	ELSE FALSE END)</formula>
  <argument type='str' />
  <argument type='str' />
</function>

Second, review that CAP_QUERY_BOOLEXPR_TO_INTEXPR is correct for your data source. If it is enabled, review that the dialect is defining the Boolean Support correctly. Needing to set CAP_QUERY_BOOLEXPR_TO_INTEXPR to 'yes' is less common in modern databases.
Lastly, ensure the dialect definition is following the recommended list of bases dialects if one is being used.

Thanks @rosswbrown for the response and helpful suggestions. I will investigate further and follow up when I have more information.

@rosswbrown I am having trouble trying to change (fix?) the way our Tableau JDBC connector works with booleans.
It might be helpful to first show behavior of SQL statements using the Actian JDBC driver with an Actian Vector 6.3 database. The following examples do not involve any Tableau components other than using TDVT data in the Calcs table.
Example SQL statements showing INVALID boolean operations with Actian Vector
=> SELECT CASE WHEN TRUE THEN TRUE END FROM actian."Calcs" GROUP BY 1
Error code: 2515
SQLState:   42000
Message:    line 1, Syntax error on 'THEN'.

=> SELECT (date0 = (DATE '1972-07-04')) FROM actian."Calcs" GROUP BY 1
Error code: 2515
SQLState:   42000
Message:    line 1, Syntax error on '='.

=> SELECT 'Hello' FROM actian."Calcs" WHERE TRUE GROUP BY 1
Error code: 2515
SQLState:   42000
Message:    line 1, Syntax error on 'GROUP'.

Examples showing VALID boolean operations with Actian Vector
=> SELECT CASE WHEN 1=1 THEN TRUE END FROM actian."Calcs" GROUP BY 1
col1
true

=> SELECT date0 FROM actian."Calcs" WHERE date0 = DATE('1972-07-04')
date0
1972-07-04

=> SELECT 'Hello' FROM actian."Calcs" WHERE 1=1 GROUP BY 1
col1
Hello

In trying to customize the Actian Tableau connector boolean operations, I am setting the following values:
manifest.xml
<customization name="CAP_QUERY_BOOLEXPR_TO_INTEXPR" value="yes"/>

dialect.tdd
   <sql-format>
        <format-true value='(1=1)' />
        <format-false value='(1=0)' />
   ...
   </sql-format>

When attempting to run the TDVT suite with the format-true and format-false settings in dialect.tdd the following error occurs:
CalledProcessError: Return code: 17 LoadDatasource DataSourceException: Tableau doesn't recognize the data source type 'actian_jdbc'. It might not be available in this version of Tableau, or it might be a connector plugin that's not installed on this system.
If those settings are removed from dialect.tdd, the TDVT suite runs, but a large number of test cases fail related to checking boolean clauses/values.
e.g.  Generated SQL for Test Case: COUNT([bool0])
SELECT COUNT(CASE WHEN ""Calcs"".""bool0"" THEN 1 WHEN NOT ""Calcs"".""bool0"" THEN 0 ELSE NULL END) AS ""TEMP_Test__1133866179__0_"" FROM ""actian"".""Calcs"" ""Calcs"" HAVING (COUNT(1) > 0)

line 1, Syntax error on 'THEN'.

Request
I appreciate any help in diagnosing why the dialect.tdd becomes invalid when the boolean format settings are included.

There should be a specific error message at startup about why the dialect file didn't load. One thing to check is ensure the newly added elements match the XSD definition. The <sql-format> element unfortunately cares about the child element order, so check that those match.
Another option to try in your specific case is to base your dialect on the VectorWise20Dialect, since you're trying to make an Actian Vector connector.

I was able to resolve the problems described in this issue and get the string.contains* test cases to pass by removing the CASE WHEN clause from the formula and instead use a function called LOCATE that generates proper SQL against Actian databases.
Thanks @rosswbrown for your help.


Added QGIS.ZA user group

@timlinux some commit doesn't appear in the diff tabs. Did you rebase your branch or so? Could you confirm that you only want to add the South African QGIS User Group. Thanks.


gitignore godot logs folder

No objections to adding it, but how do you get Godot logs to show up?  Are they at the top level, parallel to "C7" and "C7Engine"?  Trying to figure out why I don't have them, or don't know where to look for them.

No objections to adding it, but how do you get Godot logs to show up? Are they at the top level, parallel to "C7" and "C7Engine"? Trying to figure out why I don't have them, or don't know where to look for them.

Yes I got logs/godot.log at the top level. I got it when I was using the editor last night and a build failed. Unfortunately, I can't remember the error or how I caused it, so I don't know how to reproduce it. Normally I build and run from the command line and I never see logs in the project dir otherwise

No objections to adding it, but how do you get Godot logs to show up? Are they at the top level, parallel to "C7" and "C7Engine"? Trying to figure out why I don't have them, or don't know where to look for them.

Yes I got logs/godot.log at the top level. I got it when I was using the editor last night and a build failed. Unfortunately, I can't remember the error or how I caused it, so I don't know how to reproduce it. Normally I build and run from the command line and I never see logs in the project dir otherwise

Could you add the process for building/running from the command line to the Wiki, probably a new section on this page?  I'm not sure that is obvious; at least I've yet to do it.

No objections to adding it, but how do you get Godot logs to show up? Are they at the top level, parallel to "C7" and "C7Engine"? Trying to figure out why I don't have them, or don't know where to look for them.

Yes I got logs/godot.log at the top level. I got it when I was using the editor last night and a build failed. Unfortunately, I can't remember the error or how I caused it, so I don't know how to reproduce it. Normally I build and run from the command line and I never see logs in the project dir otherwise

Could you add the process for building/running from the command line to the Wiki, probably a new section on this page? I'm not sure that is obvious; at least I've yet to do it.

No objections to adding it, but how do you get Godot logs to show up? Are they at the top level, parallel to "C7" and "C7Engine"? Trying to figure out why I don't have them, or don't know where to look for them.

Yes I got logs/godot.log at the top level. I got it when I was using the editor last night and a build failed. Unfortunately, I can't remember the error or how I caused it, so I don't know how to reproduce it. Normally I build and run from the command line and I never see logs in the project dir otherwise

Could you add the process for building/running from the command line to the Wiki, probably a new section on this page? I'm not sure that is obvious; at least I've yet to do it.

added: https://github.com/C7-Game/Prototype/wiki/Developing-and-Setting-Up-IDEs#command-line-development

No objections to adding it, but how do you get Godot logs to show up? Are they at the top level, parallel to "C7" and "C7Engine"? Trying to figure out why I don't have them, or don't know where to look for them.

Yes I got logs/godot.log at the top level. I got it when I was using the editor last night and a build failed. Unfortunately, I can't remember the error or how I caused it, so I don't know how to reproduce it. Normally I build and run from the command line and I never see logs in the project dir otherwise

Could you add the process for building/running from the command line to the Wiki, probably a new section on this page? I'm not sure that is obvious; at least I've yet to do it.

No objections to adding it, but how do you get Godot logs to show up? Are they at the top level, parallel to "C7" and "C7Engine"? Trying to figure out why I don't have them, or don't know where to look for them.

Yes I got logs/godot.log at the top level. I got it when I was using the editor last night and a build failed. Unfortunately, I can't remember the error or how I caused it, so I don't know how to reproduce it. Normally I build and run from the command line and I never see logs in the project dir otherwise

Could you add the process for building/running from the command line to the Wiki, probably a new section on this page? I'm not sure that is obvious; at least I've yet to do it.

added: https://github.com/C7-Game/Prototype/wiki/Developing-and-Setting-Up-IDEs#command-line-development


Add Tachograph Tab

Add a new tab between "damage" and "about" to display various graphs (acceleration over time, speed over time, etc).  Allow the user to enable/disable graphs based on config file parameters.

We could draw some inspiration from [rrdtool])https://en.wikipedia.org/wiki/RRDtool) when building such feature. Collecting and storing data on each refresh would lead to out-of-memory quickly. Collecting every second would be nice, but also only delay such problem.
AFAIK, rrdtool uses circular buffers with different granularities. For instance, we could have buffers of 512 samples (just an arbitrary amount), where one is for the latest 512 (real-world) seconds, another for the latest 512 minutes… Or something. Or maybe this is overdesigning the solution.
Another interesting issue is how to combine several samples into a lower-granularity one. What if we are reducing 60 seconds of samples into a single 1-minute sample? If this is speed, should we get the average? The median? The middle sample? Or the maximum?
We should also take care of what happens when the game is paused (i.e. the user has paused it, or is at the job menu, or any event the causes the in-game clock to stop). That means avoiding JavaScript setInterval or setTimeout to collect samples, instead collecting them every "x" in-game time period. Also, what about in-game sleep and in-game ferry? Most likely, they will introduce a gap to the graph (which makes sense).

Hmm... you bring up a very good point about memory consumption.  Perhaps we only hold so many data points (such as 100)? I don't know what the limit is, so testing in that department would be needed.
In terms of time scale, would we use game-time as our time axis? Or real-world time?  Game-time would be more appropriate IMO, but it may be harder to utilize.

Maybe it's time to create a website that curates this data and allows the user to view a long-term tachograph? We could even look at various trends among users and see where people drive most, most common cargo, etc.  Almost sounds like World of Trucks on steroids :laughing:  Of course that idea would be way out-of-scope for this skin.

In my personal example, I removed the items if it went over 50. Alternatively, we can blur old data, i.e. taking the average of ten datapoints and treating that as one datapoint. The advantage is that it consumes less memory while still retaining the whole picture. The disadvantage is extra work and possibly less performance. This is basically what @denilsonsa suggested, but I was thinking about a more gradual approach. (A bit like the game 2048, the memory stays the same, but the amount goes up.)
As for when to collect the data: If I am not mistaken, the telemetry data includes the current time. We can use that as the x-axis, because if we do, the game being paused is not a problem anymore.
Of course we could create a VTC, with driver logging, lorry details, leaderbords, database breaches and whatnot. But personally, I don't really think that that should be done through ETS2 Telemetry Server, but rather using its own plugin.

The server also has a paused property available, telling us immediately if the game is paused or not.  We could use that as well to avoid collecting the same data point over and over again when it isn't necessary.

Of course we could create a VTC, with driver logging, lorry details, leaderbords, database breaches and whatnot. But personally, I don't really think that that should be done through ETS2 Telemetry Server, but rather using its own plugin.

Not really sure if we even need to discuss  this topic right now (since this isn't even skin-related), but the telemetry server can send a POST request to an arbitrary URL defined in the .config file.  So it could be pretty simple to use the ETS2 Telemetry Server :wink:

The server also has a paused property available, telling us immediately if the game is paused or not. We could use that as well to avoid collecting the same data point over and over again when it isn't necessary.

Either that, or we could just compare the current time to the time of the latest sample; and only collect it if the difference is greater than <x>. Maybe both (collect a new sample if the game is not paused AND the time difference is greater than a certain amount).

Regarding a website, it makes sense to reuse the ets2-telemetry-server infrastructure to send data to a remote server. However, I believe it should be done in a separate skin, a very barebones skin that people should run on their desktop browser. Maybe even reduce skin the refresh/poll rate to once or twice per second.
This barebones skin would grab data from the game (through the telemetry server JSON URL), process it, aggregate it, and send it periodically (a couple of times per real-world minute?) to a remote server. Doing this in a (dedicated) desktop browser is much better than giving even more work to the mobile device.

The telemetry server supports "broadcasting" the telemetry data to an external URL every X number of seconds (between 1 and 86400).  However,  there is no way to "aggregate it", which would help cut down on bandwidth consumption.  At the same time though, I feel that opening a skin is a bit of extra work that the user really shouldn't have to do.  It would be ideal to have the server auto-aggregate and push the data every so often.


feat(typings): improve IPlacemarkOptions, add constructor for geometryEditor.Point and layout.Image

closes #144

Codecov Report

Merging #148 (3e4969d) into master (549d0c1) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #148   +/-   ##
=======================================
  Coverage   99.47%   99.47%
=======================================
  Files          13       13
  Lines         573      573
  Branches       83       83
=======================================
  Hits          570      570
  Misses          3        3

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 549d0c1...3e4969d. Read the comment docs.


Failing test case for nested select with @Param attributes

I have modified the existing complex column test suite to add a failing test case that uses an association to a mapped statement that uses @Param annotations.  Other than the query being defined in the java interface and using @Param instead of being in the XML the test is the same as the existing scenarios.

Thanks for the detailed test.
This is indeed a but. In 3.3.x the internal map that holds the input parameters for a mapper, fails if a get is called for a non-existing value. This change was added to fail-fast in case that someone has used a wrong name in an XML file.
The problem is that when filling input parameters a get("firstName") is called just to see if the parameter exists and what is its type and use the proper typehandler for it. The value is not yet in the "strict" map and it fails.
We will fix this for 3.4.1.


Use our preprocessor to split CalcObjectVisitor.java up into smaller pieces

Can use #include file to pull in other files.  Currently this is 6,600 lines, which is a bit much.  Maybe the format method could be broken out, but that's still a small piece overall. Of course, there are 650 lines of history comments as well, which are (IMO) overly verbose (but see #461 as a remedy for that)...

Of course, the file would have to be renamed to "CalcObjectVisitor.javapp" and we would run the preprocessor on all the "*.javapp" files in the "calc" directory.

I want to basically split up the file into functional groups:

operators
assignments
trig/log/math functions
statements
sumof/productof
?? some others ??
That way, the file to use when editing / adding is pretty obvious by the name, cuz there's like 300 methods and there needs to be some "method" to the madness.


Changes to a file belonging to a host mounted volume are not detected by nginx.

I'm using boot2docker 1.3.2 on OS X 10.9.5 and after starting boot2docker and exporting the environment variables I start docker with this command:
docker run -d -p 80:80 -v "$(pwd)"/html:/usr/share/nginx/html nginx
Where in "$(pwd)/html" I have a simple index.html file. Visiting http://<IP_ADDRESS>/ displays the page for "$(pwd)/html/index.html" (as expected), but changes made to "$(pwd)/html/index.html" are not displayed when reloading the page.
To force the changes to the file to appear on the page I find it is necessary to move "$(pwd)/html/index.html" to some other filename (index.html.moved for example), reload the page for which nginx generates a "403 Fobidden" error (as no index.html exists), then move the file back to its original location (i.e. mv html/index.html.moved html/index.html), after which reloading the page will show the changes made to index.html.
Is there a better way for changes made to a file in a host mounted volume to be detected by a processes running inside the docker container?
Warren.

Very annoying, +1 for fixing or working around it.

Its a big pain. +1

@haggen Yes, in my case getting everything to avoid using sendfile made it so I could work around the bug.  It took me weeks to find exactly what was using it, though.

@CleanCut Since the bug is in vboxsf, and it's also slow as hell, I replaced the shared folders with a nfs mount and documented the whole thing, here it is:
https://gist.github.com/haggen/f84f55e3ed2c9c930335

I just had this same issue, see nginxinc/docker-nginx#29.

I'm seeing the same problem with the vmwarefusion driver and docker-machine.

@kudos I agree, it seems that everybody (on the 20+ threads I've found for various projects) is just assuming it's a Virtualbox issue because Virtualbox hasn't responded for years. However running stat  shows the file being updated the the file contents are showing as updating, so I'm wondering what it is about sendfile or nginx, that is not picking up the change.

Same problem... But what I found out is:
When I update file in shared folder on my mac it reflects correctly to docker container, BUT something strange is happening with file in virtualbox vm... What I mean by strange... If, for example, I change file index.html with content 'Hello world' to 'Hi' then content of files would be:
'Hi' - /Users/username/Docker/nginx/html/index.html <--- on OS X
'Hel' - /Users/username/Docker/nginx/html/index.html <--- on VM
'Hi' - /usr/share/nginx/html/index.html <--- in the Docker container
If I change file index.html again to 'Hi again to all of you' then content of files would be:
'Hi again to all of you' - /Users/username/Docker/nginx/html/index.html <--- on OS X
'Hello world' - /Users/username/Docker/nginx/html/index.html <--- on VM
'Hi again to all of you' - /usr/share/nginx/html/index.html <--- in the Docker container
... and, of cause, nginx, with default settings, returns version of file from VM...

Just a heads up for others on this thread, I found this little tool very helpful with OSX docker development: https://github.com/brikis98/docker-osx-dev
The tool gets rsync up and running and is a great workaround for the send file issues.

Is this still ongoing? I hit this issue today on Windows 7, Docker Toolbox.

@ImranAhmed, yes, as far as I know it is still a bug/limitation when using VirtualBox Shared Folders.

Still an issue for me using gulp on the host machine and hosting the index file on the client. I just run this bash script for the time being:
#!/bin/bash

### Set initial time of file
LTIME=`stat -c %Z $1`

while true
do
   ATIME=`stat -c %Z $1`

   if [[ "$ATIME" != "$LTIME" ]]
   then
     echo "" >> $1
     echo "File Saved."
     LTIME=$ATIME
   fi
   sleep 3
done


feat(compatibility,catalog): missing columns in system catalog

Case 1.
2024-06-17T18:39:16.246489366Z ERROR handle_query{mode="extended query parse" session_id=29 sql=SELECT reltuples FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = $1) AND relname = $2}: pgwire::pg_protocol: error when process message error=Failed to prepare the statement: Failed to bind expression: reltuples: Item not found: Invalid column: reltuples<
Case 2.
2024-06-13T17:07:22.752019564Z ERROR handle_query{mode="extended query parse" session_id=1104 sql=SELECT att.attname, greatest(att.attndims, 1) AS attndims FROM pg_attribute AS att JOIN pg_type AS attyp ON att.atttypid = attyp.oid JOIN pg_class AS tbl ON tbl.oid = att.attrelid JOIN pg_namespace AS ns ON tbl.relnamespace = ns.oid WHERE ns.nspname = $1 AND tbl.relname = $2 AND attyp.typcategory = 'A'}: pgwire::pg_protocol: error when process message error=Failed to prepare the statement: Failed to bind expression: greatest(att.attndims, 1): Item not found: Invalid column: attndims

Wondering which tool were you using when you found this issue?

It's found by a user using Trino

Tried Trino and didn't meet the problem.


Cannot load file:// html templates

My apps loads html files as templates. I needed to add the below in order for this to work.
[configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];

Is there any better solution than patching the plugin? Thanks

https://github.com/oracle/cordova-plugin-wkwebview-file-xhr

this is a known WKWebView issue, you can use the mentioned file-xhr plugin, or move to cordova-ios 6 and use a custom scheme


:children_crossing: Allow df.groupby().mapply

Towards closing #36

Codecov Report
Patch coverage: 82.05% and project coverage change: -5.70 :warning:

Comparison is base (f602708) 100.00% compared to head (a97de27) 94.30%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@             Coverage Diff             @@
##            master      #40      +/-   ##
===========================================
- Coverage   100.00%   94.30%   -5.70%
===========================================
  Files            3        4       +1
  Lines           84      123      +39
  Branches        14       20       +6
===========================================
+ Hits            84      116      +32
- Misses           0        4       +4
- Partials         0        3       +3

Impacted Files
Coverage Δ

src/mapply/groupby.py
80.00% <80.00%> (ø)

src/mapply/mapply.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Merge filter in /search-demo into /listings

What is this feature or what feature is this part of?
Currently the filters modal is in it's own /search-demo and was put there initially so it wouldn't interfere with anyone else's work on maps, etc. We need to move /search-demo into /listings and /search-demo would no longer exist.

https://dev.doorway.housingbayarea.org/search-demo
https://dev.doorway.housingbayarea.org/listings

When this is complete, it may also fix #141. Need to verify & close out issue if it does.

This appears to fix #141


doc update regarding validation rules on object creation

Super helpful package, thanks a lot!!
But having just tripped over this issue, I thought it might be helpful to suggest an addition to the documentation for future users.

We already have a section on this: We're reworking validation completely for v4, this will also include new docs specific on validation. I think

okay. seems a shame not to be willing to put in an extra bit of information that could save users some time who aren't aware of it. But it's your project :shrug:


Add support for PHP 7.4

Looking forward to this landing - this is currently blocking our adoption of PHP 7.4 specific features.

this is currently blocking our adoption of PHP 7.4 specific features.

In the meantime you should be able to just install it manually:
steps:
      - name: Install PHP 7.4
        run: sudo apt-get install -y php7.4-cli

This will give you a PHP 7.4 installation in your workflow. Any additional extensions you'd need can be added in the same way sudo apt-get install -y php7.4-<ext>.

Instead of apt-get, you can use apt-fast which will speed up the installation of the packages.
Or you can use shivammathur/setup-php.

I'm aware of both options. It's just tedious to manually specify all the specific required extensions, and I'm reluctant to spend the time when this PR is ready to go.


How to use this what exact input i have to provide to run this project and see output

I have clone your project in my device and i am working on some research in incremental Computation and your project can help me alot i checked your darcshub repo too but not able which .hs file i have to run as it is showing some errors and what input and libraries do i need to import please help me out .

can you please help me to get that waht input the program needs to show the incremental computation

Hi, @jhavishal10! The incremental-computing package contains just a library; so there is no program to run. Furthermore, it’s still very much work in progress. Previous versions of incremental-computing used a approach very different from what the current version follows. The previous approach is described in the paper “Purely functional incremental computing”, which is published in the proceedings of SBLP ’16; the current approach I explained in my talk at the Haskell eXchange 2017, and a video recording of this talk should be available. Hope that helps.

Thanks for making a reply and kind gesture..., as haskell has a very very small community and i am new to this i am facing a lot of problems , i will check your video and paper and give you an update in a while  till then  can you  help me give me a syntax or program in which i want to just import your current library (most updated one on the darshub) and give inputs accordingly because i want to explore things about incremental computation and i don't know how to use your library and neither a good documentation is available .

and please provide the links of the resources that  you are talking about

Hi, @jhavishal10!
I’ll send you the paper about the first approach and the slides of the talk about the second approach per e-mail.
Note, however, that both approaches use advanced features of Haskell, especially type system features; so if you’re new to Haskell you’ll likely have trouble understanding the code. Unfortunately, I don’t really have the time to assist you in studying these incremental computing approaches.
Please note also that especially the new approach is still very much work in progress. I’d say that perhaps 30 % of the whole story are implemented. I plan to implement the rest at some point in time, but currently this library is by no means complete (and, yes, it’s also not documented yet, because things may still change considerably). In one or two years, the situation might be much better, but now is not yet a good time to study this new incremental computing approach, I’m afraid.

Thankyou again , i will try to run this library for some basic stuffs please proivde me the slides of your presentation and your first approach paper on tha mail ID<EMAIL_ADDRESS>


Renabling some unit-tests that were no_rocm's after the 200129 weekly sync

see individual commit messages for details

Can one of the admins verify this patch?

the flaky test //tensorflow/compiler/xla/tests:dynamic_ops_test_gpu strikes again in rocm-xla
http://ml-ci.amd.com:21096/job/develop-upstream-unit-tests/job/tensorflow-upstream-unit-tests-rocm-xla/1116/console

jenkins : retest rocm-xla please

upstream PR https://github.com/tensorflow/tensorflow/pull/36698 filed for the rocm_solver fix.
upstream PR https://github.com/tensorflow/tensorflow/pull/36341 updated with the other commits


-Pre is not a known parameter

The landing page (https://lucenenet.apache.org/index.html) says

-Pre  doesn't seem to be a known parameter for Install-Package
https://docs.microsoft.com/en-us/nuget/reference/ps-reference/ps-ref-install-package
https://docs.microsoft.com/en-us/powershell/module/packagemanagement/install-package?view=powershell-7.2
If it's an alias then it should be replaced with the canonical parameter so users know what installing with that parameter does.

I don't know what running that with -Pre will give me

Hi there. Thanks for pointing that out. It was copied from NuGet.org verbatim several years ago, and being that we never use that command on multi-targeted libraries, we were unaware the syntax has changed.
It looks like the switch was changed at some point to -AllowPrereleaseVersions instead of the shortened form -Pre. Although, it boggles the mind why the old switch is no longer aliased.
https://docs.microsoft.com/en-us/powershell/module/packagemanagement/install-package?view=powershell-7.2

The content for the website home page has been updated and this issue has been resolved.
Additionally the lucenenet.apache.org website now has a new Quick Start section that makes it easier for developers to get up to speed on using Lucene.NET.  This section include two step-by-step tutorials.


[Suggestion] Config option to disable only the Bright warp effect for Photophobic people + Wrenchable Wood

Love all the Warp effects implemented, they all seem a little annoying but not too much, reaching the perfect balance in my opinion as something that accumulated warp should cause. Congrats, Azanor!!
My only complain is with the one that makes the screen extremely bright and white due to literally making me feel pain because of a severe case of photophobia caused by my medical condition.
Could you, please, add a config to disable only that effect?
Btw, why are your logs not wrenchable? lol I just want to rotate my ender io facades (painted with greatwood log) but I can't :(
The ender io devs said that was because you just can't rotate your logs with a wrench

Just so there is more people on this, My wife is the same way. Back in Tc4 and lower she would have to stop playing for the x mins while this effect would happen. We love thaumcraft but if just this effect could be turned down or off that would be amazing!


[Bug] Percentage Calculate is not True , and now recovery it

I find some bug in the Rule Percentage Rule.So I make a pr to recovery it

What is the precise nature of the bug? You seem to be summing up the doc counts for each bucket_interval
sub bucket, which implies you want the total counts over buffer_time if I am correct?
However bucket_interval is an optional parameter so unless I am missing something you would just need to omit this from your rule definition to achieve the same behavior as the PR.

Test are failing

Can you resolve conflicts please :)

Can you resolve conflicts please :)


Strip HTML Whitespace characters

In some templates that create issues they will create issue bodies like the following:

Name: Name Of Person

This causes the key to be
Name and the value to be Name Of Person

We should strip these or given an option to the user to strip them if desired

#6 will address most use cases that don't fit well into key: value
Still, I think it's worth updating the default regex to match \w instead of .

Ah agreed, looks like that PR will fix our use case.


Add Support for VertexAI Gemini

Vertex AI x Instructor
This is an initial integration of the Vertex AI SDK so that instructor works with Gemini models via tool calling.
Addresses #592, #441, and others (like myself) who want to use Gemini (Vertex AI version) with instructor!
Usage
import vertexai.generative_models as gm
from pydantic import BaseModel, Field
import instructor
import vertexai

class Item(BaseModel):
    name: str
    price: float = Field(description="If missing, set to 0")

class Order(BaseModel):
    items: list[Item]
    customer: str

vertexai.init()

model = gm.GenerativeModel("gemini-1.5-pro-preview-0409")

gemini = instructor.from_vertexai(model)

model = gemini.create(
    response_model=Order,
    messages=[{"role": "user", "content": """
    Library visit details:
    Visitor: Jason
    Library ID: LIB123456
    Books checked out:
    - Title: The Great Adventure, Author: Jane Doe, Genre: Fantasy, ISBN:<PHONE_NUMBER>
    - Title: History of Tomorrow, Author: John Smith, Genre: Non-Fiction, ISBN:<PHONE_NUMBER>
    """}]
)

print(model)
# >>> output
# Order(
#     items=[
#         Item(name='The Great Adventure', price=0.0),
#         Item(name='History of Tomorrow', price=0.0)
#         ],
#     customer='Jason'
#     )

Note: Gemini tool calling is still in preview
Gemini does not support the entire OpenAPI Schema yet, this is straight from their docs:

Vertex AI offers limited support of the OpenAPI schema. The following attributes are supported: type, nullable, required, format, description, properties, items, enum. The following attributes are not supported: default, optional, maximum, oneOf.

So some pydantic fields like default_factory, or even some standard types like Unions will raise exceptions. Though hopefully this will resolve itself without any changes as Gemini start supporting more attributes. (That's why in the example I tell Gemini to place a 0 if the price is missing, as trying Union[float, None] raises an exception.)

:rocket: This description was created by Ellipsis for commit c5c488eb65277e20a8d5607f02de2050d719e1ab

Summary:
This PR integrates VertexAI Gemini models into the Instructor library, adding necessary client code, tests, and dependencies.
Key points:

Added support for VertexAI Gemini models in the Instructor library.
Created a new client file client_vertexai.py for VertexAI integration.
Updated instructor/__init__.py to conditionally import VertexAI client based on package availability.
Added new test cases in tests/llm/test_vertexai/ to cover VertexAI functionality.
Updated project dependencies in pyproject.toml to include VertexAI-related packages.

Generated with :heart: by ellipsis.dev

can you make sure to update the patch.md docs to cover the gotchas

I hate to delay this PR any further since I'm really looking forward to using Instructor.  However, it looks like 1.53.0 was just released with support for setting the response mime type and response schema 😄

I should add, I don't think you need to use a function/tool to get valid JSON back.  You could just use something like:
config = GenerationConfig(
  response_mime_type = 'application/json',
  response_schema = model.schema(),
)
response = client.generate_content(
  contents = ...,
  generation_config = config,
)

does this conflict with #726  #719
I see these a few PRs

I'm fairly confident there is no overlap. All the logic for vertex ai is behind VERTEXAI_TOOLS mode, which doesn't share logic with the gemini modes.

Will this work for VertexAI with litellm? I am currently running VertexAI with litellm and running into this issue:
APIError: VertexAIException - Unknown field for Schema: $defs
Model: gemini-1.5-pro-preview-0514
Messages: [{'role': 'system', 'content'

@punjabdhaputar It will not, this is a compatibility issue between pydantic  and the current gemini model.
When we use model_json_schema() on a pydantic model with nested models, we get an OpenAPI schema like this:
from pydantic import BaseModel

class Address(BaseModel):
    street: str
    city: str

class User(BaseModel):
    name: str
    address: Address

schema = User.model_json_schema()

print(schema)
# {
#     "$defs": {
#         "Address": {
#             "properties": {
#                 "street": {
#                     "title": "Street",
#                     "type": "string"
#                 },
#                 "city": {
#                     "title": "City",
#                     "type": "string"
#                 }
#             },
#             "required": ["street", "city"],
#             "title": "Address",
#             "type": "object"
#         }
#     },
#     "properties": {
#         "name": {
#             "title": "Name",
#             "type": "string"
#         },
#         "address": {
#             "$ref": "#/$defs/Address"
#         }
#     },
#     "required": ["name", "address"],
#     "title": "User",
#     "type": "object"
# }

Pydantic first uses $defs to define the nested model, and then inserts the definition into the main model with "$ref": "#/$defs/Address". Gemini DOES NOT support this type of nested definition (AFAIK OpenAI and Anthropic do), so it raises an exception.
In the current Gemini implementation, we get around this by replacing the reference with the definition directly using jsonref. Litellm would have to do something similar to ensure interoperability with the other providers.
This is also relevant in issue #748

Thank you for the detailed response! I can follow-up with litellm in case there is anything they can do on that side!

Hi, it seems you already support gemini json, would it be possible to just allow this.
litellm_client = instructor.from_litellm(
    completion,
    mode=instructor.Mode.GEMINI_JSON,
)

So that the response is handled as a gemini tool json spec.
Currently you can only use the GEMINI_JSON mode with just gemini.

I am getting
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/ai/models/gemini_model.py", line 37, in get_response_with_response_model
    |     return self.instructor_model.create(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/instructor/client.py", line 91, in create
    |     return self.create_fn(
    |            ^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/instructor/patch.py", line 143, in new_create_sync
    |     response = retry_sync(
    |                ^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/instructor/retry.py", line 151, in retry_sync
    |     for attempt in max_retries:
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/tenacity/__init__.py", line 435, in __iter__
    |     do = self.iter(retry_state=retry_state)
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/tenacity/__init__.py", line 368, in iter
    |     result = action(retry_state)
    |              ^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/tenacity/__init__.py", line 410, in exc_check
    |     raise retry_exc.reraise()
    |           ^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/tenacity/__init__.py", line 183, in reraise
    |     raise self.last_attempt.result()
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/_base.py", line 449, in result
    |     return self.__get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
    |     raise self._exception
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/instructor/retry.py", line 154, in retry_sync
    |     response = func(*args, **kwargs)
    |                ^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/vertexai/generative_models/_generative_models.py", line 524, in generate_content
    |     return self._generate_content(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/vertexai/generative_models/_generative_models.py", line 613, in _generate_content
    |     gapic_response = self._prediction_client.generate_content(request=request)
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/google/cloud/aiplatform_v1beta1/services/prediction_service/client.py", line 2125, in generate_content
    |     response = rpc(
    |                ^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/google/api_core/gapic_v1/method.py", line 131, in __call__
    |     return wrapped_func(*args, **kwargs)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/venv/lib/python3.12/site-packages/google/api_core/grpc_helpers.py", line 78, in error_remapped_callable
    |     raise exceptions.from_grpc_error(exc) from exc
    | google.api_core.exceptions.ResourceExhausted: 429 Quota exceeded for aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model with base model: gemini-1.5-flash. Please submit a quota increase request. https://cloud.google.com/vertex-ai/docs/generative-ai/quotas-genai.
    +------------------------------------

errors when using
model = gemini.create(
    response_model=Order,
    messages=[{"role": "user", "content": """
    Library visit details:
    Visitor: Jason
    Library ID: LIB123456
    Books checked out:
    - Title: The Great Adventure, Author: Jane Doe, Genre: Fantasy, ISBN:<PHONE_NUMBER>
    - Title: History of Tomorrow, Author: John Smith, Genre: Non-Fiction, ISBN:<PHONE_NUMBER>
    """}]
)

When using it without instructor like this
vertexai.init(project=project_id, location="us-central1")

model = GenerativeModel(model_name="gemini-1.5-flash-001")

response = model.generate_content(
    "What's a good name for a flower shop that specializes in selling bouquets of dried flowers?"
)

Everything works fine, which I believe means that the problem is not in the quota per se. Could you provide me a direction to go with this error?

I am getting
    |   File "/Users/gokturkdev/PycharmProjects/hekades-backend/ai/models/gemini_model.py", line 37, in get_response_with_response_model
    |     ...
    +------------------------------------

errors when using
model = gemini.create(
  ...
Everything works fine, which I believe means that the problem is not in the quota per se. Could you provide me a direction to go with this error?

Hey, you seem to be hitting one of gemini's api quota limits. You can also try my integration steps.

@gokturkDev I couldn't replicate the issue, but what is most likely happening is that the quota limit is being hit during the retries to fix the model output.
Gemini can often get the model wrong first try, usually due to types (ej. outputting ints when the model needs floats). If the generated model is wrong we immediately respond with the validation error and Gemini tries again with the additional info, by default this is repeated up to 3 times.
So you are most likely hitting the limit with these retry messages. You could try using VERTEXAI_JSON mode instead and see if you are able to get better results, or try to simplify the model if possible to lower the amount of retries needed, if at all.


Create a progressive animation

I imagine this will require lots of changes, but ideally I think it would be better if the cards moved and animated as much as the outer card moves, so if I move the outer card more, then the inner cards gets closer to their final position. When I let go the outer card, then the inner card finish their animations, either advancing or going back (depends if the outer card was removed or not.
It would be interesting too to give this % of movement (0 to 1) in the inner and outer wrappers, also the index, so we can customize animations, like opacity changes, as the cards move.
For example, I want to make my inner cards blurred, but not the outer card.

Sure @feinstein , that's a good improvement. I'll take a look in the future, but not promising anything 😄

No worries


fix(lint/noStaticOnlyClass): prevent error on static classes that extend other classes

Summary
Closes #3612
Updated NoStaticOnlyClass rule to exclude classes that have extends clause and added test case.
I'm wondering if i should do the same for implements clause?
Test Plan
Ran cargo test no_static_only_class and then cargo insta review to accept the new snapshot changes.

I'm wondering if i should do the same for implements clause?

I think so

@ematipico seems like implements won't really work without making the abstract class static as well, and doing that would lead to Avoid classes that contain only static members. error on the abstract class.
Here is the test case i created
abstract class Character {
  static alias: string;

  static attack(): void {
    throw new Error("Method not implemented.");
  }
}

export class Knight implements Character {
  static alias = "Warrior";

  static attack(): void {
    console.log(`${this.alias} attacks with a sword!`);
  }
}

On running cargo test no_static_only_class

Thoughts?

Yes we can


Disable tooltip but keep hover effect (line/area chart)

Hi,
How do i disable just the tooltip?
Confusingly, disabling the tooltip disables all the hover effects. That is not what i want.
I do have a mostly working solution of what i want:
  tooltip: {
    custom: function({series, seriesIndex, dataPointIndex, w}) {
      return ''
    },
  },

But i still get a 1x1 pixel block of where the tooltip would have been. How do i get rid of that?
Best regards,
Mark

A small proposal.
Would it be sane to add a "show" property to the tooltip. It seems to make perfect sense to me.
show: false would obviously not show the tooltip at all then, keep it at true by default.

a way to do that is
tooltip: {     custom: null, }


Corrected  alignment

@remcoeissing : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


DnRoot cleanup for doc blocks and some deodorant around the place

Please don't merge this just yet.. still a lot of work to do


Handle dependent tasks concurrently in the RayTaskRunner

When updating the RayTaskRunner #35, wrapping of Prefect futures with Ray task futures was introduced. For tasks with upstream dependencies, the upstream tasks need to synchronously unwrap the Ray future to provide the output of the upstream task to the downstream task. This may result in degraded performance for flows using the RayTaskRunner with many dependent tasks. The aim is to discover a way to concurrently handle Ray futures to enable concurrent execution for flows with dependent tasks.
@anticorrelator @zangell44 feel free to add any additional details or correct any inaccuracies in my description of the issue!

I believe instead of submitting the task run function directly it could submit its own helper which would resolve any ray references in the input then call the task run function. Seems kind of straightforward maybe? :)

I believe this issue is the reason that the Prefect 1.0 behaviour of "if a mapped task relies on another mapped task, Prefect does not reduce the upstream result. Instead, it connects the nth upstream child to the nth downstream child, creating independent parallel pipelines" does not work in Prefect 2.0 using RayTaskRunner.
See following code for minimal reproducible example:
from time import sleep

import numpy as np
from prefect import flow, task
from prefect_ray.task_runners import RayTaskRunner
from prefect_dask.task_runners import DaskTaskRunner

rng = np.random.default_rng()

@task
def square(a: int, b: str) -> int:
    sleep(rng.integers(100))
    print(f"{a=}, {b=}")
    return a**2

@task
def sqrt_then_add(c: int, d: int, e: str, f: str) -> int:
    print(f"{c=}, {d=}, {e=}, {f=}")
    return int(c**0.5) + d

# @flow  # works
# @flow(task_runner=DaskTaskRunner())  # works
@flow(task_runner=RayTaskRunner())  # doesn't work
def test_flow(num_map_tasks: int):
    map_keys = rng.integers(100, size=num_map_tasks).tolist()
    squared_future_list = square.map(map_keys, "foo", return_state=False)  # RayTaskRunner only works with return_state=True, but then each mapped task will block until all are finished
    doubled_future_list = sqrt_then_add.map(squared_future_list, map_keys, "bar", "baz")
    return doubled_future_list

if __name__ == "__main__":
    print(test_flow(20))

The default ConcurrentTaskRunner and DaskTaskRunner work as expected, submitting 20 square tasks and 20 sqrt_then_add tasks, and printing the final result for each key once the random sleep time finishes. RayTaskRunner only submits 3 square tasks and creates 1 sqrt_then_add, then eventually crashes with sqlite3.OperationalError: database is locked. If return_state=True in task.map, RayTaskRunner does compute without crashing, but submits only the first 20 square tasks, then waits until all 20 have computed before submitting the 20 sqrt_then_add tasks (i.e. reducing first, somewhat defeating the purpose of using a parallel task runner).
Correct me if I have misinterpreted, but solving this issue would also solve my issue with parallel map tasks with RayTaskRunner, so it would be great to get some movement on this core Prefect functionality.


[Upgrade Pacific] - OSD ERROR: unable to open OSD superblock on /var/lib/ceph/osd/ceph-0: (2) No such file or directory

Bug Report
What happened:
I don't know if it's really ceph related or ceph-ansible... anyway
Trying to update from ceph octupus 15.2.10 (installed with ceph-ansible) to pacific 16.2.0

Update playbook ( infrastructure-playbooks/rolling_update.yml ) stuck/failed at TASK: waiting for clean pgs...
OSDs down (two) on one node, i checked the logs : (exemple with osd-0)

2021-04-13T13:12:51.800+0000 7ff1281c4f00  0 set uid:gid to 64045:64045 (ceph:ceph)
2021-04-13T13:12:51.800+0000 7ff1281c4f00  0 ceph version 16.2.0 (0c2054e95bcd9b30fdd908a79ac1d8bbc3394442) pacific (stable), process ceph-osd, pid 116568
2021-04-13T13:12:51.800+0000 7ff1281c4f00  0 pidfile_write: ignore empty --pid-file
2021-04-13T13:12:51.800+0000 7ff1281c4f00 -1 bluestore(/var/lib/ceph/osd/ceph-0/block) _read_bdev_label failed to open /var/lib/ceph/osd/ceph-0/block: (1) Operation not permitted
2021-04-13T13:12:51.800+0000 7ff1281c4f00 -1  ** ERROR: unable to open OSD superblock on /var/lib/ceph/osd/ceph-0: (2) No such file or directory

What you expected to happen:

OSDs to restart normally.
Upgrade to be successfull.

How to reproduce it (minimal and precise):

Installed a previous cluster on octopus 15.2.10 (non-container, using systemd).
Launch roles/infrastructure-playbooks/rolling_update.yml

Here i listed the content of one the osd folder in /var/lib/ceph/osd/osd-0
test-cephadm1:/var/lib/ceph/osd/ceph-0# ls -l
total 32
drwxr-xr-x 2 ceph ceph  200 Apr 12 14:19 ./
drwxr-xr-x 4 ceph ceph 4096 Apr 12 13:57 ../
lrwxrwxrwx 1 ceph ceph   92 Apr 12 13:57 block -> /dev/ceph-f5b87c9b-91b1-43b5-a516-c08529318b87/osd-data-0f4ba751-f8a3-4e1a-b9be-0acf137f39cc
-rw------- 1 ceph ceph   37 Apr 12 13:57 ceph_fsid
-rw------- 1 ceph ceph   37 Apr 12 13:57 fsid
-rw------- 1 ceph ceph   55 Apr 12 13:57 keyring
-rw------- 1 ceph ceph    6 Apr 12 13:57 ready
-rw------- 1 ceph ceph    3 Apr 12 14:19 require_osd_release
-rw------- 1 ceph ceph   10 Apr 12 13:57 type
-rw------- 1 ceph ceph    2 Apr 12 13:57 whoami

Share your group_vars files, inventory and full ceph-ansibe log

Ceph ansible log :
ansible-logs.txt
inventory :

[mons]
node1.domain.local
node2.domain.local
node3.domain.local
node4.domain.local
[osds]
nodeadm1.domain.local
nodeadm2.domain.local
node1.domain.local
node2.domain.local
node3.domain.local
node4.domain.local
[mgrs]
nodeadm1.domain.local
nodeadm2.domain.local
[mdss]
nodeadm1.domain.local
nodeadm2.domain.local
[grafana-server]
nodeadm1.domain.local
[monitoring]
nodeadm1.domain.local

group_vars files :

 ==> File ceph-ansible/group_vars/all.yml :
---
monitoring_group_name: monitoring
ntp_service_enabled: true
ntp_daemon_type: chronyd
ceph_origin: repository
ceph_repository: community
ceph_mirror: http://download.ceph.com
ceph_stable_key: https://download.ceph.com/keys/release.asc
ceph_stable_release: pacific
ceph_stable_repo: "{{ ceph_mirror }}/debian-{{ ceph_stable_release }}"
monitor_interface: XXXX
public_network: X.X.X.X.X/24
cluster_network: X.X.X.X/24
ceph_conf_overrides:
  mgr:
    tick:
      period: 3
  mon:
    beacon:
      grace: 10

dashboard_enabled: True
dashboard_admin_user: admin
dashboard_admin_password: XXXX
node_exporter_container_image: "docker.io/prom/node-exporter:v1.1.2"
node_exporter_port: 9100
grafana_admin_user: admin
grafana_admin_password: XXXX
grafana_container_image: "docker.io/grafana/grafana:7.5.2"
prometheus_container_image: "docker.io/prom/prometheus:v2.26.0"
prometheus_container_cpu_period: 100000
prometheus_container_cpu_cores: 2
prometheus_container_memory: 4
prometheus_data_dir: /var/lib/prometheus
prometheus_conf_dir: /etc/prometheus
prometheus_user_id: '65534'  # This is the UID used by the prom/prometheus container image
prometheus_port: 9092

 ==> File ceph-ansible/group_vars/mgrs.yml :
ceph_mgr_modules:
  - diskprediction_local
  - restful
  - dashboard
  - status
  - iostat
  - ansible
  -
 ==> File ceph-ansible/group_vars/osds.yml :
---
dummy:
devices:
  - /dev/sdb
  - /dev/sdc

Environment:

OS (e.g. from /etc/os-release):  Ubuntu

NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Kernel (e.g. uname -a):  5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Docker version if applicable (e.g. docker version): 19.03.8
Ansible version (e.g. ansible-playbook --version): ansible-playbook 2.9.6
ceph-ansible version (e.g. git head or tag or stable branch):  stable-6.0
Ceph version (e.g. ceph -v): ceph version 16.2.0 (0c2054e95bcd9b30fdd908a79ac1d8bbc3394442) pacific (stable)

Thanks for your help.

Guess my problem was related with this PR : https://github.com/ceph/ceph/pull/40845
Quick Fix at
<EMAIL_ADDRESS>


Add CI via github actions

Ideally via github actions:
at least:

run (go) tests

ideally:

test coverage reporting
integration / e2e tests

For the most part you can copy https://github.com/cosmos/cosmos-sdk/tree/master/.github/workflows. If you have any questions let me know, I did the migration to github actions for the cosmos/tendermint repos.

For the most part you can copy https://github.com/cosmos/cosmos-sdk/tree/master/.github/workflows. If you have any questions let me know, I did the migration to github actions for the cosmos/tendermint repos.

thanks!

thanks!

@marbar3778 There are quite a few tests/checks that rely on simapp. Should I cut those, or incorporate those tests to use lazyledger-app instead of simapp? Would that be redundant, since those checks are already done in the cosmos-sdk?

@marbar3778 There are quite a few tests/checks that rely on simapp. Should I cut those, or incorporate those tests to use lazyledger-app instead of simapp? Would that be redundant, since those checks are already done in the cosmos-sdk?

you will want to have them use lazyledger-app. It is some duplication but we dont know if we will only use modules from the lazyledger-sdk

you will want to have them use lazyledger-app. It is some duplication but we dont know if we will only use modules from the lazyledger-sdk


renderdoc performance counter python api bug-about csinvocations

Description
I found that when using the Python API to extract performance counter data in RenderDoc, all CSInvocations are 0, but they are not 0 in the table in the RenderDoc UI.
Steps to reproduce

When I view Performance Counter data using UI, the csinvocations is not 0；2. but when I get it using python api, all of them are 0, and I still can't get the correct data when I switch to different formats. Other indicators are correct, only csinvacations is wrong.

Environment

RenderDoc version: 1.26
Operating System: windows
Graphics API: DX11

For steps to reproduce, as detailed in the documentation about filing issues please share a specific and complete reproducible test case that I can use to investigate the problem, such as a capture or executable depending on what is most relevant to the bug. Without a repro case it is usually impossible for me to replicate the situation you are running into, and it can easily waste time trying to reproduce a problem that is not as expected or described.
Please ensure that you have run your program on its own (not from RenderDoc) with API validation and have checked that your program does not produce any validation errors or warnings, since RenderDoc does not handle invalid API use. Make sure that you have updated your graphics drivers and if you have a different GPU or hardware available try testing on that to eliminate your hardware as a potential problem.
If you can't share your test case publicly due to privacy or NDA concerns you can contact me via email. Even if you can't share your test case privately email is typically the best avenue if you can discuss more details than you can privately.

I captured a frame file s.rdc of the original God game using renderdoc； then used renderdoc. Then I clicked the "File" menu and selected "Open Capture" to open the s1.rdc file. Then in the "API Inspector" window, I clicked the "Performance Counters" button to view the performance counter data. It was found that csinvocations was not 0, but when I extracted the data with python api, I found that csinvocations were all 0, and other indicators were normal.

What do you mean 'the original god game'. Is this your project that you created?
You are leaving out the two vastly most important parts - the actual capture you are using, and your python script. Without those you are not giving the information I would need to reproduce the problem since there is no way I can follow the same steps as you, steps like opening the capture are not relevant.

our game LostArk. clerical error！Thanks!

Our Game：fantasy of tower. thanks！

RenderDoc is only intended for capturing your own programs. Capturing programs that are not your own is not endorsed or allowed for any reason, and I will provide absolutely no support for it.


HSEARCH-2682 Malformed HTTP responses from Elasticsearch are not handled consistently

https://hibernate.atlassian.net//browse/HSEARCH-2682
It seems removing the (useless) timeout does the trick: I ran the test approximatively 70 times on the CI and got no failure (see http://ci.hibernate.org/job/hibernate-search-yoann/99/ and the previous ones).

merged


Doc fix causing Travis build failure

I fixed a few typos in doc/installation.md via #6263 and the build failed during live-test.exe. If that's not due to the fix, will the PR still be picked up for review?

Whilst I do not have experience in the workings of the Travis-CL test process,. It seems unlikely that changes to plain-text instructions would cause a build failure.
I had a look at the full log of the test process.
https://travis-ci.org/github/IntelRealSense/librealsense/jobs/676537276
The end of the log highlights the following line in red:
The command "./live-test.exe -d yes -i [software-device]" exited with 1.
This command is checked at line 1502 of the log.
https://travis-ci.org/github/IntelRealSense/librealsense/jobs/676537276#L1502
The build process seems to have passed when tested on most operating systems and languages (Windows, Linux, Mac, Android, C#, C++) but finally fails at 21 minutes into the test process when checked on Windows 7.
https://travis-ci.org/github/IntelRealSense/librealsense/jobs/676537276

Thanks, Yes the build failure is unrelated. The PR, after review, will be considered for the next release.


Plural Goes to OTHER If the device locale doesnot support ONE

I want to support plural in English
therefore I have a Localizable.stringdict ,
for "one", the string will be "1 LIKE"
for "other", the string will be "%d LIKES"
but it always goes to "1 LIKES" when device is in locale Chinese and app setting is in English.
When i switch the device to Locale English, the string becomes correct "1 LIKE"

@komayip thanks so much.

I solved this by add an extension.
use "%d likes".pluralize(1) to replace "%d likes".localizedPlural(1)
extension String {
func pluralize(_ args: CVarArg) -> String {
String(format: localized(), locale: Locale(identifier: Localize.currentLanguage()), args)
}
}


I'm using a python file, which launches a subprocess.Popen, here is the code:
def restic(repo, password, command, *args, cwd=None):
    arguments = [
        r"C:\Users\Name\scoop\shims\restic",
        command,
        "-r",
        BACKUPS_DIR + repo,
        *args,
    ]
    # print("DEBUG: ", " ".join(arguments))
    process = subprocess.Popen(
        arguments,
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT,
        env={**os.environ, "RESTIC_PASSWORD": password},
        cwd=cwd,
    )
    return process

def backup(remote, password, *, passive=True):
    process = restic(
        remote,
        password,
        "backup",
        ".",
        "--json",
        "--exclude",
        "backups",
        cwd=MOUNT_LETTER + ":/",
    )

Essentially, it can be reduced to: subprocess.Popen(["restic", "backup", "-r", "rclone:Dropbox:repository", ".", "--json", "--exclude", "backups"], cwd="R:/")
The command ran would actually be (if I'm not wrong) equivalent to: restic backup -r rclone:Dropbox:repository . --json --exclude backups while being in R:/.

What backend/server/service did you use to store the repository?
I'm using rclone mount on a FTP to mount it on R:/, which is then backed up by restic to a Dropbox (set on rclone too).
I'm using Windows 10.
Expected behavior
Backup works as intended and backups all files.

Actual behavior
Backup starts normally, indexes all files, backups around 25% of files (33% of bytes) then gets stuck on 2 archive files (zip and rar).
This happened once, I killed the process and relaunched a backup thinking it was a weird bug, but it happened again on the 2 exact same files.
Here is an extract of the output of the command:
INFO:root:{"message_type":"status","seconds_elapsed":53910,"seconds_remaining":111047,"percent_done":0.3268121735451903,"total_files":1124978,"files_done":316814,"total_bytes":64467280002,"bytes_done":21068691900,"error_count":17,"current_files":["/iTaste/ZIP/CDN Grossesse.rar","/iTaste/ZIP/Ecole Saint Joseph.zip"]}

INFO:root:{"message_type":"status","seconds_elapsed":54010,"seconds_remaining":111253,"percent_done":0.3268121735451903,"total_files":1124978,"files_done":316814,"total_bytes":64467280002,"bytes_done":21068691900,"error_count":17,"current_files":["/iTaste/ZIP/CDN Grossesse.rar","/iTaste/ZIP/Ecole Saint Joseph.zip"]}

INFO:root:{"message_type":"status","seconds_elapsed":54110,"seconds_remaining":111459,"percent_done":0.3268121735451903,"total_files":1124978,"files_done":316814,"total_bytes":64467280002,"bytes_done":21068691900,"error_count":17,"current_files":["/iTaste/ZIP/CDN Grossesse.rar","/iTaste/ZIP/Ecole Saint Joseph.zip"]}

INFO:root:{"message_type":"status","seconds_elapsed":54210,"seconds_remaining":111665,"percent_done":0.3268121735451903,"total_files":1124978,"files_done":316814,"total_bytes":64467280002,"bytes_done":21068691900,"error_count":17,"current_files":["/iTaste/ZIP/CDN Grossesse.rar","/iTaste/ZIP/Ecole Saint Joseph.zip"]}

INFO:root:{"message_type":"status","seconds_elapsed":54310,"seconds_remaining":111871,"percent_done":0.3268121735451903,"total_files":1124978,"files_done":316814,"total_bytes":64467280002,"bytes_done":21068691900,"error_count":17,"current_files":["/iTaste/ZIP/CDN Grossesse.rar","/iTaste/ZIP/Ecole Saint Joseph.zip"]}

INFO:root:{"message_type":"status","seconds_elapsed":54410,"seconds_remaining":112077,"percent_done":0.3268121735451903,"total_files":1124978,"files_done":316814,"total_bytes":64467280002,"bytes_done":21068691900,"error_count":17,"current_files":["/iTaste/ZIP/CDN Grossesse.rar","/iTaste/ZIP/Ecole Saint Joseph.zip"]}

You can see in seconds_elapsed it has been quite a long time, because I let it run overnight to see if it was just long to backup these files or if it was another issue. These 2 files are respectively 18.3MB and 7.3MB. EDIT: unit was kb, so these 2 files are respectively 18.3GB and 7.3GB.

Steps to reproduce the behavior
Apart from starting a backup on a mounted directory, there isn't much steps.

Do you have any idea what may have caused this?
Probably something wrong with those 2 files? EDIT: now that I realized files were huge, maybe their enormous size of 18GB and 7GB are the cause of the issue, however overnight it should have easily been able to download/upload them, is there another underlying issue on this?
Do you have an idea how to solve the issue?
No
Did restic help you today? Did it make you happy in any way?
Yes! I even made a dashboard to help me with backups!! Restic is an amazing tool that I'm looking forward to use on all my work!
Working as a web developer, it's quite important to have backups of everything :)

Do you still see the same issue if you run restic manually, that is without the python wrapper script?

EDIT: now that I realized files were huge, maybe their enormous size of 18GB and 7GB are the cause of the issue, however overnight it should have easily been able to download/upload them, is there another underlying issue on this?

That file size is not a problem at all for restic. I assume that you have sufficient quota on dropbox to store these files? Is rclone maybe printing some warnings? If you copy one of the large files from the rclone mount to a local folder and run backup on that file, does that work?

@MichaelEischer Thanks for your answer. I've started a backup excluding files larger than 5GB for now, once it's finished I will try running the command without the python wrapper, though I don't think it is what affects it, since I'm launching a subprocess and not actively running the command from python.
I do have sufficient quota on Dropbox to store any files, I'm only using 10GB out of Infinity 😉😄.
I don't see any warning from rclone nor from restic, they might have been hidden by the python wrapper but I'm printing all output, so once again it shouldn't be the problem.
Once the current backup is done, I'll try running manually & by downloading large files in a local folder and share the results here :)

Maybe these files are heavily fragmented?
You can check it with contig: contig.exe -a <FileName>.

Is rclone maybe printing some warnings?

After testing, it is! Here is a (truncated) output:
2022/07/25 09:56:24 ERROR : iTaste/ZIP/CDN Grossesse.rar: ReadFileHandle.Release error: 1 error occurred:
        * 150 0.015 seconds (measured here), 6.35 Mbytes per second

2022/07/25 09:56:24 ERROR : IO error: 1 error occurred:
        * 150 0.015 seconds (measured here), 6.35 Mbytes per second

[Truncated for readability...]

2022/07/25 09:56:25 ERROR : iTaste/ZIP/CDN Grossesse.rar: ReadFileHandle.Release error: 1 error occurred:
        * 150 0.015 seconds (measured here), 12.23 Mbytes per second

2022/07/25 09:56:25 ERROR : IO error: 1 error occurred:
        * 150 0.015 seconds (measured here), 12.23 Mbytes per second

2022/07/25 09:56:25 ERROR : iTaste/ZIP/CDN Grossesse.rar: ReadFileHandle.Release error: 1 error occurred:
        * 150 0.022 seconds (measured here), 23.36 Mbytes per second

2022/07/25 09:56:25 ERROR : IO error: 1 error occurred:
        * 150 0.022 seconds (measured here), 23.36 Mbytes per second

That seems to be the source of the problems. Does setting the environment variable GODEBUG=asyncpreemptoff=1 for restic change anything?

Closing this issue as so far it looks like the problem is unrelated to restic. Feel free to reopen this issue if you think otherwise.


If the counter goes over 100% of the MAX then it will fail

I made a quick fix to this problem

There is already a test on the max right above this. I need that to stay >= because if the count is at say 95/100, and someone does increment!(10), I still want it to draw the completed bar. You're right though, it shouldn't break the whole thing and display "105%" or something like that. Perhaps instead we just self.count = max if count > max in the #increment method or wherever makes sense.


add bubble sort

No description provided.

Please add your image in image folder nd update readme.md file it is all for contributors
do this then only i will be able to merge this..
Check this
#90 (comment)

This branch has conflicts that must be resolved


Possible to run flatpak-builder-lint only to lint the metainfo?

The docs say this:
flatpak install -y flathub org.flatpak.Builder
flatpak run --command=appstream-util org.flatpak.Builder validate tld.domain.appid.metainfo.xml

But this seems to just be the standard appstream-util:
flatpak run --command=appstream-util org.flatpak.Builder --version
Version:	0.8.2

So it doesn't catch the extra things that this (new?) linter is catching (e.g. https://github.com/flathub/org.plomgrading.PlomClient/issues/110)

So is it possible to run the new metadata validator "offline" (like without an entire build), just to validate the metainfo?  E.g., in my upstream CI.

Somewhat answering my own question... I can do this:
flatpak run --command=flatpak-builder-lint org.flatpak.Builder manifest  org.plomgrading.PlomClient.yaml

So maybe this is really a feature request for:
flatpak run --command=flatpak-builder-lint org.flatpak.Builder metainfo org.foo.bar.metainfo.xml

The doc was updated a few hours ago https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/#validation
Appstream-util is no longer used.
Anyway we were talking about this just today, so something like a subcommand should be made available.

Added in https://github.com/flathub-infra/flatpak-builder-lint/commit/c09ab63895e817d9214a0fb75afe21823f0f589a


Update pom.xml to prevent IDE import errors

Prevents an issue when importing IntelliJ IDEA where / gets added to the project.

Ta!


Exclude semicolon is a bad practice or not

I use standard and I have the following code:
const a = 'methodA'
const b = 'methodB'

class MyClass {
  [a] = () => (5 * 7)
  [b] = () => (5 * 10)
}

Of course, it will be compiled not correct. Try it online through REPL
There's the correct code:
const a = 'methodA'
const b = 'methodB'

class MyClass {
  [a] = () => (5 * 7);
  [b] = () => (5 * 10)
}

Standard allow us not to write semicolons, but sometimes it required. How I should resolve this situation more elegantly?

Never start a line with (, [, or `. This is the only gotcha with omitting semicolons, and standard protects you from this potential issue.
eslint: no-unexpected-multiline

See the no-unexpected-multiline rule for a list of violations it'll catch.

Usually prefixing the line with ; or void would fix it. In your case, it'll have to be ;.
// Bad
window.a = 2
(function () {})()

// OK
window.a = 2
;(function () {})()

// Also OK
window.a = 2
void (function () {})()

When omitting semicolons, the only rule to remember is never start a line with (, [ or `. When you must, you can prefix that line with a semicolon.
const a = 'methodA'
const b = 'methodB'

class MyClass {
  [a] = () => (5 * 7)
  ;[b] = () => (5 * 10)
}

It looks a bit silly at first, but you quickly get used to it.


keepass: 2.49 -> 2.52

Description of changes
https://keepass.info/news/n220109_2.50.html
https://keepass.info/news/n220506_2.51.html
https://keepass.info/news/n220909_2.52.html
Update keepass to latest: https://keepass.info/news/n220909_2.52.html
Fixed some fuzz/offsets in the patches to ensure clean application.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[x] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Build successfully on x86_64-darwin (with sandbox enabled), can you update your message ?
I am not a user of keepass so I didn't tested for no regression.


Vertical slider in reader

Describe your suggested feature
For webtoons. It already exists in TachiSy
https://github.com/jobobby04/TachiyomiSY/pull/216/commits/e554733a50604c8030913c8ec8b2755253ae023b
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[X] I have written a short but informative title.
[X] If this is an request for a feature in the original Tachiyomi, I am opening because multiple versions of TachiyomiS97 have been released without this feature.
[X] If this is an issue with an extension, or a request for an extension, I should be opening an issue in the extensions repository.
[X] I have updated the app to the latest version.
[X] I have checked through the app settings for my feature.
[ ] I have admitted that I am a clown by having checked this box, as I have not read these acknowledgements.
[X] I will fill out all of the requested information in this form.

It's all right, I will wait for upstream instead


Add IVTable interface to allow programmatically populating CCW

Is your feature request related to a problem? Please describe.
For a given COM wrapping struct (say IStream) it would be good to have the ability to allocate and populate a vtable utilizing the new PopulateVTable method. In WinForms we have to accomplish this by making partials for every struct to apply this interface.
Describe the solution you'd like
By applying an IVTable interface that leverages static interface methods, structs can be utilized via constrained generic helper methods without knowing which specific struct is being used. As a concrete example- to populate a ComInterfaceEntry table for ComWrappers you could write the following:
// Called like so: var table = ComInterfaceTable.Create<IStream>();
public static ComInterfaceTable Create<TComInterface>()
    where TComInterface : unmanaged, IComIID, IVTable
{
    Span<ComInterfaceEntry> entries = AllocateEntries<TComInterface>(1);
    entries[0] = new()
    {
        Vtable = (nint)TComInterface.GetVTable(),
        IID = *IID.Get<TComInterface>()
    };

    return new()
    {
        Entries = (ComInterfaceEntry*)Unsafe.AsPointer(ref entries[0]),
        Count = entries.Length
    };
}

Proposed implementation
This is based on what WinForms currently has implemented.
/// <summary>
///  Non generic interface that allows constraining against a COM wrapper type directly. COM structs should
///  implement <see cref="IVTable{TComInterface, TVTable}"/>.
/// </summary>
internal unsafe interface IVTable
{
    static abstract IUnknown.Vtbl* GetVTable();
}

internal unsafe interface IVTable<TComInterface, TVTable> : IVTable
    where TVTable : unmanaged
    where TComInterface : unmanaged, IComIID, IVTable<TComInterface, TVTable>
{
    private static sealed TVTable* VTable { get; set; }

    private protected static abstract void PopulateVTable(TVTable* vtable);

    static IUnknown.Vtbl* IVTable.GetVTable()
    {
        if (VTable is null)
        {
            TVTable* vtable = (TVTable*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(TVTable), sizeof(TVTable));
            ComHelpers.PopulateIUnknown<TComInterface>((IUnknown.Vtbl*)vtable);
            VTable = vtable;
            TComInterface.PopulateVTable(VTable);
        }

        return (IUnknown.Vtbl*)VTable;
    }
}

ComHelpers would be extended (by CsWin32) as follows:
static unsafe partial class ComHelpers
{
    public static void PopulateIUnknown<TComInterface>(IUnknown.Vtbl* vtable)
        where TComInterface : unmanaged, IComIID
        => PopulateIUnknownImpl<TComInterface>(vtable);

    static partial void PopulateIUnknownImpl<TComInterface>(IUnknown.Vtbl* vtable) where TComInterface : unmanaged, IComIID;
}

User code, such as WinForms, would extend the partial class like this to attach IUnknown callbacks. (These callbacks are protected in ComWrappers.)
static unsafe partial class ComHelpers
{
    static partial void PopulateIUnknownImpl<TComInterface>(IUnknown.Vtbl* vtable) where TComInterface : unmanaged, IComIID
    {
        // Custom behavior for specific COM CCWs can be done by checking typeof(TComInterface) against a specific
        // interface, such as typeof(IAccessible).
        CustomComWrappers.PopulateIUnknown(vtable);
    }
}

Additional context
This is a building block that we're able to use to apply another similar pattern to implementations of one of the CsWin32 generated COM struct interfaces to easily enlist it for exposure to COM through COM wrappers. To expose an IStream all we need to do is implement IStream.Interface and add a single additional interface:
public class MyStream : IStream.Interface, IManagedWrapper<IStream, ISequentialStream>
{
    // IStream.Interface implementation
}

cc: @lonitra

After exploring this some, I've made some small refinements to your proposal. These address thread-safety issues that can lead to crashes or memory leaks.
/// <summary>
///  Non generic interface that allows constraining against a COM wrapper type directly. COM structs should
///  implement <see cref="IVTable{TComInterface, TVTable}"/>.
/// </summary>
internal unsafe interface IVTable
{
    static abstract IUnknown.Vtbl* VTable { get; }
}

internal unsafe interface IVTable<TComInterface, TVTable> : IVTable
    where TVTable : unmanaged
    where TComInterface : unmanaged, IVTable<TComInterface, TVTable>
{
    private static readonly TVTable* vtable;

    static IVTable()
    {
        vtable = (TVTable*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(TVTable), sizeof(TVTable));
        ComHelpers.PopulateIUnknown<TComInterface>((IUnknown.Vtbl*)vtable);
        TComInterface.PopulateVTable(vtable);
    }

    private protected static abstract void PopulateVTable(TVTable* vtable);

    static IUnknown.Vtbl* IVTable.VTable => (IUnknown.Vtbl*)vtable;
}

static unsafe partial class ComHelpers
{
    internal static void PopulateIUnknown<TComInterface>(IUnknown.Vtbl* vtable)
        where TComInterface : unmanaged
        => PopulateIUnknownImpl<TComInterface>(vtable);

    static partial void PopulateIUnknownImpl<TComInterface>(IUnknown.Vtbl* vtable) where TComInterface : unmanaged;
}

namespace Windows.Win32.System.Ole
{
    internal unsafe partial struct IDropSource : IVTable<IDropSource, IDropSource.Vtbl>
    {
    }
}

This compiles when combined with a NativeMethods.txt that has:
IDropSource
ID2D1DeviceContext2

I should be able to get CsWin32 to generate this soon.


package export annoyances

The way the export stuff is done with the rexport macro, SBCL gives a warning when the ASDF system is reloaded, which, thanks to ASDF, gets promoted to an error. While not exactly incorrect, this is a pain for interactive development. Can we reconsider this approach?

Also, why are we exporting symbols from other packages?

Well, maybe we can just muffle those warnings?
Cyrus Harmon pisze:

The way the export stuff is done with the rexport macro, SBCL gives a
warning when the ASDF system is reloaded, which, thanks to ASDF, gets
promoted to an error. While not exactly incorrect, this is a pain for
interactive development. Can we reconsider this approach?

We are exporting symbols that are supposed to be the high level dictionary
into API package for the sake of simplicity.
Cyrus Harmon pisze:

Also, why are we exporting symbols from other packages?

I get exporting our own symbols but do we really want to re-export alexandria, serapeum, etc...? Why not just have the other internal packages :use those libraries instead of reexporting them from aux-package?

Certainly not from alexandria or serapeum. IIRC, the only symbol outside of
vellum that is exported is cl-ds:replica. This can be changed as well.

Ah, sorry i misunderstood you. :use is EVIL and out of the question. I will
write different kind of macro, one that will expand into defpackage form. This
will solve issue you described.

Ok. I'm not sure it's EVIL, but I take your point. We could use something like https://github.com/phoe/trivial-package-local-nicknames or we can roll our own macro. I think I see what you're driving at here.

I have a macro that I think does what you want. Want to see a PR?

@slyrus i actually just pushed my own solution. It may cause some eye bleeding though ;-)

Ok, we had similar thoughts. My implementation was:
(cl:defmacro def-fancy-package (package &rest options)
  (let ((reexports nil))
    (dolist (option options)
      (unless (consp option)
        (error "bogus FANCY-PACKAGE option: ~S" option))
      (destructuring-bind (optname . optval)
          option
        (case optname
          (:reexport
           (push optval reexports)))))
    `(eval-when (:compile-toplevel :load-toplevel :execute)
       (defpackage ,package
         ,@(remove :reexport options :key #'car)
         ,@(loop for rexport-spec in reexports
              append
                (destructuring-bind (rpackage . rsymbols)
                    rexport-spec
                  `((:import-from ,rpackage ,@rsymbols)
                    (:export ,@rsymbols))))))))

which allows for, e.g.:
(fancy-package:def-fancy-package :test-package
  (:use #:cl)
  (:reexport #:alexandria
                #:if-let
                #:when-let)
  (:reexport #:serapeum
             #:~>
             #:->)
  (:reexport #:metabang.bind
             #:bind))

Well, your version is much nicer, but the issue is that we don't really have a package suitable for it. Maybe we could submit it into serapeum? I do this reexport stuff in almost every project.

Sure, but for now we could just make a vellum-fancy-package package and use it here.

Do you want me to put my version in place or leave yours? I'm OK either way. Thanks!

I think that your version is much nicer, and I would rather use it. If you are willing to handle this, go ahead, just don't really name it vellum-fancy-package. You may add vellum.utils that will be loaded before aux-package. Normally I want to avoid writing my own utils but this seems to be the best option now. And we can add there destructuring-setf there as well :-)

Or, alternativly, we can just to this manually. There is a lot of symbols to consider, true, but that package does not change.

Ok, just pushed fancy-package-2.


Building mraa on yocto

Hello Community,
I 'am trying to build mraa for a custom yocto build. The processor is the same as beaglebone black. On
target and crosscompilation I get the error:
/opt/poky/2.1.3/mraa/build⟫ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/oe-sdk_cross.cmake ..
-- INFO - libmraa Version v1.7.0-40-ge0052ac
-- INFO - cmake Version 3.5.1
-- INFO - Target arch is armv7
-- INFO - Adding onewire backend support
-- INFO - Adding support for platform ALL
-- INFO - Adding support for all platforms
INFO - Adding ARM platforms
CMake Warning at src/CMakeLists.txt:186 (message):
  Enabled JSONPLAT but JSON-C library not found: Ignoring JSONPLAT

PYTHON2 attempting to build!
ERROR - node.h not found
ERROR - v8.h not found
ERROR - uv.h not found
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find Nodejs (missing: NODEJS_INCLUDE_DIRS)
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  cmake/modules/FindNodejs.cmake:55 (find_package_handle_standard_args)
  src/javascript/CMakeLists.txt:1 (find_package)

-- Configuring incomplete, errors occurred!
See also "/opt/poky/2.1.3/mraa/build/CMakeFiles/CMakeOutput.log".
See also "/opt/poky/2.1.3/mraa/build/CMakeFiles/CMakeError.log".

How can I solve the NODEJS_INCLUDE_DIRS?
Thanks for your help.

@Respekt1  take a look at my issue - maybe that is also a solution for you.

@Respekt1, how does your mraa recipe file look like? Generally, you have to either declare dependency on "nodejs" or manually specify things like NODEJS_INCLUDE_DIRS, NODEJS_EXECUTABLE, NODEJS_ROOT_DIR in the cmake parameters in the recipe.
Or just remove the Node.js binding from the build process, but that's sort of obvious and I assume you actually need it.

@Respekt1 did you check the hint from @alext-mkrs ?

@Respekt1, is this still actual?

@alext-mkrs: I build mraa with this commands:
cd ~
git clone https://github.com/intel-iot-devkit/mraa.git && cd mraa && \
mkdir build && cd build && \
cmake -DBUILDSWIGNODE=OFF -DCMAKE_INSTALL_PREFIX:H=/usr .. && \
make install

thanks for support

Did you really want to close the issue or just clicked the wrong button?
So you are actually building using a cross-compiler from the Yocto-generated SDK, do I get it right? Or you're building on the target?
Generally, whether it's a recipe or cross-compilation, you have to set those defines I mentioned earlier. If you're building in the target, you need to make sure you've installed the Node development package, so that headers are available.
Finally, you shouldn't really be having that problem if you set BUILDSWIGNODE=OFF. I don't fully understand your setup as you seem to try different things in your posts, so let's settle on one case or just elaborate on all of them.


Feat/combinded state for all predictions (review and merge me first)

This PR implements a switch from different map layers/sources per timestamp to a single layer and datasource.

all the commits in this pr from now on should also be made on the feat/SCL branch

On initial loading I have this error in my console

But everything still works so not a breaking issue

On initial loading of the map I get a "map is null" error in the console. But everything still works so not a breaking issue:)
I am not a fan of escaping eslint errors (// eslint-disable-next-line react-hooks/exhaustive-deps) but I also don't know how to resolve it, would take some time. So if it is extra effort we can live with it:)
Otherwise looks good to me, can be merged:)

The "map is null" error is there on purpose. I want to log this in order to see if it is null at any point. The log shows it when the component mounts (which is fine) but you shouldn't see any new log when the map is visible

The disabling // eslint line is not an error and just a warning. I know what the warning is for and how to avoid it ( by updating the array with dependencies) But in our case the deps array is enough. Thats why i surpress the warning.


Category selector as an option for variable fields

Variables and their usage as form fields give me so many new ways to implement features.
But what I am really missing at the moment is the category selector that is available for relationship fields.
It would be nice to have the same input type for form fields of relationship variables.

The issue is that there are dozens of options available for all different types of input fields that variables can represent. Adding them all would be a pain. I´ll have a look at what we can sensibly do and let you know.


Implement synchronous device code credential

This closes #6352 with a credential implementing synchronous device code authentication using an MSAL public client application (the async equivalent is tracked by #6293).
When its get_token method is called, this credential acquires a URL and code from AAD, then blocks until a user authenticates at that URL with the code. The credential respects an optional timeout and accepts an optional callback allowing an application to control how the URL and code are presented.

Can one of the admins verify this patch?

/azp run python - client - ci

/azp run python - client - ci


[INFRA] Get container names via API

Artifacts available for download:

Artifact Name
Download Link

clang.versions
https://github.com/seqan/actions/actions/runs/11598911080/artifacts/2124576994

gcc.versions
https://github.com/seqan/actions/actions/runs/11598911080/artifacts/2124573621

intel.versions
https://github.com/seqan/actions/actions/runs/11598911080/artifacts/2124573693


Add sequencing logic into the InsertBuild and test

Appreciate review and comments on this effort.
I think it is worth considering a slight refactor of the utility functions to take a *bolt.Tx -- a nil would indicate that they should create the bolt.Tx.
Either this, or BoltDB supporting nested transactions (AFAICT it does not) would simplify these changes, and allow them leverage the insert function. I think this signature would work:
func insert(db *DB, t *bolt.Tx, bucket, key []byte, v interface{}) error {
}

As an aside, is there a reason the get, raw, update, insert, and delete functions should not be defined as methods on the DB type? I suppose this is a style question, but given they all operate on a *DB, it seems a natural fit.
Thanks!

Looks great, merging.
Good suggestions RE refactoring, I definitely think we could refactor to pass in the transaction as suggested. We may not need to pass in the database object.
Bolt offers a convenience function for creating a transaction and automatically managing commit and rollback which would remove a bunch of boilerplate from our code:
err := db.Update(func(tx *bolt.Tx) error {
    ...
    return nil
})

so we could maybe do something like this:
func (db *DB) InsertBuild(repo string, build *Build) error {
    return db.Update(func(tx *bolt.Tx) error {
        err := get(t, bucket, key, v)
        if err != nil {
           return err
        }
        insert(t, bucket, key, v)
        if err != nil {
           return err
        }
        return nil
    })
}

func insert(t *bolt.Tx, bucket, key []byte, v interface{}) error {
   ...
}

It cuts down on the boilderplate and we no longer need to worry about invoking Commit and Rollback which is a bit tedious.

I'd seen that convenience function, too. Wasn't sure how far to go initially. I'll create an issue to track the refactor. Thanks.


Fix workflow_dispatch trigger for Winget workflow

Landing a Pull Request (PR)
I'm not sure why the release trigger did not trigger, but anyhow, I added a tag name input to the workflow_dispatch trigger to fix the workflow failure.
Branching checklist

[ ] There is an issue associated with your PR (bug, feature, etc.. if not, create one)
[ ] Your PR description references the associated issue (i.e. fixes #123456)
[ ] Code is in its own branch
[ ] Branch name is related to the PR contents
[ ] PR targets main

Static analysis checks

[ ] All rust files are formatted using cargo fmt
[ ] All clippy checks pass when running cargo clippy --all-targets --all-features -- -D warnings -A clippy::mutex-atomic
[ ] All existing tests pass

Documentation

[ ] New code is documented using doc comments
[ ] Documentation about your PR is included in the docs, as needed. The docs live in a separate repository. Update the appropriate pages at the links below.

[ ] update example config file section
[ ] update help output section
[ ] add an example
[ ] update comparison table

Additional Tests

[ ] New code is unit tested
[ ] New code is integration tested, as needed
[ ] New tests pass

appreciate it! I ran out of time to dink with it yesterday and just left it til this morning. The plan was to manually fire it for now and figure out the release trigger later, lol.
Thanks again for the help!

Now it works: https://github.com/epi052/feroxbuster/actions/runs/9545359358/job/26305946498, but it didn't create the PR since I manually created it earlier: https://github.com/microsoft/winget-pkgs/pull/158049. Let's just see about it on the next release 🙂

https://github.com/microsoft/winget-pkgs/pull/173424


Add conditions in the input/output logic flow for special cases

We can add conditions in the input/output logic flow to handle special cases. For example:
a) not court related
b) template with 0-1 fields
c). template out of MA
d). these conditions can also be saved as vars in the output for AL to use, e.g template_fields_number.
See Weaver input/output overview worksheet Question 3.

See also #390

I think this fits more generally into the "let people customize the output patterns" file


[Question] How to use the VertexHandler rotationEnabled

setting
VertexHandler.prototype.rotationEnabled = true

but didn't work
Could you tell me how to use it

Hi, can you provide more details about what you try to achieve?
Please also have a look at #83 and at https://github.com/maxGraph/maxGraph/blob/v0.5.0/packages/html/stories/Stencils.stories.js. I don't know if the story work.

In this file(https://github.com/maxGraph/maxGraph/blob/v0.5.0/packages/html/stories/Stencils.stories.js.),setting rotateEnable = true

When I run, I still don't see the rotation

Hi nobody has worked on this topic so the issue probably still exists.

I would be also curious. While setting "VertexHandler.prototype.rotationEnabled = true" works fine in mxGraph it doesn't work with maxGraph.

I would be also curious. While setting "VertexHandler.prototype.rotationEnabled = true" works fine in mxGraph it doesn't work with maxGraph.

Hi @mjankela, this is probably due to the definition of VertexHandler in maxGraph which uses the class construct form

Hi @to0simple for now, you can use the following workaround:

provide a custom VertexHandler that ignore the rotationEnabled property (mimic a true value)
use the custom  VertexHandler in a custom implementation of the Graph class
use the custom implementation of the Graph class

  class CustomVertexHandler extends VertexHandler {
    // the following code is adapted from magraph v0.11.0
    isRotationHandleVisible() {
      const selectionHandler = this.graph.getPlugin(
        'SelectionHandler'
      ) as SelectionHandler;
      const selectionHandlerCheck = selectionHandler
        ? selectionHandler.maxCells <= 0 ||
          this.graph.getSelectionCount() < selectionHandler.maxCells
        : true;

      return (
        this.graph.isEnabled() &&
        // this.rotationEnabled && // this is the original condition
        this.graph.isCellRotatable(this.state.cell) &&
        selectionHandlerCheck
      );
    }
  }

  class CustomGraph extends Graph {
    constructor(container: HTMLElement) {
      super(container);
    }
    createVertexHandler(state: CellState) {
      return new CustomVertexHandler(state);
    }
  }

#480 will provide new ways to enable the rotation. It should be included in the next maxGraph version.
ℹ I have notice that there may be an issue with the handles: #482