update nodejs version to >=20.9 in version 1.2.0

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

let's set up the process on how we'll maintain multiple versions
reference - https://conda-forge.org/docs/maintainer/updating_pkgs/#maintaining-several-versions


Layout Generator

[ ] Add route to routes file
[ ] Template name + tags in HTML file

Closed with this commit https://github.com/timsvoice/meteor-maker/commit/e44946db116eb4cb7ff707814812ef7c70e6c4db
Creates generalized UI element generator


can't start label-studio by docker offline

          >

Hi I have same problem. But I can start serve in docker, but when I access the internet. It logs `RuntimeError: can't start new thread.
Originally posted by @YuantianGao in https://github.com/heartexlabs/label-studio/issues/3561#issuecomment-1596723673

The error message:
`Starting development server at http://<IP_ADDRESS>:8080/
Quit the server with CONTROL-C.
Exception occurred during processing of request from ('...*', 54290)
Traceback (most recent call last):
  File "/usr/lib/python3.10/socketserver.py", line 316, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python3.10/socketserver.py", line 697, in process_request
    t.start()
  File "/usr/lib/python3.10/threading.py", line 935, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread

how did u fix it?


Update free-courses-hi.md

What does this PR do?
Add resource(s)
For resources
Description
Added Dynamic Programming Course
Why is this valuable (or not)?
Yes, it is valuable because the course is very extensive.
How do we know it's really free?
It is available on YouTube.
For book lists, is it a book? For course lists, is it a course? etc.
It is a course.
Checklist:

[X] Read our contributing guidelines.
[X] Search for duplicates.
[X] Include author(s) and platform where appropriate.
[X] Put lists in alphabetical order, correct spacing.
[X] Add needed indications (PDF, access notes, under construction).
[X] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

Please add hacktoberfest and hacktoberfest-accepted label


fix: super refinement function types

Typescript was complaining about the .superRefine argument returning a Promise when it was expecting a void return.
This fixes it so it accepts Promise<void> as a valid return value
Attachment of error:

ccing @colinhacks for review 🙏

Awesome thanks! Guess there's not a lot of async super-refiners out there.

Any chance this will be included in a release soon?

Landed in 3.22


add tape.tearDown handler

Should fix issue #175 (though without actually emitting an event).

This seems reasonable.


Enable SQLite driver

See https://github.com/Toblerity/Fiona/pull/999

It seems that GDAL 2.0 picks SQLite as the preferred driver for opening a GPKG file, thereby losing CRS WKT support.
Probably the easiest way to fix it is adding a conditional skip pytest.mark.skipif for this old GDAL version.

Closes #992

It seems that GDAL 2.0 picks SQLite as the preferred driver for opening a GPKG file, thereby losing CRS WKT support.
Probably the easiest way to fix it is adding a conditional skip pytest.mark.skipif for this old GDAL version.

It seems that GDAL 2.0 picks SQLite as the preferred driver for opening a GPKG file, thereby losing CRS WKT support.
Probably the easiest way to fix it is adding a conditional skip pytest.mark.skipif for this old GDAL version.

@caspervdw , is it better to drop support for GDAL 2.0, which was release in Jun 2015? GDAL 2.1 was released in Apr 2016 and 5 years seems like a very generous amount of support time for an open-source project.


remove getattr [run_process_replay]

some issue with process replay since it only captured ast and not conditional on env variable

Yea, gonna merge this and fix


Add the ability to specify local key for view embedding

Let's say I use the following schema:
CREATE TABLE person
(
    id bigserial NOT NULL,
    name character varying COLLATE pg_catalog."und-x-icu" NOT NULL,
    CONSTRAINT person_pkey PRIMARY KEY (id)
);

CREATE TABLE message
(
    id bigserial NOT NULL,
    sender bigint NOT NULL,
    recipient bigint NOT NULL,
    body text COLLATE pg_catalog."und-x-icu" NOT NULL DEFAULT ''::text,
    CONSTRAINT message_pkey PRIMARY KEY (id),
    CONSTRAINT message_recipient_fkey FOREIGN KEY (recipient)
        REFERENCES person (id) MATCH SIMPLE
        ON UPDATE CASCADE
        ON DELETE CASCADE,
    CONSTRAINT message_sender_fkey FOREIGN KEY (sender)
        REFERENCES person (id) MATCH SIMPLE
        ON UPDATE CASCADE
        ON DELETE CASCADE
);

CREATE OR REPLACE VIEW person_detail AS
 SELECT p.id,
    p.name,
    s.count AS sent,
    r.count AS received
   FROM person p
     JOIN LATERAL ( SELECT message.sender,
            count(message.id) AS count
           FROM message
          GROUP BY message.sender) s ON s.sender = p.id
     JOIN LATERAL ( SELECT message.recipient,
            count(message.id) AS count
           FROM message
          GROUP BY message.recipient) r ON r.recipient = p.id;

Now, when I ask for the key-based table embedding, everything looks fine:
http localhost:5000/message \
  select=='*,sender(*),recipient(*)'

But when I try to embed the view instead, I get something unexpected:
http localhost:5000/message \
  select=='*,sender:person_detail(*),recipient:person_detail(*)'

Both users are the same! Well... the generated SQL looks like this:
SELECT
    "message_1".*,
    row_to_json("person_detail_sender".*) AS "sender",
    row_to_json("person_detail_recipient".*) AS "recipient"

FROM "public"."message" AS "message_1"

LEFT JOIN LATERAL (
    SELECT "person_detail_2".*
    FROM "public"."person_detail" AS "person_detail_2"
    WHERE "person_detail_2"."id" = "message_1"."sender"
) AS "person_detail_sender" ON TRUE

LEFT JOIN LATERAL (
    SELECT "person_detail_2".*
    FROM "public"."person_detail" AS "person_detail_2"
    WHERE "person_detail_2"."id" = "message_1"."sender"
) AS "person_detail_recipient" ON TRUE

Let's see if we can guide it a little bit more closer to the home:
http localhost:5000/message \
  select=='*,sender:person_detail.sender(*),recipient:person_detail.recipient(*)'

Error: Could not find foreign keys between these entities, No relation found between message and person_detail

Well, that's the end of the road, isn't it?
Now for something completely different, what about asking in the other direction, just to see if it works:
http localhost:5000/person_detail \
  select=='*,sent_messages:message.sender(*),received_messages:message.recipient(*)'

Well, this works fine.
Would it be possible to specify the local key column to use when embedding a not-directly-referenced relation?

try
localhost:5000/message?select=id,body,sender:person_detail.sender(id,name),recipient:person_detail. recipient(id,name)

(avoid using *, always list columns in select)

I have tried both the query you suggested and a variant using the person table instead of the view and PostgREST does not seem to follow. Both failed with "Could not find foreign keys between these entities, No relation found between message and ...".
http localhost:5000/message \
  select=='id,body,sender:person_detail.sender(id,name),recipient:person_detail.recipient(id,name)'

http localhost:5000/message \
  select=='id,body,sender:person.sender(id,name),recipient:person.recipient(id,name)'

Help?

Did you restart PostgREST after you created your view. Try restarting
Also can you paste complete url string, not http commands, it’s hard to follow and not sure how it’s syntax works

On 15 Mar 2018, at 16:19, Jan Hamal Dvořák<EMAIL_ADDRESS>wrote:
I have tried both the query you suggested and a variant using the person table instead of the view and PostgREST does not seem to follow. Both failed with "Could not find foreign keys between these entities, No relation found between message and ...".
http localhost:5000/message
select=='id,body,sender:person_detail.sender(id,name),recipient:person_detail.recipient(id,name)'
http localhost:5000/message
select=='id,body,sender:person.sender(id,name),recipient:person.recipient(id,name)'
Help?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Yes, I have restarted PostgREST several times and have tried current master built using stack to make sure I am using the most recent version available.
curl 'localhost:5000/message?select=id,body,sender:person.sender(id,name),recipient:person.recipient(id,name)'
# {"message":"Could not find foreign keys between these entities, No relation found between message and person"}

I have trouble following the code. It's mostly not commented and functions are dense and long. 11 indentation levels in addRelations is simply too much. I would normally try to submit a patch or at least sketch a possible solution, but I was not able to. Sorry.

@mordae When you specify the person_detail.<colname> part in
GET /message?select=*,sender:person_detail.sender(*),recipient:person_detail.recipient(*)

The <colname>(sender or recipient) part is meant to reference a column of person_detail, and as per your schema that view doesn't have that column, that's why you get the no relation detection error(this error message could be improved), also that's why this request works:
GET /person_detail?select=*,sent_messages:message.sender(*),received_messages:message.recipient(*)

Since sender,recipient are columns of message.
That feature(introduced in #918) only allows to specify the target table/column of the JOIN but not the source column, currently this is not supported.

@steve-chavez I suspected that to be the reason. Consider this a feature request.

@jg nein, leider nicht
David Getto
reach us at +49<PHONE_NUMBER>3
begriffs/postgrest on March 19, 2018 at 12:52pm wrote:
@steve-chavez ( https://github.com/steve-chavez )I suspected
that to be the reason. Consider this a feature request.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
( https://github.com/begriffs/postgrest/issues/1078#issuecomment-374186624 )
, or mute the thread
( https://github.com/notifications/unsubscribe-auth/AiSecZirQwNTgX8gOKt5g4_OQRpvGmAPks5tf5vfgaJpZM4SaStv )
.

This would require to extend pgrst with an additional operation in the url, also disambiguating embeds can get more complicated with composite keys.
To provide a more generic solution without complicating the url too much how about if we disambiguate embeds based on foreign keys(the CONSTRAINT names), an example:
-- Using #918 to disambiguate
GET /person_detail?select=*,sent_messages:message.sender(*),received_messages:message.recipient(*)

-- FK Proposal
GET /person_detail?select=*,sent_messages:message_sender_fkey(*),received_messages:message_recipient_fkey(*)

This would be enough if we only had tables but since we have views that have artificial relationships we need to additionally(with the + url safe character) provide a table/view name for pgrst to do the embed, this would solve this issue:
GET /message?select=*,sender:message_sender_fkey+person_detail(*),recipient:message_recipient_fkey+person_detail(*)

@begriffs @ruslantalpa Thoughts?

i for example don't have them named specifically, they are auto generated so i am not sure a lot of people give much attention to their name. If you start using constraint names, then you need to start looking into their definitions (to see what columns they are using) so this would involve a lot of changes.
Why can't we use column.table format?
We already have this format for the other relations (table.table for many-many and table.column on-many) so depending on the order of the column/table strings, it could inform the relation type in a way (this is off the top of my head, need to review the current state since we support omitting the fk name when we can guess the relation, we'd need a list of all the current formats and see how the new feature/format fits in).

For me the table.column/table.table/column.table notation is confusing, table.column makes me think this notation it's related to pg namespace syntax but then table.table/column.table don't follow.
I think this notation(same for Child/Parent):
GET /person_detail?select=*,sent_messages:message+sender(*) -- Child
GET /message?select=*,sender:person_detail+sender(*) -- Parent

Would be more intuitive because it reflects the operation of embedding the table plus + adding precision(both requests will work without + but they'll embed the first found Relation) to get the desired result.
About the FK constraint I'll refrain from discussing that until there's an issue about composite keys,  the + notation could be extended to include it later.

For now I've added the option to use the same notation for specifying the source column, now this works:
GET /message?select=*,sender:person_detail.sender(*),recipient:person_detail.recipient(*)

Forgot there was a problem with the + character(https://github.com/begriffs/postgrest/pull/864#issuecomment-298828830), so the person_detail.sender notation will stay.

@steve-chavez Your self-reference-fix branch (with the above commit) works for me.
I am a little bit nervous about the number of possible meanings of the detail field, though. The selectors might benefit from some disambiguation. For example:
selectors := <selector> | <selector> "," <selectors>
selector  := <alias> ":" <local-col> ":" <remote-rel> "." <remote-col> "(" <selectors> ")"

I wouldn't go as far as to propose full path specification (with unlimited remote part repeats), because that would open the door to some serious asymmetrical data DoS attacks.
selectors   := <selector> | <selector> "," <selectors>
selector    := <alias> ":" <local-col> ":" <remote-path> "(" <selectors> ")"
remote-path := <remote-spec> | <remote-spec> ":" <remote-path>
remote-spec :=  <backref-col> "." <remote-rel> "." <fwdref-col>

@mordae About limiting the depth of embeds there's some ideas in this issue https://github.com/begriffs/postgrest/issues/249#issuecomment-334629208, main idea is to do it a the pg level by limiting the query cost, also if you have suggestions for improving pgrst query grammer check https://github.com/begriffs/postgrest/issues/1017#issuecomment-346981443.


Run tests with .NET 9.0

@Frassle found the issue https://github.com/dotnet/sdk/issues/44610

Workaround in CLI https://github.com/pulumi/pulumi/pull/17783
Once that's released, we can do the upgrade here.


Convert to Python3

using : find . -name '*.py' | xargs 2to3 -w

Thanks! Merged to the master, will update pip when I find a spare minute...
Note: Unfortunately I don't have BH account anymore thus cannot test it properly, but just by looking to your PR I don't see anything that could break it, everything seems perfectly compatible with py3.


Ionic View

Hi. Is it possible to share the app via Ionic View? http://view.ionic.io/

Not sure, I would need to see some docs on how Ionic View works internally.

why not using testflight?

@nickw this will be really nice to have. were you able to check this. Thanks

Has this issue been addressed yet?

I'm assuming this feature requires bundling an angular-ionic app to Ionic's servers - so probably not possible with Meteor.


test failure on 'GRPCClientTests testMetadata]'

seen in PR: https://github.com/grpc/grpc/pull/8304 against v1.0.x
log in: https://grpc-testing.appspot.com/job/gRPC_pull_requests_macos/1859/testReport/junit/(root)/objc_macos_dbg/objc_tests/
error message:
Test Case '-[GRPCClientTests testMetadata]' failed (4.256 seconds).

Stale


Missing scripts for online training

Hello,
I wanted to try your implementation of the Variational Joint Filtering with Kalman filtering online but it seems that some modules are missing.
In the online.py script the following modules are not imported and I can't find them in the repo: base, observation, decoder, dynamics and metric.
Would you be able to upload these scripts to the repo or tell me where to find them if they are to be downloaded from another source?
Thank you
Michele

@MicheleLeva Hi Michele. The VJF class in the module model is the one being used. The VJF has only online mode so far as intended for the realtime neuroscience purpose.
The module online and offline were meant for an offline mode but have not been fully implemented yet.

Thank you, then I'm going to use the VJF class in the module model as you suggested.
I wanted to use the VJF to train the parameters of a Kalman Filter, is there a particular method I should use to do so?
I appreciate your help.

@MicheleLeva I'm not sure if you mean the SSM only or including the inference algorithm as well by Kalman filter.
For the former, you only need to implement a linear dynamical system to replace the default RBF dynamical system model.RBFDS and use a Gaussian likelihood.
For the latter, you have two options besides the LDS. 1) Learn the SSM only: use the exact Kalman filter inference algorithm for the posterior and optimize the SSM parameters wrt. ELBO. 2) Amortized variational inference: implement a full rank Gaussian recognition model (inference network) if you aim for exactly the same as Kalman filter because only diagonal Gaussian variational posterior has been implemented. It might take effort.


Add python3-requests

It's needed by the integration tests I added for psinode.

Should we merge this?

Should we merge this (It's still a draft)?

It's linked to https://github.com/gofractally/psibase/pull/472, which is not ready yet. I guess this part is okay to merge now.


Fix MudTable multi-select when using server data and paging

Description
Fixes #2366 in MudTable by changing how the header/footer selection checkbox works when ServerFunc is provided. More specifically, in this case, any select all checkboxes will only apply to items that are displayed on the current page.
The behavior for MudTable for non-server data (ServerFunc not provided) is unchanged, in that select all checkboxes will still select items across all pages.
This also fixes the loading indicator when ServerFunc is legitimately async. In this case, StateHasChanged needs to be called after IsLoading is set to true, and then again after the Task is awaited. Before, I think in many cases the loading indicator would show, likely by luck due to other StateHasChanged calls, but I had noticed that the initial load in particular failed to show the indicator, and sorting had the same issue IIRC.
How Has This Been Tested?
Tested visually via added TableServerSideDataPagedSelection.razor, and other existing table tests.
Associated bUnit test also added to TableTests.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

https://user-images.githubusercontent.com/1431941/150621242-03572e03-41aa-4d07-addb-4380eaab5505.mp4
Checklist:

[x] The PR is submitted to the correct branch (dev).
[x] My code follows the code style of this project.
[x] I've added relevant tests.

Hey, just wondering if there is a timeframe on when this is expected to go into a version of mudblazer. If there is anything I can do please let me know.

This is fixed in latest release?
https://github.com/MudBlazor/MudBlazor/releases/tag/v6.0.10
https://github.com/MudBlazor/MudBlazor/pull/4426

Hey, sorry for the confusion, the ticket was open so I presumed it had not gone in. Thanks for the update.

MudTable: Fixed check-all not selecting all items after filtering in multiselect mode. #4426
I have pulled the NuGet package from 03/05/22 and it states MudBlazor 6.0.10 release
This still in fact looks to behave in the way that looses all reference to the previous selected states it seem.
Can I check it have definitely made its way into the NuGet package please?

@henon @mikes-gh
Could this please be re-opened?
This PR provides exactly the functionality we need, and so it seems many others.
Since MudDataGrid is uncertain? and MudTable the only alternative,
I'm willing to put in the effort necessary work to get this merged.

@Yomodo Since you wont be able to push to this branch can you copy this PR and start a new one please.
Thanks for your offer.


Fallback message if Memento API is down

If we can't communicate with Memento for whatever reason, send a configurable person a direct message on slack

Better served by setting up out-of-band alarming in Azure


Creating REST endpoint for search.

Not sure about the RESTFUL JSON API status, but I'd like to implement a REST endpoint, so that it returns related articles when called from remote and search keywords are passed in. I see some simplesearch_results.json.twig stuff in the simplesearch plugin, and I think it could be related, but I can't figure out how to implement the endpoint.
Could you shed some light on this?
Thanks!

The webmention plugin does some endpoint processing.

Thanks @Perlkonig, I will look into the plugin shortly.

Search offers a JSON endpoint by default, by going to http://yoursite.com/search.json/query:your_query


Page request is so slow

I found out page request is too slow by using with docker. How can I optimize YAWIK. Thanks a lot.

On each request we currently call an "ensureIndex". This line creates indexes, if they are not existing.
Try to comment the line an test, if the requests gets faster.
https://github.com/cross-solution/YAWIK/blob/develop/module/Core/src/Core/Repository/DoctrineMongoODM/DocumentManagerFactory.php#L35

ensureIndex was removed. It's not needed any more. Will be available in 0.32


feat: complete set function of the Memory structure

At the moment the implementation of the set function inside the Memory structure is not complete:
https://github.com/keep-starknet-strange/cairo-zig/blob/f7065762676d169052e9e19b3049569107ec2428/src/vm/memory/memory.zig#L98-L125
There is a lack of checks and verifications to ensure, for example, that the added element is inserted next to the last one on the segment or that another element already exists at this address to possibly return an error.
Here are the implementations that can guide our Zig implementation:

Implementation in Rust: https://github.com/lambdaclass/cairo-vm/blob/e6171d66a64146acc16d5512766ae91ae044f297/vm/src/vm/vm_memory/memory.rs#L119-L165
Python implementation: https://github.com/starkware-libs/cairo-lang/blob/10d257de5f49543757599cad9afaa5b4dd6d752b/src/starkware/cairo/lang/vm/memory_dict.py#L189

Can take this one

Can take this one

@oxlime Assigned

I believe this should be closed with the new Data and temp Data Set function

@oxlime I think we still need to add certain checks inside with certain error returns, right? For now I just simply add the element in data without any check. I see for example, among other things, the check to know if an element already exists in the designated location, in which case it is necessary to return an error because we do not have the right to rewrite over an element (read only): https://github.com/lambdaclass/cairo-vm/blob/e6171d66a64146acc16d5512766ae91ae044f297/vm/src/vm/vm_memory/memory.rs#L155
What do you think?

i see agreed, will do


Use upstream edk2.nix

Description of changes
Use upstream edk2.nix instead of the duplicate one in the repo
Testing
Tested unit boots after flashing on an Orin NX

Thanks!


Datagrid React AI enhancements

Placeholder epic, details TBD.

Closing this as not planned, for now.


first go at data

LGTM for a first draft. @davharris take a look when you get a chance and merge when you're happy.

@davharris  I saw the comment about seasons in my email but not here, did you delete it?

No, it probably got hidden when you added a new commit.
The gist was, do we need to say anything about how we handled Fall climate data? Did we do something like using Fall 1998 data in the 1999 transects, on the theory that the 1999 climate hadn't happened yet?
Dave

On May 16, 2017, at 5:10 PM, Shawn<EMAIL_ADDRESS>wrote:
@davharris I saw the comment about seasons in my email but not here, did you delete it?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

No, I don't remember doing anything like that. I don't see anything in the code that that does anything like that either.

Oh, okay. I vaguely remembered talking about something like that a year ago and must have misremembered the outcome of the conversation.
Now that I think about it some more, I think we decided not to do anything like that because the transact runs occurred over such a long period and it wasn't clear what date to use for the cutoff.
Given that it's kind of weird to ask "how will next month's (June) weather affect what birds we'll find on today's transect run (in May)", it's probably worth adding a sentence pointing out that quirk of our data.
Or you could just merge now and we can deal with it later.
Dave

On May 16, 2017, at 5:42 PM, Shawn<EMAIL_ADDRESS>wrote:
No, I don't remember doing anything like that. I don't see anything in the code that that does anything like that either.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Actually I think this might be worth chatting about a bit more. Maybe merge this and open an issue for us to discuss?

Sure


Add support for the unlicense

Resolves: python-poetry#6689

[x] Added tests for changed code.
[x] Updated documentation for changed code.

#489 is in the process of automating the update, which will regularly refresh the list and include this specific license, so IMO it's better to wait for it to be merged rather than adding licenses manually.

fair


Add a RAG based chatbot that helps with ingesting

Proposal: Integration of a Retrieval-Augmented Generation (RAG) Chatbot
Overview
This proposal outlines the integration of a Retrieval-Augmented Generation (RAG) chatbot into the cyclotruc-gitingest repository. The RAG-based chatbot will enhance the repository by providing intelligent query handling and contextual responses derived from ingested GitHub repositories.

Problem Statement
Currently, the project processes and ingests GitHub repositories efficiently but lacks an interactive and intuitive system for querying ingested data. Users must rely on manual query processes via existing APIs or CLI commands. This limits the usability and accessibility of the tool, especially for non-technical users.

Proposed Solution
Integrate a RAG-based chatbot that leverages the ingested repository data to:

Retrieve Contextual Data: Utilize vector embeddings to fetch relevant content from ingested repositories.
Generate Informative Responses: Combine retrieved information with a pre-trained language model (e.g., GPT) to produce coherent and contextual answers.
Provide Seamless Interaction: Enable interaction via:

Web Interface: Use existing Jinja templates (index.jinja, github.jinja) to create a chatbot interface.
API Endpoints: Define new endpoints in routers/ for chatbot communication.

Technical Implementation
1. Backend Changes

Vector Database: Add support for a vector database (e.g., FAISS, Pinecone) to store and query embeddings of ingested data.
New Modules:

gitingest/embedding.py: Handle vectorization of repository content.
gitingest/rag_chatbot.py: Manage retrieval and generation logic.

API Integration:

Add routes in routers/ to handle chatbot requests and responses.

2. Frontend Updates

Chat Interface:

Update github.jinja or index.jinja to include a chatbot UI.
Use a WebSocket or REST API for real-time responses.

Static Assets:

Add new JavaScript utilities to static/js/utils.js for chatbot interaction.

3. Dependencies
Add libraries such as:

sentence-transformers or openai for embeddings.
langchain for retrieval-augmented generation pipelines.
faiss-cpu or pinecone for vector search.

4. Testing
Include test cases in gitingest/tests/ to validate:

Embedding generation and storage.
Retrieval accuracy and response quality.
API endpoint functionality.

Benefits

Enhanced Usability: Allows users to query and explore repository data conversationally.
Improved Accessibility: Makes the tool approachable for non-technical users.
Scalability: Lays the foundation for future AI-driven features.

Next Steps
If approved, I can begin drafting a detailed plan for implementation and provide a timeline for each milestone. I will also submit a pull request for initial integration tasks.

How to Support
Please share your feedback on this proposal by commenting on this issue. Suggestions for additional features or improvements are welcome!

Very good Issue, thank you for taking the time to write this
I think we should definitly pursue this idea but go there step by step
I will open a new branch on this repo to host this dev work while still being able to update main
Before typing any code:
I think it would be wise to discuss the features that we aim for and establish a clear vision of the steps to get there
Maybe the first step should be a simple OpenAI/Anthropic api integration
Before moving on to more refined degrees of interaction
Anyway, I will glaadly help you build this feature into Gitingest,
Feel free to reach out so we can discuss this further (I prefer discord but I also sent you a Linkedin invite)

@cyclotruc  I couldn't find your Discord username. I am new to the whole open-source contribution thing, but your product idea is pretty good. It could use AI integrations to improve the interaction. Also, just calling ChatGPT API won't be effective, whereas creating an RAG model with ingested content + LLM will make this more flexible and accurate.
Note: I am new to this but would love to learn and contribute to this project.

Hi @HXMAN76 .
I'm working on pretty much exactly that.
Could you think of specific user stories (ie: What you would ask such a RAG Chat bot ?)


Add issue templates

Add issue templates for better bug reporting and feature request clarity.

With the majority of users utilizing just Viame.kitware.com, should we request a link to their source data or annotation folder for the bug reports.  A lot of visualization issues can be dependent on the data they are trying to view? (I.E. the tracklist scroll area having issues above 4 digit numbers, displaying large video files)

@BryonLewis great idea, added.


Percentages no longer show on hover in audit

Percentages only show on hover in the audit when you are on base requirements (a single class or plain-string type requirement).  This appears to be due to this commit https://github.com/npfoss/courseroad2/pull/69/commits/a9fef5d3bef6c3c606be351b4f7d0a029ac75315 where icons were removed for everything but these base requirements.  The icon was activating the the tooltip, so it can no longer do that.
Personally I think an icon is helpful anyway for an immediate visual indication of if a requirement is completed (rather than trying to read the progress bar, which might go off screen, or hover to see percentage).
Either way, we need to replace the icons, or activate the tooltip using something else.

part of #141


Split Update and Commit Layout to avoid spamming history steps

Closes https://github.com/GraphiteEditor/Graphite/issues/972
try to fix ColorButton and NumberInput widgets.

!build

!build

I'll give this a detailed code review tomorrow, bedtime now though! Thanks @0HyperCube for the review so far.


Nobles County, MN

Called Katie Purdham (http://www.co.nobles.mn.us/departments/it/gis/ ) and left a voicemail. I spoke to her over a year ago and she said the data should be open soon - so hopefully she can share!

Katie just called back - land integration committee believes it should be open, but must go before board to be approved. May take another year :( she said their county moves slow in terms of making decisions like this.

called again (11/16/2018) - if they dont have it, ill close the ticket.


Rendering References in TeX?

@danscime and I are having trouble rendering the References section from the changes made in #370.
A warning that shows up when the .tex file is built is "Empty Bibliography" and the pdf that is produced looks like the following
, even though the source code includes all the defined citations
...
Why isn't the Bibliography showing up?

With the help of @AKM11, got references to render in Tex. (Had to configure the settings in editor to add the use of the BibTeX tool).

Not sure how to render mine yet on a Mac

Run
pdfLaTeX
BibTeX
pdfLaTeX

in that order if you use TeXworks


Muscle droplet has three substantial 'unknown' clusters

1 of these is a "chondrocyte-like" cluster that was previously annotated as "chondrocytes" using the standard cell ontology. A reviewer thought this claim was too strong, so we decided to leave it as NA for the standard cell ontology, and write it in as "chondrocyte-like" for the free annotation. Mike or Ling should have info on the other NA clusters


Split long lines in domains.txt (revised)

According to your comment (https://github.com/lukas2511/dehydrated/pull/642#issuecomment-521625332) I revised my modifications.
There is a script to test the parsing of domains.txt at https://gist.github.com/redneck-f25/51ba79d0d3ef8a43a2eacffb672fd9d2.
Since many NAS- and Administration-Systems (e.g. Synology Diskstation and Plesk) have a plugin for LE for "simple" configurations it is the task of Dehydrated (which is great, btw) to handle more comlicated situations.
Thanks for your great work.
# example domains.txt
draft.example.com alias.example.com
draft1.example.com\
alias1.draft1.example.com\
# disabled: alias2.draft1.example.com\
alias3.draft1.example.com\

draft2.example.com \
  alias1.draft2.example.com \
  alias2.draft2.example.com \
  # disabled: alias3.draft2.example.com
draft3.example.com                  \
  alias1.draft3.example.com      \
  alias2.draft3.example.com      \
  # disabled: alias3.draft3.example.com
# end of domains.txt

Quick Links:

Modifications according your comment
All modifications according this issue


Review and Test Page Layout

Review and Test Page Layout this also includes adjustments required for IE11. Create a fallback and replacement where needed.

@LHinson @andresgalante There haven't been any PRs created for the Page layout yet. Should I Add the layout as part of this issue also, or is there some existing work we want to use?

@cliffpyles Yeah, let's hold off on this one... This is currently blocked by #103

Closing as this is redundant, covered by #127


IO error "/"

I added hassio-owserwer 0.4.0

And i added 1-wire hub.
But i see only error:

Hi, Please share more information about your device and configuration used.

I think we can close the thread. After a clean HA install, 1wire works fine.
But before it behaved strangely. It worked for a few hours and then this error for a few hours. And so on.


Add convenience methods to ExchangeFactory

Noticed these convenience methods could reduce the initialization boilerplate by a few lines for most users.
But this PR actually stems from a separate issue I ran into. By mistake I set the API keys only after constructing the Exchange, which resulted in a signing exception, since (it took me a while to find that) during initialization the secret key was not yet set when it was passed to KrakenDigest in the KrakenBaseService constructor. Other exchanges likely have the same issue.
A possible solution would be to create a ExchangeSpecificationBuilder class that returns an immutable ExchangeSpecification. That way I couldn't call a setter after the value had already been used, and it would allow moving the default specification out of the instance method, which may then enable simplification of Exchange construction.

Good call. The builder idea would also be good!


added Hyundai Santafe limited 2020 FP in hyundai values and updated description for SANTA_FE

What's your Dongle ID?

What's your Dongle ID?

Which harness type does this car use? Still Hyundai D?

Which harness type does this car use? Still Hyundai D?

Yes still D but I pushed it to my comma and am getting a unable to import error

Yes still D but I pushed it to my comma and am getting a unable to import error

My error was not related to the pull request. I pushed this branch into my device and this branch is missint a steeringlimits class and it was replace with carparams class. So my pull request is still good to go

My error was not related to the pull request. I pushed this branch into my device and this branch is missint a steeringlimits class and it was replace with carparams class. So my pull request is still good to go


refactor: inspect code of exchange classes.

What is the purpose of the change
Brief changelog
Verifying this change

Checklist

[x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[ ] Add some description to dubbo-website project if you are requesting to add a feature.
[ ] GitHub Actions works fine on your own branch.
[ ] If this contribution is large, please follow the Software Donation Guide.

Codecov Report

Merging #10332 (d1e7da2) into 3.0 (d0dc792) will decrease coverage by 0.46%.
The diff coverage is 75.00%.

@@             Coverage Diff              @@
##                3.0   #10332      +/-   ##
============================================
- Coverage     65.62%   65.15%   -0.47%
+ Complexity      296      295       -1
============================================
  Files          1233     1233
  Lines         53714    53711       -3
  Branches       8110     8091      -19
============================================
- Hits          35248    34995     -253
- Misses        14626    14870     +244
- Partials       3840     3846       +6

Impacted Files
Coverage Δ

...va/org/apache/dubbo/remoting/exchange/Request.java
92.59% <50.00%> (-0.39%)
:arrow_down:

...dubbo/remoting/exchange/support/DefaultFuture.java
87.06% <66.66%> (-0.12%)
:arrow_down:

...moting/exchange/support/header/CloseTimerTask.java
73.33% <100.00%> (ø)

.../exchange/support/header/HeaderExchangeServer.java
80.58% <100.00%> (-1.40%)
:arrow_down:

...luster/router/script/ScriptStateRouterFactory.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...zookeeper/curator/CuratorZookeeperTransporter.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...pc/cluster/router/file/FileStateRouterFactory.java
0.00% <0.00%> (-80.96%)
:arrow_down:

...o/rpc/cluster/router/script/ScriptStateRouter.java
0.00% <0.00%> (-67.31%)
:arrow_down:

...ting/zookeeper/curator/CuratorZookeeperClient.java
15.72% <0.00%> (-54.15%)
:arrow_down:

...dubbo/remoting/zookeeper/ZookeeperTransporter.java
50.00% <0.00%> (-33.34%)
:arrow_down:

... and 89 more

Continue to review full report at Codecov.

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


remove port selection from kusk gateway add

The port selection was introduced bc it was tested in a bare metal server with 1 IP address. This use case should not be supported because every gateway (envoy fleet) needs to have a unique IP address, which cloud providers like civo, gke and eks support by default
this will help me finish an article on StaticRoute
Signed-off-by: Abdallah Abedraba<EMAIL_ADDRESS>This PR...
Changes

Fixes

Checklist

[ x ] tested locally
[ ] added new dependencies
[ ] updated the docs
[ ] added a test

This will result in the next release being a major version bump as we are removing an option, thus making it incompatible with previous versions


Pass gen_kwargs into llmblock

They are currently being dropped
Fix: #158

Nevermind "gen_kwargs" moved into the config in all of the yaml files
I didn't have this part of  (https://github.com/instructlab/sdg/pull/146 ) as I was using a custom pipeline


Articles not in the TOC, round 2

After recent changes to the TOC and before Monday's launch, it seems it's time to revisit #514 again.
So, articles that I believe should be in the TOC but aren't:

core/app-types.md,  core/packages.md,  core/sdk.md
scenarios/solution-authoring/target-dotnetcore-with-msbuild.md
standard/porting/tooling.md

I'm not sure where in the TOC do these articles belong now, or whether to include some of them at all, so I won't be creating a PR for this.

I checked today (after quite a bit of changing in the TOC and the repo.)
The three under core in your first bullet point are still bugs.
The last two have moved and should now be fixed.

Here is an updated list:

core/app-types.md, core/packages.md, core/sdk.md
core/porting/libraries.md
tutorials/supporting-frameworks/analyzing-portability.md


Defect Dojo - Tenable Scan .csv import error. Not showing the < symbol, but the ascii code for "<"

Bug description
When importing a tenable scan using a .csv it imports the findings correctly, but the title gets messed up, if the finding is "7-Zip < 24.07 RCE (ZDI-24-1532)" instead the < symbol I get the ascii code for the < symbol. E.G.  "7-Zip &lt"
Steps to reproduce
Steps to reproduce the behavior:

Go to 'Product'
Click on 'Click on import scan results'
Scroll down to 'Tenable scan'
Import findings, then view findings. All findings with < now show the <

Expected behavior
Should show the correct < title instead of the ascii code.
Deployment method (select with an X)

[ x] Docker Compose
[ ] Kubernetes
[ ] GoDojo

Environment information

Operating System: [Oracle Linux 8
v. 2.40.2

Logs
Use docker compose logs (or similar, depending on your deployment method) to get the logs and add the relevant sections here showing the error occurring (if applicable).
Sample scan files
sample csv
Screenshots
same screenshot
OSS_-FSM-_Scanning_Servers_scanning_oss.csv

The < is fine in the title, but in the main display shows the ascii symbol.


Modules and subcommands

This is apropos of @valscion's comment in #208, where he talks about some of the annoyances of using just to emulate subcommands. This is also somewhat related to #237 and #367, where sub-justfiles are discussed.
I'd like to come up with something that enables all of these things. Some ideas:
A statement mod foo parses foo.just or foo/mod.just as a submodule. Recipes in foo.just / foo/mod.just can now be called on the command line with just foo RECIPE.
If the submodule source file is foo.just, the current working directory for recipes in that submodule will be the current directory. If the it is in foo/mod.just, the current working directory will be foo/.
Questions:

What do we do about directories with weird characters? I think punting is reasonable. But eventually we might want to support something like mod "path with spaces/bar". Any solution should be based on user feedback.

How do we handle dependencies between recipes and variables in different submodules?

Can you have a submodule in a submodule, and call those commands?

Notes for a first path for out-of-line modules only:

make a module loading step after parsing
look at parsed module and load all other modules, recursively
module map has all modules in it
pass module map to the analyzer
analyzer produces justfile

will need to modify error messages to include file path
will need to modify argument parser to successfully call submodules
will need to disallow recipes and modules to have same name

Thanks for opening this more focused issue ☺

I'm just going respond like I didn't let it sit in my inbox for a month >_< I beg your forgiveness!

Currently for us, it would be enough to support one level deep submodules. But of course, it would be nice if the solution we could come up with would work for deeper submodules, too.

Agreed, it would be nice to do something that works with deeper submodules. I've heard tell that some companies use just, and it would be nice if I could infect their giant mono repos with justfiles.

I'm not sure if just needs to automatically support directory traversal. To me it sounds reasonable to first keep on supporting a single Justfile, and that you could add special statements there to tell just about the existence of submodules. Like so:
# <root>/Justfile
mod foo

# <root>/foo/mod.just
test:
  echo "All OK"

And then you could call <root>/foo.just#test by running just foo test.

This sounds good.

This way just wouldn't have to glob the filesystem to find .just files to figure out what submodules exist.

Yeah, I definitely want to avoid globbing.

That would also free just to use directory syntax for other purposes, e.g. sub-submodules. I could imagine one could run just foo/bar RECIPE which would try to something like this:
# <root>/Justfile
mod foo

# <root>/foo/mod.just
mod bar

# <root>/foo/bar/mod.just
RECIPE:
  echo "All OK"

We should come up with something that lets just foo bar RECIPE work in that case, since as you note / is already interpreted on the command line.

I'm not excited about naming sub-modules with .just extension and having to either put them to <submodule>/mod.just or <submodule>.just file. If possible, I'd like to be able to control where those submodules are located. With something like this perhaps?
# <root>/Justfile
mod foo "tasks/foo/Justfile"

# <root>/tasks/foo/Justfile
RECIPE:
  echo "All OK"

which could be called like so:
just foo RECIPE

I think using a string as in mod name "path" sound good, if you want just to look in a non-default location.
I was thinking that given mod NAME just should look in "NAME.just" or NAME/mod.just or NAME/Justfile, but I'm not sure if that's weird. What do you think?

What do you think? What kind of discussion would you want to have here? I'd be happy to continue the conversation in any way you'd want to ☺

Here is great! I promise I'll respond faster next time 😅

One thing that needs to get resolved:
Can a recipe in one module have dependencies on a recipe in another module? And if so, how do they refer to recipes in other modules?
Is this something that you need or would use? Also if there are others out there who would make use of modules, I'd definitely be interested in your thoughts.

I'm just going respond like I didn't let your reply in my inbox for a month >_< I beg your forgiveness!

I promise I'll respond faster next time 😅

Hey, it's completely OK to take your time to reply, or to not even reply at all :relaxed:. Nobody's getting paid on working on this, so any comment at all is only a value add, no matter how long it takes to respond. 💞

I was thinking that given mod NAME just should look in NAME.just or NAME/mod.just or NAME/Justfile, but I'm not sure if that's weird. What do you think?

Hmm yeah, we can make the location optional for sure — but I'm not sure if we know yet what would be a good choice from all of these, so I'm a bit weary on making the decision already in the first implementation.
I kinda like the name Justfile to describe files using this project. I'm a bit skeptical on using .just extension for modules — at least in the first iteration.
I'm worried about folder bloat if this default were any of the three you suggested. If, on the other hand, modules were to live inside one directory deeper first, then I don't have a strong feeling on any of the suggestions. What I mean is something like just_modules/NAME/Justfile, just_modules/NAME.just or just_modules/NAME/mod.just — i.e. that all submodules would be inside just_modules (the name is not important) directory first, so that on the root level, there would only be the root Justfile and another directory for the modules.

We should come up with something that lets just foo bar RECIPE work in that case, since as you note / is already interpreted on the command line.

This could work — it would also be possible to give a helpful error should someone have this kind of Justfile:
mod foo

foo:
  echo "hi"

and saying something like this:

Error: Names of modules and tasks must be unique. You have defined both a module named foo and a task named foo. Rename one of them to avoid this error.
> 1 | mod foo
    |     ^^^
  2 |
> 3 | foo:
    | ^^^
  4 |   echo "Hello, world"

That way we wouldn't even have to figure out any special syntax 🙌

One thing that needs to get resolved:
Can a recipe in one module have dependencies on a recipe in another module? And if so, how do they refer to recipes in other modules?
Is this something that you need or would use? Also if there are others out there who would make use of modules, I'd definitely be interested in your thoughts.

Hoo boy, we're going to the dependency management domain 😅. If at all possible, I think we should avoid making any decisions on automatic behavior yet, in order to see how submodules would be used on their own.
If one would need to share recipes, one could refer to a module by path, e.g. by climbing up the tree:
# <root>/Justfile
mod foo

hello:
  foo bar greet World

# <root>/just_modules/foo/Justfile
mod bar "../bar/Justfile"

# <root>/just_modules/bar/Justfile
greet subject:
  echo "Hello {{subject}}"

Then just would need to handle cyclical dependencies somehow. I assume dependency trees will be quite small, so raising an error and refusing to work with cyclical dependencies could be an OK tradeoff.
So if one would have something like this:
# <root>/Justfile
mod foo

hello:
  foo bar greet World

# <root>/just_modules/foo/Justfile
mod bar "../bar/Justfile"

# <root>/just_modules/bar/Justfile
mod foo "../foo/Justfile"

greet subject:
  foo bar greet "Hello {{subject}}"

just could raise an error when loading the module trees before evaluating the module contents.

Error: Cyclical dependencies are not allowed. Module foo is being loaded from one of its submodules again, resulting in a cycle.
foo module was first loaded from <root>/Justfile:1:
> 1 | mod foo
    | ^^^^^^^
  2 |
  3 | hello:

Cyclic dependency loading was discovered in <root>/just_modules/bar/Justfile:1:
> 1 | mod foo "../foo/Justfile"
    | ^^^     ^^^^^^^^^^^^^^^^^
  2 |
  3 | greet subject:

Hey, it's completely OK to take your time to reply, or to not even reply at all ☺. Nobody's getting paid on working on this, so any comment at all is only a value add, no matter how long it takes to respond. 💞

Aww, thanks 😊

I was thinking that given mod NAME just should look in NAME.just or NAME/mod.just or NAME/Justfile, but I'm not sure if that's weird. What do you think?

Hmm yeah, we can make the location optional for sure — but I'm not sure if we know yet what would be a good choice from all of these, so I'm a bit weary on making the decision already in the first implementation.

Yeah, definitely. Hmm, so maybe the best thing to is to wait until we have more experience with the feature, before picking a default location or locations that just should look for submodules.
If we do the explicit-path form, as you suggested:
mod foo "foo/bar/whatever"

Then we can wait and see which, if any, default location make sense, based on user feedback

I'm worried about folder bloat if this default were any of the three you suggested. If, on the other hand, modules were to live inside one directory deeper first, then I don't have a strong feeling on any of the suggestions. What I mean is something like just_modules/NAME/Justfile, just_modules/NAME.just or just_modules/NAME/mod.just — i.e. that all submodules would be inside just_modules (the name is not important) directory first, so that on the root level, there would only be the root Justfile and another directory for the modules.

I think you have a good point about folder bloat, and we can use the explicit-path form at first to avoid committing to anything.

We should come up with something that lets just foo bar RECIPE work in that case, since as you note / is already interpreted on the command line.

This could work — it would also be possible to give a helpful error should someone have this kind of Justfile:
mod foo

foo:
  echo "hi"

and saying something like this:

Error: Names of modules and tasks must be unique. You have defined both a module named foo and a task named foo. Rename one of them to avoid this error.
> 1 | mod foo
    |     ^^^
  2 |
> 3 | foo:
    | ^^^
  4 |   echo "Hello, world"

That way we wouldn't even have to figure out any special syntax 🙌

I think that's a good idea. One thing that I've learned from writing just is that it pays off to be as restrictive as possible initially.
If you allow a construct, it's annoying to deprecate it and can be dangerous to suddenly change its behavior in a way that users don't expect. However, if you didn't allow it in the first place, adding it later is very easy.

Hoo boy, we're going to the dependency management domain 😅. If at all possible, I think we should avoid making any decisions on automatic behavior yet, in order to see how submodules would be used on their own.

Yeah, good idea. This stuff is why the idea of adding submodules has kind of freaked me out, so it's probably best to implement a true MVP first, and then expand as necessary.

If one would need to share recipes, one could refer to a module by path, e.g. by climbing up the tree:
# <root>/Justfile
mod foo

hello:
  foo bar greet World

# <root>/just_modules/foo/Justfile
mod bar "../bar/Justfile"

# <root>/just_modules/bar/Justfile
greet subject:
  echo "Hello {{subject}}"

Then just would need to handle cyclical dependencies somehow. I assume dependency trees will be quite small, so raising an error and refusing to work with cyclical dependencies could be an OK tradeoff.

just actually already raises errors on cyclical dependencies. It can detect cyclical dependencies in recipes:
foo: bar
bar: foo

: just
error: Recipe `foo` has circular dependency `bar -> foo -> bar`
  |
1 | foo: bar
  |      ^^^

And cyclical dependencies in variable assignments:
foo = bar
bar = foo

: just
error: Variable `bar` depends on its own value: `bar -> foo -> bar`
  |
2 | bar = foo
  | ^^^

So if one would have something like this:
# <root>/Justfile
mod foo

hello:
  foo bar greet World

# <root>/just_modules/foo/Justfile
mod bar "../bar/Justfile"

# <root>/just_modules/bar/Justfile
mod foo "../foo/Justfile"

greet subject:
  foo bar greet "Hello {{subject}}"

just could raise an error when loading the module trees before evaluating the module contents.

That sounds good. Static analysis for the win 🧐

Great! I guess we're now in the "plan is ready, time to start coding" phase 😅. My rust skills are, err..., rusty — I have been meaning to get to know rust a bit but I haven't had the time. Is there any way I could help even though I would not be able to implement this?
Again, even if this would not be implemented, that would also be OK ☺. Don't feel like you have any obligations to do this if you don't have the time or the motivation to do free work :smile:

I like where this seems to be going for MVP. One addition I'd really appreciate is the ability to point to a module via ~ in the path. I share much of my setup between computers but often have different home directories on different systems. I also have some boilerplate I put in every single Justfile I've ever created. So if the following would resolve:
# <root>/Justfile
mod foo "~/.config/just_awesome/Justfile"

I would be extremely happy. 😃

@runeimp do you mean that ~ would point to $HOME or to the <root> or what? It isn't quite clear to me what you mean

Fortunately, before needing to worry about implementing it, we can continue to noodle on the design!
I've been thinking that using strings to represent paths might be problematic. Paths differ on different platforms, e.g. unix and windows:

~ does not exist on Windows
Drive prefixes (C:) do not exist on linux
/ vs \ delimiter

If module paths are strings, without some extra compatibility mechanism, justfiles will not be portable across platforms.
A couple ideas to resolve this:

Parse strings as unix-style on all platforms, and translate them into platform-native paths on non-unix platforms

Use a platform-neutral non-string representation, like foo::bar::baz, which translates to ./foo/bar/baz on linux and .\foo\bar\baz on windows

I like 2 a bit better, but it comes with problems of its own. If modules are required to be identifiers, are spaces and special characters allowed?

Fortunately, before needing to worry about implementing it, we can continue to noodle on the design!

Yay! :smile:

I've been thinking that using strings to represent paths might be problematic.

Might be, yes

Parse strings as unix-style on all platforms, and translate them into platform-native paths on non-unix platforms

I like this approach better than a custom syntax. This would map to how e.g. node does imports from other files — they just support / syntax for folder traversal. That's also how ruby works if I'm not mistaken.
If we were to take any other choice than using / syntax, I suppose it would be confusing to people. We could always show a helpful error when using / instead of :: or some similar name, though.
I am only speaking from my experiences, though. But from my point of my view, I would expect / syntax to "just work". Anything else would be confusing.

@valscion I meant to point to $HOME so I can target common module(s) I will use on all systems I work on. So to be clear either ~ or some methodology that allows me to target my home directory whatever that name might be on any given system. I would settle for any decided system. But I'm partial to POSIX methodologies.

@casey Actually Windows has supported POSIX/UNIX style paths since Windows XP. And in DOS prior to that if I remember correctly. It just prefers \ for historical reasons. So I highly recommend sticking with the POSIX/UNIX standard pathing.

@casey regarding the two path representations I totally appreciate the desire to go with number 2. But, as noted above, the POSIX way is universal across systems that are supported by just.

Thanks for clarifying, @runeimp :relaxed:. And thanks for the additional tidbit about Windows supporting forward slash in paths. I agree that it sticking with / pathing would be a good idea.

I tried it out, and it looks like windows doesn't support ~. If we go with concrete / syntax, I'll parse it instead of using it directly, so that I can error on non-portable syntax.

I wish I had time to dedicate to this, but it'll have to go on the back burner for now. It's a big project, with lots of implications codebase-wide, but if someone is interested in picking this up, I can provide some pointers.

@casey Actually, ~ is supported by Windows PowerShell but not CMD. You'd have to do a swap for %UserProfile% in CMD/Command Prompt.

I'm still thinking about this and definitely want to do it.
I landed a much improved lexer, and I'm rewriting the parser to better separate the actual parsing (turning a token stream into higher-level structures) and consistency checks (duplicate variable names, circular dependencies, etc). Both will make extensions like these easier.
I think the way that I can best move forward with this is to start with inline modules. From rust, for example:
// inline module
mod foo {
  fn bar() {}
}

// out of line module, loaded from `baz.rs` or `baz/mod.rs`
mod baz;

By starting with inline modules, we can nail down the semantics of submodules and subcommands, without having to think about loading multiple files from disk, which will be a separate complication.
We could lift rust's syntax:
mod foo {
  bar:
    echo baz
}

$ just foo bar
baz

Another option is to use whitespace:
mod foo::
  bar:
    echo baz

The above example uses :: as the token to introduce a module, because if just ever has a module path system that allows referencing, it will probably use :: as the separator:
mod foo::
  bar:
    echo baz

# call foo::bar as a dependency
yik: foo::bar

I think that mod NAME { ... } is probably the most readable and the least alien. What do y'all think?
cc: @cledoux, since he was interested in including other justfiles, possibly conditionally, which this could be extended to. By adding some kind of conditional activation of modules,
@windows
mod build "build-windows.just"

@unix
mod build "build-unix.just"

I'm leaning towards using something with {...}. Curly brace delimiters are widely used and will be easier for users to pick up and recognize.
Also thinking about "block recipes", which introduce an anonymous scope just for that recipe, for local variables:
# recipe `foo` with deps `a` and `b`
foo: a b {
   #  undecided mystery syntax in here
}

Hi @casey, I might have some free cycles coming up. Do you have a "current" design/expected syntax on what's wanted for this feature?

Hi @ethankhall!
I'm still pretty uncertain about the syntax. I think the way to go is pick some syntax, implement modules with that syntax, and it behind a flag. Then we can bikeshed the syntax and details of the semantics after we have more experience with the feature.
Also, we should implement in-line modules first, and then later implement out-of-line modules (i.e. modules in another source file) since that's more complex.
Some syntax possibilities for a module foo containing a recipe bar:
curly braces
mod foo {
  bar:
    echo hello
}

double colon
foo::
  bar:
    echo hello

keyword + colon
mod foo:
  bar:
    echo hello

I'm leaning towards the double colon syntax, since module paths are often delimited with ::, which will hopefully make it easier for users to learn and remember. Also, for better or worse, Just syntax is already terse and whitespace-sensitive. Also, the lexer already handles emitting whitespace-based INDENT and DEDENT tokens, so this should be the easiest to implement given what already exists.
Out-of-line modules can just omit the module suite:
foo:: # this loads `foo.just` or `foo/mod.just`

Or provide a path to the file to load:
foo:: "path/to/some/file.just"

But that can be done later.
How does that all sound? Please let me know if you think there are particularly strong reasons to prefer another syntax.

This will likely be a pretty complex feature, and I'm very happy to provide as much support as needed to implement it!

@casey did this ever get implemented?

@rawkode Nope, it did not. I started working on it, and published a WIP branch, but it's a very large change and I had other things on my plate, so I wasn't able to finish it.
I think if I (or someone else) were to pick it up a again, the best way to go would be to add a flag or setting that enabled modules, so that it could be incrementally implemented, and eventually the flag removed.

I think there are probably two different ways to go.
The first is to start implementing this behind an unstable flag. Because it's clearly delineated as unstable, we could introduce breaking changes as the feature is developed.
The second is to implement it in such a way that it can be developed in a backwards compatible fashion.
The latter is ideal, but since the modules are a complex feature, the former might be more pragmatic. For example, even basic questions such as the syntax of modules is unresolved, so marking the feature as unstable would allow for experimentation, instead of having to always land functionality in-tree and commit to it at the same time.
But, even in the latter case, I think it's okay to land something that is incomplete, i.e. is missing some functionality, but wouldn't want to land something that can't be incrementally developed into something that can be made stable. So, for example, I think an implementation based on literal text inclusion, a la C's #include "foo.h", wouldn't be a good idea, since it would have a lot of inherent problems.
I haven't thought a ton about how to proceed most incrementally, but an idea for a sequence of PRs that could be landed is:

Implement justfile annotations, as in #604, so that users could write #![feature(modules)] at the top of a justfile, to enable the unstable module feature.

Add module declaration syntax. This would error if you used it without  the unstable#[feature(modules)], wouldn't actually do anything, and wouldn't have to be the final syntax. This could look like mod foo, mod "foo", or foo::. (The last one is less legible, but is the most make-y.)

3a. Load and parse, but don't analyze, a justfile when the module declaration syntax is encounter. So if the parser sees mod foo, it should load foo.just or foo/mod.just and parse it, returning an error if the file fails to load or parse. (analysis, which includes things like symbol resolution, can be skipped.) This will require adding a file-loader which includes an arena, so that child module files can be added to an arena, and thus the text can have the same lifetime as the parent file's text.
3b. Make sure that error messages when a module fails to parse are sensible. In particular, they should tell the user the module path where the error happened, like foo::bar::baz, as well as the filename foo/bar/baz.just.

Add functionality to allow users to call recipes in submodules. Each submodule would be still be totally separate, so no cross-module recipe, alias, or variable references. If you had a module foo with a recipe bar, you could call it from the command line with just foo bar.

Add cross-module recipe, variable, and alias references. (Can be done as multiple PRs.) So that a child module can call a parent module recipe, or vice versa.

Add import statements, so you can bring variables or recipes from other modules into scope.

Make it possible to declare a module in-line, without needing a separate file. This is more complex than it might seem, because of the indentation-based parsing.

(Aside: I found that a lot of the work for this feature had to do with error messages, since all of a sudden symbol references would have to mention the module they came from.)
I think the feature could be made stable once 4. is done, and 5-7 and beyond could be added in a backwards compatible way.

So, I realized that you can sort of already do modules, although it's so absurd that it's verging on parody:
subcommand *args:
  #!/usr/bin/env just --justfile
  foo $arg:
    echo hello from foo: $arg

  bar:
    echo hello from bar

Just-fucking-ception.
It uses positional-arguments because nested interpolation doesn't work. I don't know if I can in good conscience recommend doing this, because lots of things probably break (like settings not being shared), but it's kind of hilarious and if you really need modules and subcommands, why not.

(In retrospect it was inevitable.)

I have been playing with the concept of a pre-processor to implement module-like capability.  I first tried m4 and its "include" macro.  It worked but m4 has a problem with backticks.  So I created a prototype  in ruby.
https://github.com/MadBomber/experiments/tree/master/just_playing
This prototype looks for "main.just" in the current working directory.  If found it processes that file looking for inclusions keywords that have a file name/path following.  If found it inserts the content of the specificed file (module) into the text at that point.  When done it writes the processed text out to a file "justfile" in the current working directory.
There is no error checking or recursion supported.....

The justprep project has been a nice diversion.  I'm using the "with" keyword in my main.just files more than any of the other possibilities.  I think that is because is is shorter and easier to type.  I've install the justprep executable from the crystal version in my ~/bin directory which is in my $PATH.
I have a "~/.bashrc__just" file that sets the following alias:
alias jj='justprep && just --no-dotenv'
In my home directory I have a file ".justfile" which only contains this:
# ~/.justfile

# List available recipes
@list:
  echo
  echo "Available Recipes at"
  echo `pwd`
  echo "are:"
  echo
  just -l --list-prefix 'just ' --list-heading ''
  echo

I use "with ~/.justfile" as my first actionable line in all of my other "main.just" files.  This way the default is always the same except when I want a different default for a project.
By doing this inclusionary thing I avoid the problem of having to deal with duplicate recipes and such.  When there is a duplicate just will tell me and I can rearrange the modules as necessary.
I think it worked out pretty nicely.
Dewayne
o-*

@MadBomber Awesome work! It makes me feel extra bad that I haven't just implemented modules / import statements yet 😅

Thank you.  It is a stop gap measure until we get the time to implement some sort of recursive grammar that allows for the inclusionary/module feature.  w/r/t error messages and such with the justprep pre-processor, those that come out of the just tool are fine.  They point to the generated file and all of the line numbers are exclusive to that generated file.  With the header/footer lines that wrap the included file its easy to manually find the actual source of a syntax error for example.
I think the next step is to add a command line option to just that would turn on/off duplicate errors.  Something like --allow-duplicates   OR maybe --warn-on-duplicates with the default behavior being the current functionality.
--allow-duplicates  Would ignore any prior definitions of a recipe etc. and process the last definition as if it were the only one.
--warn-on-duplicates  would give a WARNING message but still allow for recipes to be over-ridden.
With neither of these options present, the current behavior would be used to generate the ERROR message.

It's a good thought, but one thing that would make --allow-duplicates or warn-on-duplicates problematic is that currently justfiles are completely order-independent. (Actually, that's with the exception of which recipe is defined first, which is used as the default recipe.) Recipes and variables can be declared in any order. --allow-duplicates would presumably use either the first or the last defined recipe, and ignore others, which would be a departure from the current behavior.

My preference would be for the last definition to be the one that is used when a duplicate condition exists.   That way we can import generic recipes from other files and then over-ride a generic recipe in a specific project area.
with ../generic_recipes.just  # has a doit recipe
@doit:
  echo "my way"

It's a bit of a weird feature, when considered apart from justprep, but that aside, I think I'd accept a PR that implemented --allow-duplicate.

I agree its weird out of context.  Just pushed step one.  I have the flag added to the config object and the help test modified to pass with the new option.  Next step is to add the business logic to the analyzer and a few other files.

@MadBomber Sounds good! Feel free to push a WIP draft PR if you want to get early feedback or have questions about anything.

Hmm I wonder if #1095 was supposed to entirely close this issue?

I have no problem with it being closed.  The ability to allow duplicate recipes - to execute the last one defined - completes the goals set forth in this issue.   What remains is the over-all refactor that allows for the modularization of "just" such that "justprep" is no longer needed.

Ah, sorry, no I definitely didn't meean to close this issue

Cool project! Along the idea of a preprocessor, is there an option to read a justfile from stdin?

Cool project - this import sounds very interesting. I had 2 questions:
a) @MadBomber - did you also try https://logological.org/gpp or just the m4 preprocessor?
b) @casey For something like this, an option to read a justfile from stdin would be useful. How difficult do you think that would be?
Thanks - very great work. I love how many people create cool CLI tools in Rust these days!

@hhoeflin  I've used M4 before to do similar things - docker compose junk.  This time I wanted to see how close I could come with a Ruby/Crystal implementation that shared a common code base.  Still not there.  Like everyone else time is in short supply these days.
The justprep project is not general purpose.  Its a specific stop-gap measure for use with the just utility until such time as the new modular architecture can be implemented.  M4 and GPP could do the same thing; but, I would not have as much fun playing with Ruby/Crystal cross-breeding.

Thank you, but looking at this https://serverfault.com/questions/398514/pass-a-pipe-to-a-command-that-expects-a-filename I learned it is not actually necessary and there is a good workaround, at least on linux in bash. Always something new to learn :)

As I learn about just I appreciate the balance being struck by the project lead and community.
So much so that it seems that just includes by default many of the workflow/ergonomic enhancements I've built on to GNU-make over time. This makes just feel like coming home.
The one thing I've looked for and not seen is GNU-make style includes, though it seems like there are a few related  discussions.

I'd suggest that the ideas of modules and namespace could be made more independent from each other. Both are useful but could perhaps be implemented with some optional interdependence.
In fact, the ability to compose recipes from modular Makefiles based on path is one of most successful and comfortable patterns I've seen emerge.
For my use-cases I've taken to adding an -include .assets/makefile/*.mk to a minimal Makefile in the project root, with glob-included modular makefiles, each with prefixed target names according to their modules as a simple form of namespacing / collision avoidance.
It's very useful to be able to conceptually organize content while avoiding the disadvantages of recursive calls. It helps to keep the size of each individual file to a reasonable minimum, as well as making it easy to disable a module by renaming it from .mk to .mk.disabled.
I trust the course of this issue and just wanted to put forward the merits of this approach since it's something that's worked well for me that I can happily recommend.

@nickgarber  I just released v1.2.2 of justprep a stop-gap pre-processor for just utility that adds the path globing capability.  It works in both the Ruby gem and Crystal binary implementations.
I took this issue as the excuse to refactor the code base to extract common methods into their own files for use by both Ruby and Crystal.  I added the file extension ".crb" to those files which can run under both implementations.  I originally thought of ".crb" to meaning Crystal and Ruby; but, now I've come closer to thinking of it as "compiled ruby."
https://github.com/MadBomber/justprep

Hi @casey, firstly this is an outstanding tool! Kudos. Secondly, is there any update on the progress or idea when this feature may be worked on? I appreciate you're busy and have a life outside of GH 😄 - but submodules would be a killer feature to have 😄

@SteveChurch   There is a "fake module" convention that works in most circumstances.  I documented in the wiki for the pre-processer justprep
https://github.com/MadBomber/justprep/wiki/Fake-Module-Convention

HI @SteveChurch, thanks for checking in! I actually don't have a life outside of GH 😅 but I'm currently working on another project, ord, that's getting a huge amount of attention, so it's taking up all spare bandwidth.
No updates to report on modules, but check out include directives which, depending on your use-case, might be useful.

@SteveChurch There is a "fake module" convention that works in most circumstances. I documented in the wiki for the pre-processer justprep
https://github.com/MadBomber/justprep/wiki/Fake-Module-Convention

Thanks a lot for the link! However, I haven't found a solution yet to pass arguments, do you know any? E.g. I try to call
just myModule myRecipeInModule myArgument

// inside the module file:
myRecipeInModule myArgument="defaultValue":
  @echo {{myArgument}}

Note I've also seen this Interactive Chooser section in the docs. Maybe it's useful for other solutions to implement "fake" modules?

Ok, in the meantime, I found a solution for my "problem" using variadic parameters. You may find this helpful (or not ;)
# ./justfile

docker recipe *ARGS:
    just -f ./commands/docker.justfile {{recipe}} {{ARGS}}

# ./commands/docker.justfile

# List all available Docker commands.
help:
    @just --list --justfile {{justfile()}}

alias s := shell
# Puts you into a shell of your desired development docker container.
shell name="myDefaultContainer":
    docker exec -it $(docker ps -qf "name=development-{{name}}") bash

Ok, in the meantime, I found a solution for my "problem" using variadic parameters. You may find this helpful (or not ;)

Yeah this is basically the same solution we've been quite happy with since the beginning!
The only downside of this is that if you have special characters (such as whitespaces or quotes), then passing them down successfully to the downstream justfiles gets quite complex.

@valscion Thanks, will keep that in mind and come back to it if/once we encounter that situation 👍

IT HAS BEEN NIGH ON FIVE YEARS, BUT JUST FINALLY HAS MODULES.
I just released 1.19.0, which includes modules.
See the readme for more information, but in short, modules can be defined using a mod statement, for example, mod foo, which will load a module from foo.just, foo/mod.just,  or foo/justfile. Recipes in modules can then be called like subcommands. If the module foo has recipe bar, it can be called with just foo bar.
There are currently a bunch of limitations and missing features, so the modules are unstable for now. See #929 for more details.
Thanks so much for everyone's copious patience! And special thanks to @neunenak, who laid a bunch of the ground work which enabled this.
If this doesn't work for your use case, please feel free to open an issue detailing what doesn't work.


get_fast_AJI

When we use the get_fast_AJI to calculate the original AJI, I find that this function just add the missed GT to the denominator.This is a little difference from the original AJI. Does this have an impact on the results？

Hi, first of all, could you tell me in more detail where do you think is problematic (code location, reference between file and file etc.) ? As of now, I don't have enough context to answer you.
Anyways, in case you are wondering about
https://github.com/vqdang/xy_net/blob/bfaa82d80ae40fab08ef0637f499f04203480191/src/metrics/stats_utils.py#L70-L74
and I'm assuming the missed GT you mentioned means [GT instance failed to get detected].
Those line matches with https://github.com/vqdang/xy_net/blob/bfaa82d80ae40fab08ef0637f499f04203480191/src/metrics/aggregated_jaccard_index.m#L67
for the situation where there is no prediction overlapping with the GT instance at all.
nnz counts non zero pixels of map (or-ing/union between GT and predicted instance binary map).
However, because our code only uses max union value (default to 0) and max union value is only updated when IoU > 0 between GT and prediction. The code will be incorrect in case of having no prediction for GT under consideration, hence, we add the sum of just GT back to match with the matlab line.

Thank you so much. I made a mistake.

In the original AJI, the author not only add the missed GT,but also add the first Predicted nuclei.

Hi, you should reread the entire comment portion again. In fact, [adding the first Predicted nuclei together with the failing to be detected GT instance] is the bug we mentioned in their code.
So, as a thought experiment, let's assume the first predicted nuclei (it will have ID of  1) have its overlapping ground truth instance having ID of Y. Within this iteration for ground truth instance having ID of X (with X < Y, hence X get evaluated before Y), GT instance X has no predicted nuclei. As a result, if we use their matlab code as it is, GT instance X will be added together with predicted instance 1 and then, predicted instance 1 is removed from later calculation. This in turn leads to wrong evaluation on ground truth Y iteration later. On the other hand, if we assume that GT instance X with X=1, then, the matlab code will not be wrong later because there is no more predicted nuclei ID to be evaluated.
https://github.com/vqdang/xy_net/blob/bfaa82d80ae40fab08ef0637f499f04203480191/src/metrics/aggregated_jaccard_index.m#L69-L70
Beside that, the default behavior of
https://github.com/vqdang/xy_net/blob/bfaa82d80ae40fab08ef0637f499f04203480191/src/metrics/aggregated_jaccard_index.m#L67
is adding the union of matched predicted instance and its corresponding GT to the denominator (as I have analyzed the code above). Therefore, it's incorrect to add First Predicted nuclei to the failing to be detected GT instance (missed GT).
This is a little subtle bug due to the default behavior of default return of argmax, hence we had fixed that behavior within the get_fast_aji.

Thank you so much.


Full output for server-status auto mode

Implement full auto status ("key: value" type status output). Especially not only status summary counts for certificates and OCSP stapling but also lists. Auto status format is similar to what was used for mod_proxy_balancer.
Certificate details were tested, OCSP stapling output was not yet tested.
Since there were quite a few "if-else" introduced, a "diff -w" or "git diff -b" helps reduce diff clutter.
The change was split into several smaller commits to make it easier to review.

Thanks, Rainer!

Thanks to you for eating that easter egg!


Can't Sync Netflix: Looks like you're not logged in to this service.

Hi,
The extension works fine on Windows, however, it does not work on my Kubuntu installation. Even though I am logged in to Netflix, it gives the following error:

Browser: Vivaldi 5.6.2867.50
OS: Kubuntu 22.04.1 LTS x86_64
Please let me know if I can provide more information.

The issue got fixed after completely logging out, clearing the caches and the storage.


Loading perspectives upon opening emacs

As is demonstrated in the README, I have a hook to save perspectives when emacs is closed, like so:
(add-hook 'kill-emacs-hook #'persp-state-save)

However, I would also like to automatically restore perspectives when I open emacs. I have tried adding persp-state-load to window-setup-hook, after-init-hook, before-init-hook and emacs-startup-hook. I have also tried manually calling it in my init.el. However, none of these seem to actuallly call persp-state-load - at least if they do, none of my perspectives actually get loaded, yet it exits without erroring.
I am unsure if I am going about this incorrectly or if this is even something supported by perspective.el, though I do feel the README could benefit from clarification in this area.

(persp-state-load "/path/to/persp-state-file.el") should work from a startup file. There was a PR for giving persp-state-load default argument values which would make it work from a hook (https://github.com/nex3/perspective-el/pull/120), but it was never taken over the finish line.

I tried (persp-state-load persp-state-default-file) in my init.el, but it doesn't seem to load the saved perspectives. It also doesn't seem to error at all, so it's hard for me to tell what's wrong. Loading the perspectives with keybinds still works in either case.
Also, as far as I can tell from the code here in the repo, persp-state-load does take a default value similar to persp-state-save, but I'm not very good at elisp so that might not be correct

persp-state-load only takes a default when called interactively (i.e. with a keybinding or from M-x). The PR I linked above was an attempt to have it also take a default when called non-interactively (i.e. from Lisp code).
I wonder if (persp-state-load persp-state-default-file) failed for you in init.el because you called it before loading and initializing perspective.el? Please try the code from eval-expression (M-: in vanilla Emacs) after startup. That works for me.

running it through eval-expression does indeed work - however, from my understanding, perspective.el would already be loaded by the time it tries to run that line in my init.el, since I can succesfully add the save hook on the previous line, like so:
(use-package perspective
  :bind
  ("C-x C-b" . persp-list-buffers)
  :custom
  (persp-mode-prefix-key (kbd "C-z"))
  :init
  (persp-mode))

(add-hook 'kill-emacs-hook #'persp-state-save)
(persp-state-load persp-state-default-file)

After some more testing I found out that I can auto-load the stored perspectives on startup in this way:
(add-hook 'after-init-hook
		  (lambda ()
			(persp-state-load persp-state-default-file)))

It appears simply putting the line (persp-state-load persp-state-default-file) at the end of the init.el file also works; however, I didn't notice because the default splash screen kept popping up. After I disabled the splash both of these options seem to behave the same. Two differences with desktop.el seem to be that perspective.el doesn't circumvent the splash and doesn't seem to save the emacs window size. The former is easily fixed, and the latter is not really a problem to me personally.


#179 Added integration with Google Analytics 4

To visualize the effectiveness of the documentation, I have added integration with Google Analytics 4 into MkDocs configurations.
Moreover, some list items on the releases page were collapsed for rendering, which has been fixed in this PR too.

coverage: 100.0%. remained the same
when pulling e0b1c95c2b63b2c7aec4a94a591328818af576ad on feature/179_integrate_with_ga4
into 582b1a5c80f051e66f57459a5f8b97ea398eca04 on develop.


Nullity annotations for the most used APIs

Proposed changes
At the moment, IntelliJ IDEA shows this warning in Kotlin because there is no nullity information in Selenide:

These changes improves IDE experience by providing exact type of parameters and return values including information on null/notnull values. This also makes Selenide work better with Kotlin as Kotlin now knows types and may omit excessive warnings and runtime checks.

Checklist

[x] Checkstyle and unit tests are passed locally with my changes by running gradlew check chrome_headless firefox_headless command
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

Checkstyle warns about SelenideDriver for some reason.
[ant:checkstyle] [ERROR] /home/travis/build/selenide/selenide/src/main/java/com/codeborne/selenide/SelenideDriver.java:32:1: Class Fan-Out Complexity is 30 (max allowed is 29). [ClassFanOutComplexity]

Checkstyle warns about SelenideDriver for some reason.
SelenideDriver.java:32:1: Class Fan-Out Complexity is 30 (max allowed is 29). [ClassFanOutComplexity]

In fact it is valid warn - ClassFanOutComplexity counts all type references tokens and fails check when total count is more than threshold value.
Seems we have to add SelenideDriver.java to exclusion list for ClassFanOutComplexity rule or somehow change exclusion package patterns.
cc: @selenide/committers
For more details https://checkstyle.sourceforge.io/apidocs/com/puppycrawl/tools/checkstyle/checks/metrics/ClassFanOutComplexityCheck.html

I've fixed checktyle config and all return value annotations mentioned in comments

@jreznot Several chrome and firefox tests are failing:
java.lang.IllegalArgumentException: Unknown Selenide method: getAttribute
	at com.codeborne.selenide.commands.Commands.execute(Commands.java:146)
	at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:100)
	at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:66)
	at com.sun.proxy.$Proxy28.getAttribute(Unknown Source)
	at integration.AttributeTest.userCanFindElementByAttribute(AttributeTest.java:53)

Now tests throw such exception:
java.lang.IllegalArgumentException: object is not an instance of declaring class
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:108)
        at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:71)
        at com.sun.proxy.$Proxy29.getAttribute(Unknown Source)
        at com.codeborne.selenide.commands.GetSelectedValue.execute(GetSelectedValue.java:24)
        at com.codeborne.selenide.commands.GetSelectedValue.execute(GetSelectedValue.java:10)
        at com.codeborne.selenide.commands.Commands.execute(Commands.java:148)
        at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:105)
        at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:71)
        at com.sun.proxy.$Proxy29.getSelectedValue(Unknown Source)
        at integration.DynamicSelectsTest.waitsUntilOptionWithValueAppears(DynamicSelectsTest.java:37)

Please do not check it, I am still in progress )

Everything fixed now, Chrome still failed with Caused by: java.net.ConnectException: Failed to connect to localhost/<IP_ADDRESS>:28901

Everything fixed now, Chrome still failed with Caused by: java.net.ConnectException: Failed to connect to localhost/<IP_ADDRESS>:28901

It was a flaky test: chrome crashes on Travis CI time-to-time.

@jreznot, thanks for your contribution to improving Kotlin support in Selenide.
I used to have such code:
fun getCustomerName(): String {
    return container.find("[data-testid='customer-name']").text
}

After upgrade to 5.12.0 it doesn't compile with:
Type mismatch.
Required: String
Found: String?

Of course, I can change the return type of the method from String to String?, but that will require to change all subsequent calls, which I don't want. Or I can do the not-null call, find("...").text!!, but that is not a recommended way, as far as I understand.
Can you please advise what will be the proper way to handle this?

@plagov thank you for the feedback.
@jreznot probably in this case we should change return type to String because (I guess) getText() never returns null.

I've never seen getText() return null.

@asolntsev I've set text as nullable because com.codeborne.selenide.commands.GetText calls GetSelectedTextfor select tag and it may return null as it is stated here:
public class GetSelectedText implements Command<String> {
  ...
  @Override
  public String execute(SelenideElement proxy, WebElementSource selectElement, Object[] args) {
    WebElement option = getSelectedOption.execute(proxy, selectElement, NO_ARGS);
    return option == null ? null : option.getText();
  }
}

@pavelpp

Also, Selenide.executeJavaScript() returns String? now, though I'm not sure it can return null.

WebDriver JavaDoc for org.openqa.selenium.JavascriptExecutor#executeScript:
   * @return One of Boolean, Long, Double, String, List, Map or WebElement. Or null.
   */
  Object executeScript(String script, Object... args);

I think we can change GetSelectedText to always return empty string.
But executeJavascript can return null for sure.

1. I think we can change `GetSelectedText` to always return empty string.

@asolntsev Isn't it a breaking change? In this case you cannot distinguish empty text of selected option and no selection in select.

@jreznot Actually it is not possible to have no selection. It will fail much earierl.  @Override   public WebElement getFirstSelectedOption() {     return getOptions().stream().filter(WebElement::isSelected).findFirst()         .orElseThrow(() -> new NoSuchElementException("No options are selected"));   }


[zh-cn] sync 2022-08-04-kubernetes-1.24-deprecations-and-removals.md

Added zh-cn text for https://kubernetes.io/blog/2022/08/04/upcoming-changes-in-kubernetes-1-25/
content/zh-cn/blog/_posts/2022-08-04-kubernetes-1.24-deprecations-and-removals.md

Preview: https://deploy-preview-35737--kubernetes-io-main-staging.netlify.app/zh-cn/blog/2022/08/04/upcoming-changes-in-kubernetes-1-25/
Fixes #35736

/retest

/retest

/test all

you can force push again to trigger PR CI. @windsonsea

/hold
Wait for the PR https://github.com/kubernetes/website/pull/35778
I think the English blog md file name is incorrect. see https://github.com/kubernetes/website/pull/35426#issuecomment-1207587701

/hold cancel
#35778 has been merged.
Please squash your commits to one.

Ok, this filename is changed with the en version. All comments are reflected in the new commit.


Questions related to MPL

Dear Sikang
First thank you for sharing such amazing piece of work! We would like to use it both on simulation and on a real quad and I have few questions:
1- one of our main challenge is to go thru a door with a quad which is slightly too big for the door (narrow gap) - my question is related to the inputs of the trajectory computation. We are using a 2D lidar but we can create a partial 3D map anyway - however as the map is incrementally built, we do not have a complete known Map - some area will be labeled as unknown. Does the algorithm is able to deal with such a map? If not what kind of pre-processing is required?
2- the second one is to compute a trajectory in a 2D occupancy grid, but incomplete, meaning that there are also some unknown cells. But here I guess that if we provide a 2D map with the "frontiers" marked as occupied, it should work. Besides I think that we need to inflate the obstacles, am I right?
Thank you
Regards

Hi,
No problem! For answering your questions:

If you're using voxel/occupancy grid maps, you could either free all unknown cells or only check collision with the occupied cells. There is no pre-processing needed other than setting the right value for cells.
Treat unknown as occupied is over-conservative in general planning missions. Frontier based method will work, but you need to specify goals in the free space otherwise MPL won't find any trajs.  Inflating obstacles is always necessary to make sure the vehicle won't getting too close to obstacles/hitting walls due to map incompleteness.  But I think if you already have a 2D lidar onboard, you may assume unknown is free if the flight speed is not super high.
Let me know if you have troubles running the test :)

Sikang

Hi Sikang
Thank you very much for your answers, I will first understand the code and if I have other questions, I will post them.
Thanks again
Fabrice


Ubuntu Client Upgrade

I have v0.15.3 installed in a Ubuntu machine which is installed through the regular ubuntu build from the README:
This is a quick start script for compiling Qtum on  Ubuntu

sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils git cmake libboost-all-dev
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev

# If you want to build the Qt GUI:
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler qrencode

git clone https://github.com/qtumproject/qtum --recursive
cd qtum

# Note autogen will prompt to install some more dependencies if needed
./autogen.sh
./configure
make -j2

I can run qtumd no problem, however I am upgrading to the new client via:
wget -q -O- "https://github.com/qtumproject/qtum/releases/download/mainnet-ignition-v0.16.2/qtum-0.16.2-arm-linux-gnueabihf.tar.gz" | tar -xzv -C /home/ubuntu
The installation completes just fine but when I try to start the client it fails unless I add a -reindex flag:
qtumd -daemon -server -reindex
Any ideas?

No reindex is required when upgrading from v0.15.3 to a newer version, unless you are switching options like -txindex or -logevents.
If for some reason a reindex is required, then let it finish once, then it should work fine after that without having to use -reindex every time.
If the issue persists, please reopen the issue and provide the debug.log file startup logs.


Remove labels deserialization for gogs and gitea PRs

This fixes #2154

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Vincent Lequertier seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

thanks!


Installing package results in Snyk vulnerability issue

Hi! Great project btw!
Attempting to add this as a dependency to our repo, and my PR is being flagged for a security vulnerability from Snyk.  Looks like it's coming from inflight, a dependency of Prisma.  Open issue can be found here.
We have prisma:5.9.1 in our project and did not have this warning previously.  Is there a possibility the version of the prisma dependency could be updated in this project?

:tada: This issue has been resolved in version 1.29.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:

thank you so much @morintd