Dont have to load file every time

With this small change we can share the analyzer across blob instances, so we do not load the file every time. This seems to work fine. Any reason why we are not sharing the sentiment instance globally? (Textblob-en does so)
tb = BlobberDE(analyzer=PatternAnalyzer(tokenizer=NLTKPunktTokenizer()))

Fair point! Thanks for the PR. Unfortunately, this breaks sentiment analysis with PatternTokenizer(). I'll try to find a solution, but I couldn't find one that doesn't break the tests just yet. The first call to PatternAnalyzer(tokenizer=PatternTokenizer()).analyze(text) works fine with your solution, but subsequent calls raise an error. This does not happen if sentiment is called locally only.
Moving sentiment to ext/_pattern/text/de/__init__.py (this is where it is located in the main textblob library) would break compatiblity with original pattern library on Python2.

Cool, I didn't look at the tests to be honest. I'll look into it as well might find a solution.

From: Markus<EMAIL_ADDRESS>Sent: 30.04.2015 23:46
To<EMAIL_ADDRESS>Cc<EMAIL_ADDRESS>Subject: Re: [textblob-de] Dont have to load file every time (#11)
Fair point! Thanks for the PR. Unfortunately, this breaks sentiment analysis with PatternTokenizer(). I'll try to find a solution, but I couldn't find one that doesn't break the tests just yet. The first call to PatternAnalyzer(tokenizer=PatternTokenizer()).analyze(text) works fine with your solution, but subsequent calls raise an error. This does not happen if sentiment is called locally only.
Moving sentiment to ext/_pattern/text/de/__init__.py (this is where it is located in the main textblob library) would break compatiblity with original pattern library on Python2.

Reply to this email directly or view it on GitHub:
https://github.com/markuskiller/textblob-de/pull/11#issuecomment-97980046

Managed to narrow problem down to Py2/Py3 difference of itertools.imap/map function:
It works fine on Python2 (using itertools.imap) but on Python3 my implementation of the PatternAnalyzer chokes on lookups of identical (word, tag) pairs:
1st lookup of ("schön", None) on Python3:

#ext/_pattern/text/__init__.py [line 2018]
p, s, i = self["schön"][None]

# content of `self` dictionary in `Sentiment` class
{"schön": {"JJ": <map object with polarity values  [1.0, 0.0, 1.0]>,
                 None: <map object with polarity values  [1.0, 0.0, 1.0]>, ...}, ...}

2nd lookup of ("schön", None) on Python3:

#ext/_pattern/text/__init__.py [line 2018]
p, s, i = self["schön"][None]

# content of `self` dictionary in `Sentiment` class after first lookup
{"schön": {"JJ": <map object with polarity values  [1.0, 0.0, 1.0]>,
                 None: <map object with ***consumed*** polarity values  []>, ...}, ...}

Resulting in the following error message:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-2a2bbf801819> in <module>()
----> 1 b.sentiment

/home/mki/venv/t5/lib/python3.4/site-packages/textblob/decorators.py in __get__(self, obj, cls)
     22         if obj is None:
     23             return self
---> 24         value = obj.__dict__[self.func.__name__] = self.func(obj)
     25         return value
     26

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/blob.py in sentiment(self)
    668         _subjectivity = 0
    669         for s in self.sentences:
--> 670             _polarity += s.polarity
    671             _subjectivity += s.subjectivity
    672         try:

/home/mki/venv/t5/lib/python3.4/site-packages/textblob/decorators.py in __get__(self, obj, cls)
     22         if obj is None:
     23             return self
---> 24         value = obj.__dict__[self.func.__name__] = self.func(obj)
     25         return value
     26

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/blob.py in polarity(self)
    430         :rtype: float
    431         """
--> 432         return self.sentiment[0]
    433
    434     @cached_property

/home/mki/venv/t5/lib/python3.4/site-packages/textblob/decorators.py in __get__(self, obj, cls)
     22         if obj is None:
     23             return self
---> 24         value = obj.__dict__[self.func.__name__] = self.func(obj)
     25         return value
     26

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/blob.py in sentiment(self)
    422         :rtype: namedtuple of the form ``Sentiment(polarity, subjectivity)``
    423         """
--> 424         return self.analyzer.analyze(self.raw)
    425
    426     @cached_property

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/sentiments.py in analyze(self, text)
    140         if self.lemmatize:
    141             text = self._lemmatize(text)
--> 142         return self.RETURN_TYPE(*pattern_sentiment(text))
    143
    144     def _lemmatize(self, raw):

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/sentiments.py in pattern_sentiment(text)
     97         language = "de"
     98     )
---> 99     return s(text)
    100
    101 #################### END SENTIMENT DETECTION ##################################

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/ext/_pattern/text/__init__.py in __call__(self, s, negation, **kwargs)
   1970         # Sentiment("a horrible movie") => (-0.6, 1.0)
   1971         elif isinstance(s, basestring):
-> 1972             a = self.assessments(((w.lower(), None) for w in " ".join(self.tokenizer(s)).split()), negation)
   1973         # A pattern.en.Text.
   1974         elif hasattr(s, "sentences"):

/home/mki/venv/t5/lib/python3.4/site-packages/textblob_de/ext/_pattern/text/__init__.py in assessments(self, words, negation)
   2016                 continue
   2017             if w in self and pos in self[w]:
-> 2018                 p, s, i = self[w][pos]
   2019                 # Known word not preceded by a modifier ("good").
   2020                 if m is None:

ValueError: need more than 0 values to unpack

One possible solution would be to convert the map object in the vendorised pattern implementation into a more persistent list (this works on Python2 and Python3):

# ext/_pattern/text/__init__.py [lines 1911-1922]

        # Average scores of all word senses per part-of-speech tag.
        for w in words:
            words[w] = dict((pos, list(map(avg, zip(*psi)))) for pos, psi in words[w].items())
        # Average scores of all part-of-speech tags.
        for w, pos in words.items():
            words[w][None] = list(map(avg, zip(*pos.values())))
        # Average scores of all synonyms per synset.
        for id, psi in synsets.items():
            synsets[id] = list(map(avg, zip(*psi)))
        dict.update(self, words)
        dict.update(self.labeler, labels)
        dict.update(self._synsets, synsets)

Went for 2nd option as it is easier to read and is consistent with textblob main library.

Hi,
Sorry was a bit busy with work. Ya the second one seems more sensible. Its a bit confusing for people coming from the main library and looking at the sources (was for me at least).
Cheers for the quick fix.


Bug - Page not found after click tags/categories button

Page not found after click tags/categories button

Update uppercase to lowercase in categories [""], link direct(button) to categories and permalink (url)


Nearby function doesnot work with feature services?

I try to use the nearby function with feature services but they don't appear in the list to make the nearby? Do you think its possible?
populateLayerSelect: function() {
var options = [];
array.forEach(this.map.layerIds, lang.hitch(this, function(layerId, i) {
if (i !== 0) {
if (this.map.getLayer(layerId).layerInfos && this.map.getLayer(layerId).layerInfos.length > 0) {
array.forEach(this.map.getLayer(layerId).layerInfos, lang.hitch(this, function(layerInfo, j) {
options.unshift({
value: layerId + ':' + j,
label: layerInfo.name
});
}));
} else if (this.map.getLayer(layerId).name) {
options.unshift({
value: layerId + ':',
label: this.map.getLayer(layerId).name
});
}
}
}));
this.nearbyFeaturesSelect.addOption(options);
this.setupSelectionLayers(this.nearbyFeaturesSelect.get('value'));
},

This is not one of my custom widgets and it is not a widget that use for applications. You should try asking this question of the developer of widget you are using.

Sorry I think that you created that function???
From: Tim McGee<EMAIL_ADDRESS>Sent: 31-May-19 3:40 PM
To: tmcgee/cmv-widgets
Cc: Lasnier, Gilbert; Author
Subject: Re: [tmcgee/cmv-widgets] Nearby function doesnot work with feature services? (#210)
This is not one of my custom widgets and it is not a widget that use for applications. You should try asking this question of the developer of widget you are using.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/tmcgee/cmv-widgets/issues/210?email_source=notifications&email_token=ABTYMA5CY5YIQKOSRY5HUALPYF5HHA5CNFSM4HR5FE32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWWGBBI#issuecomment-497836165, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABTYMAYDTM2YTQWU2UZRO33PYF5HHANCNFSM4HR5FE3Q.

Maybe it is this one?

EXactle its that one It work with mapserver services but doesnot work with featurelayer services…Thanks
Be the way its work in your version 2.0…
From: Tim McGee<EMAIL_ADDRESS>Sent: 31-May-19 3:58 PM
To: tmcgee/cmv-widgets
Cc: Lasnier, Gilbert; Author
Subject: Re: [tmcgee/cmv-widgets] Nearby function doesnot work with feature services? (#210)
Maybe it is this one?https://github.com/BrianBunker/cmv-widgets/tree/master/Nearby
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/tmcgee/cmv-widgets/issues/210?email_source=notifications&email_token=ABTYMA6OX3SLEBC4IQFEA23PYF7KZA5CNFSM4HR5FE32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWWHIOA#issuecomment-497841208, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABTYMA7XLISBL5JZHWME343PYF7KZANCNFSM4HR5FE3Q.


Code comments improvements

Right-align the Reply and Resolve buttons
Add padding to inline comments to make comment focus more appealing
Indent the comment content to align with author name
Re-parent form to allow better button layout

Backed out two unrelated changes, one will come in another PR.


RichTextLabel remove_line don't respects wrapping - new functions needed?

Hello,
In 3.2beta2 I try to make a textbox with a RichTextLabel.
The Label automatically adds line breaks.
get_line_count will always return 1 cause the base text is one long string.
get_visible_line_count returns the correct amount of visible lines.
remove_line removes the whole line, that is okay if there would be a function called remove_visible_line :)
So it would be intuitive to remove lines and go through the text.
Also, the scroll_to_line only takes the not wrapped text into account, so there should be a scroll_to_visible_line function so I can scroll the text the way it would make sense.
Tom

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.
The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.
If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!


[FEATURE] Copy-PnPList - Documentation for source and destination tenants

Is your feature request related to a problem? Please describe.
Just looking for some additional documentation examples.  I was advised to post this here.
Describe the solution you'd like
Can this cmdlet work between tenants? For example TEST and PROD.
Can you provide an example of how that would work?
Describe alternatives you've considered
N/A
Additional context
https://github.com/MicrosoftDocs/OfficeDocs-SharePoint-PowerShell/issues/137

Hi @robertcaretta - That's a good question. But it won't work as the copy needs to happen on the same tenant. In your scenario, you'll have to export the list as a provisioning template and then apply the template on another tenant.
I'll also update the documentation.

Thank you for the clarification. Any details you can provide in the
documentation would be really appreciated.
On Wed, Jan 26, 2022, 12:10 PM Veronique Lengelle @.***>
wrote:

Hi @robertcaretta https://github.com/robertcaretta - That's a good
question. But it won't work as the copy needs to happen on the same tenant.
In your scenario, you'll have to export the list as a provisioning template
and then apply the template on another tenant.
I'll also update the documentation.
—
Reply to this email directly, view it on GitHub
https://github.com/pnp/powershell/issues/1561#issuecomment-1022459637,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMJ2HJWXC2RSB53ZETMJNLUYA2JVANCNFSM5M3NCYFA
.
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&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>


Process new FFIS emails upon delivery to S3

DOD: FFIS emails routed to the "Grants Source Data" S3 bucket are moved to the appropriate source data location for further processing.
Blockers:

usdigitalresponse/grants-ingest#1

Implementation details:

Create a "Process New FFIS Email" Lambda function that:

Allows invocation from the "Grants Source Data" S3 bucket
Expects to receive an S3 Bucket Notification from the "Grants Source Data" bucket for the s3:ObjectCreated event that indicates a new FFIS email is saved to S3, with the following object key filters:

Prefix: /ses/<dedicated inbox>/new/

When invoked, issues an S3 "Move" command (aka "CopyObject" followed by "DeleteObject") to rename the object from the original key to a new, date-based key, formatted as /sources/YYYY/mm/dd/ffis/raw.eml

Closing in favor of https://github.com/usdigitalresponse/grants-ingest/issues/61


add eval and analyze to prebuilt index demo

https://github.com/castorini/rank_llm/pull/90 completes the work


Customer should not get invoice until invoice state is not paid

Bug report
Title
Customer should not get invoice until invoice state is not paid
Preconditions
1. framework Version. Master

Steps to reproduce
1. step1: place order and create invoice

Expected result:
Without payment customer should not get invoice
Actual result:
Customer is getting invoice before payment

This issue makes no sense, in case you select money transfer as payment method you will need a invoice since this contains the bank account number and amount that the customer needs to pay,
How can the customer pay a invoice if he does not receive it?


GITHUB_REPOSITORY does not do what I expected

Hello. I might have misunderstood the docs, but I expected
env:
   GITHUB_REPOSITORY: my_org/my_other_repo

to push the release into that repository ; instead, it created the release in the current one.
How to create a release into a specified repository?

this is not expected. The feature was contributed by a third party developer. I'll have to tag a closer look

It would be nice to have it more obvious that that feature does. Also, please, add a way to push a release to another repo. For now I will stay on GH CLI because I didn't find the way to do it with your action.

I agree. I plan on starting to introduce some stricter guidelines on 3rd party contributions. I have to weigh those against the ability for developers to easily fill in on areas that others have needs where I don’t myself

Any update on this?


Skip Subtitle Menu if only one track available

Currently there is an additional menu when you want to activate subtitles.
I just want to click on the "Subtitles" button and then the subtitles are activated, because there are always only English subtitles anyway and therefore this extra menu is unnecessary.

could you provide me with a link to that, please, so I can test?

What Link? I would appreciate if you implement my proposal and implement it in your extension.

Ah, sorry for the misunderstanding.

I'll try it this afternoon. Thank you in advance.

Ok, finally tried it. Turning the subtitles on works fine, but when I want to turn it off again, the menu opens, and I have to make two clicks.

Not entirely happy with the option name/title, do you have any suggestions on that?

Maybe just how you named this GitHub issue, so "Skip Subtitle Menu if only one track available". But I don't know how it's named currently because my extension is German.

Ok, finally tried it. Turning the subtitles on works fine, but when I want to turn it off again, the menu opens, and I have to make two clicks.

I made it so skipping it would only apply if it not already activated, but you are right, it would make more sense to automatically deactivate it.

But I don't know how it's named currently because my extension is German.

"Use first subtitle", similar to the German title. I think the issue title is too long, all options titles are very short... But I've added a hint so it should be fine.

Ok, nice.


Eclipse casks overwrite each other's symlinks.

Since all Eclipse installations have the exact same name "eclipse.app", when a second eclipse cask is installed it overwrites the previous symlink.

We’re aware of it, but that’s an upstream problem, really. Why do they all have the same name to begin with? What do people usually do with them?
We can’t simply start renaming them, as that can break expectations to users.

What if instead of renaming the symlinks you just place them in subfolders? It won’t fix the Launcher problem (there will still be only one eclipse) but at least they will be usable by navigating to the Applications folder or using Spotlight. Before I started using Cask I used to just put the different eclipse installations in the Applications directory and open them from there or have them pinned to the dock (another way to use eclipse if the symlinks are in subfolders).
Leo Jweda

On Jan 12, 2015, at 12:14, Vítor Galvão<EMAIL_ADDRESS>wrote:
We’re aware of it, but that’s an upstream problem, really. Why do they all have the same name to begin with? What do people usually do with them?
We can’t simply start renaming them, as that can break expectations to users.
—
Reply to this email directly or view it on GitHub https://github.com/caskroom/homebrew-cask/issues/8841#issuecomment-69606285.

We’re aware of it, but that’s an upstream problem, really. Why do they all have the same name to begin with? What do people usually do with them?
We can’t simply start renaming them, as that can break expectations to users.

We do rename the symlink for scala-ide, which is part of the Eclipse family of IDEs. While we should add a caveat to notify the user, I feel that this is an acceptable workaround.

It won’t fix the Launcher problem

I don’t know about other launchers, but in Alfred renaming symlinks wouldn’t solve the issue anyway, as it doesn’t follow them.

Before I started using Cask I used to just put the different eclipse installations in the Applications directory

They’d still have the same name, so there’s a step you’re skipping, there.

What if instead of renaming the symlinks you just place them in subfolders?

I feel that this is an acceptable workaround.

Very much agreed, although #5101 would be a better fit (but that could take a while to happen, if ever). If you submit a PR, we can discuss it better. Taking eclipse-jee as the example, something like app 'eclipse/Eclipse.app', :target => 'eclipse-jee/Eclipse.app' should be a good starting point.

We do rename the symlink for scala-ide

But that one also has the weight of having inconsistent branding, so renaming the app bundle’s link is a workaround that also prevents confusion. Putting the other ones in subfolders seems more appropriate.

@LeoJweda Do you intend to submit a PR with the idea?

Seems like there’s no interest in this. Closing.


Customise starter

Add workflow features like eslint, VS Code debugging, yarn.lock and code coverage reports, and refactor function architecture to separate handlers from business logic.

@abyrne10 This looks pretty useful. How come you closed it?

@abyrne10 This looks pretty useful. How come you closed it?

@jayair I forked this repo to do some customising, as I was using it a lot for my own projects, but accidentally made the pull request for this repo, not my forked version (hence things like the updated readme, AWS region and eslint rules). I would be happy to open a new pull request with any changes that you think would be useful, please le me know!

@abyrne10 Can I get a link to your repo? I'd love to take a look.

Here it is:
https://github.com/bouncetechnologies/serverless-nodejs-starter
Would be very happy to get your feedback on it. One of the main reasons I structured it this way was to separate the handlers from the business logic, with one of the advantages being that it makes testing easier, as I can inject mocks instead of database libraries (for example).

Cool. Thanks for putting it up. I'll check it out!


Change localhost to <IP_ADDRESS> in config sample

localhost translation works terribly on Windows. Changing the sample config file to directly point to <IP_ADDRESS>.
The translation can take long time on windows (even a second), for some reason. Since electrum has timeouts on communication with server, this makes EPS unusable.
Example issues with this:
https://stackoverflow.com/questions/13248260/localhost-taking-too-long-what-to-do
https://serverfault.com/questions/66347/why-is-the-response-on-localhost-so-slow

Seems reasonable. Merging.


MINOR: StoreChangelogReaderTest fails with log-level DEBUG

A mocked method is executed unexpectedly when we enable DEBUG log level, leading to confusing test failures during debugging. Since the log message itself seems useful, we adapt the test to take the additional mocked method call into account.

Failures are unrelated

Build failures are unrelated


Switch to ReadTheDocs Sphinx theme

Codecov Report

Merging #36 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #36   +/-   ##
=======================================
  Coverage   97.25%   97.25%
=======================================
  Files           4        4
  Lines         291      291
  Branches       45       45
=======================================
  Hits          283      283
  Misses          4        4
  Partials        4        4

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 225ee76...c033b60. Read the comment docs.


Document Web tokens and API keys in account preferences

Closing old issue as done here: https://www.balena.io/docs/learn/manage/account/#access-tokens


Write atomicity of IORING_OP_WRITEV

Previous discussion:
https://github.com/axboe/liburing/issues/1001#issuecomment-2480618839
https://github.com/axboe/liburing/issues/1001#issuecomment-2480735310
Consider sending messages over a single TCP socket. For simplicity, let's say messages are strings and they look like this:

"HEADERAAAA"
"HEADERBBBBBBBB"

To send the messages, I'm issuing vectored writes via io_uring_prep_writev(), where the iovec for each message points to the header and the body. In pseudocode:
char* FIRST_MSG_HEADER = "HEADER";
char* FISRT_MSG_BODY = "AAAA";

char* SECOND_MSG_HEADER = "HEADER";
char* SECOND_MSG_BODY = "BBBBBBBB";

// First message
struct io_uring_sqe* sqe = io_uring_get_sqe(ring);
struct iovec first_msg_iov[2] = {};
first_msg_iov[0].iov_base = FIRST_MSG_HEADER;
first_msg_iov[0].iov_len = ...;
first_msg_iov[1].iov_base = FISRT_MSG_BODY;
first_msg_iov[1].iov_len = ...;
io_uring_prep_writev(sqe, fd, &first_msg_iov, 2, 0);
io_uring_set_data(sqe, &first_msg_iov);

// Second message
struct io_uring_sqe* sqe = io_uring_get_sqe(ring);
struct iovec second_msg_iov[2] = {};
second_msg_iov[0].iov_base = SECOND_MSG_HEADER;
second_msg_iov[0].iov_len = ...;
second_msg_iov[1].iov_base = SECOND_MSG_BODY;
second_msg_iov[1].iov_len = ...;
io_uring_prep_writev(sqe, fd, &second_msg_iov, 2, 0);
io_uring_set_data(sqe, &second_msg_iov);

// Submit SQEs
// Assume iovecs and messages contents are not on stack and live until we get them back in CQEs
io_uring_submit(ring);

The pseudocode example does not call io_uring_enter() - let's say SQ_POLL is used (I'm not sure if it changes anything, but let's say it is used). Additional invariants:

Each writev SQE has its own iovec. That iovec describes some message
The iovec, and the memory it points to, is alive until we get it back in an SQE
Each time io_uring_submit() is called, one or several writev SQEs may be added

On the receive side of this connection, let's say I'm issuing recv(). There are several possibilities that are fine:
// This is fine
recv() // returns HEADERAAAAHEADERBBBBBBBB

// This is also fine
recv() // returns HEADERBBBBBBBBHEADERAAAA

// This is also fine. Several short reads
recv() // returns HEA
recv() // returns DERAAA
recv() // returns AHEADERBBBBBBBB

// And this is also fine, again - short reads, but different order of messages
recv() // returns HEADERBB
recv() // returns BBBBBBHEADERAAAA

But there are possibilities that I'd call not fine:
// Not fine
recv() // returns HEADERHEADERBBBBBBBBAAAA

// Also not fine
recv() // returns HEADERHEADERAAAABBBBBBBB

If I understood Pavel correctly, the "not fine" possibilities may happen with io_uring. Is this correct?
I think io_uring behavior with writev SQEs makes it quite difficult to use, and also very non intuitive. Man pages do mention atomicity (on a process/level level only though, but sill...). From man writev:

The data transfers performed by readv() and writev() are atomic: the data written by writev() is written as a single block that is not intermingled with output  from writes  in  other  processes;  analogously,  readv() is guaranteed to read a contiguous block of data from the file, regardless of read operations performed in other threads or processes that have file descriptors referring to the same open file description (see open(2)).

Would it be possible to have more atomic behavior for writev SQEs in io_uring? Either by default or as an SQE flag.

I'm looking at io_uring_prep_send() documentation:

  Both of the above send variants may be used with provided
  buffers, where rather than pass a buffer in directly with the
  request, IOSQE_BUFFER_SELECT is set in the SQE flags field, and
  additionally a buffer group ID is set in the SQE buf_group field.
  By using provided buffers with send requests, the application can
  prevent any kind of reordering of the outgoing data which can
  otherwise occur if the application has more than one send request
  inflight for a single socket. This provides better pipelining of
  data, where previously the app needed to manually serialize
  sends.

To double confirm - I copy "HEADER" into one buffer, and "AAAA" into another (both of these buffers belong to the same buffer group). This guarantees I'd get either "HEADERAAAAHEADERBBBBBBBB" or "HEADERBBBBBBBBHEADERAAAA" on the wire. Is this correct?
Also, once the kernel starts executing that send request, is the data copied from the provided buffer into some another socket buffer, or is it DMA'd to the NIC?
In other words, I'm curious if I'd be making two copies (my data into provided buffer, then provided buffer into socket buffer, then DMA) or only one (my data into provided buffer, then DMA).

Since you are only issuing one submit, IOSQE_IO_LINK should help here.

first_msg_iov[0].iov_base = FIRST_MSG_HEADER;
first_msg_iov[1].iov_base = FISRT_MSG_BODY;

FWIW, the way it's split into iovec changes nothing in terms of races, atomicity, etc.

// Not fine
recv() // returns HEADERHEADERBBBBBBBBAAAA

// Also not fine
recv() // returns HEADERHEADERAAAABBBBBBBB

If I understood Pavel correctly, the "not fine" possibilities may happen with io_uring. Is this correct?

Correct, it can happen, still the same answer. By default there is no ordering guarantee for multiple concurrent requests, data can get intermingled. You can even get something  more bizzare like a "...ABABBA..." pattern.

I think io_uring behavior with writev SQEs makes it quite difficult to use, and also very non intuitive.

I believe it is intuitive though, you're queuing two racing concurrent requests, it should be thought as such.

Man pages do mention atomicity (on a process/level level only though, but sill...). From man writev:

The data transfers performed by readv() and writev() are atomic: the data written by writev() is written as a single block that is not intermingled with output  from writes  in  other  processes;  analogously,  readv() is guaranteed to read a contiguous block of data from the file, regardless of read operations performed in other threads or processes that have file descriptors referring to the same open file description (see open(2)).

I have serious doubts about that, and opening writev man I see "(but see pipe(7) for an exception)". As far as I remember the kernel's TCP stack, neither it's true in this case.

Would it be possible to have more atomic behavior for writev SQEs in io_uring? Either by default or as an SQE flag.

That can easily be done in the user space, it'll even be more efficient than submitting two requests. Yes, that would take a bit more code, but that's io_uring is low-level interface and that's up to upper layers / libraries to add niceness. That'll very likely be adding overhead for all users of io_uring, which is not a good idea when there are better alternatives.
You can also use provided buffers for ordering.

To double confirm - I copy "HEADER" into one buffer, and "AAAA" into another (both of these buffers belong to the same buffer group). This guarantees I'd get either "HEADERAAAAHEADERBBBBBBBB" or "HEADERBBBBBBBBHEADERAAAA" on the wire. Is this correct?

It doesn't order multiple requests with each other. With provided buffer you can push all your data (both "B" and "A") into a (single) provided ring in the order you wish it to be and queue just one request, which will try to send all the data in the order the data was added into the ring.

Also, once the kernel starts executing that send request, is the data copied from the provided buffer into some another socket buffer, or is it DMA'd to the NIC?

The data is copied, that's how the networking stack works. If you want to avoid copies you can look up IORING_OP_SEND_ZC or generic zero copy features Linux supports.

first_msg_iov[0].iov_base = FIRST_MSG_HEADER;
first_msg_iov[1].iov_base = FISRT_MSG_BODY;

FWIW, the way it's split into iovec changes nothing in terms of races, atomicity, etc.

True. I only wanted to point out that I wanted to use vectored I/O. Let me share a little bit more what I'm actually trying to achieve.
So, I'm actually working on a DPDK application. I receive raw packets from NIC, but then I'd like to use io_uring as a "send to another application" mechanism (which could be on the same host, or on the other) as a "DPDK bypass".
Apologies if you're already familiar with DPDK, but a short description - it's a kernel bypass. The packets are DMA'd directly into userspace memory (1G hugepages in my case). And there's a rx_burst() function I'm calling in a loop.
rx_burst() gives me a batch (typically up to 64) of mbuf*'s - which, for simplicity, let's say is just a pointer directly to Ethernet header (in reality, there's also a metadata block, but it doesn't matter too much).
The payload I'm extracting may be scattered across several mbufs (for example, if there's IP fragmentation). And I also need my own "Header". Vectored I/O seems like a very nice fit for this: the first element points to my header, then the next elements point to payload fragment(s), which are scattered in memory.
I then pass this io_vec, and only one copy is ever made - into the socket buffer (in my understanding).
In my naive view, I though it would be possible to combine this "burstiness" with io_uring's batching. Basically, my core application loop looks like so (in pseudocode):
while (true) {
    auto mbufs = rx_burst();
    for mbuf in mbufs {
        struct header* hdr = serialize_header(mbuf);
        struct io_vec* iov = build_iovec(mbuf, hdr);
        struct io_uring_sqe* = io_uring_get_sqe(ring);
        io_uring_prep_writev(sqe, fd, iov, iov_len, ...);
        io_uring_set_user_data(sqe, my_metadata_structure);
    }
    io_uring_submit();

    // process CQEs, this gives me back pointers to headers, to io_vecs, to mbufs, so I can return them to a memory pool
    io_uring_for_each_cqe(ring, head, cqe) {
        // process CQE
    }
}

There may be single fd I'm writing to, may be several I'm load balancing on.
After your explanations, I can see why this approach wouldn't work. Perhaps I'm asking for too much :).

I believe it is intuitive though, you're queuing two racing concurrent requests, it should be thought as such.

It makes sense now, thank you for your explanations. This was a misunderstanding on my side - my initial impression of io_uring was - I put elements on a ring. The kernel takes them one by one and executes/schedules internally depending on device/socket/etc readiness. I didn't expect it would execute them concurrently and that it's possible to have racy writes.

That can easily be done in the user space, it'll even be more efficient than submitting two requests. Yes, that would take a bit more code, but that's io_uring is low-level interface and that's up to upper layers / libraries to add niceness.

Apologies if that's been answered before or if I'm not seeing it. But what's the condition for the kernel to post an CQE? In case of writing to a TCP socket specifically. Is it just finishing the copy into socket buffer, or is it getting an ACK? Or something else? I'm just afraid it would be very slow if it's an ACK that's required to post an CQE.
One other thing I expected from the kernel - the writes I'm submitting vary in size greatly. Could be 60 bytes, could be 15k. In my understanding, the kernel would split the data in the socket buffer nicely depending on MTU.
In my (data corrupting) initial attempt I saw TCP segments of up to 65k when traveling over loopback. I wouldn't get this of course, if the completion condition is an ACK.
I will try to serialize write requests from user space as you suggested. Thank you.

That can easily be done in the user space, it'll even be more efficient than submitting two requests. Yes, that would take a bit more code, but that's io_uring is low-level interface and that's up to upper layers / libraries to add niceness. That'll very likely be adding overhead for all users of io_uring, which is not a good idea when there are better alternatives.

One more thing. If I have multiple TCP connections, is my understanding correct that I can have multiple write requests concurrently, but no more than one write request per file descriptor?

That can easily be done in the user space, it'll even be more efficient than submitting two requests. Yes, that would take a bit more code, but that's io_uring is low-level interface and that's up to upper layers / libraries to add niceness.

Apologies if that's been answered before or if I'm not seeing it. But what's the condition for the kernel to post an CQE? In case of writing to a TCP socket specifically. Is it just finishing the copy into socket buffer, or is it getting an ACK? Or something else?

It behaves the same way send(2) / etc. do. So in the common case the kernel will copy data into kernel allocated memory, and which point it returns back and reports the result. That data in kernel buffers will be sent some time later. IOW, no ACK waiting. That's the reason send CQEs are usually already posted by the time the submission part of the syscall ends.
Short writes are always possible as well, and likeliness of it depends protocol / etc. and flags you pass (NOWAIT, MSG_WAITALL, etc.).

I'm just afraid it would be very slow if it's an ACK that's required to post an CQE. One other thing I expected from the kernel - the writes I'm submitting vary in size greatly. Could be 60 bytes, could be 15k. In my understanding, the kernel would split the data in the socket buffer nicely depending on MTU. In my (data corrupting) initial attempt I saw TCP

The networking stack hides all these details for you. You can try zerocopy (IORING_OP_SEND[MSG]_ZC, MSG_ZEROCOPY), but then there might be more variance depending on your iov entry sizes. E.g. in this case the driver can get a bunch of partially filled pages, in which case DMA transfer can be somewhat more expensive.

That can easily be done in the user space, it'll even be more efficient than submitting two requests. Yes, that would take a bit more code, but that's io_uring is low-level interface and that's up to upper layers / libraries to add niceness. That'll very likely be adding overhead for all users of io_uring, which is not a good idea when there are better alternatives.

One more thing. If I have multiple TCP connections, is my understanding correct that I can have multiple write requests concurrently, but no more than one write request per file descriptor?

It's perfectly allowed to have concurrent requests targeting different connections. For what it worth, it should be different connections, iow dup(2) wouldn't do.
Also FWIW, it might be ok to have concurrent writes if the file / socket / protocol supports it and gives some guarantees, though it'd need to care for io_uring not to internally retry a short write.


Documentation question

Hi,
I do see in the PS documentation Invoke-VstsTool cmdlet listed as a part of the SDK. However, if I browse the repo I can't find the source code of it?
Has this been deprecated?
In order to invoke a tool on the build server, what is the best cmdlet to use?
Thanks

the vsts prefix is added at export time time. it's simply invoke-tool in the source code


[Low Priority] Consider /usr/lib/justfile

This should be a low priority request but I think /usr/lib/justfile is a better place than /usr/share/ublue/justfile is because unlike anything else in /usr/share, these files have executable code in it and they are executed indirectly like many other files in /usr/lib. I think it fits the unix FHS way better.

Isn't /usr/lib for libraries? Imo that would be a confusing place for a justfile

Isn't /usr/lib for libraries? Imo that would be a confusing place for a justfile

systemd unit files, udev rules, other executables are found in individual directories in /usr/lib


Conversion issue fix, Layer metadata refactor, effect pattern transfer

Hi,
I made the fix for the conversion issue mentioned in https://github.com/psd-tools/psd-tools/issues/433, i went with the composite() function.
I refactored the functions for layer validity verification and metadata update.
In the latter i added something to retrieve the effect patterns from a psd to add to the new one when moving a layer around. As i encountered an issue for psd opening concerning this. There may be other things to consider in this case, I guess those will be found along the way.
I also added functions for searching layers by name. Yielding either the first match, or a generator of all of them.

@al3ks1s Thanks!


Introduce Metrics integration test

Credits to @oxkitsune for the initial work on this integration test!
A continuation of: https://github.com/PicnicSupermarket/error-prone-support/pull/894.

/integration-tests

/integration-tests

/integration-tests

/integration-tests

I pushed a few things that also impact the expected warnings, with which JDK version did you build exactly? I feel I'm introducing more now 🤔.

Thanks @mohamedsamehsalah !

Only open point is to revert some .github/workflows/run-integration-tests.yml changes. Will do if the tests pass.

Did this 😄.
Will run the tests once more to see if everything is good to go!

/integration-test


Last Week in Pony - February 4, 2024

The 'Add constrained types RFC' RFC has been updated to 'final comment period'
See the RFC for more details.

The 'Add constrained types RFC' RFC has been updated to 'new'
See the RFC for more details.

Version 0.8.1 of ponylang/ponyup has been released.
See the release notes for more details.

The 'Update to<EMAIL_ADDRESS>RFC has been updated to 'new'
See the RFC for more details.

Version 0.8.1 of ponylang/corral has been released.
See the release notes for more details.

Version 0.8.2 of ponylang/ponyup has been released.
See the release notes for more details.


fix k8s overlay for addon components.

Please provide a description for what this PR is for.
resolve: https://github.com/istio/istio/issues/23048
And to help us figure out who should review this PR, please
put an X in all the areas that this PR affects.
[ ] Configuration Infrastructure
[ ] Docs
[ x ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure

@ostromart @dgn PTAL

@morvencao: PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@morvencao: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

integ-security-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-security-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

integ-security-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-security-k8s-tests_istio

update-ref-docs-dry-run_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test update-ref-docs-dry-run_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

integ-security-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-security-k8s-tests_istio

update-ref-docs-dry-run_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test update-ref-docs-dry-run_istio

release-test_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test release-test_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

integ-security-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-security-k8s-tests_istio

update-ref-docs-dry-run_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test update-ref-docs-dry-run_istio

release-test_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test release-test_istio

lint_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

integ-security-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-security-k8s-tests_istio

update-ref-docs-dry-run_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test update-ref-docs-dry-run_istio

release-test_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test release-test_istio

lint_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test lint_istio

integ-local-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-local-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@morvencao: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-pilot-k8s-tests_istio

integ-multicluster-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-multicluster-k8s-tests_istio

integ-telemetry-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-telemetry-k8s-tests_istio

unit-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test unit-tests_istio

integ-distroless-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-distroless-k8s-tests_istio

integ-galley-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-galley-k8s-tests_istio

gencheck_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test gencheck_istio

integ-conformance-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-conformance-k8s-tests_istio

integ-security-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-security-k8s-tests_istio

update-ref-docs-dry-run_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test update-ref-docs-dry-run_istio

release-test_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test release-test_istio

lint_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test lint_istio

integ-local-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-local-tests_istio

integ-mixer-k8s-tests_istio
d69c95f4d1857b8e9f74d9e9c387b2c6333f5d93
link
/test integ-mixer-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@dgn add test cases, PTAL

In response to a cherrypick label: #23049 failed to apply on top of branch "release-1.5":
error: Failed to merge in the changes.
Using index info to reconstruct a base tree...
A	operator/pkg/component/component.go
M	operator/pkg/tpath/tpath.go
Falling back to patching base and 3-way merge...
Auto-merging operator/pkg/tpath/tpath.go
Auto-merging operator/pkg/component/component/component.go
CONFLICT (content): Merge conflict in operator/pkg/component/component/component.go
Patch failed at 0001 fix k8s overlay for addon components.

In response to a cherrypick label: new pull request created: #23308

In response to a cherrypick label: #23049 failed to apply on top of branch "release-1.5":
error: Failed to merge in the changes.
Using index info to reconstruct a base tree...
A	operator/pkg/component/component.go
M	operator/pkg/tpath/tpath.go
Falling back to patching base and 3-way merge...
Auto-merging operator/pkg/tpath/tpath.go
Auto-merging operator/pkg/component/component/component.go
CONFLICT (content): Merge conflict in operator/pkg/component/component/component.go
Patch failed at 0001 fix k8s overlay for addon components.


world-environment: Fix reflections for background mode

Fixes https://github.com/godotengine/godot/issues/53817

The coding style and ther other CI tests passed, so this is now ready to be reviewed.

Seems to be an ok solution, probably need to make sure the same fix is applied for mobile and compatibility renderers.

I noticed this adds two new properties to the SceneData struct. Won't this cause performance issues on some hardware due to it becoming even larger?

I noticed this adds two new properties to the SceneData shader struct. Won't this cause performance issues on some hardware due to it becoming even larger?

Is there an alternative?

Is there an alternative?

You could generate a cubemap with 1×1 textures for reflections behind the scenes, similar to what my proposed workaround effectively does.

@lw64 Could you look into rebasing merge conflicts so this can be reviewed? See PR workflow for instructions :slightly_smiling_face:


Question: How much memory should be allocated for interlock?

I currently run a 21 node cluster with interlock running on 3 of the nodes.  The running stats of interlock at any given time are around 2.3MB idle.  In the upcoming months my team will be deploying multiple microservices between 10-15x daily all of which will be managed by interlock.  I have never run into performance/memory issues with interlock but I put memory constraints on ever container in the cluster.
What amount of memory is appropriate for interlock? Would 10MB be sufficient?  That would be about 4x more memory that it uses when it's idle.
Thanks in advance,
-Kris

Interlock doesnt' need much.  10-20 MB should be sufficient as it's pretty small.


Discussion for release v1.1.90

If the people that are trying the beta will provide feedback, here is where I directed them.
@Makaifren , @BilboCGL you're both invited (you 2 might want to watch the repo, so you get all the spam notifications automatically)
PR #32 is still the place to discuss about the code, I had a couple questions that I left earlier.
Announcement is here: https://steamcommunity.com/app/296490/discussions/0/451848855005729494/
Related release is here: https://github.com/gemforce-team/wGemCombiner/releases/tag/v1.1.90
For whoever want to share their opinion, we need to know your OS (Windows version at 32/64 bit) and the GC version (browser/standalone/Steam) you're playing on.

Hi guys, i try the new release and it did very well.
I used my last combinaison method, and the responses are fast.
I keep going and try to follow my master :) SatoshiSama

No idea why I didn't see that before - switching through the buttons with tab has a "grown order" From top-left to button-right would be more intuitiv.

Eh, the widgets have an "id" that starts from 1 (or was it 0) and goes on. That is the tabbing order.
The id is assigned each time a new widget is created.
Basically by tabbing you can follow the coding history, as we never bothered to reorder them.
It's not difficult to change, just tedious to go through the editor and change each one.

Thought so. Sorry for that, but when you try to tab from "delay field" to "combine button" it's just not funny when you suddenly change the recipe by adding some tabstops.

@BilboCGL Actually MS made that much more easier that I thought.
It took 5 mins to reorder all the controls.
Run the attached WGemCombiner-v1.1.90-2.zip and tell me.

It used to be control-D while looking at the designer
On May 19, 2016 6:56 PM, "Andrea Stacchiotti"<EMAIL_ADDRESS>wrote:

@BilboCGL https://github.com/BilboCGL Actually MS made that much more
easier that I thought.
It took 5 mins to reorder all the controls.
Run the attached WGemCombiner-v1.1.90-2.zip
https://github.com/gemforce-team/wGemCombiner/files/273754/WGemCombiner-v1.1.90-2.zip
and tell me.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/gemforce-team/wGemCombiner/issues/33#issuecomment-220498703

Fine, thanks! Now it is way more easier to activate the combine with keyboard after changing the delay.
No idea if it is avoidable, after reaching the recipes field, you fill this field with tabs, Not really a problem, just a bit ugly.

@Makaifren It's not Ctrl+D any more, it's under the View menu.
@BilboCGL It's a textbox, the default behaviour when you press TAB is to insert an actual TAB character. I'd really prefer not changing it.

Hi,
the new gem combiner works really fine and what is absolutely the best - you can now doing other stuff during combining gems  cause the cursor is free now :-)

I'm totally going to change it.  Tab isn't needed there anyway.  I want to
say there's a flag for the control which says if it wants ENTER or other
special navigation characters.
On May 21, 2016 2:12 AM, "Andrea Stacchiotti"<EMAIL_ADDRESS>wrote:

@Makaifren https://github.com/Makaifren It's not Ctrl+D any more, it's
under the View menu.
@BilboCGL https://github.com/BilboCGL It's a textbox, the default
behaviour when you press TAB is to insert an actual TAB character. I'd
really prefer not changing it.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/gemforce-team/wGemCombiner/issues/33#issuecomment-220767562

I'm using the GitHub site now, and couldn't figure out how to get into conversation #32, I also can't seem to send private messages to other users. Still trying to figure the system out.  I have the github desktop client installed now (corporate network problem resolved).

I was really close to redoing the project using C++ WTL to create a 15k .exe that would run on Windows 98 and later, with no dependencies; then decided that would have been pedantic since I don't think users are actually having problems with windows versions.

Yeah, PR #32 is a tad difficult to find because the code has been merged, so the thread was put in the closed PR section.
In case the #32 itself is not a link, it is at https://github.com/gemforce-team/wGemCombiner/pull/32
You cannot send a PM to other github users, if you need to privately contact me, send an email.

wGC depends on .NET framework 4.5, which excludes every Windows older than Vista, but really, I can't imagine that GC runs well in a XP era PC.

So, nobody complained about the new method, I'm going to assume it works with all the combinations of GC/OS.
As such, I plan to release v1.2 in the weekend.
If somebody has some feature that wants to include for 1.2 (either a reasonable request or a piece of already written code), let me know before Saturday.

The program works well for me. I try it during 1 week and it's fine.

wGC version 1.2 released:
https://github.com/gemforce-team/wGemCombiner/releases/tag/v1.2.0
with almost no changes from the beta.
Closing this.


FIX - don't fit initial_imputer in 'transform'

use fitted initial_imputer in 'transform' method instead of re-fit it each call

Awesome, thanks for noticing that.


@JsonSerialize overrides @Schema(hidden = true)

I have an entity with a datetime that I want to hide from Swagger/OpenAPI so I annotated that field with @Schema(hidden = true) but the @JsonSerialize annotation overrides the hidden annotation.
I have created a demo to demonstrate it:
git clone https://github.com/BobLuursema/swagger-issue-demo.git
cd swagger-issue-demo
mvn exec:java

In the console you can see that it prints the hiddenDateTime field. When you remove the @JsonSerialize annotation and run mvn exec:java the field is hidden.
I would expect @Schema(hidden = true) to still hide the field when a Serializer is specified.

Hi,
we encountered the same problem while combing @Schema(hidden = true) and @JsonView annotation. What I've noticed is that

if a public field had both annotations, it was hidden;
if a private field had both annotations, it was not hidden;
if a private field had both annotations and its setter and getter methods were also annotated with @Schema(hidden = true), then the field got hidden.

I have augmented HiddenFieldTest to display this behavior:
public class HiddenFieldsWithJsonViewAnnotationTest {

    @Test(description = "it should ignore hidden fields")
    public void testHiddenFieldWithJsonViewAnnotation() {
        ModelConverters instance = ModelConverters.getInstance();
        final Map<String, Schema> models = instance.read(ModelWithHiddenFieldsAndJsonViewAnnotations.class);

        final Schema model = models.get("ModelWithHiddenFieldsAndJsonViewAnnotations");
        assertNotNull(model);
        assertEquals(model.getProperties().size(), 2);

        final Schema idValue = (Schema) model.getProperties().get("id");
        assertTrue(idValue instanceof IntegerSchema);

        assertTrue(model.getRequired().contains("id"));

        final Schema nameValue = (Schema) model.getProperties().get("name");
        assertTrue(nameValue instanceof StringSchema);
    }

    class ModelWithHiddenFieldsAndJsonViewAnnotations {
        @io.swagger.v3.oas.annotations.media.Schema(required = true)
        public Long id = null;

        @io.swagger.v3.oas.annotations.media.Schema(required = true, hidden = false)
        public String name = null;

        @io.swagger.v3.oas.annotations.media.Schema(hidden = true)
        @JsonView(Views.Internal.class)
        public String password = null;

        @io.swagger.v3.oas.annotations.media.Schema(hidden = true)
        @JsonView(Views.Internal.class)
        private String password2 = null;

        @io.swagger.v3.oas.annotations.media.Schema(hidden = true)
        @JsonView(Views.Internal.class)
        private String password3 = null;

        public String getPassword2() {
            return password2;
        }

        public void setPassword2(String password) {
            this.password2 = password;
        }

        @io.swagger.v3.oas.annotations.media.Schema(hidden = true)
        public String getPassword3() {
            return password3;
        }

        @io.swagger.v3.oas.annotations.media.Schema(hidden = true)
        public void setPassword3(String password) {
            this.password3 = password;
        }
    }

    interface Views {
        interface External {}
        interface Internal extends External {}
    }
}


Handle nested fields in SetFieldConfig

While implementing the solution for #178, Bryan pointed out that the solution would not work for nested field paths.
We should address this gap in functionality.

/assign @brycahta

/assign @brycahta

@brycahta Is there work left to do for this?

@RedbackThomson No work left.
I was going to resolve once we cut a release with these changes/fixes. If y'all have a different process feel free to resolve.


ReverseContourPen: duplicate LineTo after MoveTo when contour ends w/ CurveTo

Take this simple closed contour that starts and ends with a CurveTo:
let contour = BezPath::from_vec(vec![
    PathEl::MoveTo((0.0, 0.0).into()),
    PathEl::CurveTo(
        (1.0, 1.0).into(),
        (2.0, 2.0).into(),
        (3.0, 3.0).into(),
    ),
    PathEl::CurveTo(
        (4.0, 4.0).into(),
        (5.0, 5.0).into(),
        (0.0, 0.0).into(),
    ),
    PathEl::ClosePath,
]);
let mut bez_pen = BezPathPen::new();
let mut rev_pen = ReverseContourPen::new(&mut bez_pen);
write_to_pen(&contour, &mut rev_pen);
rev_pen
    .flush()
    .unwrap();
let reversed = bez_pen.into_inner();
println!("{:#?}", reversed);

After reversing with ReverseContourPen, a duplicate LineTo segment appears after the MoveTo which was not there to begin with.
BezPath(
    [
        MoveTo(
            (0.0, 0.0),
        ),
-        LineTo(
-           (0.0, 0.0),
-       ),
        CurveTo(
            (5.0, 5.0),
            (4.0, 4.0),
            (3.0, 3.0),
        ),
        CurveTo(
            (2.0, 2.0),
            (1.0, 1.0),
            (0.0, 0.0),
        ),
    ],
)

This will produce an extra point if we compile that BezPath to a glyf SimpleGlyph with fontc. We need to find where that exactly gets added and get rid of it.

IIRC this was meant to help retain interpolation compatibility when reversing.

no no, b/c fontmake does not add them and contours are still interpolation compatible, so we do have some mismatch somewhere

we don't want the duplicate points to be added, they only appear when ReverseContourPen gets used, so we should fix ReverseContourPen to match the python equivalent (which has no qualms about interpolation compatibility)

If you'd like to reproduce this duplicate points issue, you can use write-fonts from my filter-implied-oncurves PR https://github.com/googlefonts/fontations/pull/368 and then patch fontmake-rs to use the new simple_glyphs_from_kurbo method introduced there (fontmake-rs patch is in https://github.com/googlefonts/fontations/pull/368#issue-1678937814). Then try to build Oswald.glyphs with fontc and inspect the differences between the font built with fontmake-py and the one built with the patched fontc, especially the glyph called "hryvnia" which contains the flipped component. You'll notice the duplicate oncurve (lineto) points being added (the + in the diff below):
       </contour>
       <contour>
         <pt x="219" y="-9" on="1"/>
+        <pt x="219" y="-9" on="1"/>
         <pt x="290" y="-9" on="0"/>
         <pt x="382" y="51" on="0"/>
         <pt x="430" y="157" on="0"/>
@@ -10579,6 +10371,7 @@
         <pt x="25" y="124" on="0"/>
         <pt x="75" y="37" on="0"/>
         <pt x="163" y="-9" on="0"/>
+        <pt x="219" y="-9" on="1"/>
       </contour>

Apparently when writing the pen I thought I did need the implicit closing line, per
https://github.com/googlefonts/fontations/blob/b1b7f7e8471aa1dc7f616689d1f0b1f7b9fb14a0/write-fonts/src/pens.rs#L156-L163
Either I botched my python test or the FontTools reverse doesn't give me compatible outlines when I reverse your example curve and then your example curve with the last curveTo ending at 6,6 instead of 0,0:
from fontTools.pens.basePen import BasePen
from fontTools.pens.reverseContourPen import ReverseContourPen

class CommandPen(BasePen):
    def __init__(self):
        self.commands = []

    def _moveTo(self, pt):
        self.commands.append("M")
    def _lineTo(self, pt):
        self.commands.append("L")
    def _curveToOne(self, pt1, pt2, pt3):
        self.commands.append("C")
    def _closePath(self):
        self.commands.append("Z")

def draw(pen, endp):
    pen.moveTo((0, 0))
    pen.curveTo((1,1), (2,2), (3,3))
    pen.curveTo((4,4), (5,5), endp)
    pen.closePath()

for implicit_close in (False, True):
    print(f"outputImpliedClosingLine={implicit_close}")
    pen = CommandPen()
    draw(ReverseContourPen(pen, implicit_close), (0, 0))
    print("  ", "".join(pen.commands))

    pen = CommandPen()
    draw(ReverseContourPen(pen, implicit_close), (6, 6))
    print("  ", "".join(pen.commands))

# if we get the same sequence of commands we're interpolation compatible ... but we never do?!
#outputImpliedClosingLine=False
#   MCCZ
#   MLCCZ
#outputImpliedClosingLine=True
#   MCCZ
#   MLCCZ

If I try the same in Rust the command sequences match:
    fn reverse(endp: Point) -> BezPath {
        let contour = BezPath::from_vec(vec![
            PathEl::MoveTo((0.0, 0.0).into()),
            PathEl::CurveTo(
                (1.0, 1.0).into(),
                (2.0, 2.0).into(),
                (3.0, 3.0).into(),
            ),
            PathEl::CurveTo(
                (4.0, 4.0).into(),
                (5.0, 5.0).into(),
                endp,
            ),
            PathEl::ClosePath,
        ]);
        let mut bez_pen = BezPathPen::new();
        let mut rev_pen = ReverseContourPen::new(&mut bez_pen);
        write_to_pen(&contour, &mut rev_pen);
        rev_pen
            .flush()
            .unwrap();
        bez_pen.into_inner()
    }

    fn cmd_seq(path: &BezPath) -> String {
        path.elements().iter()
            .map(|el| match el {
                PathEl::MoveTo(..) => "M",
                PathEl::LineTo(..) => "L",
                PathEl::CurveTo(..) => "C",
                PathEl::QuadTo(..) => "Q",
                PathEl::ClosePath => "Z",
            })
            .collect()
    }

    #[test]
    fn test_reverse_pen() {
        let rev1 = reverse((0.0, 0.0).into());
        let rev2 = reverse((6.0, 6.0).into());
        assert_eq!(cmd_seq(&rev1), cmd_seq(&rev2));
    }

My naive thought is for dropping that line_to to be safe you'd want to walk all the outlines in parallel and only drop it if it's unnecessary in all of them.

I'm convinced. Your two example contours are indeed not interpolation compatible to begin with, one has an implicit closing line (because the last curveTo point != moveTo) whereas the other does not!
What we want is to start from list of points (as in the source), then convert to BezPath (i.e. segments) and then back to points (glyf) and make sure we do not add any extra points and that we stay interp-compatible.
We shall port all the tests from fontTools/Tests/pens/reverseContourPen_test.py and verify that fontations ReverseContourPen does exactly the same as the python one when outputImpliedClosingLine=True.

I ported all parametrized tests from reverseContourPen_test.py in https://github.com/googlefonts/fontations/pull/371/commits/3806c4d91b4dc4704bba0e94021ee229e98c8850
a lot of them fail, we want to make them all pass

Right now we only use ReverseContourPen for reversing contours of decomposed components when their transform has negative determinant, so this issue has less impact.
However when we will implement fontmake-py's default behavior of reversing contours' winding direction when building TrueType glyf outlines (unless --keep-direction option is used), all simple glyphs risk to be affected
Cf. https://github.com/googlefonts/fontmake-rs/issues/174

the two contours from your example are not compatible because one (curveTo ending on top of move) has effectively 6 points (or 2 cubic segments), the other one has 7 points (2 cubics and one line) because the last oncurve point does not overlap the starting point and the closePath adds an implicit closing line:
from fontTools.pens.pointPen import SegmentToPointPen
from fontTools.pens.recordingPen import RecordingPen

def draw(pen, endp):
    pen.moveTo((1, 0))
    pen.curveTo((2, 1), (2, 2), (3, 3))
    pen.curveTo((5, 4), (5, 5), endp)
    pen.closePath()

# both the following contours are closed, but the second one is implicitly closed
# by a lineTo the starting point, whereas the first one ends with a curveTo
# the starting point.

rec = RecordingPen()
pen = SegmentToPointPen(rec)
draw(pen, (1, 0))
print(rec.value)
# this contour only contains 7 points in total, or two cubic curve segments
assert rec.value == [
    ("beginPath", (), {}),
    ("addPoint", ((1, 0), "curve", False, None), {}),
    ("addPoint", ((2, 1), None, False, None), {}),
    ("addPoint", ((3, 2), None, False, None), {}),
    ("addPoint", ((4, 3), "curve", True, None), {}),
    ("addPoint", ((5, 4), None, False, None), {}),
    ("addPoint", ((6, 5), None, False, None), {}),
    ("endPath", (), {}),
]

rec = RecordingPen()
pen = SegmentToPointPen(rec)
draw(pen, (7, 6))
print(rec.value)
# this contour contains 8 points in total, i.e. two cubic curves and one line
assert rec.value == [
    ("beginPath", (), {}),
    ("addPoint", ((1, 0), "line", False, None), {}),
    ("addPoint", ((2, 1), None, False, None), {}),
    ("addPoint", ((3, 2), None, False, None), {}),
    ("addPoint", ((4, 3), "curve", True, None), {}),
    ("addPoint", ((5, 4), None, False, None), {}),
    ("addPoint", ((6, 5), None, False, None), {}),
    ("addPoint", ((7, 6), "curve", False, None), {}),
    ("endPath", (), {}),
]

# the two contours are in fact incompatible!

(sorry I just edited the above code, in the haste I didn't even bother running it 🤣 )

basically a closePath command only adds a closing line if the last oncurve point of a closed contour is the same as the move point. To show that I am not making this up, e.g. take a look at the way kurbo segment iterator omits the last line segment unless last != start:
https://github.com/linebender/kurbo/blob/01b52cd85c3a9b1be2c6e39ab97fcf401a8911c4/src/bezpath.rs#L689-L695

conversely when going segments => points, we pop the last point of a closed path when it has the same coordinates as the move point, cf. https://github.com/googlefonts/fontations/pull/341

After discussion with Behdad I have filed https://github.com/fonttools/fonttools/issues/3093.


dist: update GC-related units

Use less aggressive values for the garbage collection and make it easy
for a user to modify the grace period via a drop-in.

LGTM


Dataset issues

Could you please send me the adjusted data set? I would be very grateful.

Hello,
the GPU server that I have used is currently broken. Hence, I will not be able to hand you processed dataset.
Thank you.

Is there any code for processing the dataset?

I do not have the code. Please use Python and OpenCV to extract patches and use Matlab for adding speckle noise.

Hello, after I use Matlab to add speckle noise, the training result loss is a negative value. What is the reason?

As stated in the paper, we have proposed a modified DG loss which has a log scale.
Hence, if the DG becomes less than one, the modified DG loss returns a negative value.
Please refer to the paper for more details.

C:\ProgramData\Anaconda3\python.exe D:\code\1\SAR-CAM-main\SAR-CAM-main\test.py
usage: test.py [-h] [--model-name MODEL_NAME] --weights-dir WEIGHTS_DIR
--clean-image-dir CLEAN_IMAGE_DIR --noisy-image-dir
NOISY_IMAGE_DIR --save-dir SAVE_DIR [--stack-image]
[--device DEVICE]
test.py: error: the following arguments are required: --weights-dir, --clean-image-dir, --noisy-image-dir, --save-dir
Process finished with exit code 2

Hi, you need to specifically add path of the corresponding arguments to run the code.


Update to the latest rustc-serialize

As an aside, feel free to add yourself to the owners list in Cargo.toml.  I've also added you as an owner of the github repo.


Add Conv1D implementation

Hey,
I added this code for project I was doing. Thought might aswell merge it if it doesn't break anything.
Thanks!

@microsoft-github-policy-service agree

Thanks for contributing, Srinivas!
The code for Conv1d seems identical to Conv2d. It might make sense to abstract it further for all Conv layers. Would you like to take a stab at that? I'm happy to work with you to build some test cases and get it merged.

Sure. I can have a crack at it

Hey, I've added it to the 'abstraction' branch of my fork

Hello @nivibilla, you should not update pip install in the README file from the repo to you fork.

@heitorrapela thanks for pointing that out. I forgot to change. Ive also implemented the abstraction now

merged. thanks for contributing!

Hello,
I think this branch is not for Conv1d.
lora_A @ lora_B has shape: (out_channel * kernel_size, in_channel_kernel_size).
However, conv.weight has shape: (out_channel, in_channel, kernel_size).
I think this is only for Conv2d.

Hi,
I actually think this change breaks a lot of things. The primary change is that the resulting layer will have the convolution weight and bias under module.conv.weight and module.conv.bias - this is incompatible with default convolutional layers which have weights and bias as module.weight and module.bias.
This requires different loading logic for the convolution layers and breaks other things like potential normalisation methods like spectral normalisation that expects those module in certain places.

Hi, I actually think this change breaks a lot of things. The primary change is that the resulting layer will have the convolution weight and bias under module.conv.weight and module.conv.bias - this is incompatible with default convolutional layers which have weights and bias as module.weight and module.bias. This requires different loading logic for the convolution layers and breaks other things like potential normalisation methods like spectral normalisation that expects those module in certain places.

I quite agree. Since I used "torch.nn.utils.weight_norm" in my network, I had to make many changes to the source code to run my projects.


Unary minus operators aren't being generated

In GDScript it's possible to use unary minus operators for negation, e.g. print(-Vector3(1, 2, 3)) will output (-1, -2, -3).
Currently we skip all unary operators during generation. Not sure if we need "unary plus" or "not" operators though.

It seems like we should omit plus, the negation would be nice, but not as important as the negation one.
that said, I feel that we might want to do manual extensions for those methods anyways.


Skip missed etcd keys

We are using etcd for storing configuration parameters for different services and usually, in service files, we have lines like that
-e CONFIGO_SOURCE_30='{\"type\": \"etcd\", \"endpoints\": [\"http://${COREOS_PRIVATE_IPV4}:2379\"], \"prefix\": \"applications/worker-defaults/\"}' \
-e CONFIGO_SOURCE_40='{\"type\": \"etcd\", \"endpoints\": [\"http://${COREOS_PRIVATE_IPV4}:2379\"], \"prefix\": \"applications/worker/%i\"}' \

So most of these workers are fine with default parameters and we don't need to customize these settings, but we have to create empty dir /application/worker/something and that is really annoying.
Is it possible to add one more configuration parameter like 'skipOnMissed' or something like that for nicer configuration?

Hi @abashev,
Sure! May I ask you to send the error it prints when the dir doesn't exist?

Something like
Jun 23 11:35:48 cloud-2-worker-01 sh[124630]: 11:35:48.335 [E] Failed to resolve source: 100: Key not found (/applications/backend-worker/BoostDislike) [336227953]

@abashev
ACK :) Will fix it soon, thanks for reporting!


Entering insert mode with A and auto-suggestion places cursor at next to final character

When an auto-suggestion is present, and the user is in normal mode, entering insert mode with A, the cursor will be placed before the final character.

Sequence of events, above:

From insert mode, type echo
zsh auto-suggestion suggests completion with previous command of echo $PATH, cursor remains after the o in echo.
Hit Esc to enter normal mode
Type Shift+A to enter insert mode. Cursor is before the H of $PATH; the expected behavior is the cursor is placed immediately after the H.
Hit Esc to re-enter normal mode, making the cursor position more clear.

The expected behavior is that the cursor would be placed after the final character.

Hi @gotgenes
This behavior is a feature of default zsh-autosuggestions (related code) for easier choosing the auto suggestion. You can config the option ZSH_AUTOSUGGEST_ACCEPT_WIDGETS to change the behavior:
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
  forward-char
  end-of-line
  vi-forward-char
  vi-end-of-line
  vi-add-eol
)

This widget vi-end-of-line is added to by default, you can remove it to settle your issue. Or just move your cursor backward a character (i.e. cursor at h), then press A.
Thanks and regards

Interesting! zsh-vim-mode's behavior is to place the cursor at the end of line (after the auto-suggested text) so I had gotten used to that behavior.

Yes, it's better to keep compatibility with the zsh-autosuggestions plugin, and this issue is introduced by zsh-autosuggestions, so you just need to do the simple configuration with ZSH_AUTOSUGGEST_ACCEPT_WIDGETS option, it will be settled down perfectly! : )

Thanks for the suggestion. Just to be clear, the configuration you're suggesting is
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
    forward-char
    end-of-line
    vi-forward-char
    vi-add-eol
)

Is this correct?
When I use this configuration, and the example above, A places the cursor in insert mode immediately after the o in echo. Is there a configuration that I should use that will make it so A places the cursor after the H in $PATH?

Hi @gotgenes , the configuration you provided is correct. For choosing the suggestion, you can use $ to instead of A after you setting with the configuration cleared.

Hi @gotgenes
I’m very sorry, I misunderstood your issue, and it's not about choosing the auto-suggestion or not, just about the wrong cursor position. Now this issue has been addressed and fixed, please update your plugin to the latest version.
Thanks and regards

@jeffreytse Thanks for following up! Yes, sorry, I probably could have made the issue clearer.
Confirmed fixed in the latest version!


Add an option in settings to override prefers-reduced-motion

#32

When using fade, the ignorePrefersReducedMotion fails to take effect


Handle multi modules where one reactor project has no tests

Added integration test as a follow up for this discussion.
Notes:

The prebuild and verifier scripts were written in groovy.
To avoid the wrong version popping up, I've added the groovy dependency to the invoker plugin configuration.
If this is not cool, I'll go back to beanshell and force push.

The integration test currently fails, as expected.
For the record, removing the module-info descriptors, makes it pass.

There's a TODO comment in the verifier script, as a reminder to add log verifications.
I will handle it once we get this integration test to pass.

The prebuild and verifier scripts were written in groovy.

That's cool and ... groovy.
Is the prebuild check a standard feature of the invoker plugin? 🤔
[INFO] Building: modular-multi-modules-no-tests/pom.xml
[INFO] run pre-build script prebuild.groovy
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           modular-multi-modules-no-tests/pom.xml ........... FAILED (5.3 s)

Yes, it is. Learned something new today.
Let's fix this on your branch and we're good to merge.

@sormuras
Fixed it, now the test passes.
:-)

Please don't merge this yet, I want to handle that TODO comment prior to merging.

Awaiting your "Go!" then.

Awaiting your "Go!" then.

@sormuras Go! :smiley:

Gone. 🚀


Feature: Add glossary to getting started section

Type of feature
🍕 Feature
Current behavior
There's not currently a glossary of terms. Although tooltips are being implemented on the app side, we can implement it here as well
Suggested solution
Rather than having a separate file for each term, we could have a glossary in the getting started section.
Terms to include

PR Velocity
Activity
PR Overview
Alumni Contributors
Active Contributors
New Contributors
Churned Contributors
Insights
Lists

Additional context
No response
Code of Conduct

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

Contributing Docs

[X] I agree to follow this project's Contribution Docs

Hi @BekahHW , Can I work on the issue?

@Lymah123 it's on hold until the new organization PR is merged in.

@Lymah123 it's on hold until the new organization PR is merged.

Okay. Thanks.

@Lymah123 are you still interested in working on this?
I've added some of the definitions in the comments of this PR: https://github.com/open-sauced/app/issues/1806#issuecomment-1804449067

@Lymah123 are you still interested in working on this?
I've added some of the definitions in the comments of this PR: open-sauced/app#1806 (comment)

Hi @BekahHW , yes I'm still interested.

Hi @BekahHW , I can't find getting started section in the docs repo, but there is getting started section in intro repo.
Or should I put it under introduction.md section?
You suggested the glossary. md should be inside the getting started section.

Hi @BekahHW , I can't find getting started section in the docs repo, but there is getting started section in intro repo.
Or should I put it under introduction.md section?
You suggested the glossary. md should be inside the getting started section.

Hi @CBID2 , can you check the question please

In the repo, it's the community folder.

Sorry about that. We'll be renaming and changing up some of this stuff soon.
On the site, community shows up as Getting Started.


@select can accept negation !

In R's dplyr, the ! operator negates a selection. This feature is not supported in Tidier.jl. I wish to add this feature to @select macro.
Solution
In parse_tidy, add a condition to check for !(args__) pattern and pass args to a parse_negation parsing function. parse_negation handles args and returns a negation expression.
Examples
@select now has the ! feature:
df = DataFrame(a = repeat('a':'e'), b = 1:5, c = 11:15);

@chain df begin
@select(!(a:b))
end

@chain df begin
@select(!(1:2))
end

@chain df begin
@select(!a)
end

@chain df begin
@select(!1)
end

@chain df begin
@select(!contains("b"))
end

I realize that parse_tidy should be left unaffected, so I defined a parse_select function to handle the expression passed to @macro.

This looks awesome! Let me look through and will follow up with questions.
I want to make sure this doesn't mess up regular negation inside of functions, which I don't think we have built into our doctests. I also want to make sure the behavior is consistent with how negative selection currently works. I think there may be edge case differences and just want to understand what they are.

Nice work on this. Having reviewed the code, I think there are potential problems with only handling this inside of @select() and not other macros. For example, I don't think this will work inside of across().
My sense is that the easiest and most consistent thing to do is to implement this directly within parse_tidy(). Let's discuss and work on this together when we meet.

@kdpsingh parse_select is removed and now parse_tidy handles the negation functions (both - and !). This should also work within across, for example:
@chain df begin
@mutate(across(!(a:b), mean))
end

@chain df begin
@mutate(across(!contains("a"), mean))
end

Turn this PR into a draft PR since code to implement ! caused unexpected behaviors and failed build.

This looks great @zzhaozheUM! Will take a look on my computer when I get a chance, but on my phone this looks great.
Only thing I need to check is how negative selection works with selection helpers like starts_with(), and whether negative selection works inside across. May add some doctests to check this if not already added yet. Thank you!

I see that your example addresses my question. Let me review and will plan to merge. Thank you @zzhaozheUM!

I see that your example addresses my question. Let me review and will plan to merge. Thank you @zzhaozheUM!

I'm not sure if the -() works inside across. I will look at and work on this.


Addresses issue 1446 and assigns transport name if given, or else retains the default 'console' name

See #1446 for further details and discussion.

@DABH I will add it to the other transports and push it.  Will I need to resubmit the PR?

No, just push to your existing branch and this PR will automatically update to include your additional changes. Thanks!


update: storage_lifcycle_plugin

new c1 api format for FSS

Please don't rename the old template but edit it so that the diff could be shown.


Integrate Android bluedroid SBC decoder/encoder

Origin
Android
https://android.googlesource.com/platform/system/bt/+/refs/heads/android11-platform-release/embdrv/sbc
Purpose
Implement the SBC decoder and encoder.
Mode of integration
It is Apache 2.0 license, and it is maintained by the Android.
Suggest to integrate this as one external component, the repository name as "sbc".
Pull Request
https://github.com/zephyrproject-rtos/zephyr/pull/31583
The source codes are now in zephyr main tree's follow two directory in this PR:
subsys\bluetooth\host\a2dp_codec\sbc\decoder
subsys\bluetooth\host\a2dp_codec\sbc\encoder\
Description
I am implementing the BT A2DP function, the SBC is mandatory for A2DP.
Android uses the Bluedroid SBC encoder/decoder and maintain it.
So, I suggest to porting Android SBC encoder/decoder to zephyr, there is no need to implement one new encoder/decoder in Zephyr.
I have did one PR https://github.com/zephyrproject-rtos/zephyr/pull/31583, In this PR, the Android SBC source files are put in the follow two directories.
subsys\bluetooth\host\a2dp_codec\sbc\decoder
subsys\bluetooth\host\a2dp_codec\sbc\encoder
And I add one porting directory (zephyr\subsys\bluetooth\host\a2dp_codec\sbc\porting) and put two empty files (bt_target.h and bt_types.h) to avoid changing original SBC source files and pass building.
And I did only two line codes change compared with original Android SBC codes in order to compile successfully.
The changes are: adding two "extern" to the follow two lines in dequant.c.
extern const uint32_t dequant_long_scaled[17];
extern const uint32_t dequant_long_unscaled[17];
Dependencies
What other components does this package depend on? - No
Will the Zephyr project have a direct dependency on the component, or
will it be included via an abstraction layer with this component as a
replaceable implementation?

I have implemented one abstraction layer in Zephyr to simplify the interfaces(APIs) and usage.

Revision
Use the Android codes from
https://android.googlesource.com/platform/system/bt/+/refs/heads/android11-platform-release/embdrv/sbc
License
Apache 2.0

@MarkWangChinese did you have to make changes to the original Android source code in order to make it work for Zephyr?

TSC: Requires further analysis, we will invite @MarkWangChinese to the regular Bluetooth meeting.

@MarkWangChinese did you have to make changes to the original Android source code in order to make it work for Zephyr?

@carlescufi I did only two line codes change compared with original Android SBC codes in order to compile successfully.
The changes are: adding two "extern" to the follow two lines in dequant.c.
extern const uint32_t dequant_long_scaled[17];
extern const uint32_t dequant_long_unscaled[17];

Any progress？

@MarkWangChinese has confirmed that he can serve as the maintainer of this module (per TSC action item)

@MarkWangChinese has confirmed that he can serve as the maintainer of this module (per TSC action item)
Link to source updated in description

Thanks David.