No effect with quality 100?

Using the Image Actions GitHub Action, which uses sharp (with mozjpeg), I get identically compressed files with quality 80 and with quality 100.
What is the output of running npx envinfo --binaries --languages --system --utilities?
Unknown.
What are the steps to reproduce?
PR 1: quality 80
PR https://github.com/hugovk/python-logos/pull/1 adds the default workflow in .github/workflows/calibreapp-image-actions.yml from:
https://github.com/calibreapp/image-actions#how-to-add-this-to-your-repository
name: Compress images
on: pull_request
jobs:
  build:
    name: calibreapp/image-actions
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - name: calibreapp/image-actions
        uses: docker://calibreapp/github-image-actions
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

By default, it uses quality 80.
PR 2: quality 100
PR https://github.com/hugovk/python-logos/pull/2 is the same, but with this config in .github/calibre/image-actions.yml:
jpeg:
  quality: 100
png:
  quality: 100
webp:
  quality: 100

And the action read in the config:
->> Using config: {"jpeg":{"quality":100},"png":{"quality":100},"webp":{"quality":100},"ignorePaths":["node_modules/**"]}

https://github.com/hugovk/python-logos/runs/295767221#step:4:7
However, the images in both PRs are binary identical:

This is surprising, should the images with 100 quality be lossless? I'd expect at least some difference.
What is the expected behaviour?
Lossless change to images with quality 100. At least I'd expect the files in each PR not to be identical.
Are you able to provide a standalone code sample, without other dependencies, that demonstrates this problem?
No, I was referred to report the issue here by the Image Actions maintainers (https://github.com/calibreapp/image-actions/issues/25).
Are you able to provide a sample image that helps explain the problem?
Yes, the images above are in https://github.com/hugovk/python-logos/tree/master/img.

It looks like that Action will only replace images when the output file size is "significantly smaller":
https://github.com/calibreapp/image-actions/blob/91c878e6bfee47e0927eade628177a08377a8f7c/src/image-processing.js#L47
If you're setting quality to 100 then the output size is likely to be larger, so I guess the Action will have no effect.

The Action has effect with both quality 80 and quality 100, and compresses and reduces image in both cases.
The strange thing is, the reduction is identical for both 80 and 100.
For example, https://github.com/hugovk/python-logos/pull/2#issuecomment-552117896 shows lots of replacements with quality 100.

Please note that the quality option for PNG is only available when using libvips compiled with support for libimagequant.
https://sharp.pixelplumbing.com/en/stable/api-output/#png

@benschwarz Does Image Actions use that? ^

@lovell I've created a pull request (calibreapp/image-actions#26) to update the image-actions docker image to explicitly include libimagequant-dev and libwebp-dev. Is there anything else that we should add?

@benschwarz Looks good. It's worth noting that libimagequant is GPL licenced (and not LGPL) so this change will make all your GitHub Action code GPL as it runs in the same process.

@hugovk I hope this information helped. Please feel free to re-open with more details if further help is required.


Fix build:test script

This PR addresses build failures for live-tests.
Closes #2163

Apologies if this was already covered in the previous PR that had the browser tests, but why arent we using the rollup.test.config.js in build:test:browser ?
If we did that and uncommented the browser part in rollup.test.config.js file, I believe we dont need the new env variable BROWSER_TEST

Yes, that wouldn't work because the test.config directly instantiates nodeConfig(). We'll need to introduce a flag to differentiate from browser.

Yes, that wouldn't work because the test.config directly instantiates nodeConfig(). We'll need to introduce a flag to differentiate from browser.

So does the other config. Below is the contents of rollup.config.js.
The first 2 if checks would succeed and nodeConfig() will get instantiated.
const inputs = [];

if (!process.env.ONLY_BROWSER) {
  inputs.push(base.nodeConfig());
}

if (!process.env.ONLY_NODE) {
  inputs.push(base.browserConfig());
  inputs.push(base.browserConfig({ production: true }));
}

if (process.env.BROWSER_TEST) {
  inputs.push(base.browserConfig({ test: true }));
}

export default inputs;

My concern here is 2 fold

introduction of a new variable BROWSER_TEST when we can use the existing ones instead (NODE_ONLY and BROWSER_ONLY)
not using the rollup.test.config.js which was created especially for the test scenario

If we update rollup.test.config.js to use similar if checks as we do in rollup.config.js (like above), I believe we can use the existing env variables and not introduce new BROWSER_TEST
Side note: I know that BROWSER_TEST was not introduced in this PR. I am using the word "introduce" with reference to the browser tests

Yes, that wouldn't work because the test.config directly instantiates nodeConfig(). We'll need to introduce a flag to differentiate from browser.

So does the other config. Below is the contents of rollup.config.js.
The first if checks would succeed and nodeConfig() will get instantiated.
const inputs = [];

if (!process.env.ONLY_BROWSER) {
  inputs.push(base.nodeConfig());
}

if (!process.env.ONLY_NODE) {
  inputs.push(base.browserConfig());
  inputs.push(base.browserConfig({ production: true }));
}

if (process.env.BROWSER_TEST) {
  inputs.push(base.browserConfig({ test: true }));
}

export default inputs;

My concern here is 2 fold

introduction of a new variable BROWSER_TEST when we can use the existing ones instead (NODE_ONLY and BROWSER_ONLY)
not using the rollup.test.config.js which was created especially for the test scenario

If we update rollup.test.config.js to use similar if checks as we do in rollup.config.js (like above), I believe we can use the existing env variables and not introduce new BROWSER_TEST
Side note: I know that BROWSER_TEST was not introduced in this PR. I am using the word "introduce" with reference to the browser tests

Got it, yes updating the test.config to reuse the NODE_ONLY, BROWSER_ONLY flags would get us same result and makes sense.

The changes look good, but we now we have a new set of failures:

Closing this in favor of https://github.com/Azure/azure-sdk-for-js/pull/3017 as enabling of scripts are being tested there.

@ramya0820 I believe the changes in this PR are very much valid regardless of the latest type of CI failures. #3017 doesnt have any of the changes we discussed in this PR i.e removal of BROWSER_TEST and using rollup.test.config.js for building browser tests.
Please re-open this PR.
We can have this merged to get the build step of browser steps resolved. Since we have disabled the running of browser tests in #3084, this PR can be merged

@ramya0820 I believe the changes in this PR are very much valid regardless of the latest type of CI failures. #3017 doesnt have any of the changes we discussed in this PR i.e removal of BROWSER_TEST and using rollup.test.config.js for building browser tests.
Please re-open this PR.
We can have this merged to get the build step of browser steps resolved. Since we have disabled the running of browser tests in #3084, this PR can be merged

Got it, this is pretty much refactoring of the rollup scripts and would belong to #2859
As discussed on other thread, since CI related failures seem related to rollup and browser tests related code, they will need the latest changes finalized. I've created https://github.com/Azure/azure-sdk-for-js/issues/3119 to track the CI related item so it can be moved out of development scope for now.


Improvments and suggestions.

Signed off by @jnpacker

Enumerations for desitreCuration  (suggestion from @hanqiuzh )
Added unknown type for bulk yaml sections  (fix from investigation with @ycao56)
Improved description.  (suggestion from Han)

Reference Issue: https://github.com/open-cluster-management/backlog/issues/9911

/auto-cc

/lgtm


Bump ruby version and gems

bumped ruby version in Gemfile
run bundle update
Added rexml gem (https://stackoverflow.com/a/65480744/974285)
added .ruby-version file (for rbenv)
Remove uneccessary env variable from README

Fixes #5

Pushed successfully on Epinio version (dev):  v0.8.0-86-gd872ffb8


Change Rails/RedundantActiveRecordAllMethod to ignore delete_all and destroy_all when receiver is an association

This PR changes Rails/RedundantActiveRecordAllMethod to ignore delete_all and destroy_all when the receiver is an association (e.g., user.articles.all.delete_all). It only checks cases where the receiver is a model.
As pointed out in https://github.com/rubocop/rails-style-guide/issues/347, it has been found that when the receiver of all is an association, omitting all can change the behavior of certain methods.  I think that in cases where behavior could change, it would be better for the cop not to add an offense.
Methods that change behavior
Currently, among the methods targeted by this cop, the following methods have been confirmed to change behavior when all is omitted from an association:

delete_all
destroy_all

delete_all
user.articles.all.delete_all
# Method: `ActiveRecord::Relation#delete_all`
# SQL: DELETE FROM articles WHERE articles.user_id = 1
# Doc:  https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-delete_all

user.articles.delete_all
# Method: `ActiveRecord::Associations::CollectionProxy#delete_all`
# SQL: UPDATE articles SET user_id = NULL WHERE articles.user_id = 1
# Doc: https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete_all

destroy_all
user.articles.all.destroy_all
# Method: `ActiveRecord::Relation#destroy_all`
# Behavior: Does not execute callbacks
# Doc: https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-destroy_all

user.articles.destroy_all
# Method: `ActiveRecord::Associations::CollectionProxy#destroy_all`
# Behavior: Executes callbacks
# Doc: https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy_all

Additional Context
Several approaches can be taken regarding the cop itself, but it's challenging to decide on a policy:

Add an offense for delete_all and destroy_all only when the receiver is a Model (e.g., User.all.delete_all). If the receiver might be an association, do not add an offense. (<- This PR)
For cases where the receiver of all is an association for delete_all and destroy_all, output an offensive message indicating that omitting all changes the behavior.

It might be challenging to come up with a concise and clear message.

Do not modify the cop implementation. Only add a cautionary note to the this cop description.

I think that in cases where behavior could change, it would be better for the cop not to add an offense. I had my doubts, but for this PR, I've decided to adopt the first approach.
Any feedback on the policy for handling this cop would be greatly appreciated.

Before submitting the PR make sure the following are checked:

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

Thanks!


What do the power saver modes do?

Before submitting your issue or feature request.  DO NOT REQUEST ASSISTANTS FOR PRELOADED IMAGES.  I do not support or condone the use of preloaded ArkOS images.  Preloaded meaning images that come with copyrighted roms preincluded.  Look for support from the creator or supplier of those preloaded images, not from here!  If a ticket is submitted for assistance for such images or if there's an indiciation that a preloaded image is what the support request is for, the issue ticket will be closed with no further response.

This is not the Stock OS that comes with your device, AmberElec, JelOS, or UnOfficialOS.  ArkOS is a different distribution from those systems and will have differing features.  The only somewhat similarity is that they both use EmulationStation as a frontend.  Even with that, the versions of EmulationStation that's used in between ArkOS and these other distributions is different with different capabilities.  If there are features you prefer with the other available distributions, just use those distributions instead.  The choice is yours.

Have you reviewed the Frequently Asked Questions section available for your supported device in the wiki?

If your issue is related to being able to run certain emulators or ports, have you reviewed the Emulators and Ports section available at https://github.com/christianhaitian/arkos/wiki/ArkOS-Emulators-and-Ports-information for needed bios files and supported rom extensions?

Have you reviewed the known issues section available at https://github.com/christianhaitian/arkos/wiki/Known-issues ?

Describe the Issue (If applicable)
Not sure where else to post this. I found no documentation on what the power saver modes do on arkos. I would love an addition to the FAQ section about it and the performance costs per setting.
How can the issue be reproduced? (If applicable)
What device are you using?
RG353Vs
What version of ArkOS are you on?

You can find this during the initial boot process right before the Emulationstation loading screen
v2.0 (08/11/2023)

Anything else you'd like to include that may help to review this issue or feature request?

I haven't tested them much.  They came with with emulationstation and I initially thought they did nothing and were more geared towards PC users.  I've been hearing that they do make some differences.  What they are I'm not sure.  You're welcome to test them and report your findings here.  I'd be happy to include your findings in the FAQa and credit you with the findings.

Got it. I dug in further and found information on it here: https://github.com/RetroPie/EmulationStation/pull/172
My understanding is that it is beneficial on extremely low-powered battery devices, and of course totally useless on devices which are always plugged in. It does not affect game performance (I verified this for PSX emulation with no loss of fps on any setting) and is more for the emulation frontend, by reducing idle CPU usage. I tested playing around the menus with all modes enabled and it didn't effect performance of the front-end (observing the inbuilt fps counter) nor disabled any user-facing features like showing box art and playing preview videos with sound (tested on all the default themes).
My suggestion is that keeping it enabled costs nothing to the user but is giving some unobservable (since I cant check CPU usage) benefit based on what other users are claiming. So keeping it at least at "default" should be safe.

Accidentally closed it.

Do any of the other modes impact sleep reliability?

Not that I have noticed. Just a disclaimer I use the deep sleep setting.

Do any of the other modes impact sleep reliability?

yes if you enable any of them you device will crash in deep sleep :D

Oh.  That may explain why I never have crashing issues in Deep Sleep.  I never change those.

I tested again and I agree that there is infact more instability in deep sleep when power saver modes are on. So I stand corrected, better to leave it off.

Good info and I'm compelled to remove that in a future update.


Use ==/!= to compare str, bytes, and int literals

Add more key flake8 tests to the Travis CI run to detect and avoid Python 3.8 SyntaxWarnings:
% python3.8
>>> 3 is 3
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
>>> 'LambdaConfig' is 'LambdaConfig'
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?

https://flake8.pycqa.org/en/latest/user/error-codes.html
On the flake8 test selection, this PR does not focus on "style violations" (the majority of flake8 error codes that psf/black can autocorrect).  Instead these tests focus on runtime safety and correctness:

E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST).  Often these issues are a sign of unused code or code that has not been ported to Python 3.  These would be compile-time errors in a compiled language but in a dynamic language like Python they result in the script halting/crashing on the user.
F63 tests are usually about the confusion between identity and equality in Python.  Use ==/!= to compare str, bytes, and int literals is the classic case.  These are areas where a == b is True but a is b is False (or vice versa).  Python >= 3.8 will raise SyntaxWarnings on these instances.
F7 tests logic errors and syntax errors in type hints
F82 tests are almost always undefined names which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3.  These also would be compile-time errors in a compiled language but in Python a NameError is raised which will halt/crash the script on the user.

Description

GitHub Issues

Coverage decreased (-18.8%) to 54.228% when pulling 269d67d1639714b8c4d8604bdc7919f76ccc2fe9 on cclauss:patch-1 into ba20c850eeca00edd6ea39fda1ab976cfee193ea on Miserlou:master.

@cclauss I can't find a reason related to this PR for the test failure. Can you just rebase to current master just to make sure the tests are passing before I merge? Thank you very much!

This kind of hard-to-find bug is why the SyntaxWarning was put into Python 3.8.
The line that fails Travis tests is the line below the modified line in zappa/core.py.  before this PR, that code was not getting executed because:
>>> lc = "Lambda"
>>> lc += "Config"
>>> lc == "LambdaConfig"
True
>>> lc is "LambdaConfig"
False


[DOCS] Remove a link to my tweet from README

Description
We had a link to my original tweet about this project in README, but I don't think it's necessary to have it there anymore.

HI, i will like to work on this, kindly assign me


streaming blobs directly to player without assembling files

add an implementation tech-preview of blob streaming to the SDK where blobs are downloaded and streamed to video player on-demand without assembling the file locally

I've switched roles with victor. I'll be the primary and victor will be buddy.


Fix Skeleton3DEditor crash

Fix #65273.

Thanks!

Now the first NOTIFICATION_THEME_CHANGED will happen before NOTIFICATION_ENTER_TREE, and editors have not yet been created (by create_editors).

The key point is that it is notified in inheritance order:
https://github.com/godotengine/godot/blob/b8977ca333fd0334669de0253f86abf6d401256a/core/object/object.h#L833
https://github.com/godotengine/godot/blob/b8977ca333fd0334669de0253f86abf6d401256a/core/object/object.cpp#L789-L790
https://github.com/godotengine/godot/blob/b8977ca333fd0334669de0253f86abf6d401256a/core/object/object.h#L513-L523

Yes, of course. Thanks. I was just not sure why that would be a problem if it worked fine way before any changes we've made. The NOTIFICATION_THEME_CHANGED should've been sent early back then as well. But oh well, the code is better right now anyway. Thanks again for your work!

Before, NOTIFICATION_THEME_CHANGED was delayed notification at the end of NOTIFICATION_ENTER_TREE, but now, it is not delayed in Control, and it is still delayed in Window.

No-no, it became a deferred call with Aaron's changes. But before Aaron's changes it wasn't delayed, it was run at the end of NOTIFICATION_ENTER_TREE. But only under some conditions. Guess they weren't met.

it is still delayed in Window.

Oops, that's actually a bug on my part.


Write json request/response as string

Hi,
I am writing json log of rest web service. Access logs are generating properly in tomcat. But for json request/response its putting \ as escape character. I know in jackson writeAsString will solve this. How can I do this in here?
I have already tried useDefaultPrettyPrinter().
Thanks,
Shoeb

Can you provide your logback-access.xml file, an example request, and an example of the output from logstash-logback-encoder?

below is my logback-access.xml
<configuration>    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">     <file>c:/app-logs/access_log.json</file>     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">       <fileNamePattern>c:/app-logs/access.%d{yyyy-MM-dd}.log.zip</fileNamePattern>     </rollingPolicy>     <encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder"> 		<jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrint" />		   <providers>     <pattern>       <pattern>         { 		"timestamp": "%date{ISO8601}",		 		"requestURL":"%r", 		"httpHeader":"%i",		         "requestContent":"%requestContent",		 		"responseContent":"%responseContent"		        }       </pattern>     </pattern>   </providers>     </encoder>   </appender>    <appender-ref ref="FILE" /> </configuration>
access_log.zip
Please check the attachement for generated log.

Logback's requestContent and resposeContent just return the data as a string.
The AccessEventCompositeJsonEncoder doesn't know that the request/response are JSON, so it escapes the quotes in the string so that the event generated is valid JSON.
If I understand correctly, you want the requestContent and responseContent to be embedded in the log event as JSON objects, rather than escaped strings, like this:
{
  "timestamp" : "2016-08-18 03:59:13,101",
  "requestContent" : null,
  "responseContent" : [{"createUser":"API", ...

To do so, you will need to create your own JsonProvider.  Probably something like this:
public class RequestContentJsonProvider extends AbstractFieldJsonProvider<IAccessEvent>{

    public RequestedUriJsonProvider() {
        setFieldName("requestContent");
    }

    @Override
    public void writeTo(JsonGenerator generator, IAccessEvent event) throws IOException {
        generator.writeFieldName(getFieldName());
        if (event.getRequestContent() == null || event.getRequestContent().isEmpty()) {
            generator.writeNull();
        } else {
            generator.writeRawValue(event.getRequestContent());
        }
    }
}

You can then configure it in your logback-access.xml like this:
<encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder">
  <providers>
    <pattern>
      <pattern>
        {
        "timestamp": "%date{ISO8601}",
        "requestURL":"%r",
        "httpHeader":"%i"
       }
      </pattern>
    </pattern>
    <provider class="RequestContentJsonProvider"/>
    <provider class="ResponseContentJsonProvider"/>
  </providers>
</encoder>


Setup.py: Fix major version check

On Fedora 20, diamond.service wasn't included in the RPM
because distro_major_version >= '7' evaluates to false. Changing
'7' to an integer fixes this.

Closed in favor of python-diamond/Diamond#369.


Explicitly specify namespace for tutorial

Thanks for the tutorial. Some steps depend however on the namespace used in the current context. I've added an explicit definition of these namespaces.
Furthermore the Builder seems to require the serviceAccount: tutorial-service-account instead.

Codecov Report

Merging #502 into master will decrease coverage by 1.39%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #502      +/-   ##
==========================================
- Coverage   67.61%   66.21%   -1.40%
==========================================
  Files          74       74
  Lines        3418     2951     -467
==========================================
- Hits         2311     1954     -357
+ Misses        836      726     -110
  Partials      271      271

Impacted Files
Coverage Δ

pkg/dockercreds/docker_creds.go
64.51% <0.00%> (-7.28%)
:arrow_down:

pkg/cnb/platform_env_vars_setup.go
50.00% <0.00%> (-7.15%)
:arrow_down:

pkg/dockercreds/volume_secret_keychain.go
42.85% <0.00%> (-7.15%)
:arrow_down:

pkg/apis/build/v1alpha1/build.go
16.94% <0.00%> (-6.81%)
:arrow_down:

pkg/git/git_keychain.go
73.91% <0.00%> (-6.42%)
:arrow_down:

pkg/registry/imagehelpers/helpers.go
43.58% <0.00%> (-5.88%)
:arrow_down:

pkg/buildpod/generator.go
59.37% <0.00%> (-5.49%)
:arrow_down:

pkg/registry/client.go
55.55% <0.00%> (-5.43%)
:arrow_down:

pkg/dockercreds/parse_pull_secrets.go
56.41% <0.00%> (-4.96%)
:arrow_down:

pkg/tracker/tracker.go
67.85% <0.00%> (-4.88%)
:arrow_down:

... and 64 more

Continue to review full report at Codecov.

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

thank you!


feat: add support for embedded wikilink

Closes #17

Hi @abhinav thanks for reviewing the code. I have made the changes as you requested.
However, I think the behaviour of the default resolver / renderer should be changed as well.

The default resolver should only add .html prefix on files without extension
For the renderer, do you think it would be better to use the original to-html renderer in goldmark. Instead, we can transform the ast nodes using NodeTransformer before passing to the renderer.

A proof-of-concept of the approach:
type WikilinkTransformer struct{}

func (w *WikilinkTransformer) Transform(node *ast.Document, reader text.Reader, pc parser.Context) {
	source := reader.Source()

	err := ast.Walk(node, func(node ast.Node, entering bool) (ast.WalkStatus, error) {
		// Each node will be visited twice, once when it is first encountered (entering), and again
		// after all the node's children have been visited (if any). Skip the latter.
		if !entering {
			return ast.WalkContinue, nil
		}

		if node.Kind() == wikilink.Kind {
			wikilinkNode := node.(*wikilink.Node)
			w.Rewrite(wikilinkNode, source)
		}

		return ast.WalkContinue, nil
	})

	if err != nil {
		log.Fatal("Error encountered while transforming AST:", err)
	}
}

// Rewrite wikilinks into normal markdown links
func (w *WikilinkTransformer) Rewrite(node *wikilink.Node, source []byte) {
	parent := node.Parent()

	link := ast.NewLink()
	// Link has a single child: the text to display
	link.AppendChild(link, node.FirstChild())
	href := resolver.ResolveWikilink() // <-- put logic here.
	link.Destination = href

	nextSibling := node.NextSibling()
	if node.IsEmbed {
		img := ast.NewImage(link)
		parent.ReplaceChild(parent, node, img)
	} else {
		parent.ReplaceChild(parent, node, link)
	}
	// since we replaced the node, node.next is now set to nil.
	// so that we can still traverse the siblings, we need to set it back
	node.SetNextSibling(nextSibling)
}

To use:
md := goldmark.New(goldmark.WithParserOptions(
			parser.WithASTTransformers(util.Prioritized(&WikilinkTransformer{}, 20))
	),
)

Good point on the rendering logic changes.
So, part of the reason I didn't just transform wikilink.Node to ast.Link was that I wanted the raw wikilink node accessible in the parsed AST to be able to differentiate between when someone used [[Foo]] and [Foo](...).
I'd like the possibility for someone to be able to override the rendering logic for just wikilinks (like say, add an extra class to all wikilinks) without changing the logic for regular Link nodes. Transforming them into link nodes loses information and makes it difficult to render wikilinks differently from normal links.
With embedding, it gets a bit more complicated than just images. e.g.: Obsidian supports embedding a number of things, including pages (when you do ![[Foo]], and it's another note, not an image, Obsidian includes the contents of that page).
The logic for what can be embedded and how is too use-case-specific to hard-code into this library.
Perhaps we can introduce an Embedder interface that lets users specify how to embed a specific thing?
type Embedder interface {
  EmbedWikilink(*Node) (n ast.Node, err error)
}

var ErrUnsupportedEmbed = errors.New("embed not supported")
// If the Embedder doesn't know how to embed this node, it can return ErrUnsupportedEmbed.

// EmbedTransformer transforms wikilink embeds into their embedded content.
type EmbedTransformer struct {
  Embedder Embedder
}

type Extender struct {
  // ...

  // EmbedTransformer is installed only if this field is set.
  Embedder Embedder
}

We can include a sample ImageEmbedder implementation based on your logic above,
that they can pass in as the Embedder, or model after for custom embedding logic.
Extender will install the EmbedTransformer and Parser will support ![[..]] links only if an Embedder was specified.
One thing I'm unsure about that I'd love input on is: should this be a separate EmbedNode or an Embed bool field on Node? If we make it a separate Node type, it'll ensure that the EmbedNode never makes it to the Renderer.
What do you think?

The logic for what can be embedded and how is too use-case-specific to hard-code into this library.

agree!

Perhaps we can introduce an Embedder interface that lets users specify how to embed a specific thing?

I think users of this library would still need to override the renderer to achieve the embed functionality for files / notes. so imho the default renderer should just support the image usecase because ![label](link) is in the official commonmark spec
I think a separate EmbedNode might offer more flexibility than an Embed bool but given the above considerations, I don't think we need to separate it now unless we do have a concrete usecase that requires that.

Sorry, just to clarify:

so imho the default renderer should just support the image usecase because ![label](link) is in the official commonmark spec

By that, do you mean that we should add the Embedder interface, but have the extension support image embedding regardless of whether an Embedder is specified or not? Or defer adding an Embedder interface until later and only do image embedding for now? Either sounds reasonable.

I think a separate EmbedNode might offer more flexibility than an Embed bool but given the above considerations, I don't think we need to separate it now unless we do have a concrete usecase that requires that.

Fair. I lean towards the second type but I don't feel strongly about it so I'll defer to you.

Codecov Report
Base: 100.00% // Head: 100.00% // No change to project coverage :thumbsup:

Coverage data is based on head (8c913a0) compared to base (74cc7bd).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #18   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            5         5
  Lines          108       113    +5
=========================================
+ Hits           108       113    +5

Impacted Files
Coverage Δ

ast.go
100.00% <ø> (ø)

parser.go
100.00% <100.00%> (ø)

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

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

FWIW, the current version of the PR looks good to me as-is.
I'm happy to merge this if you'd like to follow up with rendering separately,
or if you think we should let users figure out the rendering of embeds themselves for now.

By that, do you mean that we should add the Embedder interface, but have the extension support image embedding regardless of whether an Embedder is specified or not? Or defer adding an Embedder interface until later and only do image embedding for now? Either sounds reasonable.

I think we should defer adding an Embedder interface until later, and only do image embedding for now. I'll submit in a separate PR.
Thanks for reviewing this and happy new year! 🥳

Sounds good!
Thank you, and happy new year to you as well!


Flavors for Web

Use case
I'm trying to build two websites out of one flutter codebase. The website should have differing icons and manifest.json.
Proposal
Ability to change web-entry point with flutter build web from the default web/index.html to another one like web-admin/index.html and receive build output in build/web-admin/.

My current workaround is having two web folders web-admin and web-crm and copying over files pre and post building for web. Example for web-admin:
Pre build
rm -rf ./web && cp -r ./web-admin ./web
Build web
flutter build web --release
Post build
rm -rf ./web && mv ./build/web ./build/web-admin

@abegehr
Thanks for the report. Please check this issue comment from Flutter team member about supporting flavors on web.
Based on that, I am going ahead and closing this as not feasible currently.

Hey @darshankawar, thank you for the swift reply. However, I think in this case @jonahwilliams comment does not apply since different dart entry points or dart-defines don't allow for changes to the web/index.html file. Specifically, I would need to set the html-file entry point, not just the dart-entry point to build two webapps with different icons and manifest.json from the same flutter codebase. Does that distinction make sense or is there a better way of achieving this?

Thanks for the feedback @abegehr. Reopening and labeling for further insights from the team.
/cc @yjbanov

I think this is a duplicate of https://github.com/flutter/flutter/issues/78254.
Closing this as a duplicate, but the idea of completely different web directories toggling slightly different output in the build directory is cool, and I don't think it was mentioned in the original issue.
Do you mind if we continue the discussion in #78254, @abegehr?


Add Lightspeed section and seats admin item for Red Hatters

Pushing out new section and 'Seat Management' item to Stage Beta

/lgtm

/ok-to-test


Build NuGet package with EVE-OS API

To use EVE API inside C# projects it would be useful to build and share
NuGet package to import it into the project directly.
We can extract nupkg with commands:
eve_version=$(docker run lfedge/eve version)
docker run --rm lfedge/eve nupkg > LFEdge.EVE.API.$eve_version.nupkg
And will upload nupkg in assets of release.
Signed-off-by: Petr Fedchenkov<EMAIL_ADDRESS>

@giggsoff Just out of the curiosity, do we have anyone requested that? Do we have c# users and projects?

Yes, I received such request. The main idea here is to implement local profile server using C# (not the whole controller).

Yes, I received such request. The main idea here is to implement local profile server using C# (not the whole controller).

Why would they need to build their LPS inside the EVE build system?
They should just import the EVE API (proto, golang or python) files into their build.

Why would they need to build their LPS inside the EVE build system? They should just import the EVE API (proto, golang or python) files into their build.

It is fair question. In case of golang the distribution looks quite simple, I just need to import github.com/lf-edge/eve/api/go/profile and use it. But in case of python, users expects to find wheel, for C# it is nuget package. And expectation is that developers of code will prepare such packages and distribute/update them. But I agree, it looks like another thing to maintain, so if it is not request anymore and it is not needed, feel free to close the PR.

Closing this as stalled, since it is stalled and it isn't clear why EVE-OS would need this as opposed to the developer using github.com/lf-edge/eve/api/proto/profile in their application.


Rename "GetDataObjects" query type to "GetDataAttributes"

This shouldn't cause any compatibility issues.
Also we should expose more data in the dump handler for debugging, like stateRequestQueue, configer etc

https://github.com/indeedeng/iwf/pull/418


a question about ddi rate

Hi! sorry for bothering you again.
I added ddi rate as a metric and checked the ddi rate, but this value was much smaller than it should be. Besides, it seems that the ddi matrix of PyHealth is different from SafeDrug and GAMEnet. Could you please give me some help about it?

Yes, here is the ddi from my SafeDrug paper https://github.com/ycq091044/SafeDrug.

Here is the ddi definition from pyhealth:

Could you please show me how you extract the DDI matrix and how you use the ddi_rate_score function?

Could you please show me how you extract the DDI matrix and how you use the ddi_rate_score function?

Thanks for your reply.
Here is how I extract the DDI matrix in calculate_loss:
def calculate_loss(
self, logits: torch.Tensor, y_prob: torch.Tensor, labels: torch.Tensor
) -> torch.Tensor:
mul_pred_prob = y_prob.T @ y_prob  # (voc_size, voc_size)
batch_ddi_loss = (
torch.sum(mul_pred_prob.mul(self.ddi_adj)) / self.ddi_adj.shape[0] ** 2
)
    y_pred = y_prob.detach().cpu().numpy()
    y_pred[y_pred >= 0.5] = 1
    y_pred[y_pred < 0.5] = 0
    y_pred = [np.where(sample == 1)[0] for sample in y_pred]
    '''
    import dill
    with open('ddi.pkl', 'wb') as f:
        dill.dump(self.ddi_adj, f)
    '''
    cur_ddi_rate = ddi_rate_score(y_pred, self.ddi_adj.cpu().numpy())
    if cur_ddi_rate > self.target_ddi:
        beta = max(0.0, 1 + (self.target_ddi - cur_ddi_rate) / self.kp)
        add_loss, beta = batch_ddi_loss, beta
    else:
        add_loss, beta = 0, 1

    # obtain target, loss, prob, pred
    bce_loss = self.loss_fn(logits, labels)

    loss = beta * bce_loss + (1 - beta) * add_loss
    return loss

further, here is how I use did rate function:
def ddi_rate_score_w(record, path="./ddi.pkl"):
# ddi rate
ddi_A = dill.load(open(path, "rb"))
all_cnt = 0
dd_cnt = 0
for patient in record:
for adm in patient:
med_code_set = adm
for i, med_i in enumerate(med_code_set):
for j, med_j in enumerate(med_code_set):
if j <= i:
continue
all_cnt += 1
if ddi_A[med_i, med_j] == 1 or ddi_A[med_j, med_i] == 1:
dd_cnt += 1
if all_cnt == 0:
return 0
return dd_cnt / all_cnt

where did you get "./ddi.pkl"

where did you get "./ddi.pkl"

from calculate_loss, I saved self.ddi_adj as "./ddi.pkl"
def calculate_loss(
        self, logits: torch.Tensor, y_prob: torch.Tensor, labels: torch.Tensor
    ) -> torch.Tensor:
        mul_pred_prob = y_prob.T @ y_prob  # (voc_size, voc_size)
        batch_ddi_loss = (
            torch.sum(mul_pred_prob.mul(self.ddi_adj)) / self.ddi_adj.shape[0] ** 2
        )

        y_pred = y_prob.detach().cpu().numpy()
        y_pred[y_pred >= 0.5] = 1
        y_pred[y_pred < 0.5] = 0
        y_pred = [np.where(sample == 1)[0] for sample in y_pred]
        '''

        import dill
        with open('ddi.pkl', 'wb') as f:
            dill.dump(self.ddi_adj, f)
        '''
        cur_ddi_rate = ddi_rate_score(y_pred, self.ddi_adj.cpu().numpy())
        if cur_ddi_rate > self.target_ddi:
            beta = max(0.0, 1 + (self.target_ddi - cur_ddi_rate) / self.kp)
            add_loss, beta = batch_ddi_loss, beta
        else:
            add_loss, beta = 0, 1

        # obtain target, loss, prob, pred
        bce_loss = self.loss_fn(logits, labels)

        loss = beta * bce_loss + (1 - beta) * add_loss
        return loss

I am a little confused, self.ddi_adj has different shape (191, 191) with  ddi_A_final.pkl (110, 110)

Thanks. Could you tell me how is your previous DDI rate and what is the current DDI rate?
We do clean up the pipeline and change some places, which makes the final drug set different (size 191) versus (size 110). I remember the main part is here:

In Safedrug, the atc2smiles function missed some mappings, so the corresponding drugs are empty in that record. We thus directly remove the record (the remaining # drugs is 110). However, we find a better way to do the atc2smiles mapping in pyhealth.models.safedrug. With more comprehensive mapping, more drugs are left after our filtering (191 drugs). With different numbers of drugs, the final DDI rate can change.

Thanks. Could you tell me how is your previous DDI rate and what is the current DDI rate?
We do clean up the pipeline and change some places, which makes the final drug set different (size 191) versus (size 110). I remember the main part is here:
In Safedrug, the atc2smiles function missed some mappings, so the corresponding drugs are empty in that record. We thus directly remove the record (the remaining # drugs is 110). However, we find a better way to do the atc2smiles mapping in pyhealth.models.safedrug. With more comprehensive mapping, more drugs are left after our filtering (191 drugs), leading to different final DDI rate.

Many thanks! I see.
The previous ddi rate was around 0.058, and the current was around 0.024


Inconsistency messages in the dedicated node discounts info

Description
in the dedicated node discounts info; there is inconsistency between the two messages:

You receive ...........
You're receiving ..........

Steps to reproduce

go to dedicated node page
put the mouse on the price displayed for each node

Having second thoughts about it
I believe it's more accurate than the suggestion. And I believe the first one should be you will receive 50% discount if you reserve the full node

Work Completed
The messages are updated based on the tab as well.

Verified, Devnet 9280a08.
The message updated.


access the attributes of the follower or the followed

How I can I access the attributes of my followers? or how can an object that is followed to access the attributes of his follower?

You can do an iteration on the list of followers the user has like,
user.followers.each do |follower|
  puts follower.name

  puts follower.inspect
end

and sorry about the late reply regarding the demo you emailed me, but I don't have a demo online right now. But the description summarizes most of its functions. You can also check out the rspecs here.
Cheers!
alec guintu

Thanks. That it does works fine :D. Thank you very much!.

For me it does works this method "all_followers". e.g.
user.all_followers.each do |follower|
follower.name
follower.inspect
end

Ahahaha! That was funny. Yah I forgot it was named like that.
Cheers!


PEO-300 Cleanup source code

PEO-300
Description
Cleanup source code
Before submitting the merge request make sure the following are checked

[x] Followed the style guidelines of this project
[x] Performed a self-review of own code
[ ] Wrote the tests that prove that fix is effective/that feature works

@D3N Could you please add Gemfile.lock to .gitignore. For clarification, please see Yehuda's guidance on the roles of .gemspec, Gemfile, and Gemfile.lock files: Clarifying the Roles of the .gemspec and Gemfile.
Thanks 😉

@D3N Sorry, but also will good to remove Gemfile.lock from the repository, thanks.

@D3N your branch has configs, can you resolve them please, thanks.

@D3N your branch has configs, can you resolve them please, thanks.

done


Remove store subscription and clear timeout when promise settles

This commit adds several tests to ensure cleanup is performed, i.e., assert that teardown() is invoked.
Also added a test to make sure the promise resolves when no actions are expected. 😄

Can you release a new version? :D

Released 🚀


Fix unit tests not reporting tests which do not trigger any assertions.

Build failing due to #53.

+1 beStrictAboutTestsThatDoNotTestAnything is a great addition.

Thank you, I didn't know this phpunit option.
In other tests, I use the response's body, for example: https://github.com/oscarotero/psr7-middlewares/blob/master/tests/LanguageNegotiatorTest.php#L42
This makes sure that the assertion is executed (no matter if there are others in the same test).
But this is a good thing to have too!


remote debugging is broken

I followed the steps provided in the page http://phantomjs.org/troubleshooting.html. After starting the first tab, i ran __run() in console. debugger starts and debugging works fine in phantomjs context, when I want to open a second tab, I do not get a second link with about:blank. when I continue the debug point in first tab, it just goes and hangs. I guess, it is waiting in the debug point inside page evaluate however the webinspector is not able to catch that. To add, sometimes phantomjs also crashes.
phantomjs version:
1.9.8
Chrome version:
Chromium 37.0.2062.120 Ubuntu 12.04

Please upgrade to PhantomJS 2.0. 1.9.x is no longer supported, and known to have many crasher bugs that are fixed in 2.0.


Device locale not changed to match language

This is a patch for issue #1643 - Device Locale Not Changes to Match Language.
As a result, the following will now work in the Simulator:

The whole OS is now running in the correct locale, so that system dialogs and UI will appear correctly. This includes things like permission dialogs, but also the Share Menu or Default toolbar buttons like .Cancel.
The status bar changes properly
WKWebView and UIWebView will now send a proper Accept-Languages header, which will result in sites more correctly displaying (or redirecting to) a version with the chosen locale.

It adds a --localize-simulator option to snapshot, which will then configure the Simulator to use the chosen language.
Note that --localize_simulator implies --erase_simulator. This is needed because you cannot change the locale without fully resetting the Simulator. (Needs to be verified, but I could not get it to work reliably without a reset)
Example output at https://people.mozilla.org/~sarentz/t/SnapshotIssue1643/screenshots.html which shows the following:

For locales natively supported by iOS, the status bar changes accordingly
You can see that the locale is now correctly passed to the WKWebView and that mozilla.org redirects to the localized sub-site. (This does not work for all because mozilla.org is not localized to all the languages i threw at it, but it is still a pretty good indication of how this works in practice)

:8ball:

Hi @st3fan - thanks for the detailed write-up! :+1:
I've left some small questions and comments, but overall this seems great. Does it also get the keyboard in line as people were hoping for in the original ticket?

@mfurtak Thanks! I will polish up the PR soon.
The default keyboard settings are tough to get right. And it may actually be better to do that from Swift code. (Not entirely sure) I did not want to complicate this PR, so if you agree I'd like to make keyboard support a followup ticket.

@mfurtak I have addresses your comments.
I also made a small change to the locale selection code. If no locale is specified (it is optional in the Snapshot config, which only takes a language identifier by default), the language identifier is transformed to a locale identifier.
I don't know what your workflow is. Let me know if you want me to squash the commits.

I have addresses most issues or left comments.
One additional change: I am now also setting AppleKeyboards to include the chosen locale. The result of this is that iOS will add the default keyboard for that locale to the list of available keyboards.
So for example when running snapshot for es_MX while running OS X in US English, this results in two keyboards being available: English (US) and Spanish (Mexico).  But it does not change the default keyboard. That is something that needs to be done through UI Test interactions.
So this is not complete keyboard handling, but there are two advantages to setting AppleKeyboards like this:

The default keyboard for the chosen locale will be part of the available keyboards. So you don't have to do crazy things to go into Settings via UI Tests and add those. (Not even sure if that is possible)
The keyboard for the chosen locale becomes predictable. The first entry in the Keyboard selection popup will always be the default (en_US or whatever your Mac is set to) but the second item in the list is predictably the keyboard belonging the locale that Snapshot runs your app in. This open the door to some basic keyboard switching logic UI Test interactions.

:8:

Sorry for the silence. I have some more changes coming up to finalize this PR.

HI @st3fan,
I will try it as soon as possible, because your approach seems to me a general solution for the language problem.
Currently the CI is red, so I wait until it is green or I get a signal from  you.

I completely messed up this PR. Closing this one and replacing with https://github.com/fastlane/fastlane/pull/4313


Only asset for linux arm64 was released at v0.0.22

https://github.com/dag-andersen/argocd-diff-preview/releases/tag/v0.0.22

Assets for macOS and linux amd64 weren't released.

The release workflow succeeded.
https://github.com/dag-andersen/argocd-diff-preview/actions/runs/11579220376/job/32234902351

macOS x86_64
Artifact argocd-diff-preview-macOS-x86_64.zip successfully finalized. Artifact ID<PHONE_NUMBER>
Artifact argocd-diff-preview-macOS-x86_64 has been successfully uploaded! Final size is 1383409 bytes. Artifact ID is<PHONE_NUMBER>
Artifact download URL: https://github.com/dag-andersen/argocd-diff-preview/actions/runs/11579220376/artifacts/2119054189
2s
Run softprops/action-gh-release@v2
Found release v0.0.22 (with id=[1](https://github.com/dag-andersen/argocd-diff-preview/actions/runs/11579220376/job/32234902351#step:8:1)82521798)
♻ Deleting previously uploaded asset argocd-diff-preview-Darwin-x86_64.tar.gz...
⬆ Uploading argocd-diff-preview-Darwin-x86_64.tar.gz...
🎉 Release ready at https://github.com/dag-andersen/argocd-diff-preview/releases/tag/untagged-0effede08022a3cc3ed6

linux arm
Artifact argocd-diff-preview-Linux-arm.zip successfully finalized. Artifact ID<PHONE_NUMBER>
Artifact argocd-diff-preview-Linux-arm has been successfully uploaded! Final size is 1687442 bytes. Artifact ID is<PHONE_NUMBER>
Artifact download URL: https://github.com/dag-andersen/argocd-diff-preview/actions/runs/11579220376/artifacts/2119060526
2s
Run softprops/action-gh-release@v2
👩🏭 Creating new GitHub release for tag v0.0.22...
⬆ Uploading argocd-diff-preview-Linux-arm-musl.tar.gz...
🎉 Release ready at https://github.com/dag-andersen/argocd-diff-preview/releases/tag/untagged-7a732a1c6ff28c1e3f22

The draft release urls were different.
🎉 Release ready at https://github.com/dag-andersen/argocd-diff-preview/releases/tag/untagged-0effede08022a3cc3ed6

🎉 Release ready at https://github.com/dag-andersen/argocd-diff-preview/releases/tag/untagged-7a732a1c6ff28c1e3f22

Hi @suzuki-shunsuke
Thank you for reporting this. It should now be fixed :)
https://github.com/dag-andersen/argocd-diff-preview/releases/tag/v0.0.22

Thank you!
Was there any issue in the release process?

I don't know how it happened precisely :)
I think it got confused because I deleted a release while it was creating a new one. So, some kind of race condition. I will double-check this from now on when creating new releases.


Focus on multiple views

I recently started to integrate this library in one of my projects. I facing a situation where I'd like to show a tap target on multiple views.
I have two solution:

Wrap my views with a ViewGroup and use it to display the tap target
Get the Rect of each view and compute them so all my views are contain in a Rect.

I don't like the first solution because I'll have to add a useless ViewGroup in my hierarchy, the second one is better in term of performance but I think it could handle internally in the library.
Is it possible to add a method to show a tap target on multiple views like this TapTarget.forViews(CharSequence title, CharSequence description, View... views)
(BTW Thanks guys for awesome library)

I feel like this is outside of the scope of the library and the UX pattern. Tap targets are to isolate a single view rather than multiple. I would personally go with the bounds calculation solution.


refactored popup.js as class, fixed issue with scrolling (probably "a…

What does this PR do?
It should fix the issue

Any background context you want to provide?
I've refactored ur extension with popup.js being a Class, much cleaner stuff

@CapitanFindusFI I agree that the code looks cleaner but we, unfortunately, we don't want to move to classes right now.


chore(decorators): Move decorators

Move decorators to own folder
Create spec file for each decorator
Rename dispatchAll.ts -> dispatch-all.ts
Remove decorator spec from ngredux spec

@kosz @SethDavenport

:shipit:


Integration with ATG Dynamo has wrong URL

In the documentation
http://www.beanshell.org/docs.html
There's a link to the integration with ATG Dynamo:
Integrating BeanShell with ATG Dynamo application
server (by Will Sargent, ATG)
This link should be updated to
http://tersesystems.com/code/bsh/ and the reference to
ATG taken out (since I don't work for them anymore).
Reported by: wsargent
Original Ticket: "beanshell/bugs/130":https://sourceforge.net/p/beanshell/bugs/130

The link is not there anymore .


No libevent mbedtls

Delete unnecessary libevent2_mbedtls library dependency.
Was created using CHATGPT, need to be reviewed by C-lang programmer.

I am getting segfault, chatgpt seems that has made mistake someware :( need to be fully reviewed

Should be carefully reviewed.

again segfault


gcloud auth configure-docker is not working with microk8s

Please run microk8s.inspect and attach the generated tarball to this issue.
inspection-report-20190729_185249.tar.gz
We appreciate your feedback. Thank you for using microk8s.

Hi @spectordotan be aware that MicroK8s packages its own container runtime. I do not think configuring this runtime is something other tools can do. If you tell me what you need to set I may be able to show you how to do it.


chore: move transferTransversal

The last section of GroupTheory.Complement is a mix of results purely about ZMod and results about the transfer transversal. The former can move to Data.ZMod.Quotient, while the latter can move to GroupTheory.Transfer.

Makes sense to me.
maintainer merge

But yes, looks good to me!


Nextra v3 template

Hi 👋
The Nextra v3 (https://github.com/shuding/nextra/issues/1421) looks pretty stable, many projects are already using it in production.
Is it on the roadmap to update this template sometime soon according to the v3 changes?

Is anyone working on this?

Hi I just created a template for this ,  https://github.com/ShrihariMohan/nextra-v3-docs-template


新增SetTimeout全局配置

update #274

Codecov Report

Merging #276 (a9e5069) into master (3c36f92) will decrease coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #276      +/-   ##
==========================================
- Coverage   91.43%   91.42%   -0.02%
==========================================
  Files          41       41
  Lines        1647     1645       -2
==========================================
- Hits         1506     1504       -2
  Misses         94       94
  Partials       47       47

Impacted Files
Coverage Δ

dataflow/dataflow.go
93.79% <100.00%> (-0.09%)
:arrow_down:

dataflow/req.go
81.90% <100.00%> (-0.10%)
:arrow_down:

gout.go
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


File List Android

The  newMediaFileListener is really slow to detect new files.  I have seen it take minutes after recording stopped.  Not sure why.
Here is an implementation of listing all of the files on the SD for Android.
There is a bug in it though that you might have some insight on.  I need the product to get the camera.  You get the product (which is an Aircraft) from the onProductConnect callback.  Unfortunately this callback happens after SDKEvent.ProductConnection callback.  So if you call getFileList when you get the callback from SDKEvent it will fail with no product.
It is easy to workaround with a delay, but that is not fantastic:
setTimeout(async () => {
const fileList = await DJIMobileWrapper.getFileList();
console.log("JSON.stringify(fileList));
},1000);

Also, the file listing fails (camera is busy) if you don't stop recording first.  Unfortunately the stopRecording timeline event doesn't seem to be sufficient, or is perhaps really slow to take effect.  Not sure.  So I added a stopRecording action to the camera to make sure recording is stopped before listing files.

Hi Mark, thanks so much for the PR :)
I haven't experienced the newMediaFileListener being that slow, I'm not sure why it would be taking so long.
I will look into the bug regarding the SDKEvent.ProductConnection callback, thanks for picking that up. We started working on the Android media file download from the SD card but unfortunately some higher priority work has come up. Should get back to it in the next week or so.


Support text selection via keyboard

We should support selecting text in text fields using a hardware keyboard.  For instance, using the arrow keys while holding down SHIFT. Also selection to the beginning and end using the begin/end keys and SHIFT (and perhaps selecting words/sentences/paragraphs with other key combinations).

There is some basic support for this now, but it's missing some things (like up/down arrow support, for instance). Still more to be done.

VIm bindings cough cough


can retention policy be set in the config file?

Is it possible to set the retention policy in the config file rather than via a command line query?

It is not. More information on retention policies here. For general questions like this please refer to the documentation or the InfluxDB channel in the Gopher Slack Group.


Potential issue: LFP table has no filtered_data_object_id

In reading through the code, I saw these lines in the LFP.nwb_object method:
https://github.com/LorenFrankLab/nwb_datajoint/blob/611864e86d5a7d9c64cc48e57ccc981bcf5b1e24/src/nwb_datajoint/common/common_ephys.py#L348-L349
This seems to be a typo because the LFP table has no 'filtered_data_object_id' property, so this fetch will always return nothing (or raise an error). Note that LFP has a 'lfp_object_id' property and LFPBand has a 'filtered_data_object_id' property.
So should this line instead say:
nwb_object_id = (self & {'analysis_file_name': lfp_file_name}).fetch1('lfp_object_id')

I do not know if this is used, but wanted to draw attention to it in case it is.

Thanks. that is used and needs to be fixed. I’ll see if I can get that done shortly.

On Aug 3, 2021, at 5:24 PM, Ryan Ly @.***> wrote:
In reading through the code, I saw these lines:
https://github.com/LorenFrankLab/nwb_datajoint/blob/611864e86d5a7d9c64cc48e57ccc981bcf5b1e24/src/nwb_datajoint/common/common_ephys.py#L348-L349 https://github.com/LorenFrankLab/nwb_datajoint/blob/611864e86d5a7d9c64cc48e57ccc981bcf5b1e24/src/nwb_datajoint/common/common_ephys.py#L348-L349
which seems to be a typo because the LFP table has no 'filtered_data_object_id' property, so this fetch will always return nothing (or raise an error). Note that LFP has a 'lfp_object_id' property and LFPBand has a 'filtered_data_object_id' property.
So should this line instead say:
nwb_object_id = (self & {'analysis_file_name': lfp_file_name}).fetch1('lfp_object_id')
I do not know if this is used, but wanted to draw attention to it in case it is.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/LorenFrankLab/nwb_datajoint/issues/62, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABV4PSMHV5WIVUJSM2DTTTTT3CCFDANCNFSM5BP42EJA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.


Improve search

contain category

need to translate English to Japanese

videos.category_name

upper, lower
now don't match mkr and MKR

Hiragana, Katakana


Add triggerSet type; convert a few triggers

This is mostly just trying to put together some thoughts of what this might look like.  Feedback super welcome.

I wrote something like this:
type TriggerFunction<T, D = Data, R = T | string | undefined> = (data: D, matches?: Matches, output?: Output) => R;

interface TimeLineTrigger<D> extends BaseTrigger<D> {
  beforeSeconds?: number | TriggerFunction<number, D>;
}

interface _TriggerSet<D extends Data> {
  zoneId: number | null | number[];
  timelineFile?: string;
  timeline?: Array<string | ((d: D) => string)>;
  timelineTriggers?: TimeLineTrigger<D>[];
  locale?: Lang;
  timelineReplace?: TimelineReplace[];
  triggers?: LogTrigger<D>[];
  overrideTimelineFile?: boolean;
  resetWhenOutOfCombat?: boolean;
}

export type TriggerSet<D = Data> = _TriggerSet<D>

in trigger file
import { TEAData } from "./data";
import { TriggerSet } from "../../cactbot";

const trigger: TriggerSet<TEAData> = {}
export default trigger;

find that it's hard to write trigger in the old way with  "strictNullChecks": true,

And I think we should remove this type annotation  because it makes all method on Responses optional.
https://github.com/quisquous/cactbot/blob/cc1bda93735d2f80ff3f4de83a05a4e832fe37d5/resources/responses.ts#L148-L155

And I think we should remove this type annotation because it makes all methods on Responses optional like Output.
https://github.com/quisquous/cactbot/blob/cc1bda93735d2f80ff3f4de83a05a4e832fe37d5/resources/responses.ts#L148-L155

I am not sure which commit you are commenting on, but that is fixed on the main branch, and rebased here.  Take a look and let me know if you think there is more to do.

I am not sure which commit you are commenting on, but that is fixed on the main branch, and rebased here. Take a look and let me know if you think there is more to do.

sorry, my HEAD is at the latest tag, didn't contain that commit.

find that it's hard to write trigger in the old way with  "strictNullChecks": true,

Do you have an example of something that gets harder?  Is it more than just output.text?.()?

find that it's hard to write trigger in the old way with  "strictNullChecks": true,

Do you have an example of something that gets harder? Is it more than just output.text?.()?

got many problems with null checking in properties of matches
try this file: https://gist.github.com/Trim21/8f1fac30be1928d7b2b33046bfd0975e

could we add a method on output named render or something else with type (infi: string, params: Record): string to avoid this type problem?

could we add a method on output named render or something else with type (info: string, params: Record): string to avoid this type problem?

Personally, I think output.render(info: 'text', params: { player: target }) is harder to type and read than output.text?.({ player: target }).  Is it really so bad to type output.text?.() instead of output.text()?

diff --git a/ui/raidboss/data/05-shb/ultimate/tea.ts b/ui/raidboss/data/05-shb/ultimate/tea.ts
index 2a1de597..f842c56b 100644
--- a/ui/raidboss/data/05-shb/ultimate/tea.ts
+++ b/ui/raidboss/data/05-shb/ultimate/tea.ts
@@ -29,16 +29,20 @@ export interface TEAData extends RaidbossData {

 const getHeadmarkerId = (data: TEAData, matches: MatchesHeadMarker): string => {
+  const id = matches?.id;
+  if (!id)
+    return '0000';
+
   // If we naively just check !data.decOffset and leave it, it breaks if the first marker is 004F.
   // (This makes the offset 0, and !0 is true.)
   if (typeof data.decOffset === 'undefined') {
     // The first 1B marker in the encounter is Limit Cut 1, ID 004F.
-    data.decOffset = parseInt(matches.id, 16) - 79;
+    data.decOffset = parseInt(id, 16) - 79;
   }
   // The leading zeroes are stripped when converting back to string, so we re-add them here.
   // Fortunately, we don't have to worry about whether or not this is robust,
   // since we know all the IDs that will be present in the encounter.
-  return '00' + (parseInt(matches.id, 16) - data.decOffset).toString(16).toUpperCase();
+  return '00' + (parseInt(id, 16) - data.decOffset).toString(16).toUpperCase();
 };

 const limitCut = {
@@ -61,10 +65,8 @@ export const trigger: TriggerSet<TEAData> = ({
       beforeSeconds: 3,
       durationSeconds: 4,
       alertText(data) {
-        if ([5, 6].includes(data.limitCutNumber))
+        if ([5, 6].includes(data.limitCutNumber ?? 0))
           return '踩灵泉';
-
-        return '';
       },
     },
     {
@@ -73,10 +75,8 @@ export const trigger: TriggerSet<TEAData> = ({
       beforeSeconds: 3,
       durationSeconds: 4,
       alertText(data) {
-        if ([7, 8].includes(data.limitCutNumber))
+        if ([7, 8].includes(data.limitCutNumber ?? 0))
           return '踩灵泉';
-
-        return '';
       },
     },
     {
@@ -85,10 +85,8 @@ export const trigger: TriggerSet<TEAData> = ({
       beforeSeconds: 3,
       durationSeconds: 4,
       alertText(data) {
-        if ([1, 2].includes(data.limitCutNumber))
+        if ([1, 2].includes(data.limitCutNumber ?? 0))
           return '踩灵泉';
-
-        return '';
       },
     },
   ],
@@ -116,7 +114,7 @@ export const trigger: TriggerSet<TEAData> = ({
         // Here and elsewhere, it's probably best to check for whether the user is the target first,
         // as that should short-circuit more often.
         return (
-          data.me === matches.target &&
+          data.me === matches?.target &&
           /00(?:4F|5[0-6])/.test(getHeadmarkerId(data, matches)) &&
           data.phase !== 'wormhole'
         );
@@ -158,7 +156,7 @@ export const trigger: TriggerSet<TEAData> = ({
         // Here and elsewhere, it's probably best to check for whether the user is the target first,
         // as that should short-circuit more often.
         return (
-          data.me === matches.target &&
+          data.me === matches?.target &&
           /00(?:4F|5[0-6])/.test(getHeadmarkerId(data, matches)) &&
           data.phase === 'wormhole'
         );
@@ -194,7 +192,7 @@ export const trigger: TriggerSet<TEAData> = ({
       // return data.limitCutDelay
       // },
       infoText: function(data, _, output) {
-        return output[`num${data.limitCutNumber}`]();
+        return output[`num${data.limitCutNumber ?? ''}`]();
       },
       outputStrings: limitCut,
     },

I don't think this is that bad, to be honest.  I think the [5, 6].includes(etc) constructs is rough for TypeScript because TypeScript strongly types the includes function based on the type of the Array.
I am very reluctant to drop the strict null check, because one of the things I really wanted out of typescript was to make sure that we were initializing data properties and not using them before they were assigned.  I think needing to add a ? to matches or output usage is a small price to pay for that.

I think this is almost ready to go.  I think the one thing that feels like a blocking issue for me is that using conditional chaining causes really obnoxious looking transpiled javascript.  If users are looking at the triggers branch to copy and paste JavaScript for user files, then this will look really bad.  It seems unlikely that OverlayPlugin will update CEF any time soon (I filed https://github.com/ngld/OverlayPlugin/issues/209.  Maybe I should just look into doing it myself??).
So, I think for me that means we need to pick one of:

disable the eslint error against ! in triggers only and do something like matches!.text and output.text!()
disable null checks in user files (but I feel that strict null check on data is important, as we've had a bunch of bugs there over time? maybe everybody else disagrees with this?)
accept that transpiled triggers with optional chaining will be pretty unreadable and just live with that

My feeling here is kind of to use option 1 and then if OverlayPlugin CEF version bumps we can just search and replace ! to ?. as needed.
Other ideas:
I see Maiko has a PR up for making the Matches have required fields in #2994, but I don't understand how the callers will be typed in order to make that work.  Maybe I'm missing something.
We could write an output type that has every outputStrings field name in it.  We could generate it via some automated script that then spits out some Output type with every valid field name in it, and then we would never need to write output.text?.() or output.text!() and we could just write output.text().  This is kind of weird and maybe obnoxious, but it's a thought that I had.

could we add a method on output named render or something else with type (info: string, params: Record): string to avoid this type problem?

Personally, I think output.render(info: 'text', params: { player: target }) is harder to type and read than output.text?.({ player: target }). Is it really so bad to type output.text?.() instead of output.text()?

It's not about typing, but reanspiled null checker.

Personally, I think output.render(info: 'text', params: { player: target }) is harder to type and read than output.text?.({ player: target }). Is it really so bad to type output.text?.() instead of output.text()?

It's not about typing, but reanspiled null checker. It's a litt bit annoying.
I'd rather choose !

I added a ! for output in the last patch.  I also took Maiko's idea from another patch and made Matches always non-null.  Its fields may still be undefined, but matches itself is never undefined.  I think that cleans things up a lot.

@Trim21 @MaikoTan @panicstevenson @valarnin I think this is ready to go at this point after a lot of discussion with all of you (thank you!!).  Does anybody have any other thoughts or concerns here?  I wanted to just make sure we were in a good place before more triggers started being converted.

I hadn't provided any feedback on this I thought, but I'll gladly weigh in with my quick thoughts.

I suspect that you are the only person writing personal triggers and using webpack. :P

I also write personal triggers and use webpack ;)
My only real question here is the move of export default in trigger files to the end, as:
export default triggerSet;

Was there no way to make this work as it did originally? For example:
export default {
// ...
} as TriggerSet<Data>;

I hadn't provided any feedback on this I thought, but I'll gladly weigh in with my quick thoughts.

I suspect that you are the only person writing personal triggers and using webpack. :P

I also write personal triggers and use webpack ;)

Noted!

Was there no way to make this work as it did originally? For example:
export default {
// ...
} as TriggerSet<Data>;

Unfortunately, using as here makes this mean something very different.  It just asserts that the file is exporting a TriggerSet<Data> without checking that's true.  It's similar to saying export default {} as string;
If there's some way to declare and export a variable with an explicit type in a single line, I'd be happy to change it.  It feels awkward to me too.

There isn't as far as I know.... We have to do it in this way.
or export default helper<Data>({}) which make it more awkward.

Hmm, unfortunate then.
But yeah, otherwise everything here looks good.

I converted a few different trigger files: Ifrit NM; Binding Coil Turn 8; and (started) Unending Coil.
Things I noticed:
export { RaidbossData as Data } from '../../../../../types/data';

In Titan Extreme originally confused me; it made more sense using Turn 1 as an example here.
Regex.hasHP in UCoB returns 'regex' does not exist in type 'NetRegexTrigger<Data>'
output.xyz({ num: num }) will throw that num isn't a string; this can be solved with String(num) but that feels maybe obnoxious to put everywhere.
It would be great if there were a way to guarantee things existing within data, otherwise you can get into a situation where condition, infoText, alarmText, and run all check if data.something !== undefined
I don't think any of these are blocking to me; otherwise it felt good. I don't have any personal triggers outside of my user file to compare that aspect, but the normal trigger conversion seemed straightforward for the most part.

I converted a few different trigger files: Ifrit NM; Binding Coil Turn 8; and (started) Unending Coil.
Things I noticed:
export { RaidbossData as Data } from '../../../../../types/data';

In Titan Extreme originally confused me; it made more sense using Turn 1 as an example here.

It made some sense to me to have every trigger also export its Data type in case we needed it? We can not do that too.

Regex.hasHP in UCoB returns 'regex' does not exist in type 'NetRegexTrigger<Data>'

Oof, welllll, I'll defer this for a later PR.
I've wondered for a while if we should find some other way to handle hasHP anyway.  A lot of people turn off this setting too (especially because it's very noisy in logs).

output.xyz({ num: num }) will throw that num isn't a string; this can be solved with String(num) but that feels maybe obnoxious to put everywhere.

Alternatively output.xyz({ num: `${num}`) Alternatively alternatively we could allow params to be numbers as well and turn them into strings internally?

It would be great if there were a way to guarantee things existing within data, otherwise you can get into a situation where condition, infoText, alarmText, and run all check if data.something !== undefined

Yeah, this is definitely unfortunate.  One thing that can help some is that probably things with info+alarm could be responses, which cuts down a little bit on this.  But, that doesn't really solve it either.
One future feature that we could consider doing is having some function on triggerSet to initialize data to some known values when you start the zone or on reset.  Then the Data object could have required fields on it from the perspective of the trigger set.

Alternatively output.xyz({ num: `${num}`)

Ah, yea. I originally started with that and it didn't work, but I think that's due to a lack of converting the rest of the file? Now that a lot more of the types are defined this works as expected. Otherwise, it will complain that you can't use number | undefined in a template string, but that seems like a non-issue now.

I've wondered for a while if we should find some other way to handle hasHP anyway. A lot of people turn off this setting too (especially because it's very noisy in logs).

I think this option isn't on by default, IIRC? Either way, this could key off of something like autoattack and just do the math on current vs max hp, since those should be included in those lines? (specifically I'm talking about 21| lines).

One future feature that we could consider doing is having some function on triggerSet to initialize data to some known values when you start the zone or on reset. Then the Data object could have required fields on it from the perspective of the trigger set.

This is actually something that could be pretty useful, e.g. on e12s for phase.

🏁


Bad performance of query against date partitioned table with search condition by partitioned column

(you don't have to strictly follow this form)
Describe the bug
Bad performance of query against partitioned table with search by partitioned column
How to reproduce
Run following code:
 create table test1 (id UInt64, test_date DateTime, test_data String, test_version UInt64)   ENGINE = ReplacingMergeTree(test_version) PARTITION BY toDate(test_date) ORDER BY id SETTINGS index_granularity = 8192;

insert into test1 select number,now()-toUInt64(number/10), toString(number), 1 from system.numbers limit 100000000;
select count(*) from test1;
select min(test_date) from test1;
SELECT count(*) FROM test1 PREWHERE toDate(test_date) BETWEEN toDate('2019-06-01') -7 AND toDate('2019-06-01') ;
SELECT count(*) FROM test1 PREWHERE toYYYYMMDD(test_date) BETWEEN toYYYYMMDD(toDate('2019-06-01') -7) AND toYYYYMMDD(toDate('2019-06-01') );

Test run results:
Slow query with toDate condition
terza.solar.local :) SELECT count(*) FROM test1 PREWHERE toDate(test_date) BETWEEN toDate('2019-06-01') - 7 AND toDate('2019-06-01') ;

SELECT count(*)
FROM test1
PREWHERE (toDate(test_date) >= (toDate('2019-06-01') - 7)) AND (toDate(test_date) <= toDate('2019-06-01'))

┌─count()─┐
│  691200 │
└─────────┘

1 rows in set. Elapsed: 1.959 sec. Processed 9.80 million rows, 39.19 MB (5.00 million rows/s., 20.01 MB/s.)

Fast query  with toYYYYMMDD condition:
terza.solar.local :) SELECT count(*) FROM test1 PREWHERE toYYYYMMDD(test_date) BETWEEN toYYYYMMDD(toDate('2019-06-01')-7) AND toYYYYMMDD(toDate('2019-06-01') );

SELECT count(*)
FROM test1
PREWHERE (toYYYYMMDD(test_date) >= toYYYYMMDD(toDate('2019-06-01') - 7)) AND (toYYYYMMDD(test_date) <= toYYYYMMDD(toDate('2019-06-01')))

┌─count()─┐
│  691200 │
└─────────┘

1 rows in set. Elapsed: 0.014 sec. Processed 691.20 thousand rows, 2.76 MB (50.86 million rows/s., 203.45 MB/s.)

Please note the difference in amount of processed data, more than 10 times!

Which ClickHouse server version to use
<IP_ADDRESS>.

Which interface to use, if matters
clickhouse-client

Non-default settings, if any
none

CREATE TABLE statements for all tables involved
create table test1 (id UInt64, test_date date, test_data String, test_version UInt64)   ENGINE = ReplacingMergeTree(test_version) PARTITION BY toDate(test_date) ORDER BY id SETTINGS index_granularity = 8192;

Sample data for all these tables, use clickhouse-obfuscator if necessary
please see test case above

Queries to run that lead to unexpected result
please see test case above

Expected behavior
Optimal performance when using search condition in the same form as partitioning clause.
Error message and/or stacktrace
Additional context
We have many complex queries processing the data for analytics.
Total run time difference coluld be several days vs several hours, depending on which conversion function is used toDate or toYYYYMMDD.
Using toDate seems to be logical choice as this is how the table was originally created.
Please note that partitioning column data type is DateTime and partitioning clause is:
PARTITION BY toDate(test_date)

I think toDate function is not monotonic (because it's argument can be string) so probably partition elimination does not work.
CH does not store a result of toDate(test_date) in case of PARTITION BY toDate(test_date)
CH always stores MAX_MIN of column (test_date) as an part's attribute (as DateTime as your create).
I would use in your case
SELECT count(*)
FROM test1
PREWHERE (test_date >= toDateTime(toDate('2019-06-01') - toIntervalDay(7)))
            AND (test_date <= toDateTime(toDate('2019-06-01')))

Thanks for clarification!


update: increase the max length of the secret (#3493)

This PR increases the default maxlength from 1024 characters to 10000, which should be good for most cases.

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

Hi, there is any progress on this? This very import issue.
We are painful to store k8s cert.

There's still an error with prettier. I merged anyway. I'm fixing the issue from our end. Thanks @rambhosale, @xzycn for the contribution.

@tan-nhu
Hi, thx for your job.
May I ask when your next release will come? I have recently use gitness(v3.0.0-beta.6) as our CI/CD tools,there are some bugs or inconvenient design.
So I want a newer release including this PR :)


Register version 0.3.0

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/105749
Tip: Release Notes
Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.
@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.
Tagging
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.3.0 -m "<description of version>" c1381ec8d61fa3e6fae18bf880f1e5925b90913e
git push origin v0.3.0


Improve h3d layout methods

Codecov Report
Attention: Patch coverage is 91.83673% with 4 lines in your changes are missing coverage. Please review.

Project coverage is 76.43%. Comparing base (728c5a9) to head (1e6aa1a).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4451      +/-   ##
==========================================
- Coverage   81.50%   76.43%   -5.08%
==========================================
  Files         109      109
  Lines       53196    53225      +29
==========================================
- Hits        43359    40682    -2677
- Misses       9837    12543    +2706


Feature Request: Search for a manga via APIs/GET

As far as I can tell, to follow a manga you would currently have to go to madokami/mangadex/etc and manually grab the series URL in order to do cum follow $url. It would be nice to have the ability to search the download sites (where applicable) in order to find series to follow. This might be a niche usecase as it really isn't that hard to open a browser and search, but if this is a command line tool modeled after package managers, then I think a search ability would be within the scope considering many package managers have the ability to search for packages.
As an idea of what I'm thinking of:
$ cum search "Dragonball"
==> Searching for "Dragonball"
Found:
(1) /Manga/D/DR/DRAG/Dragon Ball
(2) /Raws/Dragonball
(3) /Manga/D/DR/DRAG/Dragon Ball Super
(4) /Manga/_Doujinshi/Dragonball
(5) /Manga/_Doujinshi/Dragonball/Dragon Ball Z - Legendary Vegeta (Doujinshi)

Maybe for example you cut it off at 5 or so results, and the user can refine it to be more specific if they can't find what they're looking for (or ultimately just search directly/google it). You could even potentially have them select which ones to follow based on the the number.
I'm sure this would be a large amount of work, but perhaps a way to implement it would be a new scraper class, BaseSearch, that would handle both requesting and parsing search parameters, either through an API (if it exists) or just a simple GET with a generated URI for search. And then you'd have to update all the scrapers with search parsing. Not sure if that's the best way to do it, but from looking at the code a bit I think it would be feasible to do it this way.

For most cases, I think it would be the responsibility of the user to refine their own searches if they get a bunch of garbage. For simpler cases like you mentioned, that's a limitation of the search capabilities provided by the sites, and it wouldn't be cum's fault. I think those simple cases are in the minority but I could be proven wrong.

For most cases, I think it would be the responsibility of the user to refine their own searches if they get a bunch of garbage.

The problem with this is that I was looking for "Saki" the manga, but I was getting everything and the kitchen sink. In order to get good search results out of what I got out of Batoto during my testing, I would have had to fetch all of the results from all of the pages and perform some sort of string matching logic in order to rank them.
Of course, there's no Batoto support anymore and I haven't really played around with the idea with any of the current scrapers.

I understand what you meant by searching for "Saki". Manga that is simply a common name or a common word would only be searchable if the site itself would return reasonable results for that search term.  Places like mangadex have advanced parameters like 'author' that could be used to refine them, although that makes implementing search more complicated.
I never thought of cum itself taking the results and ranking them or filtering them, but that could be a potential workaround in certain cirucmstances. For example, searching "Saki" on madokami returns some results that don't even have the word "Saki" in the name, so you could throw those away. Of course, even removing those entries, the actual manga "Saki" is like the 40th result. But my suggestion isn't to make cum the search engine, but rather use the sites themselves as the search engine and parse the results that the give as simply listing them on the command line and giving the option to follow one or more of those results. I know it will give garbage results in simple cases, but I think those are rare.


Download the model at build time (not run time)

Feature request
I'm curious about whether we can obtain the model during the image build process. For instance, if we utilize arguments in the Dockerfile, we could use those to download the model and save it in the data directory. Then, when the Docker container is launched using docker run, it would be ready to serve immediately.
Motivation
To manage models in a Kubernetes cluster, we must be able to dynamically adjust the number of pods based on request volume. Deploying replicas becomes time-consuming if each one needs to retrieve the model due to lack of access to a managed volume. A practical solution is to include the model directly within the Docker containers. This approach speeds up the deployment of new pods significantly.
Your contribution
...

I'm not with the HuggingFace Team, but I had the same thought a few days ago. I totally get where you're coming from, but I don't think it's really possible to do this "agnostic" approach. The purpose of the interface is to have the option to choose what model to serve, and let's face it, some of these "modern" models are huge! Not even including private/gated models. For the same reason it would be impractical to build thousands of docker images.
Just some thoughts: k8s has RWX volumes, so this could be used to first download it via a job and then serve the models within deployments. If volumes aren't feasible, one would just need to create a Dockerfile extending the one, running some huggingface-cli download command, putting the model into /data as per the basic docker example. Push that to a private registry, and you're ready to deploy! I don't think either of these solutions will be any faster or slower than using the TEI as it is, unless your network is the bottleneck (which it often is).

Bundling the model inside the image should be avoided:

you need to create and maintain a lot of images
your image registry becomes the bottleneck instad of Huggingface's CDN


RSSで必須の要素がでてなかった問題を修正

Coverage remained the same at 81.053% when pulling 1b61da0e24b1ad1e856eec6892f6fc51b142e45d on fix_rss into 143538e49cf2b52735d2ba15d13db576e393f411 on master.

Coverage remained the same at 81.053% when pulling 2567065db94aa24fa9889b9be03cd6d1b95eec8b on fix_rss into 143538e49cf2b52735d2ba15d13db576e393f411 on master.

Coverage remained the same at 81.053% when pulling bb465f3ea68637356174270e42c2d499e5491dd4 on fix_rss into 143538e49cf2b52735d2ba15d13db576e393f411 on master.


Fix crash in boolean-prop-naming when encountering a required shape p…

…rop type. Fixes #1791.

Merged, thanks !


Fix AttributeID isIndirct() error

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (b4486fa) 11.52% compared to head (dda6a9e) 11.52%.

Files
Patch %
Lines

Sources/_OpenGraph/Attribute/AttributeID.hpp
0.00%
1 Missing :warning:

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #30   +/-   ##
=======================================
  Coverage   11.52%   11.52%
=======================================
  Files          38       38
  Lines         772      772
=======================================
  Hits           89       89
  Misses        683      683

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


Non primary key integers are generated as "serial"

I have  a model that looks like this:
public int Images_Large { get; set; }

And it has a default value defined in the OnModelCreating of a DbContext
entity.Property(e => e.Images_Large).HasDefaultValueSql("250");

The above code was generated by scaffolding an existing PostgresSQL database. I don't think it matters if you use HasDefaultValueSql("250") or HasDefaultValue(250).
When you try to update a PostgresSQL database, you get this error:
42601: multiple default values specified for column "Images_Large" of table "MyTable"

I generated a script using dotnet ef migrations script -o First.sql and loaded it in pgadmin3. The column was scaffolded as such:
"Images_Large" serial NOT NULL DEFAULT (250),

The "Images_Large" column is not the primary key of the database and therefore should not be mapped as serial. I changed the script to:
"Images_Large" integer NOT NULL DEFAULT (250),

And it's fixed.
This also happens to short and byte too.

@Yuioup I'll take a look, but can you please post the full model definition, not just the field?

@Yuioup it's OK, I think I understand what's going on (full model not needed).

Ok cool :-)

Awesome!


Allow @mutt types to derive from abstract supertypes by using a trait for Mutts types.

Make Mutts types implement a trait (mutts_trait) instead of deriving
from a common abstract type. This allows @mutt struct S <: Base ...  end
to work, since the Muttsiness of a type doesn't get in the way of its
supertype declaration. :)
In order to keep setproperty! working, we also have to generate a new
overload for setproperty!() for each type, which is disappointing but
oh well.
Also, in this PR I removed the overload of Base.isimmutable because
after thinking more about it, I think it's more about whether a type is
implemented as a julia "immutable struct" (ie it logically doesn't
have an address). I don't want to "lie" about that. We can always add
this back in if we change our minds. :)

@mdashti: Would you be able to review this PR? So far i've been just editing away in this package without any review, but this is an interesting conceptual change so it would be nice to get a review.
@mbravenboer and @tveldhui: I'm adding you as reviewers because I think you might enjoy / be interested in reading this change. I think this is the first time we've ever explicitly used Julia's "Holy Traits" in our codebase, and so you might want to take a look at this pattern. Happy to get feedback from you as well, if you have time -- I know you're both very busy this week.
Thanks!


style: simplify statements for readability

Closes #90

Thanks for making this crate better.

You’re welcome.


Fix the order of namespace/name in the secret names

This makes the warning message less confusing by using the typical
order of namespace/name rather than name/namespace.

Good spot, thanks @ankon


Contributors

@jrallison you've done an amazing job with this project. We rely on it a lot for our infrastructure and it works amazingly. We do around 20,000 jobs per minute on very commodity hardware which is so cool.
Looking at this project it seems a bit stale, the most recent merged PR's and commits are from 2016. Would you be willing to add some collaborators so we can kick some life into this project?

I see that customer.io seems to be using their own fork https://github.com/customerio/go-workers which is ahead of this repo, but doesn't have issues open.
Do you intend to continue maintaining this repo here? If yes, it might make sense to pick some of the additions of the customerio fork, e. g. Gomodules (#99).
If you don't maintain it, how about

pointing to an alternative in the README
archiving the repo

BTW, no bad feelings. I am not using this code (but looking for something like it). Glad you put it our here. Just trying to make it easier for the community to judge whether it's worth investing into this project.

We have since switched to https://github.com/digitalocean/go-workers2 which works great, but has some breaking changes.


Split jQuery.d.ts into multiple files (per module)

In my application I'm using a custom build of jQuery where I excluded some of the modules.
Special builds can be created that exclude subsets of jQuery functionality. This allows for smaller custom builds when the builder is certain that those parts of jQuery are not being used.
https://github.com/jquery/jquery#modules
My suggestion is to split also the definition files into one file per module. This way people using a custom build can also use a subset of the jQuery definition files.
jQuery.d.ts would become a file which includes all modules as a reference so it could still be used as before.
I'm willing to contribute these changes via a pull request if everybody is ok with it.

@johnnyreilly

If this wouldn't impact existing users of the typings then it seems like a reasonable idea.  It is pretty massive as is.
Is there much of an advantage to you?  I guess if it's broken up you can avoid including the modules you're not using.
Question: what impact would this have on people consuming jquery.d.ts via nuget?  Would that still work seamlessly or would they have to do a bunch of tsconfig fiddling to ensure that they only used the jquery.d.ts file?

NuGet should keep on working as before. Reference to jQuery.d.ts would still be as before. People who only want to use Definitions from a specific module should directly reference the .d.ts file for the specific module.
On the other hand I would see more problems on people using the TSD (https://github.com/DefinitelyTyped/tsd) tool.
As there would be more files after this change it would be required to add all references to the files explicitly inside your tsd.json file.
Another way to solve this is by changing the jQuery.d.ts file and group references of a specific module together.
For example:
// <editor-fold desc="ajax">
interface JQueryStatic {

    /**
     * Perform an asynchronous HTTP (Ajax) request.
     *
     * @param settings A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup().
     */
    ajax(settings: JQueryAjaxSettings): JQueryXHR;

    ...
}
// </editor-fold>

// <editor-fold desc="css">
interface JQuery {

     /**
     * Get the value of style properties for the first element in the set of matched elements.
     *
     * @param propertyName A CSS property.
     */
    css(propertyName: string): string;

    ...
}
// </editor-fold>

This way it would be easy to remove definitions from the file using a tool (eg nodejs script).

Hmmmm.. I'm not so sure that I'm keen on this given the tsd impact.


Do not try to create intermitent nodes if they exist during Lock()

This causes problems if Authentication is enabled.

Coverage increased (+0.6%) to 81.139% when pulling 607ad798f96dc6a93b62634803502215a0f625a5 on vespian:vespian/zklock-fix into e64db453f3512cade908163702045e0f31137843 on samuel:master.

@samuel ping?

Looks good, thanks!


Added venue creation or reuse + event creation or update

For the next PR, please let somebody review & merge it, so 2 devs have seen the code ;)


Snowflake to Delta Lake integration documentation seems to miss manifest reference

I was trying to register a Delta table on Azure data lake gen2 as an external table in Snowflake following the docs Delta.io Docs: Snowflake to Delta Lake integration. I created the manifest files and they correctly represent the latest commit so that seems to work. However, when following the docs, the table creation in Snowflake uses a regex to define input parquet files rather than pointing to the previously created table holding the manifest file pointers. The result being that I read all files when querying from Snowflake. So either I'm missing something obvious or the docs have a missing link which I am not sure how to fix. I post my full code here in case it helps. I add comments.
Spark
from delta import *

# databricks specific config but this probably works in OSS without it
spark.conf.set("spark.databricks.delta.symlinkFormatManifest.fileSystemCheck.enabled", 'false')

deltaTable = DeltaTable.forPath(sparkSession = spark, path = '/mnt/mydir/mytable')
deltaTable.generate("symlink_format_manifest")

Snowflake
-- need a stage for table reference
CREATE STAGE db.schema.table_ext_stage URL = 'azure://myadl.blob.core.windows.net/mydir/mytable' CREDENTIALS = (AZURE_SAS_TOKEN = '***');

-- create a table holding manifest file pointers as described in docs
CREATE OR REPLACE EXTERNAL TABLE schema.table_ext_manifest(
    filename VARCHAR AS split_part(VALUE:c1, '/', -1)
  )
  WITH LOCATION = @table_ext_stage/_symlink_format_manifest/
  FILE_FORMAT = (TYPE = CSV)
  PATTERN = '.*[/]manifest'
  AUTO_REFRESH = false;

-- now create actual external table holding data; NO reference to manifest file pointers
CREATE OR REPLACE EXTERNAL TABLE megacube.Z3ATD50_EXT(
  "a" varchar as (value:"a"::varchar),
  "b" float as (value:"b"::float),
   parquet_filename VARCHAR AS split_part(metadata$filename, '/', -1)
  )
  WITH LOCATION = @table_ext_stage/
  FILE_FORMAT = (TYPE = PARQUET)
  PATTERN = '.*[/]part-[^/]*[.]parquet'
  AUTO_REFRESH = false;

I would have expected a reference to the manifest table holding the file pointers or something similar, e.g. in the table creation parameter WITH LOCATION. What am I missing?

To query only the current contents of a Delta table you need to create a view on megacube.Z3ATD50_EXT as shown in Define view to get correct contents of the Delta table using the manifest table.
Querying megacube.Z3ATD50_EXT will read all the Parquet files...

Querying the Delta table as this Parquet table will produce incorrect results because this query will read all the Parquet files in this table rather than only those that define a consistent snapshot of the table. You can use the manifest table to get a consistent snapshot data.

Hope this helps!

I see. Then I misunderstood the docs. I interpreted it as option to either use a table or a view but apparently you need both. This of course is an extra layer of complexity. Thanks! We will probably also compare against the newly released Snowflake Delta reader (https://docs.snowflake.com/en/release-notes/2022-02.html#external-table-support-for-delta-lake-preview).