Mini.Sessions - save_current()

Contributing guidelines

[X] I have read CONTRIBUTING.md
[X] I have read CODE_OF_CONDUCT.md

Module(s)
Mini.Sessions
Description
There is no manual way to save session - only on quit (well there is session.write() but you would have to write current session name).
Problem is as follows:

when we work on session A,
we open mini.starter - and we then open session B, then session A wont be saved.

If we could run session.save_current() before calling mini.starter then problem is solved.
Even better if opening mini.starter() would save current session - it would have to be done, before mini.staarter() overrides current buffer content, so that we wont save mini.starter screen in session file.
I think startify did it best - when opening startify screen, it would:

save and close current session, if any is active (all buffers are closed)
open startify screen in new empty buffer (no session is active now)

MiniSessions.write() writes current session (specified in v:this_session). This is basically what is done on VimLeavePre. Is this what you are looking for?
I don't think 'mini.starter' should do any saving upon opening. Probably the best way here is to use manual command for opening Starter buffer or on MiniStarterOpened event.


Internal Link Causes StringIndexOutOfBoundsException

The following AsciiDoc document causes an exception:
= Publishing Test

[[section1]]
== Section 1
This is the section 1 content.

== Section 2
Second section, with a link to the first one: <<section1>>.

Exception:
Exception in thread "main" java.lang.RuntimeException: Could not convert asciidoc pages
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.convert(AsciidocConfluenceConverter.java:91)
        at org.sahli.asciidoc.confluence.publisher.cli.AsciidocConfluencePublisherCommandLineClient.main(AsciidocConfluencePublisherCommandLineClient.java:66)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(String.java:1967)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.lambda$null$7(AsciidocConfluencePage.java:196)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.replaceAll(AsciidocConfluencePage.java:151)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.lambda$replaceCrossReferenceTargets$8(AsciidocConfluencePage.java:194)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.lambda$postProcessContent$4(AsciidocConfluencePage.java:161)
        at java.util.stream.ReduceOps$1ReducingSink.accept(ReduceOps.java:80)
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:484)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.postProcessContent(AsciidocConfluencePage.java:161)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.convertedContent(AsciidocConfluencePage.java:122)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluencePage.newAsciidocConfluencePage(AsciidocConfluencePage.java:106)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.lambda$buildPageTree$0(AsciidocConfluenceConverter.java:103)
        at java.util.ArrayList.forEach(ArrayList.java:1255)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.buildPageTree(AsciidocConfluenceConverter.java:98)
        at org.sahli.asciidoc.confluence.publisher.converter.AsciidocConfluenceConverter.convert(AsciidocConfluenceConverter.java:82)
        ... 1 more

Here is a potential unit test for the case:
    @Test
    public void renderConfluencePage_asciidocWithInternalLink() {
        // arrange
        String adocContent = "[[sec1]]\nLink: <<sec1>>";

        // act
        AsciidocConfluencePage asciiDocConfluencePage = newAsciidocConfluencePage(asciidocPage(prependTitle(adocContent)), UTF_8, TEMPLATES_FOLDER, dummyAssetsTargetPath());

        // assert
        String expectedContent = "
Link: <ac:link ac:anchor=\"sec1\"><ac:plain-text-link-body><![CDATA[sec1]]></ac:plain-text-link-body></ac:link>
";
        assertThat(asciiDocConfluencePage.content(), is(expectedContent));
    }

This could go into AsciidocConfluencePageTest.

A workaround for the exception would be to skip over any internal links. This could be done by changing the PAGE_TITLE_PATTERN in AsciidocConfluencePage; e.g. from:
private static final Pattern PAGE_TITLE_PATTERN = compile("<ri:page ri:content-title=\"(.*?)\"");

…to:
private static final Pattern PAGE_TITLE_PATTERN = compile("<ri:page ri:content-title=\"[^#](.*?)\"");

Note that a side-effect of the change is that at least one character is expected in the ri:content-title attribute.

Thank you @znerd for reporting this issue.
According to https://confluence-publisher.atlassian.net/wiki/spaces/CPD/pages/315916297/Pages, internal cross references ("links within the same page") are not yet supported (see also #21).
Currently, best is to avoid internal cross references (i.e. avoid any <<...>> elements not referring to an AsciiDoc page) until #21 has been implemented. See #117 for ongoing development on #21.
P.S: in your example, you are defining an inline anchor above a section, but https://asciidoctor.org/docs/user-manual/#anchordef documents that an inline anchor has to be part of the section or block to be named, i.e. the anchor has to be part of the section: == Section 1 [[section1]] - but to be fair, that would trigger the exact same exception

See #117 for ongoing development on #21.

I checked, and it looks great!
Is there a way for me to test this already, in my local environment and in my build server? Or do I need to wait until the PR is approved by @alainsahli , merged, and then included in an upcoming release

an inline anchor has to be part of the section or block to be named

OK, will fix that in my documents going forward. Thanks for the note!

Hi @znerd
You would have to checkout the repository and merge @cstettler's branch. Then publish your own artifacts in your development environment's maven repository.
But AFAIK the pull request of @cstettler is not ready to be used yet. It was more a first draft. As soon as it's ready I will merge it and then you could use it from our snapshot repository.

Fixed by changes for #21


Add release information to documentation

Add information about releases on GitHub and Anaconda to documentation.

If anything else needs to be updated in #56, those steps should be added to these docs too.


Added error check for http GET request

In case http.Get request fails, resp will be nil, and this defer resp.Body.Close() will cause panic: runtime error: invalid memory address or nil pointer dereference.
This PR is related to #109

@bogdanprodanj  Thanks for the contribution!  Agreed that this seems like a good fix.
Have you signed the Contributor License Agreement for contributions to DataStax open source projects? If not you can find it at https://cla.datastax.com/. Thanks!

@bogdanprodanj Thanks for the contribution! Agreed that this seems like a good fix.
Have you signed the Contributor License Agreement for contributions to DataStax open source projects? If not you can find it at https://cla.datastax.com/. Thanks!

I just did :)

Thanks again @bogdanprodanj !


Error when using #write_to_file with tempfiles

Hi I'm currently working to add support for ruby-vips for the gem image_processing
This is the PR I'm actually working on https://github.com/janko-m/image_processing/pull/14
Currently, it supports both destructive method_name! and non-destructive, so the meat comes to this method: with_ruby_vips
def crop(file, width, height, gravity: 'NorthWest', destination_path: nil, &block)
      with_ruby_vips(file, destination_path) do |vips_image|
        top, left = Gravity.get(vips_image, width, height, gravity)
        vips_image.crop top, left, width, height
      end
    end

def crop!(file, width, height, gravity: "NorthWest", &block)
  crop(file, width, height, gravity: gravity, destination_path: file.path, &block)
end

def with_ruby_vips(file, destination_path = nil, extension: nil)
      file_extension = extension || File.extname(file.path)
      vips_image = ::Vips::Image.new_from_file file.path
      vips_image = yield(vips_image) if block_given?
      destination_file = Utils.destination_file(destination_path, file_extension)
      vips_image.write_to_file(destination_file.path)
      destination_file
end

def destination_file(path, extension)
  if path && File.file?(path)
    File.new(path)
  else
    tempfile(extension)
  end
end

def tempfile(extension)
  Tempfile.new(["image_processing-vips", extension.to_s], binmode: true)
end

So I want to test both implementations, but when it gets to test the destructive one I get
Vips::Error: VipsJpeg: Empty input file
VipsRegion: valid clipped to nothing

/Users/gustavo.caso/dev/personal/ruby/image_processing/vendor/bundle/gems/ruby-vips-2.0.9/lib/vips/operation.rb:74:in `build'
    /Users/gustavo.caso/dev/personal/ruby/image_processing/vendor/bundle/gems/ruby-vips-2.0.9/lib/vips/operation.rb:328:in `call'
    /Users/gustavo.caso/dev/personal/ruby/image_processing/vendor/bundle/gems/ruby-vips-2.0.9/lib/vips/image.rb:411:in `write_to_file'

So for testing I use tempfiles to keep things cleaner, usually, the type of file that will write in the test suite would look like "/var/folders/y7/x_h803zj2nn94ymdy73v4sdjrzn_10/T/test20180218-57452-1y7cdz3.jpg"
I don't know if this a bug or probably a fail implementation from my side :D

Hello, you can’t use the same file for input and output, could that be the issue?

Well, actually that might be the problem. Is it by design of the ruby-vips library?

Yes, it's the way the library works. Most image processing libraries will read the input image into memory, then process it, then write to the output file. This means you can use the same file for input and output, because there is a copy of the whole thing in memory.
libvips streams the image from the input to the output in small sections. It never has the whole thing in memory at once, and all parts of the processing pipeline execute at the same time and in parallel. Because it will start writing the output before it has finished reading the input, they must be different files.

If you don't use "sequential" access mode, it will usually (it depends on the details of the format) decode to memory (or a temp file for large images) on open. But it will delay this decode until the first pixels are needed, which will be after it has initialized the image write. Initializing write will normally create a new empty file, and that will destroy the input before it has been read :(

The libvips test suite in pyvips avoids this problem by adding a serial number to temp file names. Perhaps that could work for you?

@jcupitt Thank you so much for the information I will try it and let you know how it goes. Also thank you so much for the detailed explanation.

Oh no problem. I didn't know about your PR on image_processing, it looks really nice!

Thanks @jcupitt ❤

Thank you for explaining why libvips doesn't have in-place processing functionality. It makes total sense, and I like that it works the way that it does.
In the image_processing branch I've removed processing in-place, because I realized it wasn't actually necessary; the equivalent ImageMagick functionality has led to some confusion in the past when in-place processing is used, I think people never actually want it.
So as far as we're concerned, this issue can be closed.

OK, I'll close. I'm glad it worked out.


Improve analysis meta

Supports CORGI-313
I actually set out to do CORGI-343, and while searching the stage data I found that I couldn't find the analysis_meta / source data on any components except for those found via SCA analysis. That lead me to fix that issue by writing the old analysis_meta field, which tells us how a component for first discovered, so that it now directly writes to the collector 'meta.source' field. From there, its a little easier to persist it into Component.meta_attr. We save everything that wasn't popped off and put in Component fields into meta_attr.
I was trying to test getting bundled deps from a specfile on the podman package when I discovered some errors parsing the 'go list' output. I also found these errors in the stage TaskResult data, so I put some checks around the 'go list' output parsing to skip those results with errors.
Finally there was some code already using 'meta.sources' attribute of collector data and I discovered it had a bug which meant that it wasn't actually returning any results. I fix that, and now added the 'filename' attribute to the ComponentSerializer.

put in draft till I can fix the tests (mypy,schema)


How to import in Meteor app

Hi Eric,
i'm trying to use your npm package in a Meteor application.
import * as bootstrap from "bootstrap";
import 'bootstrap-modbox';

But the client does not load at all saying
Uncaught ReferenceError: bootstrap is not defined
    at Function.<static_initializer> (modules.js?)

pointing at #defaultOptions={...bootstrap.Modal.Default line of your class.
Any idea what might be wrong?
Adding console.log(bootstrap.Modal.Default) after the first import line shows expected output without errors.
Cheers,
Milos

Unfortunately, I am not familiar with Meteor.  However, I can say that just import 'bootstrap-modbox'; is not sufficient.  It is valid JavaScript, but all that will do it execute the code in the module.  However, since modbox has all its code contained in a class, nothing will happen and the code won't be reachable.
Your import statement must define a variable for the class exported from the module:
import modbox from 'bootstrap-modbox';

It looks like you're using a bundler (like webpack, etc), so that should probably be all that's necessary.  Though just FYI, standard ES module imports also require a path and full file name, like /path/to/bootstrap-modbox.esm.min.js for example.

No problem Eric, Meteor forum helped me. It is resolved now. Hoisting seems to be the culprit.
For information: see this post.

Thanks @mdede, after seeing the suggested solution, that makes sense.  It looks like I didn't do enough testing - I tested loading modbox as a module, but not with bootstrap also loaded as a module.  Apologies for the oversight.
I can do a bit to alleviate this by appending bootstrap.Modal.Default to the modbox default options inside the constructor instead of when the static #defaultOptions object is initialized.  This will fix the hoisting issue by making sure bootstrap isn't called until a modbox is actually created as opposed to immediately when loading the library.  That said, the globalThis.bootstrap = bootstrap definition will still be necessary, but you will no longer need the intermediary globalize-bootstrap.js file.  You can simply:
import * as bootstrap from 'bootstrap';
globalThis.bootstrap = bootstrap;
import modbox from 'bootstrap-modbox/dist/bootstrap-modbox.esm';

I'll also make a note of this in the docs.
Unfortunately on my end, as suggested by a user in that thread, it's not as simple as importing bootstrap into the ES module version of modbox.  As you can see, while it can work with a bundler, it was not written specifically with that in mind, but rather was written for use as pure vanilla JavaScript.
The ES standard module system requires a relative path to the file to be imported.  Meaning if I were to include it, I would have to hardcode the path, and anyone using modbox would either have to use that same path to bootstrap, or modify the code with their own path - which is obviously not desirable.  Alternatively, if I imported bootstrap using the specifier syntax as you are, then a bundler would be required and no one could use the ES module version in a vanilla JavaScript environment (it would throw an error).
A JavaScript import map is a potential solution, however, it is currently still an experimental feature and not supported by all browsers.  For now, perhaps I could also add a more descriptive error to be thrown if the bootstrap object is not found.

I'm hardly an expert on this topic, but using globalThis (in general) doesn't seem right.
What about (naively):
import * as bootstrapXY from 'bootstrap'; //get bootstrap from whatever module/package
import modbox from 'bootstrap-modbox/dist/bootstrap-modbox.esm'; //no static class initialization here

modbox.init(bootstrapXY.Modal); //I presume this is the only object you need from the whole Bootstrap
modbox.alert("hello");

This would decouple both modules completely. Perhaps modbox.init could be class method?

Passing a reference to bootstrap into the class might not a bad alternative.  I'll have to think about it a bit.  Thank you.

Unfortunately on my end, as suggested by a user in that thread, it's not as simple as importing bootstrap into the ES module version of modbox. As you can see, while it can work with a bundler, it was not written specifically with that in mind, but rather was written for use as pure vanilla JavaScript.

Hi, user from that thread here :D
The usual way to deal with this is by preparing it as a UMD bundle with the dependencies specified ther. This bundling method tests for the presence of AMD or CommonJS import styles and falls back to window globals for direct use in script tags. That means you can still stick bootstrap in a script tag and it will set the global, and where require is availiable it will use that to fetch bootstrap.
Not sure how that goes with native ESModules, but since most bundlers (eg Meteor, Webpack, etc) end up packaging everything with commonjs/require it's still a big help
Sorry I don't have time to find an example to show you but hopefully this gives you some search terms to start.
Also, I think passing in bootstrap is a good solution. I suggest making it look for a global bootstrap if none is passed in to keep it backwards-compatible
I don't think you need to change how it's published, I know that's a lot of effort. Just giving you a potential solution if you feel so inclined

Nevertheless I'm perfectly fine importing it as-is :-).

New 1.5.0 release addresses this.


Release Google.Cloud.Speech.V1 version 2.3.0

Changes in this release:

Commit 73a4ba0: feat: add total_billed_time response field

Created release for Google.Cloud.Speech.V1-2.3.0


Change distributed solar to generator rather than subtract from demand

Could make this an either/or selection.

Fixed with PR but wasn't automatically closed.


Latest Releases on homepage from frontmatter

Latest releases section on the homepage to display videos from pages in frontmatter
Acceptance:

[ ] Latest releases list based on frontmatter featured: true in date order with most recent first
[ ] Cards with following info:

title
description
image
link to webpage for that "post/note"

Tasks:

[ ] Refactor latest releases section to display list of featured
[ ] Update pages (currently featured on homepage) with required frontmatter

Notes:
Following are the BLOCKERS to be addressed

title (page title and card title do not match ??)
description (page description and card description are different ??)
some pages may not need a youtube video on them (add separate boolean field to display on page ??)

Possible solution would be to convert the youtube field to a nested field in frontmatter with the above info. see below for eg.
// page frontmatter ...
---
title: ...
description: ...
youtube:
  - title: ...
  - link: ...
  - descritption: ...
  - image: ...
  - featured: true (on homepage)
  - page: false (display on this page ?)
---

@rufuspollock please review above for frontmatter restructure

@khalilcodes we don't need youtube link as we should link to the webpage for that post not youtube.

@khalilcodes i've also updated acceptance


Callbackquery is not passed through the converstaion

Hi!
I have a menu with 2 buttons:

set value
go back

When user click on "set value", i start a conversation so he can enter value manually. But if user decides that he does not want to enter anything and clicks "go back", callbackquery is caught by the conversation and menu does not change
Is there a way to re-send the query or somehow proceed with navigating in the menu?

async function setValueConversation(
  conversation: MyConversation,
  ctx: MyContext
): Promise<number | null> {
  const msg = await ctx.reply(`Enter value`);

  let valueToSet: number | null = null;
  while (valueToSet == null) {
    const data = await conversation.wait();
    let {
      msg: { text },
    }: any = data
    if (data.callbackQuery) {
     // I want user to be navigated back in the menu, but this query is already caught by conversation and not processed further
      await ctx.api.deleteMessage(msg.chat.id, msg.message_id);
      return null;
    }
   valueToSet = text
  }
  return valueToSet;
}

There is no way. That is why the docs are so clear about menus and conversations not being very compatible with each other. This will change in the future for conversations 2.0.
Until this is released, there is a hack you use.
await conversation.run(menu)
await ctx.editMessageReplyMarkup({ reply_markup: menu })
return

This code is rather brittle and may break in unexpected ways that are hard to debug, but you can still try it.

Thank you, @KnorpelSenf !
I have tried this workaround, but it throws an error for await conversation.run(menu)
TypeError: Cannot read properties of undefined (reading 'chooseMaxTokens')
    at /project/node_modules/@grammyjs/conversations/out/conversation.js:372:45

my menu is defined like that
// only one "go back button"
export const tokensMenu = new Menu<MyContext>("tokensMenu")
.text("Go back", async (ctx: MyContext) => {
  await ctx.menu.nav("mainMenu");
  await ctx.conversation.exit("chooseMaxTokens");
});

export const mainMenu = new Menu<MyContext>("mainMenu")
  .text(`Max tokens`, async (ctx: MyContext) => {
    await ctx.menu.nav("tokensMenu");
    await ctx.conversation.enter("chooseMaxTokens");
  });

async function chooseMaxTokens(
  conversation: MyConversation,
  ctx: MyContext
): Promise<number | null> {
    const data = await conversation.wait();
    if (data.callbackQuery) {
      await conversation.run(mainMenu);
      return null;
    }
}

In what order do you register the middleware?

@KnorpelSenf

bot.api.config
  .use(autoRetry())

bot.use(
  session({
    initial(): SessionData {
      return {};
    },
  }),
  onlyPrivate((ctx) => ctx.reply("You can only use private chats"))
);
bot.use(conversations());
bot.use(createConversation(chooseMaxTokens, "chooseMaxTokens"));

bot.use(mainMenu);

This is because when you run the menu with conversation.run, it will try to enter the conversation again, which does not make any sense. I guess that's what I meant by unexpected crashes … I'm not sure if there is a different workaround right now.


Attemping to regenerate manifests

I have both 2.2.0 and 2.3.0 charts and am attempting to generate the manifests via:
helmc generate -x -f manifests workflow-v2.3.0
and this results in the following:
[ERROR] Failed to complete generation: lstat /Users/<username>/.helmc/workspace/charts/manifests: no such file or directory
Under the .helmc directory, I have the following dir structure:
~/.helmc/workspace/charts/workflow-v2.2.0
~/.helmc/workspace/charts/workflow-v2.3.0
I'm guessing the error above only case-d in for a single version?

I think helmc is confused by the ordering of the command-line flags. -x actually takes manifest as an argument. Does this work for you?
helmc generate -x manifests -f workflow-v2.3.0


Query could return wrong result if composite index defined on a class

I have Person class and index created like this
person.createIndex("Person_name_birthday_btree", OClass.INDEX_TYPE.NOTUNIQUE, "name", "birthday");

I also have two persons in DB. One with name 'Shah Rukh Khan' and birthday != null another with name = 'Lakshman .' and birthday == null
Then I issue query
select from Person where name = 'Shah Rukh Khan'

I get my person back.
But when i query
select from Person where name = 'Lakshman .'

I get null as a result.
My workaround for this is create index with METADATA { ignoreNullValues : false }

IMHO the settings METADATA { ignoreNullValues : false } should be the default, or even better, indexes with ignoreNullValues = false should never be used to optimize queries (eg. they should be used only for direct access with SELECT FORM index:...).
This change will break the performance all the existing databases, almost all the existing indexes will be useless.
Probably this can be put in the roadmap for 3.0, with proper documentation and with migration guide
WDYT?

Hi Luigi,
I do not support it, because insertion with index which support null keys
for values may be much slower than in standard index.
So I suggest to leave everything as is.
On Thu, Mar 17, 2016 at 3:41 PM luigidellaquila<EMAIL_ADDRESS>wrote:

IMHO the settings METADATA { ignoreNullValues : false } should be the
default, or even better, indexes with ignoreNullValues = false should
never be used to optimize queries (eg. they should be used only for direct
access with SELECT FORM index:...).
This change will break the performance all the existing databases, almost
all the existing indexes will be useless.
Probably this can be put in the roadmap for 3.0, with proper documentation
and with migration guide
WDYT?
—
You are receiving this because you were assigned.
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/5536#issuecomment-197883702

--
Best regards,
Andrey Lomakin, R&D lead.
OrientDB Ltd
twitter:@Andrey_Lomakin linkedin:https://ua.linkedin.com/in/andreylomakin

Hi @laa
so which is the solution to have correct results by default?
Thanks
Luigi

Well as I can see we all agree to support null values by default.
On Tue, Mar 29, 2016 at 11:59 AM luigidellaquila<EMAIL_ADDRESS>wrote:

Hi @laa https://github.com/laa
so which is the solution to have correct results by default?
Thanks
Luigi
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/5536#issuecomment-202785634

--
Best regards,
Andrey Lomakin, R&D lead.
OrientDB Ltd
twitter:@Andrey_Lomakin linkedin:https://ua.linkedin.com/in/andreylomakin

Hi @Kikimora
This was implemented in 2.2 GA, now all the indexes are created with METADATA { ignoreNullValues : false } by default.
Moreover, indexes that ignore null values are ignored on partial index matching in queries
Closing
Thanks
Luigi


incorporate Newick tree

Some options:

Put it in metadata(SE)
Use TreeSummarizedExperiment
Only use it for the phyloseq conversion

See https://github.com/waldronlab/curatedMetagenomicData/blob/master/inst/legacy/mpa_v30_CHOCOPhlAn_201901_species_tree.nwk.bz2 (should be added into cMD 3 too)

This will be solved by strategy # 2, and is at the top of the docket. I am working by Trello cards more than issues right now, so I will close the issue and close #206 because they will be resolved with the TreeSummarizedExperiment change. See https://trello.com/c/bU0kGfm2


UDT replication fails when one field is being set and others are already not-null in the database

After applying this modification to the test_udt_fields_update:
diff --git a/scylla-cdc-replicator/src/replication_tests.rs b/scylla-cdc-replicator/src/replication_tests.rs
index 7755666..44e9de1 100644
--- a/scylla-cdc-replicator/src/replication_tests.rs
+++ b/scylla-cdc-replicator/src/replication_tests.rs
@@ -970,6 +970,7 @@ mod tests {
         let operations = vec![
             "INSERT INTO TEST_UDT_ELEMENTS_UPDATE (pk, ck, v) VALUES (0, 1, {int_val: 1})",
             "UPDATE TEST_UDT_ELEMENTS_UPDATE SET v.int_val = 2 WHERE pk = 0 AND ck = 1",
+            "UPDATE TEST_UDT_ELEMENTS_UPDATE SET v.bool_val = true WHERE pk = 0 AND ck = 1",
             "UPDATE TEST_UDT_ELEMENTS_UPDATE SET v.int_val = 5, v.bool_val = null WHERE pk = 0 AND ck = 1",
             "UPDATE TEST_UDT_ELEMENTS_UPDATE SET v.int_val = null, v.bool_val = false WHERE pk = 0 AND ck = 1",
         ];

...the test fails after the newly added query:
---- replication_tests::tests::test_udt_fields_update stdout ----
unique_name: test_rust_1650962436_30
unique_name: test_rust_1650962436_31
Replication test for table TEST_UDT_ELEMENTS_UPDATE failed.
Failure reason: Row 1 is not equal in both tables.
ORIGINAL TABLE:
Row 1: [Some(Int(0)), Some(Int(1)), Some(UserDefinedType { keyspace: "test_rust_1650962436_30", type_name: "ut", fields: [("int_val", Some(Int(2))), ("bool_val", Some(Boolean(true)))] })]
REPLICATED TABLE:
Row 1: [Some(Int(0)), Some(Int(1)), Some(UserDefinedType { keyspace: "test_rust_1650962436_31", type_name: "ut", fields: [("int_val", None), ("bool_val", Some(Boolean(true)))] })]
thread 'replication_tests::tests::test_udt_fields_update' panicked at 'explicit panic', scylla-cdc-replicator/src/replication_tests.rs:219:9

Is this even possible to handle?
The only difference between
UPDATE tt SET v.bool_val = true WHERE pk = 0 AND ck = 0;

and
UPDATE tt SET v = {bool_val: true, int_val: null} WHERE pk = 0 AND ck = 0;

in CDCLog is the cdc$deleted_v column. The former one has null there and the latter True.

@Ponewor Yes. cdc$deleted_v set to True means that you should overwrite the whole contents of the UDT, whereas null means that you only need to overwrite fields which are non-null in the cdc log row.
There is also cdc$deleted_elements_v which contains indices of fields which should be set to null.
More details here: https://github.com/kbr-/scylla-docs/blob/cdc-advanced-types/using-scylla/cdc/cdc-advanced-types.rst#user-defined-types

The link does not work

@Ponewor updated the link, the new one should be accessible


fix k8s ci

Make sure that:

[x] You have read the contribution guidelines.
[x] You submit test cases (unit or integration tests) that back your changes.
[x] Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 61.55%. Comparing base (db63180) to head (09d56cc).

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #5515      +/-   ##
============================================
- Coverage     61.56%   61.55%   -0.02%
+ Complexity     8837     8833       -4
============================================
  Files          1261     1261
  Lines         39230    39230
  Branches       3723     3723
============================================
- Hits          24152    24147       -5
  Misses        12908    12908
- Partials       2170     2175       +5

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Library availability

Hi @Khinkle14 , Is this project still usable?

Hi @LuanNguyenHNL. This project is no longer supported. We have modern, publicly available SDKs supporting Swift for iOS and Kotlin for Android but we don't maintain this ObjectiveC SDK any longer and it is not updated to match our current recommended API practices.
To avoid confusion I'm going to privatize this repo.


Convert docsearch newlines into BR's

Currently the results are split in docsearch by a newline between headers and content. We output the newline, but it doesn't mean anything in HTML. We should visually distinguish this.

This was already done in https://github.com/rtfd/readthedocs.org/pull/5197/


NSG Rules bulk deletion not working -programmatically and manually

I created a 8 NSG Rules and selected 6 --> delete. ooks like even via portal unable to delete the NSG rules as a bulk as it threw error-

Refer here for more details on this error

Any update please?

@tzwlai @dabowma Would you be able to take look at this issue or route to correct person?

@leni-msft  @tzwlai  @dabowma
Will be helpful if you could investigate the issue; thanks in advance.

Any update? 😞

@nitmatgeo Please open a ticket with detail in the Azure Portal to be connected with a support representative.


Create Landing Page for WebApp

Description
We need to create an engaging and informative landing page for the web app using Astro. This page will serve as the entry point for users, providing an overview of the app's features and guiding them to sign up or log in.Take in consideration the brand of Ethereal.
Tasks

Implement the landing page:

Set up a new route in the Astro project for the landing page.
Develop the HTML structure and CSS styles.
Add interactive elements using JavaScript if necessary.

Add content to the landing page:

Write engaging copy that explains the app's features and benefits.
Include visuals such as images, icons, or videos to enhance the user experience.
Add call-to-action buttons for the download of the docker/sdk.

Test the landing page:

Test the page on different devices and browsers to ensure compatibility and responsiveness.
Check for accessibility issues and make necessary adjustments.

Optimize for performance:

Ensure that the page loads quickly by optimizing images and other assets.
Implement lazy loading for images if necessary.

Additional Context

The landing page should reflect the brand and style of the web app.
Consider SEO best practices to ensure the page ranks well in search engines.

Labels
frontend, enhancement
Acceptance Criteria

[ ] The landing page is implemented and matches the desired layout.
[ ] The landing page content is complete and engaging.
[ ] The landing page is responsive and works well on both desktop and mobile devices.
[ ] The landing page is tested for compatibility and accessibility.
[ ] The landing page is optimized for performance.

In progress with Fernando Moreira


Update Composer dependencies (2021-10-17-00-12)

Visual regression test passed!
View the visual regression test report


Enable to specify ACL

Hi!
I use reg-suit in my products and a company, thank you 😄
However we can't publish report whose ACL is public-read.
So I am glad if we enable to specify private to acl property in config like..
"reg-publish-s3-plugin": {
    "bucketName": "sample-bucket",
    "acl": "private"
}

Best regards.

Thanks 😄


Error when dragging and dropping a non-pdf file into the viewer

Attach (recommended) or Link to PDF file here:
Configuration:

Web browser and its version: Google Chrome 106.0.5249.119
Operating system and its version: Windows 10 Pro
PDF.js version: v2.9.359
Is a browser extension: No

Steps to reproduce the problem:

open the application
load pdf file by default
Drag a different file to pdf for example word
An error is generated in the viewer

What is the expected behavior? (add screenshot)
It is expected to display an alert saying that the format is not supported and do not remove the preloaded file

What went wrong? (add screenshot)
When trying to drag a file that is not a pdf, I generate an error in the viewer

ERROR

Link to a viewer (if hosted on a site other than mozilla.github.io/pdf.js or as Firefox/Chrome extension):

PDF.js version: v2.9.359

That version is no longer supported, please find the latest releases at https://mozilla.github.io/pdf.js/getting_started/#download

It is expected to display an alert saying that the format is not supported and do not remove the preloaded file

Given that a PDF document may use an incorrect file extension, but still be a valid PDF document, we need to actually try and open it in order to correctly determine if (or if not) it's in fact valid. In order to (significantly) simplify the overall viewer implementation, and keeping in mind that only the GENERIC viewer supports opening more than one document, we thus close an existing document before trying to open the new one. Hence this is working as expected/intended here.
You may change any of the above in your deployment of the viewer, however it's not really something that we'll consider doing here unfortunately; please also see http://mozilla.github.io/pdf.js/getting_started/#introduction (emphasis mine):

The viewer is built on the display layer and is the UI for PDF viewer in Firefox and the other browser extensions within the project. It can be a good starting point for building your own viewer. However, we do ask if you plan to embed the viewer in your own site, that it not just be an unmodified version. Please re-skin it or build upon it.


Deprecation of pkg_resources in Python 3.11

Hello lifelines maintainers,
Firstly, thank you for your work on this invaluable library. I rely on lifelines for survival calculations and it has been instrumental in a package I created.
I've recently encountered an issue when running tests on Python 3.11. It appears that the pkg_resources module, which lifelines depends upon, has been deprecated in favor of importlib.resources.
Here's the relevant warning:
DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
Considering the deprecation, do you have plans to transition from pkg_resources to the recommended importlib.resources? This would ensure that lifelines remains compatible with future versions of Python and does not produce deprecation warnings.
Thank you for your time and consideration. I look forward to any updates on this matter.
Best,
Shaun

Yea, we will make the change to importlib.resources. That will go in soon.


Allow conditional compilation for app extension targets

Thanks for your contribution. Your commit has been integrated here: 28b0f40b7663a637ce7ab9ed6806ca90eea63274

Thanks for your contribution. Your commit has been integrated here: 28b0f40b7663a637ce7ab9ed6806ca90eea63274


Cleanup instance label from runtime resolver and templates

Pull Request Test Coverage Report for Build<PHONE_NUMBER>8
Details

4 of 8 (50.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 28.34%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/app/impl/authz.go
1
2
50.0%

pkg/app/topaz/runtime_resolver.go
3
6
50.0%

Totals

Change from base Build<PHONE_NUMBER>7:
0.1%

Covered Lines:
1313

Relevant Lines:
4633

💛  - Coveralls

This overlaps with the work I have already done https://github.com/aserto-dev/topaz/tree/instance-label


Customize status code when jwt validation fails

Title: Customize status code when jwt validation fails
Description:
I was wondering if there is a way to specify a custom status code to be returned when the jwt validation fails in envoy.filters.http.jwt_authn. Normally this returns a 401 status code but I would like to change it to a custom status code like 443.
I would like to do this because I need a way to somehow, in my client, differentiate between the 401 that envoy could return and the 401 that the server behind envoy may return. I hope I made myself clear.

/cc  @qiwzhang


Improvement: Unclear endgame state after run_game.py executes

The process hangs after running a single match, and produces the following message, which would be unclear to those not familiar with Rust Options:
[2024-02-28T18:31:09Z INFO  splendor_tourney::arena::protocol] Winner: Some(1)

It would be imperative to clean this up to be more accessible to Python bot creators!

Done with newest logs


[Logseq] Revert "fix: decodeURIComponent %2F in filename (#3092)"

This reverts commit 6619a3004a5652d77931658c1f5a3bdf129e955d.
Description
As described in https://github.com/raycast/extensions/issues/3158 and https://github.com/raycast/extensions/pull/3092, decideURIComponent was causing an error in the graphs I tested.
Moreover, Logseq has changed the default to not have files with %2F anymore, and instead using ___ for readability. So, I think we can safely revert this line and still have a readable result in Raycast.
Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Could you check this @futantan 😊


Fake news busters

Images related to fake news about vaccination can be added. This can be an additional information.
I would like to work on this issue under DCP'21

go ahead


Margin colours?

I want to give my window a nice grey background colour.
I found the layout_bgcolor() and layout_skcolor() functions that will give my layouts the required colour... however, the layouts also have margins, and these are not coloured.
How can I assign a colour to the margins? I thought that the layout_skcolour should do it but it does not.

Hi @SamSandq!
Use layout_bgcolor() in the layout of main panel cover all window area.

You are right, if I do it for the main layout in the main panel it indeed does what I want.
If I don't, and only gve sublayouts colours, their margins are not coloured.
However, leaving sublayouts without colours is fine and achieves what I want.

layout_bgcolor() and layout_skcolor() covers the entire layout (included the inner margin defined by layout_margin[2|4]().
Is it possible that non-colored margins belong a parent layout? If not, please send a screenshot with layout relations, because would be in issue to review.
Thanks Sam!

Looks like the margins of sublayouts are not coloured, and the parent layout's colours show through. However, the parent's margins are coloured, so there is definitely an inconsistency here. See the picture, where the sublayouts are coloured and the parent is not.

Ok, I will leave this issue open for testing this case.

Layout coloring has been fully testing in this demo: https://nappgui.com/en/howto/drawbig.html#h7
Only detected an issue in Windows drawing order. Please reopen this issue providing compileable code if the problem persists.

I reopen this because I found the problem. Test with

have a layout with some columns
add labels:

    Label *lb = label_new("Test1");
    layout_label(filtLayout, lb, 6, 0);
    label_bgcolor(lb, kCOLOR_GREEN);

    Label *lbv = label_new("Test2");
    layout_label(filtLayout, lbv, 7, 0);

The result is this (I use it the top of my app as a testbed):

Now correct this by changing in oslabel.m: - (void) drawRect:(NSRect)rect, line 104:
now:
       draw_rect(self->ctx, ekFILL, 0, 0, (real32_t)rect.size.width, (real32_t)rect.size.height);

should be:
        NSRect myrect = [self bounds];
        draw_rect(self->ctx, ekFILL, 0, 0, (real32_t) myrect.size.width, (real32_t) myrect.size.height);

In other words, one must not exceed the bounds of the control.
The result is:

In oslabel (macOS), incoming rectangle in drawRect must be the same of control bounds. If not, is because other issue has this collateral effect. By the images, I can intuit that the Label frame has been changed, but I don't know why. Please report some compilable code in order to debug the origin of the problem. Reviewing all the use of Label in NAppGUI applications, this case does not arise.

The only thing slightly out of the ordinary is that the layout where this
happens is a sublayout.
I'll try to get you a full example.

Sam
Den sön 17 mars 2024 kl 16:31 skrev Francisco García Collado <
@.***>:

In oslabel (macOS), incoming rectangle in drawRect must be the same of
control bounds. If not, is because other issue has this collateral effect.
By the images, I can intuit that the Label frame has been changed, but I
don't know why. Please report some compilable code in order to debug the
origin of the problem. Reviewing all the use of Label in NAppGUI
applications, this case does not arise.
label_rect_bounds.png (view on web)
https://github.com/frang75/nappgui_src/assets/42999199/c95121a0-a935-4ea8-98a3-10d9c62e8332
—
Reply to this email directly, view it on GitHub
https://github.com/frang75/nappgui_src/issues/87#issuecomment-2002491600,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMAVI5XJUI3EVSWYGZDOYN3YYWSKXAVCNFSM6AAAAABBZMA4UGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMBSGQ4TCNRQGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

I copied your NappHello.c to a clean directory, and added a line below the label.
    label_text(label, "Hello!, I'm a label");
    label_bgcolor(label, kCOLOR_GREEN);

The result was like this

with my correction it looks like this:

which is what I expected.

OMG! Its the same macOS Sonoma problem that OSView clipping.
https://developer.apple.com/documentation/macos-release-notes/appkit-release-notes-for-macos-14#NSView
Fixed in this commit: https://github.com/frang75/nappgui_src/commit/d7930efee0031f8b4269601fe767a695e5e9ff20
Thanks so much for report! I forget that two modules are related.
All my tests are in Ventura OS.


Streamlining batch_call and removing unnecessary unwraps()

This improves overall function code style & allows to remove two unnecessary unwraps and one implicit panic. Together with #33 this makes this library unwrap-free and stable (i.e. not causing the software using it to unexpectedly terminate instead or reporting error to the calling function)

Fixed according to suggestions & improved


Foreign Key

https://github.com/ucdavis/Keas/blob/master/Keas.Core/Domain/Person.cs#L61
This should probably be PersonId, and maybe not cascade

@jSylvestre that link doesn't work anymore -- is this done now?

@srkirkland Yes, sorry.
Was done in PR #158


Remove leading underscore from .get("_foo") property lookups

As .get("type") works the same as .get("_type") but looks nicer and is actually recommended, remove the leading underscore in property lookups wherever possible.

Also check if this works in findObj() calls.

Also check if this works in findObj() calls.

Resolved by #11

Resolved by #11


Find gemini script if it's not in the current PATH

I think something like this would work to address my comment on #466. No need to pull this if you don't want to.

This seems reasonable to me. Could you add a prominent message showing the full path of the gemini that will be used for the tests? e.g with another which gemini ?


Overhaul worker concurrency helpers with mill.api.CacheFactory

Fixes https://github.com/com-lihaoyi/mill/issues/3730
The old FixSizedCache/KeyedLockedCache/RandomBoundedCache were all a bit of a mess, and none of them provided one crucial component to long-lived cache entries: the ability to tear them down after you are done with them. This is necessary for a lot of long-lived components you may want to cache: classloaders, subprocesses, open file handles, etc. all need to be torn down after use. Also, their implementation was weird, probably overly convoluted, and not used consistently throughout Mill
This PR introduces a new CachedFactory class meant to replace the old ones. I use it in four places (ZincWorker Scala and Java compilers, ScalaJsWorker, ScalanativeWorker), and added docs so users can discover and use it too. It provides a hook for def teardown, which should hopefully fix some of the classloader leaks I've seen in our prior implementations (these normally manifest as CODE CACHE FULL, DISABLING JIT COMPILER warnings when doing large builds)
CachedFactory also differs from the original implementation is that the cache contains the logic for def setup, rather than relying on the callsite of .withCachedValue to provide the setup and key together. This should be easier to understand and less likely to be mis-used, as the mapping from key => value is kept in one place, whereas previously every withCachedValue could have a different mapping.

CC @jodersky @alexarchambault if you guys want to take a look


Logging use of alpn-boot vs. tcnative jar.

There are a few issues related to using the tcnative jar.  This one is about logging the use of tcnative or alpn-boot.

LGTM


Solve issue #27

Description
Make derive-path macro works within -> threading macro

Nice! The expanded format is not as beautiful as the other macro, but works better. Thanks!

Should we keep the other version of the macro around for reference then?
I have a reference to the expanded version of the old version of the macro in the README.


further abbreviate mvn download progress

remove the ()s and the text inside them from the 2nd line.  show just the jar on the 2nd line.
leave the 1st line as it is.

on closer inspection it seems the two displays are independent.
not clear to me what they really mean & how to best simplify.


MINOR: Remove unused CONSUMER_APIS and PRODUCER_APIS

Review by @hachikuji,

LGTM

I hope @hachikuji can also shed light on what was the intent of those originally. Just curiosity on my part :)

They were added as part of KAFKA-3600 and became unused due to KIP-97.

LGTM!

One more in WorkerGroupMember to remove.

@gwenshap Before the client compatibility KIP, the idea was to raise an exception whenever the the broker didn't support the set of APIs we needed. So we used these lists to validate the APIs needed by the client when connecting to a new broker. In the client compatibility KIP, the logic was changed to do API version checking lazily (when we first try to use the API). Then we don't need these lists!

I merged @hachikuji's PR as it removed one list that I missed and as a reward for all the reviews he's doing. :)


high-level file downloader

It'd be great to have a function to download an image from a GeoDataFrame

@ljwolf

We've decided it's better to stick to axis object to get the extent. This will be implemented in #20, hence closing this.


Uri scheme must be tcp or tls

According to the documentation configuring the Sink using a hostname and port should be valid:
var urlLogger = new LoggerConfiguration()
    .WriteTo.TCPSink("some.url.com", 1337)
    .CreateLogger();

Howerver, when I attempt this I get the following exception:
An unhandled exception of type 'System.UriFormatException' occurred in Serilog.Sinks.Network.dll: 'Uri scheme must be tcp or tls'    at Serilog.Sinks.Network.NetworkLoggerConfigurationExtensions.BuildUri(String s)    at Serilog.Sinks.Network.NetworkLoggerConfigurationExtensions.TCPSink(LoggerSinkConfiguration loggerConfiguration, String uri, ITextFormatter textFormatter, LogEventLevel restrictedToMinimumLevel)
Is this an error in the documentation, or a bug?

I appreciate this comment is very late :)
That does look like a failure of documentation.
TCP sink only has two constructors. One that takes an IP address, and one that takes a URI
Presumably, that documentation should reference "tcp://some.url.com". But should write a test to confirm that!


All styles from layouts and pages being loaded in dev mode – Nuxt 3

Versions

nuxt<EMAIL_ADDRESS>node: 14.17.0

Reproduction
In short, the issue is that CSS from different pages & layouts is included on all pages, resulting in pages being styled incorrectly. This only happens in dev mode in Nuxt 3 – when building for prod, the CSS is included as expected.
I've set up a repo that shows the issue (and goes through the expected and actual behaviour).
A similar issue was reported for Nuxt 2, where one of the team said that the issue would be looked at for Nuxt 3 – which is why I set up this test repo, as we're seeing this issue on our project.
Steps to reproduce

Check out this repo
Go to the nuxt3-app folder in command line, install dependencies (yarn) and run yarn dev to reproduce the issue.
The test site has 4 pages – /, /search, /menu and /checkout – and the expected/actual results are documented in the README of the repo.

What is Expected?
When rendering a page, styles from irrelevant layouts and other pages do not also load on the page.
What is actually happening?
Currently, in dev mode, it looks like all styles from all layouts and pages are included in the head of each page, resulting in issues with the page displaying styles that aren't intended for the current page.

This is still happening, I am not sure what to do as it is messing with some stuff, not nice 😢

If you are experiencing something you think is a bug, please open an issue with a minimal reproduction. 🙏

If you are experiencing something you think is a bug, please open an issue with a minimal reproduction. 🙏

To be honest, it is exactly the same issue, it is still happening 😅 with latest versions from yesterday, but I guess I will have to open a new ticket 😅

Thank you. Although it might seem the exact same big, it is rather a newer regression.

At the moment you need to use scoped in the styles tag, LAYOUTS INCLUDED, otherwise they will be added as global styles.
If you want your styles to be loaded only alongside your component, use scoped.
I made this mistake, I have 3 layouts and I had to add scoped to two of them, so the styles wouldn't load where they shouldn't.
Example:
index-layout
<style lang="scss">
@import '../assets/scss/main.scss';

</style>

home-layout
<style lang="scss" scoped> <!-- Notice the scoped added. -->
@import '../assets/scss/main.scss';

main{
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 42px !important;
    padding-right: 42px !important;
}
</style>

Also, developers, I am really disappointment by the absolute lack of communication on this issue, it got passed around and suddenly closed.

HI, @matthew-dean I deleted the comment since it was late and night and this solution is not optimal (And might result in repeated imports too, since I don't know how it is handled in SSR for sure).
The solution that worked for me is to add all styles you want to use everywhere in the

HI, @matthew-dean I deleted the comment since it was late and night and this solution is not optimal (And might result in repeated imports too, since I don't know how it is handled in SSR for sure).
The solution that worked for me is to add all styles you want to use everywhere in the


Automate check for new versions of each package

Description

Good to have some sort of automated check to see if new versions of each package have been released
Doesn't even need to make the new image, just notify us of the presence of a new version.

@tefirman Please have a look at this commit - 763ed66818e795d66a1c37dec8dadc83b27a4752 and Github Actions output.

@tefirman with the recent commits 580301ea7cc5e7fecef221a317efb3a3d16753be, we are able to generate automatic monthly issues like #123


rename files for BinaryCode and SymbolicBinary

I renamed the files containing BinaryCode and SymbolicBinary to follow our practice of naming these data structure files by the main data structure they define.

@conta877 I dunno if you have something to say about this.

totally fine!
suggestions for the code_transform_functions while I'm at it - code_transformers?

Looks like @conta877  is on board as is everyone else, so I'll approve these changes.


[1.11] Update docs for HTTP Bearer middleware

The docs for the HTTP bearer middleware must be updated:

Document new metadata options per https://github.com/dapr/components-contrib/pull/2673
Mark the component as "stable"

/assign

Will be fixed by #3432


UpdateDG

Pull Request Test Coverage Report for Build 711

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 79.46%

Totals

Change from base Build 707:
0.0%

Covered Lines:
1973

Relevant Lines:
2483

💛  - Coveralls


Only auto-opens on Unity (re)launch

VSCode() gets called on Unity launch and when user presses play. This
was auto opening and refocusing VS Code when user pressed play.
CheckForAutoOpen() uses a timestamp to track whether Unity was
relaunched and VS Code should be opened.

This had a mistake, and haven't figured out how to squash history on an already pushed pull request, so I made a different one: #125


build(docker): install production deps only

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
507

Relevant Lines:
507

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
507

Relevant Lines:
507

💛  - Coveralls


Static page generation for website

Website is currently a single-page app, but there really should be HTML pages generated for each of its pages.
In order to do this, the processing on SITE.js files currently handled by the sitepack loader will need to be handled by node itself.
The general idea is:

Load root SITE.js and build root junction, like in current website
Walk this junction, creating a list of locations to render
For each of these locations, create an in-memory history and use it to render the application to a string
Will also need to take the route's title and add it to the generated page's  tag.

Can i take this up?

@manjula91 I'd love someone to take this up! Although before you get started, I'd be keen to hear how you want to approach this? Do you already have an understanding of how the site works?

I would want some basics documents to get started with.
Although I have the idea about the topic to have static website.
But it would be good if you share over the document.
I am javascript developer manjuladube.com here's my profile
Manjula
On 12-Jan-2017 7:27 PM, "James K Nelson"<EMAIL_ADDRESS>wrote:

@manjula91 https://github.com/manjula91 I'd love someone to take this
up! Although before you get started, I'd be keen to hear how you want to
approach this? Do you already have an understanding of how the site works?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jamesknelson/junctions/issues/12#issuecomment-272169086,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHe4Ic_N3_rJjqFWIqtiu2m7sCxHUz4qks5rRjFAgaJpZM4Ld242
.

Started on it. Any slack channel where we could discuss ?
Manjula
On 12-Jan-2017 11:39 PM, "manjula dube"<EMAIL_ADDRESS>wrote:

I would want some basics documents to get started with.
Although I have the idea about the topic to have static website.
But it would be good if you share over the document.
I am javascript developer manjuladube.com here's my profile
Manjula
On 12-Jan-2017 7:27 PM, "James K Nelson"<EMAIL_ADDRESS>wrote:

@manjula91 https://github.com/manjula91 I'd love someone to take this
up! Although before you get started, I'd be keen to hear how you want to
approach this? Do you already have an understanding of how the site works?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jamesknelson/junctions/issues/12#issuecomment-272169086,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHe4Ic_N3_rJjqFWIqtiu2m7sCxHUz4qks5rRjFAgaJpZM4Ld242
.

@manjula91 There is no slack channel as of yet. Before you get started, please let me know how you want to approach turning the site into a static site. I don't really have time at the moment to explain how the website works, so I'd like to make sure that we're on the same page before you spend any effort.

Website is now statically generated. Closing.


 Currently there is a CORS error registering the token at a Google URL so needs a bit more work.

Throws some errors. When I click on the toggle:

The toggle stays enabled afterwards.
When I disable and enabled again, the browser asks me for permission. Then:

I ran a fresh yarn dev beforehand, so the service worker should have been built.

Ah, the CORS error was just because of my browser plugin, push registration looks to be successful so far. Although the FCM_SENDER_ID was wrong, but I think the new way should have fixed it (I was passing it wrong in circleci).
From your screenshots, you don't have the latest code running, that error should be fixed now.

Oh, and for your local one to work properly, you need to set the FCM_SENDER_ID env variable. I didn't really document that properly.

I found the sender ID on https://console.firebase.google.com/project/karrot-dev/settings/cloudmessaging/ios:world.karrot.dev .. let's see if it works!

Ah, it works for me on the netlify preview now :)

Works on netlify too for me, but can't get it to work locally :(


Table Figure Label Positioned Incorrectly

Description
The figure caption "Table 2" appears overlayed atop the table, rather than below it.
(Optional:) Please add any files, screenshots, or other information here.

(Required) What is this issue most closely related to? Select one.
Choose One
Internal issue ID
a579bf47-a5d1-4ab9-8414-f787f0b19133
Paper URL
https://arxiv.org/html/2310.17837v3
Browser
Firefox/128.0
Device Type
Macbook Air

Thank you for the report. LaTeXML's support for \captionof positioning is currently rather basic, and in this case mistakenly triggers subfigure support.
I am extracting the source of the problem for future developer reference:
\begin{figure}[h!]
\begin{tabular}{| c | c | c |c|c| c|}
% content omitted for brevity
\end{tabular}
\captionof{table}{}
\label{fig:1}
\end{figure}


Is this package still active?

There are lots of open pull requests, but there hasn't been any new commits since june

@robsheldon and @cjpatoilo i'de like to be a maintainer, i like the project a lot, even add sobre prs.
I'd appreciate if you guys think about it

@schirrel Has @cjpatoilo gotten back to you on this? I use this in a lot of projects and would rather not fork it to maintain it separately.

I'm back!
@SampsonCrowley yes, Milligram is still active!
@robsheldon congrats, great project!
@schirrel you can help by answering questions about how to use or test and fix problems related to errors.
@szul I always appreciate you here. So, I just need to resolve some tests in the new table style before launching the new version v1.14.0.
Also, let me know if there are any issues that should be considered a priority.

Great proyect!
Greetings from Argentina.

@galiprandi thank you 🙏

Great proyect!
Greetings from Argentina.

For now, I will close this issue.


update dependencies

Spdx-tools released a new alpha version with some bug fixes, this PR updates the dependency. We might want to enable dependabot to automatically update dependencies.

I also ran the command poetry update to update other dependencies which resulted in the second commit to update mypy.


Add resizeable panels to left/right columns react

Fixes #2242
https://user-images.githubusercontent.com/8245654/112940646-0eb13000-914b-11eb-98d4-b997c745bc00.mp4

Added Localstorage to store user preferred panel size


grpc_unsecure depends on ssl because of census

Please answer these questions before submitting your issue.
Should this be an issue in the gRPC issue tracker?
Yes
What version of gRPC and what language are you using?
master, grpc++_unsecure, C++
What operating system (Linux, Windows, …) and version?
Linux, PPC64 platform
What runtime / compiler are you using (e.g. python version or version of gcc)
Any
What did you do?
The customer-reported issue is tensorflow/tensorflow#14039
"We would like to build TF for s390x. But boring SSL strictly has no ppc64 support. Looks like GRPC now depends on boringssl."
Initial investigation shows that grpc_unsecure is being forced to depend on libssl because of census.
What did you expect to see?
Being able to build grpc_unsecure without any use of boringssl
What did you see instead?
libssl dependence through census
Anything else we should know about your project / environment?

Further investigation: cc_grpc_library only allows targets to depend on grpc++ rather than grpc++_unsecure . Seeing if this is even needed....


feat: use new behavior_path_planner architecture

Description

use new behavior_path_planner architecture

Tests performed

Not applicable.
Effects on system behavior

Not applicable.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[ ] I've confirmed the contribution guidelines.
[ ] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

Codecov Report
Patch coverage has no change and project coverage change: +0.29 :tada:

Comparison is base (e20856f) 14.31% compared to head (bbdf5ca) 14.60%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@               Coverage Diff               @@
##           beta/v0.9.0     #627      +/-   ##
===============================================
+ Coverage        14.31%   14.60%   +0.29%
===============================================
  Files             1557     1570      +13
  Lines           106900   107741     +841
  Branches         30778    31274     +496
===============================================
+ Hits             15301    15735     +434
- Misses           75028    75040      +12
- Partials         16571    16966     +395

Flag
Coverage Δ

*Carryforward flag

differential
13.57% <ø> (-1.43%)
:arrow_down:

total
14.31% <ø> (ø)

Carriedforward from e20856f

*This pull request uses carry forward flags. Click here to find out more.
see 34 files with indirect coverage changes

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


Utilized pragmaUtil Functions for kb.json file

Utilized pragmaUtil Functions (processBeforeUpload / processBeforeWrite) for keybindings.json file as well
Changes proposed in this pull request:

Regx for opensCurlyBraces is changed
Variable name are made more generic
Same functions are used for keybindings.json which were used for settings.json

Fixes: #800 #515
How Has This Been Tested?

Manually used for syncing my settings.
Testing using Launch Tests was failing before any new changes. We need to fix them.

Checklist:

[x] I have read the contribution guidelines.
[x] My change requires a change to the documentation and GitHub Wiki.
[ ] I have updated the documentation and Wiki accordingly.

Can you open new PR removing the old un necessary commits from branch v3.2.9


[icu] fix missing bash on windows

Hopefully fixes #18086

I think this can be closed in favor of #19726 @PhoebeHui ?

Yes, closing it now.


Add ability to skip ssl check

@olivergondza could you please take a quick look at latest failed test?

@olivergondza thank you! This feature is present in JClouds plugin and such plugins as Stash e.t.c. In our case we have local openstack (only intranet) and local jenkins but openstack have self-signed cert... so we should be able to skip this check :(

Well, an alternative would be to truck the cert in JVM truststore - even though it is self signed.

Anyway it is up to you to merge or not to merge :)
All tests passed.

Sure, I will look into this tommorow. Thank you!

@olivergondza I have tried to make jenkins/plugins/openstack/compute/JCloudsCloud.java:71 this private as you said but in this case this (jenkins.plugins.openstack.compute.JCloudsCloudTest#testConfigRoundtrip) test will fail:
 JCloudsCloudTest.testConfigRoundtrip:223 No such property ignoreSsl on class jenkins.plugins.openstack.compute.JCloudsCloud

all other comments were fixed.

@F1ashhimself, yes, you have to provide a getter with it (though the setter is undesirable) for several things to work correctly. Propagating the value to webform is another one.

Done.


UQ benchmark, galsim

Extend our existing galsim benchmark to report, wrt the variational distribution, how many standard deviations the ground truth for each parameter is from its mean.

Duplicate of #469


Dirichlet Concentration : Error

I tried the following model with Dirichlet Concentration
# Some constatnts we will be using

n_colors = 5 #Number of colors in each bag
n_bags = 3 # Number of bags
n_trials = 10
from bayespy.nodes import DirichletConcentration
from bayespy import nodes
import numpy as np

p_conc = DirichletConcentration(n_colors)
p_theta = nodes.Dirichlet(p_conc,
                          plates=(n_bags,),
                          name='p_theta')

bag_model = nodes.Categorical(p_theta,
                        plates=(n_trials, n_bags),
                        name='bag_model')
bag_model.plates

This is the warning I get
/home/deebuls/anaconda3/lib/python3.5/site-packages/bayespy/inference/vmp/nodes/dirichlet.py:146: RuntimeWarning: invalid value encountered in less_equal
  if np.any(np.asanyarray(phi) <= 0):

When I print the moments of both  it is nan
print(p_theta.get_parameters())
print(p_conc.get_moments())
[array([[ nan,  nan,  nan,  nan,  nan]])]
[array([ nan,  nan,  nan,  nan,  nan]), array(nan)]

Thanks for the report! It's because p_conc has no initial value. I made a fix to develop where it's initialized with a vector of ones. But you can also call p_conc.initialize_from_value(some initial vector here). But it should now work without that if you use the latest develop version.

Yes it works with initialize_from_value function. Thanks !

Code Breaking in the new release.
                           Traceback (most recent call last)
<ipython-input-17-7bf41cc50630> in <module>()
      8 import numpy as np
      9
---> 10 p_conc = DirichletConcentration(n_colors)
     11 p_theta = nodes.Dirichlet(p_conc,
     12                           plates=(n_bags,),

/home/deebuls/anaconda3/lib/python3.5/site-packages/bayespy/inference/vmp/nodes/dirichlet.py in __init__(self, D, regularization, **kwargs)
    261             # Decent default regularization?
    262             regularization = [np.log(1/D), 1]
--> 263         self.regularization = regularization
    264         return
    265

/home/deebuls/anaconda3/lib/python3.5/site-packages/bayespy/inference/vmp/nodes/dirichlet.py in regularization(self, regularization)
    274         if len(regularization) != 2:
    275             raise ValueError("Regularization must 2-tuple")
--> 276         if not misc.is_shape_subset(np.shape(regularization[0], self.get_shape(0))):
    277             raise ValueError("Wrong shape")
    278         if not misc.is_shape_subset(np.shape(regularization[1], self.get_shape(1))):

TypeError: shape() takes 1 positional argument but 2 were given

Should be fixed now in both develop branch and the new release. Thanks for spotting it!


Update troubleshoot-bitlocker-boot-error.md

Changed note at the request of Edgar Garcia Mujica in Content Idea 146964

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


[BUG] Iceberg: handle cases where columns are renamed

In Iceberg the tables are projected using field-IDs. Even if the column is renamed (and Iceberg is lazy, so the table is not rewritten), it should still read the original column.

Thanks @Fokko! This is perfect, we'll take a look at it.

Since https://github.com/Eventual-Inc/Daft/commit/2489ab42855eed896cc90c32216cf9be7541724e has been merged, I think we can close this one 👍


[BUG] Approximate k-NN doesn't always return all results when there are multiple segments

What is the bug?
When indexing a number of documents and executing an approximate k-NN search on them, not all matches are always being returned. Often times switches between two sets of results, one of them often having the correct number of results (depending on whether it hits primary or replica?). The issue disappears after force merging to one segment.
How can one reproduce the bug?
Have an index with a knn_vector field and index some documents, leaving about a minute between each index operation. Usually reproduced after indexing about 8-16 documents, this time already saw it go wrong with 4 documents.
"ec_knn512@fingerPrint" : {
   "type" : "knn_vector",
    "dimension" : 512
 }

"settings" : {
  "index" : {
    "number_of_shards" : "1",
    "knn" : "true",
    "number_of_replicas" : "1"
  }
}

Given the large knn vector I need to provide the data in gists as the issue body gets too large. The 4 indexed documents and search query:
https://gist.github.com/SkyTrix/392e127a46f255392bd57f96bfb72bfe
First (wrong) result option
{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 0.046935834,
    "hits": [
      {
        "_index": "ecc_nodes_a-t-1100-5920-8100-0807_43017401d87b7860b52c",
        "_id": "4mLnEciUPVzqk7-3aUUUKjK12",
        "_score": 0.046935834,
        "_source": {
          "name": "Fourth FIle.cf2"
        }
      },
      {
        "_index": "ecc_nodes_a-t-1100-5920-8100-0807_43017401d87b7860b52c",
        "_id": "4mLnEciUPVzqk7-3aUUPXBQyx",
        "_score": 0.041627396,
        "_source": {
          "name": "First File.MFG"
        }
      }
    ]
  }
}

Second (wrong) result option
{
  "took": 12,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 3,
      "relation": "eq"
    },
    "max_score": 0.05267875,
    "hits": [
      {
        "_index": "ecc_nodes_a-t-1100-5920-8100-0807_43017401d87b7860b52c",
        "_id": "4mLnEciUPVzqk7-3aUU8Qb4nA",
        "_score": 0.05267875,
        "_source": {
          "name": "Eighth File.ds2"
        }
      },
      {
        "_index": "ecc_nodes_a-t-1100-5920-8100-0807_43017401d87b7860b52c",
        "_id": "4mLnEciUPVzqk7-3aUUUKjK12",
        "_score": 0.046935834,
        "_source": {
          "name": "Fourth FIle.cf2"
        }
      },
      {
        "_index": "ecc_nodes_a-t-1100-5920-8100-0807_43017401d87b7860b52c",
        "_id": "4mLnEciUPVzqk7-3aUUPXBQyx",
        "_score": 0.041627396,
        "_source": {
          "name": "First File.MFG"
        }
      }
    ]
  }
}

_segments output for the index
{
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "indices": {
    "ecc_nodes_a-t-1100-5920-8100-0807_43017401d87b7860b52c": {
      "shards": {
        "0": [
          {
            "routing": {
              "state": "STARTED",
              "primary": true,
              "node": "t1sWlB6tR7OVKu18Z0-D7Q"
            },
            "num_committed_segments": 1,
            "num_search_segments": 9,
            "segments": {
              "_9d": {
                "generation": 337,
                "num_docs": 64,
                "deleted_docs": 0,
                "size_in_bytes": 322787,
                "memory_in_bytes": 0,
                "committed": true,
                "search": false,
                "version": "9.5.0",
                "compound": false,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_9o": {
                "generation": 348,
                "num_docs": 54,
                "deleted_docs": 11,
                "size_in_bytes": 346570,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": false,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_as": {
                "generation": 388,
                "num_docs": 3,
                "deleted_docs": 67,
                "size_in_bytes": 345019,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": false,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_at": {
                "generation": 389,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 34046,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_au": {
                "generation": 390,
                "num_docs": 1,
                "deleted_docs": 0,
                "size_in_bytes": 55172,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_av": {
                "generation": 391,
                "num_docs": 1,
                "deleted_docs": 1,
                "size_in_bytes": 32585,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_aw": {
                "generation": 392,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 31846,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ax": {
                "generation": 393,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 32004,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ay": {
                "generation": 394,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 57060,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_az": {
                "generation": 395,
                "num_docs": 1,
                "deleted_docs": 0,
                "size_in_bytes": 49338,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              }
            }
          },
          {
            "routing": {
              "state": "STARTED",
              "primary": false,
              "node": "PHzv1yuSRnuzFUiSKkt_cg"
            },
            "num_committed_segments": 1,
            "num_search_segments": 10,
            "segments": {
              "_9b": {
                "generation": 335,
                "num_docs": 64,
                "deleted_docs": 0,
                "size_in_bytes": 323673,
                "memory_in_bytes": 0,
                "committed": true,
                "search": false,
                "version": "9.5.0",
                "compound": false,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_9m": {
                "generation": 346,
                "num_docs": 54,
                "deleted_docs": 20,
                "size_in_bytes": 408172,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": false,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ag": {
                "generation": 376,
                "num_docs": 3,
                "deleted_docs": 57,
                "size_in_bytes": 278440,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": false,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ah": {
                "generation": 377,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 33885,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ai": {
                "generation": 378,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 34042,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_aj": {
                "generation": 379,
                "num_docs": 1,
                "deleted_docs": 0,
                "size_in_bytes": 55173,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ak": {
                "generation": 380,
                "num_docs": 1,
                "deleted_docs": 1,
                "size_in_bytes": 32588,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_al": {
                "generation": 381,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 31849,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_am": {
                "generation": 382,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 32006,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_an": {
                "generation": 383,
                "num_docs": 0,
                "deleted_docs": 1,
                "size_in_bytes": 57065,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              },
              "_ao": {
                "generation": 384,
                "num_docs": 1,
                "deleted_docs": 0,
                "size_in_bytes": 49340,
                "memory_in_bytes": 0,
                "committed": false,
                "search": true,
                "version": "9.5.0",
                "compound": true,
                "attributes": {
                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                }
              }
            }
          }
        ]
      }
    }
  }
}

What is the expected behavior?
I expect to always get the correct number of hits, in the example above, it should always return the 4 documents.
What is your host/environment?

Amazon OpenSearch Service
Reproduced on ES 7.9 & 7.10 and OpenSearch 1.3 and 2.7. For corresponding k-NN plugin versions see https://docs.aws.amazon.com/opensearch-service/latest/developerguide/knn.html

Do you have any additional context?
What is also remarkable, when it goes wrong, is that hits.total mostly returns the wrong number of total hits. When increasing k and size in the query, the hits.total goes up. Not sure whether hits.total (not the number of returned hits) is always expected to be the full total in the index for k-NN? After force merging to 1 segment, the hits.total is always correct, no matter the k and size values. Again, after force merging the correct number of actual hits is also always correct, but should also be correct when there are more/many segments.

Thanks for reporting this @SkyTrix . I will take a look.

Just curious, @SkyTrix were there any deleted documents when you were doing the query?

@jmazanec15 do we have any RCA on why the problem was happening?

@SkyTrix I think this has something to do with having few documents in segments. What was the k/size you tried for 16 docs? I havent been able to repro the issue quite yet

Just curious, @SkyTrix were there any deleted documents when you were doing the query?

Can't tell by heart, but I'm pretty sure there were. We use OpenSearch as a read replica of a db, so every change to a certain record there results in a new document with the same _id in the index, so also a deleted document.

@SkyTrix I think this has something to do with having few documents in segments. What was the k/size you tried for 16 docs? I havent been able to repro the issue quite yet

@jmazanec15 k and size always matching, I believe when putting it on 16 it also didn't return all 16 results, but when putting it on 30 for example, it would find all 16 docs. I'm returning to work early next week so can try to reproduce again then. Anything in particular you want me to pay attention to/provide here? I'm also happy to live reproduce over a Teams call if you prefer that.

Thanks @SkyTrix.
Could you provide a script to reproduce the issue? I tried with the following but wasnt able to reproduce it locally:

Repro python attempt
import json
from opensearchpy import OpenSearch, RequestsHttpConnection
import time
import random

index_name = "test-index"
field_name = "test-field"
dim = 512
num_docs = 16
k = num_docs
size = num_docs

def action(doc_id):
    return {'index': {'_index': index_name, '_id': doc_id}}

def bulk_transform(vec, field_name: str, action, id: int):
    return [action(id), { field_name: vec }]

os = OpenSearch(
    hosts=[{'host': "localhost", 'port': 9200}],
    use_ssl=False,
    verify_certs=False,
    connection_class=RequestsHttpConnection,
    pool_maxsize=20,
    timeout=100
)

ind_body = {
    "settings" : {
        "index" : {
            "number_of_shards" : "1",
            "knn" : "true",
            "number_of_replicas" : "1"
        }
    },
    "mappings": {
        "properties": {
            field_name : {
                "type" : "knn_vector",
                "dimension" : dim
            }
        }
    }
}

#random.seed(10)

# os.indices.delete(index=index_name, ignore=[400, 404])
# os.indices.create(index=index_name, body=ind_body)

vecs = [[random.random() for _ in range(dim)] for _ in range(num_docs)]

# for i, vec in enumerate(vecs):
#     body = bulk_transform(vec, field_name, action, i)
#     os.bulk(index=index_name, body=body)
#     print("Sleeping")
#     if i < len(vecs) - 1:
#         time.sleep(60)
#     else:
#         time.sleep(1)

q_body = {
    'size': size,
    'query': {
        'knn': {
            field_name: {
                'vector': [random.random() for _ in range(dim)],
                'k': k
            }
        }
    }
}

query_response = os.search(index=index_name, body=q_body, _source_excludes=[field_name])
print(json.dumps(query_response, indent=4))

Additionally, could you provide the segment count when you are able to reproduce it via /_cat/segments?

I managed to reproduce again with only 4 documents. The knn-search with k and size set to 4 only returns 3 documents. When setting to 5, it returns all 4 of them. If it matters, the cluster uses dedicated master nodes and has 3 data nodes.
This is the output of _cat/segments for the specific index:
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _hy 646  0  71 282.7kb     0 true false 8.6.2 false
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _ii 666 52 108   314kb 29764 true true  8.6.2 false
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _ij 667  0   1  30.9kb     0 true false 8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _ik 668  1   0  42.6kb 10388 true true  8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _il 669  1   1  29.5kb  8684 true true  8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _im 670  0   1  29.2kb     0 true false 8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _in 671  0   1  29.4kb     0 true false 8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 p x.x.x.x _io 672  1   0    37kb  8756 true true  8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _i6 654 49  58 285.3kb 30204 true true  8.6.2 false
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _iq 674  3 122 316.8kb 16340 true true  8.6.2 false
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _ir 675  1   0  42.6kb 10388 true true  8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _is 676  1   1  29.5kb  8684 true true  8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _it 677  0   1  29.2kb     0 true false 8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _iu 678  0   1  29.4kb     0 true false 8.6.2 true
ecc_nodes_a-t-1310-5020-0000-9775_43017401ac18ea2979f8 0 r x.x.x.x  _iv 679  1   0    37kb  8756 true true  8.6.2 true

I'll have a look at trying to reproduce with a script.

@jmazanec15 I had a lot of trouble trying to reproduce it with a simple script. It did however reproduce easily through some of our application code. What I ended up doing is capturing the calls to _bulk and writing that to a file together with a timestamp. I then created a script to replay those calls at the same rate of the original calls.
The provided script is Scala instead of Python, but should be very straightforward to port if you need. It simply reads the reproducer.txt file, finds the bulk payloads between BATCH_START_TIME <timestamp> lines and executes them with the appropriate time in between.
I've run the reproducer script multiple times on both ES 7.9 and OpenSearch 2.11 and every time the problem was reproduced.
Steps to reproduce:
https://gist.github.com/SkyTrix/4abe38b9c7d5dee51e44d951c6bded03

Apply the mapping template from mapping_template.txt
Configure ES endpoint in IndexingReplay.scala and run it (it runs for 5 minutes)
Run the query from query.txt (multiple times)
Notice that less than 14 results are returned, sometimes jumping between two different values
Update k and size to 30 and rerun query, see that now 14 results are returned
Forcemerge the index and rerun the original query, the 14 results are returned

I hope this will allow you to reproduce the problem on your system.

@jmazanec15 @navneet1v Would you happen to have a chance to try out the reproducer? Thanks!

@SkyTrix sure, will take look this week and try

@jmazanec15 Thanks for looking into this.
We use OpenSearch as a read replica of a database, so every change to the database record will result in a new version of the document and thus an extra deleted document. So in our case, having a lot of deleted documents is "normal". Note that these new versions always have the same _id as the previous version of the document, so I'm a bit surprised these old versions are still "in play". Is there any way only the last versions per _id can get considered in the search?
I ran the reproducer again on an empty index. It eventually produces 16 documents of which 14 should be found by k-NN.
GET _cat/indices/ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2?v

health status index                                                        uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2 acTvS6-4QhiLKWSscL2DgA   1   1         16           87    613.5kb        613.5kb

GET _cat/segments/ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2?v

index                                                        shard prirep ip            segment generation docs.count docs.deleted    size size.memory committed searchable version compound
ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2 0     p      x.x.x.x _a              10         15           76 555.2kb           0 false     true       9.7.0   true
ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2 0     p      x.x.x.x _b              11          1           11    58kb           0 false     true       9.7.0   true

The query returned only 10 documents with k and n = 14.
Checking again 30 minutes later, the segments were automatically merged and deleted docs were gone and all 14 results were returned.
health status index                                                        uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2 acTvS6-4QhiLKWSscL2DgA   1   1         16            0    345.3kb        345.3kb

index                                                        shard prirep ip            segment generation docs.count docs.deleted  size size.memory committed searchable version compound
ecc_nodes_a-dev-1006-2000-0009-4611_43036465760b9a8a8fe502-2 0     p      x.x.x.x _c              12         16            0 345kb           0 true      true       9.7.0   false

So in our case, having a lot of deleted documents is "normal".

Yes, typically with ANN search this will be a problem. For the HNSW graphs in old segments, the docs get marked as deleted, but they are not removed from the graph - main reason being that it is pretty difficult to efficiently remove elements from the graphs.
One thing you could do is use expunge deletes more aggressively so segments typically will have a strong majority of live docs.
Alternatively, lucene passes the non-live docs as a filter to the HNSW search so they get skipped (https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99HnswVectorsReader.java#L236-L238), so switching to lucene engine may yield better results for you case as well.

One thing you could do is use expunge deletes more aggressively so segments typically will have a strong majority of live docs.

The documentation warns that _forcemerge should not be used on indices that are still actively receiving writes, so I'm not sure I'd want to go there..? https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html#forcemerge-api-desc
Thanks for the tip, I'll have to see what the impact is of switching to the Lucene engine. Out of interest: given that both nmslib and Lucene use HNSW graphs, can't nmslib then also pass the non-live docs as a filter?

We are increasing max dim for Lucene in 2.12: https://github.com/opensearch-project/k-NN/blob/main/release-notes/opensearch-knn.release-notes-<IP_ADDRESS>.md, which will be released soon. Alternatively, you could use script scoring if the document count you're searching over is on the order of 100s or 1000s of docs.

Good to know thanks. Once that becomes available on AWS we might start looking into upgrading.
Do you see the current behavior as expected or a bug to be fixed? If expected behavior, could this be added to the documentation somewhere?

Will track with #1491


Stochastic logistic simulation function

With the review from Bioconductor, we decided to change the generic functions into regular functions. The reason is that the dispatch is useful when there are multiple different input classes. But in miaSim simulations, they all dispatch in their first argument which is n.species and it is numeric value. This can be changed later on back to generic functions if we want to elaborate the simulation functions with various inputs.

@antagomir The new model simulateHubbellRates has different kind of output for now. I am thinking about different ways to implement the same output into SE object without changing the structure of SE object. So this could be one of the example to try and see.

See #25 and let us discuss that first?

Output format and their tests are changed. New functions are ready to merge as soon as everybody confirms.

Kindly resolve comments that have been solved.

Now, there is a new example that uses the function in miaTime to calculate beta diversity and also uses short colData example in the vignette. I'm assuming it is ready to merge into the devel branch.