BUG: 0/frame numeric ops buggy (GH9144)

Fix for issue #9144.

@jreback, my code is failing because I had assumed that we want 0/0 to be NaN, so implemented that as part of the bugfix, but there's a test that thinks 0/0 should be inf, which seems mistaken.
Should I go ahead and change that test?

see here: http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#id31
also IIRC there was some discussion w.r.t. to 0/0 (but might be in another issue). pls see if you can locate it.

I couldn't find any 0/0 discussion (there was a discussion in #3590 about mod 0 though), but in the release notes you linked to for v.0.12.0, it said "Fix modulo and integer division on Series,DataFrames to act similary to float dtypes to return np.nan or np.inf as appropriate" and it gave 4 examples.  I think the fix (PR #3600) worked except for p/p as demonstrated here:
>>> p = pd.DataFrame({ 'first' : [4,5,8], 'second' : [0,0,3] })

>>> q = p.astype('float')

>>> print(p%0,'\n', q%0)
   first  second
0    NaN     NaN
1    NaN     NaN
2    NaN     NaN
    first  second
0    NaN     NaN
1    NaN     NaN
2    NaN     NaN

>>> print(p%p,'\n', q%q)
   first  second
0      0     NaN
1      0     NaN
2      0       0
    first  second
0      0     NaN
1      0     NaN
2      0       0

>>> print(p/p,'\n', q/q)    # Inconsistent!
   first    second
0      1       inf
1      1       inf
2      1  1.000000
    first  second
0      1     NaN
1      1     NaN
2      1       1

>>> print(p/0,'\n', q/0)
   first  second
0    inf     inf
1    inf     inf
2    inf     inf
    first  second
0    inf     inf
1    inf     inf
2    inf     inf

The results are the same for Python 2.
This PR would correct this.
I see NumPy has some strange things going on, for example,
>>> x = np.int_(0)
>>> x / x
nan
>>> x // x
0

but I haven't ever seen 0/0 being infinite.  I think we should change that...
BTW, I'd also write a release note once we decide how to handle this.

cc @seth-p
iIIRC didn't we have s discussions about this?
what are your thoughts here?

I agree that 0/0, 0//0, and 0.0/0.0, should be NaN and not inf.
Is the issue with 0//0 that NaN is actually a float, and so an integer series or DataFrame column cannot contain NaN? So in cases where the result must be an integer (are there such cases?), I'm not sure what we want 0//0 to be -- 0 seems about as good as anything, I suppose. If there are no such cases, then never mind...
[A completely separate issue is that NaN is used both for (a) results that are not numbers (e.g. 0.0/0.0), and (b) missing values (e.g. None). I could see a reasonable argument for representing those differently.

missing and undefined values are both represented by nan
I know others have different ways of doing this - bottoms line is pandss chose a long time ago to only have a single nan represent both - mainly this a perf issue (to have multiple missing value types)

@Garrett-R go ahead snd make the change to make 0/0 be nan (both floats and ints)
eill be an api change so needs a small example / mention in the API page

@seth-p, right, integer types don't support NaN, so you have to do one of the following for 0//0:

choose an arbitrary value (NumPy's current behavior)

throw an exception (ex: C++ and Python)

cast to a float (this is actually what Pandas already does and what they're discussing doing in numpy/numpy#899)
assert  (Series([0]) // Series([0])).dtype == np.float_
assert  (Series([0]) // Series([1])).dtype == np.int_

Given that we're already casting to float, and assuming no one's planning on changing that behavior, we might as well make it NaN.  @jreback, cool, I'll get on it!

@Garrett-R the int/float issue is already solved. Pandas handles this correctly. That said I am thinking about this again.
So now 1/0 -> inf, but 0/0 -> NaN. Isn't this inconsistent?

@jreback, I believe 1/0 -> inf and 0/0 -> NaN is conventional (assuming we're casting to floats).  I wanted to try and find it in the IEEE floating point arithmetic document, but I think it's hidden behind an evil paywall.
Anyway, just check out the different languages:

C++
#include <iostream>
int main() {
    float x=0.0;
    std::cout << x/x << std::endl;
    std::cout << 1.0/x << std::endl;
}

outputs
-nan
inf

(the negative is irrelevant)

Julia
julia> 0/0
NaN

julia> 1/0
Inf

R
> 1/0
[1] NaN
> 0/0
[1] Inf

pls add a release note (maybe short example as well), just to make it obvious
put in api change section in 0.16.0

Sorry for the delay.  I've added a release note.
I also modified one more thing.  For modulus, there's an issue:
In [1]: s = pd.Series([0,1])

In [2]: s % 0
Out[2]:
0   NaN
1   NaN
dtype: float64

In [3]: 0 % s        # Should give a NaN for 0%0
Out[3]:
0    0
1    0
dtype: int64

The modified behavior is:
In [1]: s = pd.Series([0,1])

In [2]: s % 0
Out[2]:
0   NaN
1   NaN
dtype: float64

In [3]: 0 % s
Out[3]:
0   NaN
1     0
dtype: float64

this should also fix #8445 yes? (if so, pls add that as a test as well), if not, see if its simple to extend to fix.

Thanks for explaining the float issue.  I've undid that change as suggested.

Yes, it fixes #8445.  I've added that to the commit message.

You're not gonna like this but I added more special casing.  It was to correct some new unexpected behavior I found:  Series([-1,1]) / 0 gave signed infinities, while Series([-1,1]) // 0 gave only positive infinities.  I believe there's no way to get around the special casing.  I've added the appropriate test.

As for the slow division, that was existent before this PR.  But good call on checking into that.  I found that the _fill_zeros methods is unnecessary if the result is already a float since then everything will already be good.  Therefore, this PR improves the truediv operation runtime by a factor of 10.
old behavior
In [1]: xx = pd.DataFrame(np.random.random((10000, 10000)))
In [2]: %timeit xx / 0
1 loops, best of 3: 1.59 s per loop
new behavior
In [1]: xx = pd.DataFrame(np.random.random((10000, 10000)))
In [2]: %timeit xx / 0
10 loops, best of 3: 165 ms per loop

pls add a release note for #8445 (you can simply add it on where you have #9144)
ok on the special casing, sometimes it is unavoidable.
can you add a couple of vbenches (though use a smaller matrix, maybe 1000x1000), the proportion should still be the same; do for float/int results (for floor/div), e.g. add 4 or so (or more if you think are necessary, e.g. maybe for module too). name then consistently and add somewhere in the vbench suite.
help on vbenches here: https://github.com/pydata/pandas/wiki/Performance-Testing.
These are mainly to prevent performance regressions if/when things are changed in the future. Post the results in the top of the PR as well.
thxs

@jreback, how's it looking now?
Also, I've edited my first comment in the PR to include the results of the vbenches (including the ones I added).  Is this what you meant by "the top of the PR"?

@Garrett-R only show the relevant vbenches and compare vs current master
e.g. bring your master up to date, then
.\test_perf.sh -b master -t HEAD
they top of the PR is correct (just replace it with the revised results).

@Garrett-R minor doc changes, and revise the vbench, otherwise looks good to go.

@jreback, I've made the suggested doc changes and also revised the vbenches.

@Garrett-R thanks for this! nice work!


fix OrTrigger fire endless

Pull Request Type

[ ] Feature addition
[X] Bugfix
[ ] Documentation update
[ ] Code refactor
[ ] Tests improvement
[ ] CI/CD pipeline enhancement
[ ] Other: [Replace with a description]

Description

setting "last_call_time" in _fire() changes it for the OrTrigger but not for the relevant Triggers.
The function set_last_call_time() set it for normal Trigger and in case of OrTrigger to the "current_trigger".
The current_trigger is the trigger for which triggers next.
Changes

add var current_trigger: BaseTrigger in class OrTrigger
extract evaluate current_trigger to function _set_current_trigger
add function set_last_call_time to BaseTrigger and modified it in OrTrigger

Related Issues

#1437
Test Scenarios

@listen()
async def on_startup():
    cron_print.start()

@Task.create(
    OrTrigger(
        IntervalTrigger(2),
        TimeTrigger(hour=19, minute=1, utc=False),
        DateTrigger(target_datetime=datetime(day=3,month=6,year=2023, hour=19, minute=1, second=30)),
    )
)
async def cron_print():
    print(datetime.now().strftime("%H:%M:%S.%f")[:-3])

set the timings in near future and probably comment out some triggers
Python Compatibility

[X] I've ensured my code works on Python 3.10.x
[ ] I've ensured my code works on Python 3.11.x

Checklist

[ ] I've run the pre-commit code linter over all edited files
[ ] I've tested my changes on supported Python versions
[ ] I've added tests for my code, if applicable
[ ] I've updated / added  documentation, where applicable

Looks good, and seems to be working fine. One nitpicky suggestion


Tutorial1

This phrase:
Now that Kytos is running, switch back to the previous window and install the NApps using the github command line utility.

Let's make a change here and install NApps without Kytos running to simplify things:
Install the NApps cloning from GitHub and running python3 setup.py develop

This part
now disable all napps

$ kytos napps disable all

I don't think we need this, maybe this could just explain that all NApps (or an individual NApp) can be disabled with this command but no need run this?

mininet test command it's advisable to include --controller, let's use this one here, up to this part kytosd needs to be up and running:
mn --test pingall --controller=remote,ip=<IP_ADDRESS>,port=6653

After all this changes, please make sure to go through the entire tutorial one more time, if it's all set, then let's get it merged since new contributors will follow this tutorial to set their environment thanks @usmanazFIU


Update docs/How K9mail works.pdf

Update docs/How K9mail works.pdf, which shows a little bit of how K9mail works, and might be useful for those who are new on K9mail .

Sorry, I don't think this adds any value.


Fix the broken .ics

Hey there, since the conf.name has been renamed to conf.title, the .ics is currently broken.

All names of conferences now cannot display. This PR helps fix that.

requesting review from @abhshkdz

Good catch, thanks @JetRunner!


Makefile: Pass lockdebug tag to tests

Previously, the lockdebug tag was only on the building of the binary.
This commit adds the ability to pass the tag to go test to debug
deadlocks in tests.
Example usage:
$ make RACE=1 LOCKDEBUG=1 unit-tests

Don't think this needs a full CI run, so I'll just let Travis do its thing, and that's probably enough.

Coverage increased (+0.03%) to 36.907% when pulling 1f5b7562778a92ad21962638e9df9a4bc48db85f on christarazi:pr/christarazi/add-lockdebug-tests into df16d5d011ebadc37fead0e1c296f1ab6e99bf5c on cilium:master.

test-runtime

test-runtime


rooch-framework/crypto base64

Base64 decoding needs to be implemented in the Move contract for JWT header and body decoding.

Use a native function like https://github.com/rooch-network/rooch/blob/f7573bb942b956097e0d1f06a61770ee1f8c60f0/crates/rooch-framework/sources/crypto/decoding.move
Or use a pure Move implement:
https://github.com/movefuns/movefuns/blob/main/starcoin/sources/Base64.move

Use a native function like https://github.com/rooch-network/rooch/blob/f7573bb942b956097e0d1f06a61770ee1f8c60f0/crates/rooch-framework/sources/crypto/decoding.move

Is there a need for implementing the base64 function in Move native functions?

This PR implements Base64 using native functions.
https://github.com/rooch-network/rooch/pull/2553


Store secret for slack push notifications

@swcurran could you add the Secret:
name: SLACK_WEBHOOK_URL_IDU
value: https://hooks.slack.com/services/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
To this repo? Or should I talk to someone else?
Background : @zickau has implemented push notifications for our container security scans and this secret is needed in order to push to our id union slack channel.
Many thanks!

@ryjones -- could you please take care of this?  Thanks!

Hi, @swcurran @Echsecutor - please talk to me on Discord


Async + Tornado

Hello,
It seems that you are using aiohttp for the async branch, which does not work well with Tornado because it will give the following error:
RuntimeError: Timeout context manager should be used inside a task
ERROR:asyncio:Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fb77cab7e48>

I think the problem is that every aiohttp request uses Timeout and thats not supported with Tornado.
Did you try using your async branch with tornado?
I will in the meantime write a version that doesnt use aiohttp and will work with tornado Tasks.


⚠ RbxVeri has degraded performance

In 7c26e74, RbxVeri (https://verify.triza.dev) experienced degraded performance:

HTTP code: 200
Response time: 1440 ms

Resolved: RbxVeri performance has improved in 2b9f286.


Remove redundant check in is_valid_indexed_attestation [non-substantive]

https://github.com/ethereum/eth2.0-specs/pull/1738

We don't have the removed check in the spec
if not len(indices) <= MAX_VALIDATORS_PER_COMMITTEE:
        return False

in isValidIndexedAttestation so we're fine, nothing to do for this.


Need an official release

Currently these two lines
https://github.com/conda-forge/libcugraph-feedstock/blob/ae9ef496797bee583b807d56cf52ba2dfbf0c3fd/recipe/conda_build_config.yaml#L45-L46
make the package published under the libcugraph_dev label. This is for development/release candidates. However, I think v0.19.0 is just released, and we should have a separate branch for the official releases, otherwise we cannot do
conda install -c conda-forge libcugraph

@rlratzel Could you do two things for me please?

Rename the current master to, say, rc so that it continues to publish packages under libcugraph_dev
Create a new branch (master) without the libcugraph_dev label that publishes v0.19.0 and the future releases

This is blocking CuPy v9.0.0 (https://github.com/conda-forge/cupy-feedstock/pull/123).

@rlratzel Could you do two things for me please?

Rename the current master to, say, rc so that it continues to publish packages under libcugraph_dev
Create a new branch (master) without the libcugraph_dev label that publishes v0.19.0 and the future releases

I sent a PR for No. 2, but @rlratzel I still need you to do the first bit as I am not a maintainer 🙂

I don't think there's an intention to continue publishing pre-release builds here, so can we just migrate the current main branch to the 0.19.0 release and carry on with only release versions?

OK @kkraus14, then that's exactly what #7 will do!


Azure DNAseq pipeline error

I got an error message:
Failed processing sample PSCPA1369699: org.apache.spark.sql.AnalysisException: dbfs:/FileStore/tables/output/genotypes is not a Delta table.;
Hope to know is it an azure setting issue or a pipeline-related issue?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 444c543f-81a1-ba90-7fbb-f64bcaa91029
Version Independent ID: 35f2ba50-00a9-808f-4fa0-28f0e7945cac
Content: Variant Annotation using Pipe Transformer - Azure Databricks - Workspace
Content Source: databricks/applications/genomics/secondary/variant-annotation-pipe.md
Service: azure-databricks
GitHub Login: @mssaperla
Microsoft Alias: saperla

@YidiQin
Thanks for leveraging Azure docs feedback channel to raise this question. This channel is reserved for ‘Azure docs’ feedback- for sharing doc feedback and suggesting content improvements.
After reviewing the error message it seems to be more of Databricks issue. I would recommend reaching out in Databricks community forum for better assistance. Forums have a better suited audience for such queries.
As we didn't determine any changes for this documentation upon reviewing this feedback. We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.
Thank you

@YidiQin
Thanks for leveraging Azure docs feedback channel to raise this question. This channel is reserved for ‘Azure docs’ feedback- for sharing doc feedback and suggesting content improvements.
After reviewing the error message it seems to be more of Databricks issue. I would recommend reaching out in Databricks community forum for better assistance. Forums have a better suited audience for such queries.
As we didn't determine any changes for this documentation upon reviewing this feedback. We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.
Thank you


Expose containers defaults

In this pull request, I made almost all containers default values public. The main reason for this change is to reuse these defaults in the testcontainers-scala. At the current moment, many defaults are just copy-pasted in the testcontainers-scala.
There is nothing secret in the defaults. And sometimes they could be useful when you are creating custom containers on top of already created containers. In this case, reusing default values could be desirable.
During implementation, I faced a lot of naming inconsistencies. I left them mostly unchanged - this is not the purpose of this pull request.

The main reason for this change is to reuse these defaults in the testcontainers-scala.

I have a bad feeling about testcontainers-scala and the approach of re-implementing the containers instead of just wrapping the java ones. Is it really necessary?

@bsideup well, actually, scala containers wrap java ones, not re-implement them :) In testcontainers-scala we wrap java containers to provide a more convenient, safe and familiar for the scala programmer way to construct containers. All runtime and construction logic is still on the java side.
Also, I have no idea why CI failed. It looks like this is not because of my changes — other branches are red too.

I'm also uncomfortable with this - it doesn't feel right that overall there should be two routes by which a default value could be passed in. The public API of the Java container classes should be the methods it exposes, not methods + a set of constants.
Please could we park this PR for now and have a discussion about how we can work together better to ensure that the Scala wrapper has less hard work like this to do? I think we'd all benefit from getting together to talk, particularly as we have some ideas for changing our APIs anyway - hopefully these ideas will make it easier, but we need to know if it's going to make it harder too.
Chat on Slack to arrange a video call some time?

@rnorth Not sure what you mean by "two routes by which a default value could be passed in". Could you explain that?
I see nothing dangerous in my change. Some of the containers already expose their defaults (more or less). I just made them all public. Why they should be private? There is nothing private in them. It's just a good practice to not hard-code things inside the method bodies and move them in the constants.
Even without testcontainers-scala argument, I think library users will benefit from this change. As I already said, it could be useful when you are creating custom containers on top of already created containers. I faced such scenarios a few times. This is not a very wide use case though.
Of course, we can discuss our long-term plans. But I afraid that all this can take a long time. I hoped that this pull request will be easily merged and I will continue to work on the testcontainers-scala.

Guys, 2 months have passed and I want to remind you about this pull request. These changes will help me a lot with [this] (https://github.com/testcontainers/testcontainers-scala/issues/80) issue. Without these changes, I will have to copy-paste all defaults from the java library, which I really would not want to do.

@LMnet the PR is in "on hold" state because it does not feel right.

Even without testcontainers-scala argument, I think library users will benefit from this change. As I already said, it could be useful when you are creating custom containers on top of already created containers. I faced such scenarios a few times. This is not a very wide use case though.

It is indeed is not a very popular use case and so far I don't remember anyone to report the same problem.
I think what we should focus on is making testcontainers-scala use testcontainers-java definitions "as it is", not try to re-implement them.
We're working on bringing the container definitions to the Java version, so that there will be a separation of the configuration and started state.
I believe it will make Scala's life much easier and hope will lead to the removal of code duplicates in the scala wrapper (so that it actually becomes a wrapper).
I will ping you once the PR is ready so that you can take a look and give feedback whether it is useful for Scala or not. Sounds good?

FTR the definitions will most likely make it into 1.x as an alternative way of defining the containers and will be promoted as the only API in 2.x.

I very much doubt that it is possible to create such an API for containers on the Java side, which could be used as-is in scala without any kind of wrapper. Also, as I understand it, the new API in the Java library will not appear soon. But the changes that I propose will help me right now. Anyway, I (and I believe @dimafeng too) will give you feedback about the new Java API.
Also, I want to repeat myself: in testcontainers-scala we don't reimplement containers. In your example, almost all code in KafkaConainter is a construction code. It's a bit massive because we now have 2 versions of the API and we have to have some code duplication. But I want to pay attention — it's just a wrapper. It's not "reimplementation". All logic is on the java side.
I still don’t understand why this change met such resistance. This is a very simple change that does not break backward compatibility. It is not dangerous and does not add any potential problems, in my opinion. At the same time, it saves the project from one of the problems - hardcoded values. Even this, in my opinion, should be enough.
So, if the decision is final, I have to transfer the default values to the scala side.

@LMnet

Also, as I understand it, the new API in the Java library will not appear soon.

I have a bit different information :)

I still don’t understand why this change met such resistance. This is a very simple change that does not break backward compatibility. It is not dangerous and does not add any potential problems, in my opinion.

It adds a lot of public information for us to maintain. Static nature of it makes it even harder, preventing us from changing things (we will have to keep it in sync, getters/parameters & their static values).
If you really need to get these defaults, why don't you use something like:
private static final String CASSANDRA_DEFAULT_USERNAME = new CassandraContainer().getUsername();

or similar (maybe lazy) constructions? So that you only use our public API which is always up to date with the implementation.

At the same time, it saves the project from one of the problems - hardcoded values.

We barely have any hardcoded values, most of them are configurable.

We barely have any hardcoded values, most of them are configurable.

Private string literals that used as default values are hardcode. Library users can't address these values, can't use them.

It adds a lot of public information for us to maintain. Static nature of it makes it even harder, preventing us from changing things (we will have to keep it in sync, getters/parameters & their static values).

static final things is absolutely not dangerous in terms of maintenance. It is just constants. And, because these constants are used as default values inside containers constructors, you don't need any extra effort to make them in-sync with getters/setters in the instantiated containers. The only possible problematic moment I can see is inconsistent naming. If someone decides to improve this he will have to do this through the deprecation process.
Getting default values from the instantiated containers is a hacky solution. Container creation could potentially contain some side-effectful logic. I don't want to instantiate things with side effects only to get some static constants, which are guaranteed never to change in the runtime. And also, not all containers can be instantiated with only default values. For example, you always need to provide an image name for the oracle container.

Bump

@LMnet unless you have new, more convincing arguments, I don't think there is anything more to discuss :)


Focus set

TODO maybe robot_position can be eliminated for runtime speedup too and focus set used for optimization instead.


Update release workflow to reflect use of 'version' branches

Change Summary
Overview
This PR updates the release workflow documentation to reflect our new workflow -- one that doesn't use a main branch but instead uses 'version' branches (e.g. v0.1.x).
New Files

docs/source/_static/git-workflow.png

A diagram that I created to reflect this workflow. I couldn't find anything like it online, so I just created something with a draw tool. This replaces the diagram that was previously used in git-and-github-workflow.rst

Updated Files

docs/source/development/release-workflow.rst

Updated description of the release workflow

docs/source/development/style-guide/git-and-github-workflow.rst

Updated workflow diagram

Testing
For reviewers, it would be good to know if this workflow makes sense as i've described it? What needs to be tweaked?

Thanks @maxinelasp!
@greglucas Since you introduced the concept of the version branches, it would be good to get your opinion here and make sure I got this down right, if you have time!

I find these diagrams confusing to follow unless you already sort of know what you're doing. I've tried explaining them to people new to git before and it was just blank stares. So, I guess I'd recommend just linking out to someone else's so we don't have to maintain/explain it? I think the Atlassian gitflow diagram you had before is awfully close to our process, we just aren't using the "master" branch anymore and keeping the "release" branch only. So sort of just reducing one of the steps.
I am fine with this new diagram as well, but it'd be nice if you could put it through an image shrinker as well so it isn't 161KB.

Thanks for the feedback Greg. I'm hesitant to switch out the diagram in favor of Atlassian's, because this new diagram is (accurately, I think) reflecting our actual workflow (and I designed it to look as similar to Atlassian's diagram as possible). I agree that this stuff is inherently confusing and hard to learn, but I'm not sure that showing Atlassian's diagram and then saying "well actually this part is different" would be less confusing.  And I don't agree that our new method is close enough to the Atlassian release-driven workflow, because we are not just using a release branch instead of a master branch -- we are keeping every release branch, and a new release branch needs to be created when certain conditions are met.
Would it suffice to keep this diagram and then add a note somewhere along the lines of "for more information about release-driven workflows see [this Atlassian page]"?
Good catch on the file size, I can definitely make that smaller!

@bourque , I should have pinged you yesterday I only thumbs-upped your message which probably didn't notify you, sorry for that.

Would it suffice to keep this diagram and then add a note somewhere along the lines of "for more information about release-driven workflows see [this Atlassian page]"?

I think that would be fine, but I am also totally fine with what you wrote and keeping it like this. So, this is good with me once you shrink the image down.


Toasts.Forms.Plugin v 2.04 issue with text truncation

I'm not sure if this is a UWP issue, but after an upgrade I am experiencing an issue with truncating text.
I upgraded from Toasts.Forms.Plugin v.<IP_ADDRESS> to 2.04 in order for the plugin to work in my new Windows 10 UWP app.
For example, here is my notification when a user does not enter both a user and password as login.
"Email address and password are both required."
Now, I receive a notification that looks like this.
"Email address and password..."
Is this a bug or have I not fully implemented the new plugin?
Thanks!

@faceoffers28 - I would actually recommend you use a dialog (DisplayAlert) for displaying this information to users as it is critical and the user can not proceed without doing something. I tend to find Toasts better as just a friendly notification mechanism that if they miss it, its not critical.
I will have a look at the truncating text but I think a dialog would be a better UI in your scenario.

Thanks for the advice. I really appreciate it.
I just tested my iOS app and it is working just fine. I'm using notifications all over the app, so I need to figure this out.
I'm running Xamarin.Forms v <IP_ADDRESS> targeting PCL 259. Thanks!

@faceoffers28 - if you need to change it now, you might want to look at FrameStyle.xaml that would have been put in the root of your UWP project. Inside there is the default template for how the Toasts are displayed. You can change this to style it how you want. Will most likely be quicker than waiting for me to get around updating component.

@adamped This is the FrameStyle file that I'm using. It didn't install when I upgraded the plugin, so I just manually added it.
https://github.com/EgorBo/Toasts.Forms.Plugin/blob/master/Toasts.Forms.Plugin.WinRT/FrameStyle.xaml
I've tried to edit the file, but with my limited knowledge, nothing seems to work. Can you point me in the right direction? Thanks in advance!

Apologies you need to create a new renderer. Copy this, modify it and inject it in the init https://github.com/EgorBo/Toasts.Forms.Plugin/blob/master/Toasts.Forms.Plugin.WinRT/DefaultToastLayoutRenderer.cs

@adamped OK, I've implemented all the files and edited the DefaultToastLayoutRenderer file to allow word wrapping. I had to use a bunch of breaks, but I finally found where the code is breaking for me. If I comment out the _lastUsedInstance == null lines as shown below, the code breaks on the next line. If I don't comment out the lines, the program returns with no notification. This is located in the ToastPromptsHostControler.cs file.
public static void EnqueueItem(UIElement content, Action submitAction, Brush bgBrush, bool tappable, TimeSpan timeout, bool showCloseButton)
{
//if (_lastUsedInstance == null)
//    return;
        _lastUsedInstance._notificationQueue.Enqueue(new NotificationItem(content, bgBrush, submitAction, tappable, timeout, showCloseButton));
        _lastUsedInstance.TryDequeue();
    }

I can see that the toast seems to get created correctly. This lines is complete, but both context and out brush are null. This line is found in the ToastNotificatorImplementation.cs.
var element = _customRenderer.Render(type, title, description, context, out brush);
Any idea on how to fix this? Thanks!

@adamped If I don't comment out the  _lastUsedInstance == null lines, the code seems to end here, but no notification displays.
return taskCompletionSource.Task;
This is found in the ToastNotificatorImplementation.cs file.
Does this code work for you? Any help is much appreciated. Thanks!

@adamped OK, I finally got it to work. This is the first time I have implemented a custom renderer, so I was out of my league from the word go. I did, however learn a lot, which is always best. I ended up only adding 1 file to my UWP Project in order for this to work. I added DefaultToastLayoutRender.cs with a using Plugin.Toasts; statement. I then edited these lines.
var descTb = new TextBlock             {                 Text = description,                 VerticalAlignment = VerticalAlignment.Center,                 Margin = new Thickness(12, -4, 0, 0),                 TextTrimming = TextTrimming.WordEllipsis,                 //TextWrapping = TextWrapping.NoWrap,                 TextWrapping = TextWrapping.Wrap,                 Foreground = new SolidColorBrush(Colors.White),                 FontSize = 14             };
NOTE: If I choose FontSize 16, it doesn't wrap. I have no idea why.
I then used this code to inject the DefaultToastLayoutRenderer. This was no where in the instructions, so not knowing what I was really doing, I just kept trying stuff until I got it to work.
Xamarin.Forms.DependencyService.Register();
ToastNotificatorImplementation.Init(stackSize: 3, customRenderer: new DefaultToastLayoutRenderer());
Hope this helps someone else.

Glad to see you got it working and thank you for sharing your solution.


Embedded files (smart objects) API

There is this pull request that was merged, however there doesn't seem to be any update to the docs. I'm having a hard time seeing exactly how to use this API and what in all is implemented with this PR. Any hints?

Fixed in #91
https://psd-tools.readthedocs.io/en/latest/reference/psd_tools.api.smart_object.html


Warning: ReactClass: You're attempting to include a mixin that is either null or not an object. Check the mixins included by the component, as well as any mixins they include themselves. Expected object but got undefined.

I'm getting this error from several react-native-maps components using RN0.32
I'd be happy to provide any additional required information
Thanks!
Uri

Have you upgraded to 0.8.0?

Did now, and it solved the problem indeed. Thanks!

excuse me
is it solved?


Adding wrapping for OrientImageFilter.h

Addresses #644

The names of the spaces do not correspond to the DICOM standard: InsightSoftwareConsortium/ITK#1163

superseded by #1013


Add buildPhase property to PBXBuildPhase

This adds the build phase enum as a property of each PBXBuildPhase subclass This makes it easier to work with the polymorphic PBXProj.buildPhases

Great @yonaskolb 👏


1.84.0 CMD+SHIFT+X not working

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.84.0
OS Version: mac

Steps to Reproduce:
New lease of 1.84.0 broke the keyboard shortcut to show extension panel, it starts working when i enable Activity Bar but without it and doing vscode restart it does not work.

Me neither. CMD+SHIFT+E is also wot working.
Version: 1.84.0
Commit: d037ac076cee195194f93ce6fe2bdfe2969cc82d
Date: 2023-11-01T11:29:51.160Z
Electron: 25.9.2
ElectronBuildId: 24603566
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 22.6.0
`
``

/duplicate of #197169

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Exit code 137 when running tennis_question_typology.py

Hi,
when running tennis_question_typology.py in PyCharm I always get the error message "Process finished with exit code 137. Interrupted by signal 9: SIGKILL." The error occurs when the list "spacy_objs" is dumped with pickle and written to spacy.pk:
questionTypology.py - class MotifsExtractor - def spacify -
with open(outfile_name + '.pk', 'wb') as f:
pickle.dump(spacy_objs, f)
Exit code 137 seems to be an out of memory problem. But I have 16 GB RAM and I already increased the max memory size that PyCharm is allowed to use in the PyCharm settings. So I do not see how memory can be a problem here.
Is it still possible that the corpus file is just too big?

Hi! This has been fixed as of the release of ConvoKit 2.0 a little over a month ago. We no longer include tennis_question_typology.py in the repo as an example (because of redundancy), but the streamlined Transformer interface of QuestionTypology makes it easy to apply the QuestionTypology extraction to any corpus.
If you are still interesting in running tennis_question_typology.py, this updated code will do the job:
import os
import pkg_resources
import numpy as np

from convokit import Corpus, QuestionTypology, download

#Load the corpus
num_clusters = 8
corpus = Corpus(filename=download("tennis-corpus"))

#Extract clusters of the motifs and assign questions to these clusters
qt = QuestionTypology(num_dims=25,
  num_clusters=num_clusters, verbose=False, random_seed=125)

qt.fit(corpus)
qt.transform(corpus)

qt.display_totals()
print('10 examples for types 1-8:')
for i in range(num_clusters):
    qt.display_motifs_for_type(i, num_egs=10)
    qt.display_answer_fragments_for_type(i, num_egs=10)
    qt.display_question_answer_pairs_for_type(corpus, i, num_egs=10)

Hope this was helpful, and thanks for raising the issue.


Revert "[Release] NNTrainer v0.5.1 release"

This reverts commit 258967dcad51caffde61a06f46bde7f6329622d9.
We cancel to release.
Signed-off-by: Seungbaek Hong<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #2320. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://ci.nnstreamer.ai/.


compare CIDEr optimization and training time with BUTD paper

Hi, thanks for your contribution! I have several questions:

I notice in Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering paper mentioned they complete CIDEr optimization in a single epoch as follows:

We have observed when decoding using beam search that the resulting beam typically contains at least one very high quality (and high scoring) caption – although frequently the best caption does not have the highest log-probability of the set. Therefore, we make one additional approximation. Rather than sampling captions from the entire probability distribution, for more rapid training we take the captions in the decoded beam as a sample set. Using this approach, we complete CIDEr optimization in a single epoch.

I wonder why don't you implement this method/trick since it would save huge amount of time! Do you have a plan on it? I haven't figured out the meaning of "take the captions in the decoded beam as a sample set" and how to implement it. Could you throw some light on it?

As for the time, BUTD paper says

Training using two Nvidia Titan X GPUs takes around 9 hours (including less than one hour for CIDEr optimization).

Using the BUTD model in this repo, training using 4 Telsa M40 GPUs takes around 9 hours and 40 minutes. (mine: 30 epoches cross entropy loss training with 4 M40 VS BUTD paper: 60 epoches cross entropy loss training + less than 1h for 1 epoch CIDEr optimization with 2 TitanX).
I think the original caffe implementation is much faster. Do you have any idea about it?

FYI (and others who might interested in the complete commands to get comparable BUTD model results), my training details are as follows:
# Training command:
CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --id topdown --caption_model topdown --input_json data/cocotalk.json  --input_label_h5 data/cocotalk_label.h5 --batch_size 100 --learning_rate 0.001 --learning_rate_decay_start 0 --checkpoint_path log_topdown --save_checkpoint_every 1100 --val_images_use 5000 --max_epochs 30 --rnn_size 1000 --input_encoding_size 1000 --att_feat_size 2048 --att_hid_size 512  --language_eval 1 --scheduled_sampling_start 0 --use_bn 1 --learning_rate_decay_every 4

I add --use_bn 1 refer to here.
I set the learning rate and optimization in the way a little different (--learning_rate 0.001 --learning_rate_decay_every 4) from https://github.com/ruotianluo/self-critical.pytorch/issues/31 and https://github.com/ruotianluo/ImageCaptioning.pytorch/issues/10 (they got good results but I didn't so I try to use larger learning rate). The performance of several models under my setting is
# Evaluate command:
################ Evaluate with the "best" model
CUDA_VISIBLE_DEVICES=0 python eval.py --dump_images 0 --num_images 5000 --model log_topdown/model-best.pth --infos_path log_topdown/infos_topdown-best.pkl --language_eval 1 --input_json data/cocotalk.json --input_label_h5 data/cocotalk_label.h5
# --beam_size 2 (default for evaluation)
{'bad_count_rate': 0.0004, 'CIDEr': 1.1148884011098006, 'Bleu_4': 0.3603408467287395, 'Bleu_3': 0.4694829933002577, 'Bleu_2': 0.607562860084038, 'Bleu_1': 0.766113185189927, 'ROUGE_L': 0.5653451933953932, 'METEOR': 0.2740137487261984, 'SPICE': 0.2055183043111108, 'WMD': 0.24464028099799806}

# Result (with --beam_size 5):
{'bad_count_rate': 0.0006, 'CIDEr': 1.1211965870603595, 'Bleu_4': 0.36460243862631503, 'Bleu_3': 0.4688452157360828, 'Bleu_2': 0.6018223507223015, 'Bleu_1': 0.7579787093708146, 'ROUGE_L': 0.5650916933775064, 'METEOR': 0.27389245734291195, 'SPICE': 0.2041505771510281, 'WMD': 0.24872474615271603}

################ Evaluate with the newest model at iteration 33000 (epoch 30)
CUDA_VISIBLE_DEVICES=0 python eval.py --dump_images 0 --num_images 5000 --model log_topdown/model-33000.pth --infos_path log_topdown/infos_topdown-33000.pkl --language_eval 1 --input_json data/cocotalk.json --input_label_h5 data/cocotalk_label.h5
# --beam_size 1
{'bad_count_rate': 0.0084, 'CIDEr': 1.1029445535221165, 'Bleu_4': 0.34359710944020483, 'Bleu_3': 0.4572806495576515, 'Bleu_2': 0.6022717203909068, 'Bleu_1': 0.7631783352576728, 'ROUGE_L': 0.5601634990771689, 'METEOR': 0.2697002153724845, 'SPICE': 0.20273633154399562, 'WMD': 0.23520550249768166}

# --beam_size 2 (default for evaluation)
{'bad_count_rate': 0.003, 'CIDEr': 1.1407954473531186, 'Bleu_4': 0.3674616063653743, 'Bleu_3': 0.47547687916365766, 'Bleu_2': 0.6128676587816714, 'Bleu_1': 0.7717025247216635, 'ROUGE_L': 0.5695801619395764, 'METEOR': 0.277191528089664, 'SPICE': 0.20851787975533756, 'WMD': 0.25000557793758726}

# --beam_size 5
{'bad_count_rate': 0.001, 'CIDEr': 1.1237630664163487, 'Bleu_4': 0.36522950227562834, 'Bleu_3': 0.4684915848374431, 'Bleu_2': 0.6020135937253345, 'Bleu_1': 0.759595847236902, 'ROUGE_L': 0.5648983177964815, 'METEOR': 0.2758252654067539, 'SPICE': 0.20507711989921631, 'WMD': 0.25113003325702343}

You mentioned in README that

Beam search can increase the performance of the search for greedy decoding sequence by ~5%.

But I only got slightly improvement (<1%) in a few metric in my experiment, is it reasonable and do you know why?

The BUTD use this learning rate schedule:

In training, we use a simple learning rate schedule, beginning with a learning rate of 0.01 which is reduced to zero on a straight-line basis over 60K iterations using a batch size of 100 and a momentum parameter of 0.9.

Could you tell me how to set it with your code?
In addtion to set --learning_rate 0.01 --optim sgdmom and
change
https://github.com/ruotianluo/self-critical.pytorch/blob/81186709358be84349343384166c6b177f7d8dec/misc/utils.py#L168-L169
to
    elif opt.optim == 'sgdmom':
        return optim.SGD(params, opt.learning_rate, opt.optim_alpha, weight_decay=opt.weight_decay, nesterov=True, momentum=0.9)

what else should I modify?

I actually didn't notice that. I may explore it later.
Due to the lagacy scheduled sampling issue, at training time I run the lstm step by step using a for loop. Using native decoder may help. I don't know. The time is also depending on the data loading.
I do think there should be more, I ran on a checkpoint and got 1.104->1.127.
4 I don't have that kind of learning rate decay. You can add such a lr scheduler.

Thanks! Hoping to see this feature soon!
What if I turn off scheduled sampling? It seems that the time doesn't decrease (I didn't perform strict ablation study). I did load data directly from source tsv feature files (instead of creating data/cocobu_fc, data/cocobu_att and data/cocobu_box) but I think it only increase the initial loading time. BTW, why don't you directly load tsv files? I remember you offer this option once in README but I cannot find it now. What's the disadvantage?
My mistake. The default beam size for evaluation is 2 but not 1. I've updated my post with newest results and strikethrough. One more question related to the results: I found that the model-33000.pth is usually better than model-best.pth under most metrics. Why the val_loss in cross-entropy training stage is inconsist with most metrics? The model under which iteration/epoch is the real best?
Gotcha~

2 it's not about turning it on or off. The current way of implementation, in order to use scheduled sampling, is not using the default implementation of taking a whole sequence as LSTM input, which may be faster.
Yes. Only the first epoch. I never supported directly loading tsv files.
3 Just choose the one with the best cider score. that's what I usually do.

Thanks!


Identify Features for Wire-frames for Datateers

Open in MURAL
CAMD 3-PI Roadmap - EPA CAMD Business Suite - ECMPS and AMPD

Acceptance Criteria:

When the team begins to build the prepackaged prototype, the interface build will reflect collected UX research.

Will be combined in to one epic for wireframes. Issue moved to other epic.


WebGPU: Allow to pass an offscreen canvas to the constructor

See https://forum.babylonjs.com/t/babylon-webgpuengine-and-offscreencanvas-roadmap-for-support/47312

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.


feat: s2i builder quarkus support

:gift: S2I Quarkus builder integration

The openjdk-17 S2I-enabled builder image does indeed appear to build and run Quarkus Functions when provided with a few magic environment variables.
/kind enhancement
Additional work towards #908

/hold for others
apart from Lance's comment /lgtm

/lgtm
/unhold


Added a "sequence" operator.

This will allow add_row_number and gl.SArray.from_sequence to be completely free.

how is this different than the range operator in operators/range.hpp?

oh. indeed.... they are the same thing.


AWS SDK does not work with ki shell

Describe the bug
I'm unable to use an AWS client from the interactive Kotlin shell ki.
Expected Behavior

I can construct a service client.

Current Behavior
When I construct a service client, I get the following exception:
[1] :dependsOn aws.sdk.kotlin:s3:0.4.0-alpha
[2] import aws.sdk.kotlin.services.s3.S3Client
[3] val s3c = S3Client { region = "us-east-2" }
java.lang.ExceptionInInitializerError
	at software.amazon.awssdk.crt.CrtResource.<clinit>(CrtResource.java:100)
	at aws.sdk.kotlin.crt.io.TlsContext.<init>(TlsContextJVM.kt:15)
	at aws.sdk.kotlin.runtime.http.engine.crt.CrtHttpEngine.<init>(CrtHttpEngine.kt:29)
	at aws.sdk.kotlin.services.s3.DefaultS3Client.<init>(DefaultS3Client.kt:30)
	at aws.sdk.kotlin.services.s3.S3Client$Companion.invoke(S3Client.kt:31)
	at Line_6.<init>(Line_6.kts:1)

Steps to Reproduce
Run ki shell, type in commands as specified in the Current Behavior section.
Possible Solution

Context

Your Environment

AWS Kotlin SDK version used: 0.4.0-alpha
Platform (JVM/JS/Native): JVM
Operating System and version: Ubuntu Linux 20.04

I was able to get the latest version of the SDK working in a Kotlin Script (which is what ki creates under the hood). ki itself still does not work because it's compiled using an old version of Kotlin. In general the project seems to be unmaintained.
Kotlin Script (works)


Truncate long package names / Statistics about all pkgs in General

Via https://github.com/tfiers/PkgGraph.jl/issues/86#issuecomment-1384618323

This one for long labels is nice too: CompilerSupportLibraries_jll [label="CompilerSuppo…_jll"]
(better than newline)

Statistics, to answer questions, like

[ ] "what is 80 percentile package name length?"

[ ] filtering out ~zero-user packages..

Maybe dependents ≥ 1
(I.e. implement

#87

Could query gh for nstars
Ooh, or nclones: that's actual install numbers.

This becomes (again) no longer just pkg graph visualization. Could factor out to another pkg, sure.
You'd need caching, probably. (Timestamped folder somewhere)
Some PkgGraph specific stable dir mayb.
This whole thing could be written in JavaScr.. ooh, could keep Julia, but save this in a gh-pages branch like way.
Scheduled to run regularly on actions.
(Maybe some smart caching exponential backoff like thang to not keep querying gh urls of dead pkgs)

Estimate of file size (is git / gh as db ok or not):
8000 pkgs
Ah, we don't need to store svg's, as wasm dot exists.
And dep storage can be compressed: only direct deps.
Hah what's diff over General then: nothing: you don't need your own db it's already there
So, a React app that, ig, uses the gh file api.
(Is that efficient? There's lotsa toml files to query)
Maybe a cron Action that converts the reg (dirs of TOML files) to an SQLite db? Small enough to send to browser or no?
BUTT: the killer feature is timeimports integration, and that really is Julia only


cursive blog post ref

@rultor merge

@rultor merge

@h1alexbel Done! FYI, the full log is here (took me 2min)


Full history of contract code migrations

Summary
Contracts can be migrated to different code versions. A full history of the changes would be helpful for audits and debugging issues.
Problem Definition
Follow up from comment
Proposal
Mandatory data would be codeID and AbsoluteTxPosition for each migration
This data should be available via rest/ cli as an ordered list.

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged
[ ] Contributor assigned/self-assigned

Sounds good. Let's do it for 0.9

As we currently store the init_msg with the codeInfo It may make sense to store the migrate_msg with this history

As we currently store the init_msg with the codeInfo It may make sense to store the migrate_msg with this history

You mean with the ContractInfo?
But yes, I agree, adding an array in the same ContractInfo struct seems like a fine solution as long as we can assume there will never be more than 10 or 20 migrations on a contract. I guess it just means each migration makes the contract more expensive to load.
I would go for this simple solution now and you can add a TODO issue to see about making this more performant if the information rarely needs to be read.

@alpe it seems you are close to finishing up all the gov stuff :tada:
If you feel blocked some day, you could also tackle this one for the release.


Laravel 10 asset helper

Laravel Version: in title
PHP Version: na
Database Driver & Version: na

Asset helper all explained here: https://laracasts.com/discuss/channels/laravel/laravel-10-asset-helper
Basically instead of:
<link href="http://localhost/laravel10/assets/css/dog/style.css" rel="stylesheet">

you get:
<link href="/assets/css/dog/style.css" rel="stylesheet">

if clicked on
http://localhost/assets/css/dog/style.css

The laravel10 part is missing.
Just use asset helper
Note I was just testing new version prior to release.

Your issue seems to be coming from https://github.com/laravel/laravel/pull/6089 and not related to the framework itself. Though I'm still unsure of what your actual issue is.

For new applications, the default asset URL has changed. This can still be configured by removing the new default value in config/app.php.
You do not need to make this change when upgrading an existing application to Laravel 10.

@timacdonald Thanks, I figured this out.  I wish you guys would remember it's a php framework, and not be so concerned about vite, which I do not use. But yes an easy fix in this case.


Failed resolving $ref pointer to #/responses/* path

Got SyntaxError after run swagger-cli bundle command.
$ swagger bundle -o tmp/api.json http://some-url/swagger.yaml
SyntaxError: Error resolving $ref pointer "http://some-url/api/Auth.yaml#/responses/error".
Token "responses" does not exist.

swagger.yaml
swagger: "2.0"
...
paths:
  allOf:
    - $ref: "api/Auth.yaml"
responses:
  error:
    description: Error reponse type.
    schema:
      $ref: "#/definitions/ErrorResponse"
definitions:
  ErrorResponse:
    $ref: "definitions/ErrorResponse.yaml"
...

api/Auth.yaml
/login:
  post:
    ...
    responses:
      default:
        $ref: "#/responses/error"

According to Spec 2.0 this usage is valid and could be successfully parsed by official swagger-ui.
Is there any option to disable resolving in-file $refs?

$ref paths should be relative to the containing file, not the root file.  So, in your case, the $ref in api/Auth.yaml should be swagger.yaml#/responses/error.
Swagger-UI supports root-relative references for backward-compatibility reasons, even though it's not valid per the spec.


Reuse retry topic for the maxInterval delay of exponential backoff

Related to the discussion below:
https://github.com/spring-projects/spring-kafka/discussions/2484
Expected Behavior
In order to allow the configuration of an exponential backoff policy that keeps trying for a long time (say some hours), to have some way to use a single retry topic for the attempts corresponding to the maxInterval delay. This makes it more viable to configure the policy to keep trying for a long time because a lot of topics are not needed.
Current Behavior
When using exponential backoff, the number of needed retry topics is always the configured maxAttempts minus 1.
Context
For instance, when configuring the exponential backoff with initialInterval=1000, multiplier=2, and maxInterval=16000, in order to keep trying for one hour, one would need to configure maxAttempts as 229, and by default the needed retry topics would be:

-retry-1000
-retry-2000
-retry-4000
-retry-8000
-retry-16000-0
-retry-16000-1
-retry-16000-2
...
-retry-16000-224

When using the strategy that reuses the retry topic for the same intervals, in the same configuration above the needed retry topics would be only 5:

-retry-1000
-retry-2000
-retry-4000
-retry-8000
-retry-16000

@jgslima what's the reason you don't want to just use a single retry topic for all intervals (like the single topic option for fixed delays)? That's what we'd like to do.
@garyrussell, anyone: why is the single retry topic option only supported for fixed backoff policies and not exponential or other sleeping backoff policies? Looking at the code I see it tracks the next sleep interval in a kafka header so doesn't require that it be part of the topic name.

It is not possible to use the single retry option for backoffs that may have distinct sleep times for distinct records. The general algorithm only works with the assumption that, in a partition (actually in the topic as a whole), records with higher offsets have should not be processed before records whith lower offsets. Because the Consumer is paused based on the sleep time of the next record.
The motivation to have this new kind of policy is to allow a configuration where you can have the first retries done quickly (with a low interval), keep retrying for a large amount of time (say 4 or 6 hours), but without having to have an excessive amount of retry topics. Currently, when using exponential backoff, you need a large amount of retries topics for this. See how I explained in the issue description.

It is not possible to use the single retry option for backoffs that may have distinct sleep times for distinct records. The general algorithm only works with the assumption that, in a partition (actually in the topic as a whole), records with higher offsets should not be processed before records whith lower offsets. Because the Consumer is paused based on the sleep time of the next record.

Ah right, I'd forgotten about the problem w/ mixing records w/ different sleep times, thanks.

Is it possible to port this to 2+ version as from what I understand spring kafka 3+ uses java 17. Is there a version of spring kafka 3 that works with java 11?

Thanks. But would it be possible to please publish java 11 jars for 3+ version. I could compile and use it myself but I am sure there are others in my position who would still be using java 11 and will not be able to use 3+ version. Thanks a lot.

No; 3.0.x REQUIRES Java 17; you can't compile it with Java 11.

Here is a possible work around for 2.9.x users:
@SpringBootApplication
@EnableScheduling
public class Kgh2496Application {

	public static void main(String[] args) {
		SpringApplication.run(Kgh2496Application.class, args).close();
	}

	@Bean
	ApplicationRunner runner(KafkaTemplate<String, String> template, KafkaAdmin kafkaAdmin,
			KafkaListenerEndpointRegistry registry) {
		return args -> {
			// stop the unused containers
			registry.getListenerContainer("kgh2496-retry-2000-1").stop();
			registry.getListenerContainer("kgh2496-retry-2000-2").stop();
			// delete the extra topics
			try (AdminClient admin = AdminClient.create(kafkaAdmin.getConfigurationProperties())) {
				admin.deleteTopics(List.of("kgh2496-retry-2000-1", "kgh2496-retry-2000-1")).all().get(10,
						TimeUnit.SECONDS);
			}
			template.send("kgh2496", "foo");
			Thread.sleep(30_000);
		};
	}

	@Bean
	KafkaTemplate<String, String> singleLastTopicTemplate(ProducerFactory<String, String> pf) {
		Pattern pat = Pattern.compile(".*-retry-.*-.*");
		return new KafkaTemplate<>(pf) {

			@Override
			protected ListenableFuture<SendResult<String, String>> doSend(ProducerRecord<String, String> pRec) {
				Matcher matcher = pat.matcher(pRec.topic());
				if (matcher.matches()) {
					ProducerRecord<String, String> newRec =
							new ProducerRecord<String, String>(pRec.topic().replaceAll("-[0-9]+$", "-0"),
							pRec.partition(), pRec.timestamp(), pRec.key(), pRec.value(), pRec.headers());
					return super.doSend(newRec);
				}
				else {
					return super.doSend(pRec);
				}
			}

		};
	}

}

@Component
class Listener {

	@RetryableTopic(attempts = "6", backoff = @Backoff(delay = 1000, multiplier = 1.5, maxDelay = 2000),
			kafkaTemplate = "singleLastTopicTemplate")
	@KafkaListener(id = "kgh2496", topics = "kgh2496")
	void listen(String in, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
		System.out.println(in + " from " + topic);
		throw new RuntimeException("test");
	}

	@DltHandler
	void handle(String in, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
		System.out.println(in + " from " + topic);
	}

}

foo from kgh2496
foo from kgh2496-retry-1000
foo from kgh2496-retry-1500
foo from kgh2496-retry-2000-0
foo from kgh2496-retry-2000-0
foo from kgh2496-retry-2000-0
foo from kgh2496-dlt

This is super helpful. Thanks a lot!


options.ClientId options.ClientSecret Configuration information I want to run in the process of assignment how to achieve?

services.AddAuthentication()
.AddWeixinAuthentication(options =>
{
options.ClientId = "[you app id]";
options.ClientSecret = "[you app secret]";
});

options.ClientId options.ClientSecret    Configuration information I want to run in the process of assignment how to achieve?
I tried a lot of ways does not work, I do not know how to get, can help me think about it?

Sorry, I don't understand the question. Try rephrasing it.

I saas application, different site configuration is not the same, I do not know how to configure @Tratcher

For your SAAS application do you deploy separate instances for each customer? If so then then the customer specific information should be read from Configuration like in this sample:
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/facebook-logins?tabs=aspnetcore2x#configure-facebook-authentication
If you're running multiple customers in one instance and want to select the configuration per request then it gets more difficult.

@HaoK , I believe you are working on a sample that shows how to do multi-tenancy of auth configuration (that is, different settings used for different requests, based on tenants).


Middleware Manager - Summary Views no longer provide Downloads links

Middleware Manager Summary views for Providers, Domains, Servers, Deployments, Datasources, Messagings  no longer provide Downloads links (Downloads links are missing).
MIQ version tested: master.20170807204758_

@miq-bot add_label providers/hawkular

I think this issue belongs more to the ui repo -  @karelhala ?

@abonas yes, that is correct. However is this really an issue? I can see on all given screens that there is button for download. However you have to be at screen with multiple entities, it does not make sense to download one provider and MiQ does not allow to download summary view informations.

from @mattmahoneyrh description it sounded like a regression. also without a screenshot a bit hard to understand the exact expected location of this bug. @mattmahoneyrh ?

@miq-bot move_issue manageiq-ui-classic


:globe_with_meridians: Add Bulgarian translation

Not sure if this page should also be updated to reflect the actual number of translations (probably for a separate PR, anyway).
Also, thank you for this great theme! ⭐

Thanks @DanWiseProgramming. May I ask you to please include in the PR the change to the language table in the documentation (in alphabetical order)? Thanks in advance and sorry for the delay

@DanWiseProgramming nevermind I will add it to the docs, thanks for the contribution

Hi @nunocoracao ,
Sorry, just saw your comment now. Thanks for updating the docs!


Add isHidden alias for isNotVisible

Can we have a straight forward alias named isHidden for isNotVisible

yes, we could. problem is that isVisible() never really worked properly for all cases and we're considering dropping it completely 😅


[Bug] [worker] In cluster mode, the worker cannot work and does not execute tasks

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
生产环境：2台master，2台worker
2.0.6版本，生产环境运行一段时间后出现worker不能工作，升级2.0.7后问题依旧。 停掉一组worker与master，仅运行一组master与worker则正常。
t_ds_process_instance/t_ds_task_instance这两个表记录不增加，t_ds_command一直新增记录就是不执行。
查看dolphinscheduler-master与dolphinscheduler-worker日志，未发现error与warn
版本
2.0.6
2.0.7
以上2个版本均存在问题
What you expected to happen
worker正常执行，t_ds_process_instance/t_ds_task_instance两个表增加记录
How to reproduce
2.0.6重启多次均无效，升级到2.0.7后也不行。
Anything else
No response
Version
2.0.x
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

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

hi @guoxu0514, could u please show more log details?

Please use english to describe the issue. Thanks. @guoxu0514

No any exception information in the log

hi @guoxu0514, could u please show more log details?

No any exception information in the log

hi @guoxu0514, could u please show more log details?

@DarkAssassinator No any exception information in the log

Please use english to describe the issue. Thanks. @guoxu0514

@SbloodyS already updated


Fix JenkinsCI

Description
Fix Jenkins CI

Coverage increased (+0.02%) to 67.633% when pulling 570d4f53e825fa6406ed98d68bf5521aafd7385b on FIX_JENK into f42ff839f0684397e242eca7510f2b67c04851ea on master.


[BUG] DlSelect - selected event does not work as expected

Had to use @change instead of @selected to run a function on selection.
this is weird as both should be handled same way.

maybe we should clean up the dl-select events.


Error: "Could not determine the dependencies of task '::dokkatooGenerateModuleHtml'."

I'm trying to add Dokkatoo generation to this Android project (see the feat/dokkatoo branch of my fork). However, running the :dokkatooGeneratePublicationHtml task results in the following Gradle error:
Expand to view error

Could not determine the dependencies of task ':material3:dokkatooGenerateModuleHtml'.
> Could not resolve all task dependencies for configuration ':material3:releaseCompileClasspath'.
   > The consumer was configured to find a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm'. However we cannot choose between the following variants of project :core:
       - Configuration ':core:releaseApiElements' variant android-classes-jar declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-classes-jar' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
               - Provides its elements packaged as a jar but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-lint declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-lint' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
               - Provides its elements packaged as a jar but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-lint-local-aar declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-lint-local-aar' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-lint-model-metadata declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-lint-model-metadata' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-lint-variant-dependencies-model declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-lint-variant-dependencies-model' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-lint-variant-dependencies-partial-results declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-lint-variant-dependencies-partial-results' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-manifest declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-manifest' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-renderscript declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-renderscript' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant android-symbol-with-package-name declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'android-symbol-with-package-name' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
       - Configuration ':core:releaseApiElements' variant jar declares a component for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'release', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':
           - Unmatched attributes:
               - Provides attribute 'artifactType' with value 'jar' but the consumer didn't ask for it
               - Provides attribute 'com.android.build.gradle.internal.attributes.VariantAttr' with value 'release' but the consumer didn't ask for it
               - Provides a library but the consumer didn't ask for it
               - Provides its elements packaged as a jar but the consumer didn't ask for it

(I've also experienced this issue with another project that is yet to be synced)
The version of Dokkatoo used is 2.0.0. Here's a Gradle Build Scan if necessary

Thanks for the report, and the example project. I've checked it out and I can reproduce the problem. I think it's something to do with the :material3 subproject having a library variant.
// material3/build.gradle.kts

// ...

kotlin {
    // ...

    androidTarget {
        publishLibraryVariants("release")
    }
}

I suspect the fix will be setting 'artifactType' to 'jar' somewhere in DokkatooAndroidAdapter, but I'm not sure where. I'll try experimenting, but I'm not an Android developer so help would be appreciated!

I think this is a Gradle bug https://github.com/gradle/gradle/issues/27265. For some reason Gradle forgets about the 'artifactType' being set to 'jar'.

Hi, any update on this issue? currently, I have a custom build variant in my library modules.

hi @MirzaUkas - I don't have any updates.
Dokkatoo needs to get all of the compile-time dependencies of a project. For Android project here's the code that does it:
https://github.com/adamko-dev/dokkatoo/blob/87679993a6504e16a8fabd6836471cdafd467bdf/modules/dokkatoo-plugin/src/main/kotlin/adapters/DokkatooAndroidAdapter.kt#L169-L213
However Gradle seems to get confused and it can't discriminate between all the different options. It also ignores lenient(true) which is supposed to ignore these errors.
I'd be grateful if you could take a look! Maybe Dokkatoo isn't using the Gradle API correctly. And I'm not an Android developer, so maybe there's a better way to fetch the dependencies?
As a workaround, maybe I could disable this bit of code, or catch & log the error. But that would probably result in Error class: unknown class appearing in the generated docs.

I've done a little bit more digging!
There are apparently two problems:

the Could not determine the dependencies of task ':dokkatooGenerateModuleHtml' error is triggered in DokkatooKotlinAdapter, not in DokkatooAndroidAdapter as I thought!
https://github.com/adamko-dev/dokkatoo/blob/80cc32cff60cecfa5ad915de1244b6c3a3879f0c/modules/dokkatoo-plugin/src/main/kotlin/adapters/DokkatooKotlinAdapter.kt#L299-L300

If I comment out compilation.compileDependencyFiles then generation succeeds (but of course the docs contains Error class: unknown class )

DokkatooAndroidAdapter isn't fetching all JARs. This is where my lack of Android knowledge will show. How can I fetch all the JARs/Classes used to compile an Android source set? What's the difference between an AAR and a JAR?

What's the difference between an AAR and a JAR?

An AAR provides additional resources (strings/dimensions/string arrays/etc, styles, layouts, drawables, etc), any additional manifest declarations (e.g. a library might want to declare a runtime permission, which can then be added into the library's AndroidManifest.xml file to be merged into the resulting Android application), and other Android-specific stuff I might not be aware of.

How can I fetch all the JARs/Classes used to compile an Android source set?

I think this might be possible if you hook into the AndroidComponentsExtension (or its variants, e.g. LibraryAndroidComponentsExtension for modules that apply com.android.library, ApplicationAndroidComponentsExtension for modules that apply com.android.application) that Google provides as part of AGP, where you can access lazy configuration-compatible properties/providers via the onVariants DSL? They have a section in the docs on hooking up to the artifacts that AGP would produce. Personally, I'm not certain if you can actually access the data though, but hope that helps

Thanks @EdricChan03! The AARs don't sound relevant for Dokka so I can leave them out.
I think accessing the compilation of an Android project works fine at the moment. The bigger problem is getting the compile-time dependencies as JARs with Java classes.
Looking at your example project, I can see in TopAppBarMenuItems the Modifier class. In IntelliJ I can ctrl+click on that class and then see where it comes from

/Users/me/.local/state/gradle/caches/transforms-3/78818b83fcc8d01bda1c8f99abed49cb/transformed/ui-release/jars/classes.jar
The question is how do I get that file...
As a very quick and hacky example, if you copy this into the project's build.gradle.kts, this roughly shows what Dokkatoo is doing to fetch the compile-time classpath for Kotlin projects.
afterEvaluate {
  val kotlinCompileDependencyFiles =
    kotlin.targets.flatMap { target ->
      target.compilations.flatMap { compilation ->
        configurations.named(compilation.compileDependencyConfigurationName)
          .map {
            it.incoming
              .artifactView {
//            lenient(true)
                attributes {
                  attribute(Attribute.of("artifactType", String::class.java), "jar")
                }
              }
              .artifacts
              .artifactFiles
          }
          .get()
      }
    }
  println(kotlinCompileDependencyFiles.joinToString("\n") { " - ${it.name}" })
}

which prints

 - kotlin-stdlib-jdk8-1.9.10.jar
 - kotlin-stdlib-jdk7-1.9.10.jar
 - kotlin-stdlib-1.9.10.jar
 - annotations-13.0.jar
 - kotlin-stdlib-jdk8-1.9.10.jar
 - kotlin-stdlib-jdk7-1.9.10.jar
 - kotlin-stdlib-1.9.10.jar
 - annotations-13.0.jar
 - kotlin-stdlib-jdk8-1.9.10.jar
 - kotlin-stdlib-jdk7-1.9.10.jar
 - kotlin-stdlib-1.9.10.jar
 - annotations-13.0.jar
 - kotlin-stdlib-jdk8-1.9.10.jar
 - kotlin-stdlib-jdk7-1.9.10.jar
 - kotlin-stdlib-1.9.10.jar
 - annotations-13.0.jar
 - kotlin-stdlib-jdk8-1.9.10.jar
 - kotlin-stdlib-jdk7-1.9.10.jar
 - kotlin-stdlib-1.9.10.jar
 - annotations-13.0.jar
 - core-metadata-1.0.jar
 - material3-metadata-1.5.3.jar
 - material-ripple-metadata-1.5.3.jar
 - foundation-metadata-1.5.3.jar
 - animation-metadata-1.5.3.jar
 - animation-core-metadata-1.5.3.jar
 - foundation-layout-metadata-1.5.3.jar
 - material-icons-core-metadata-1.5.3.jar
 - ui-metadata-1.5.3.jar
 - ui-text-metadata-1.5.3.jar
 - ui-graphics-metadata-1.5.3.jar
 - ui-unit-metadata-1.5.3.jar
 - runtime-saveable-metadata-1.5.3.jar
 - ui-geometry-metadata-1.5.3.jar
 - runtime-metadata-1.5.3.jar
 - ui-util-metadata-1.5.3.jar
 - kotlinx-datetime-metadata-0.4.0-all.jar
 - skiko-metadata-0.7.77.jar
 - kotlinx-coroutines-core-metadata-1.6.4-all.jar
 - kotlinx-serialization-core-metadata-1.3.2-all.jar
 - atomicfu-metadata-0.17.3-all.jar
 - kotlin-stdlib-1.8.20.jar
 - kotlin-stdlib-common-1.9.10.jar
 - annotations-13.0.jar

And for some reason it's missing ui-android.

androidComponents.onVariants {} doesn't seem to help either...
Copy this into an Android project's build.gradle.kts and run gradle logAndroidComponentsCompileClasspath
// build.gradle.kts

/** Aggregate compile classpath from all Android components */
val androidComponentsCompileClasspath = objects.fileCollection()

androidComponents {
  onVariants { variant ->

    fun collect(artifactType: String) {
      val artifactTypeFiles = variant.compileConfiguration.incoming
        .artifactView {
          attributes {
            attribute(
              Attribute.of("artifactType", String::class.java),
              artifactType,
            )
          }
//          withVariantReselection()
//          lenient(true)
        }
        .artifacts
        .resolvedArtifacts
        .map { artifacts -> artifacts.map(ResolvedArtifactResult::getFile) }

      androidComponentsCompileClasspath.from(artifactTypeFiles)
    }

    collect("android-classes-jar")
    collect("android-lint")
    collect("android-lint-local-aar")
    collect("android-manifest")
    collect("android-renderscript")
    collect("android-symbol-with-package-name")
    collect("jar")
    collect("r-class-jar")
  }
}

val logAndroidComponentsCompileClasspath by tasks.registering {
  group = project.name
  val cc = androidComponentsCompileClasspath
  inputs.files(cc).withPropertyName("cc")
  doLast {
    println(cc.joinToString("\n") { " - ${it.invariantSeparatorsPath}" })
  }
}

I have a lead: one of the JARs above does contain the required file! However, it's not being passed to Dokka. In fact I only see one classes.jar being passed to Dokka. Maybe jars with duplicate names are being de-duplicated somewhere?

hi @EdricChan03 and @MirzaUkas, I've made some adjustments to how Dokkatoo handles Android projects in #150. Could you

hi @EdricChan03 and @MirzaUkas, I've made some adjustments to how Dokkatoo handles Android projects in #150. Could you check the 2.1.0-SNAPSHOT to see if it helps?
You'll have to add Maven Central snapshots as a plugin repo:
repositories {
  // add Maven Central snapshot repository
  maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") {
    name = "MavenCentralSnapshots"
    mavenContent { snapshotsOnly() }
  }
}

I expect that you won't receive an error about Gradle resolution, however you might see 'unknown class' in the rendered docs.

Hi, after upgrading to 2.1.0 I don't get this issue again. I can run dokkatooGeneratePublicationHtml with multivariant module/library. Thank you @aSemy

That's wonderful to hear, thanks for the update @MirzaUkas!


[eroprofile] fix page skipping in albums

Before submitting a pull request make sure you have:

[x] At least skimmed through adding new extractor tutorial and youtube-dl coding conventions sections
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8

In order to be accepted and merged into youtube-dl each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense

What is the purpose of your pull request?

[x] Bug fix

Description of your pull request and other information
It seems that the refactor done to my code in #658  skips pages. Running the test fails on current master:
[EroProfile:album] ...: Downloading playlist page 1
[EroProfile:album] ...: Downloading playlist page 2
[EroProfile:album] ...: Downloading playlist page 3
[...]
[EroProfile:album] ...: Downloading playlist page 8
[EroProfile:album] ...: Downloading playlist page 1
[EroProfile:album] ...: Downloading playlist page 27
[info] Writing playlist metadata as JSON to: ...

AssertionError: False is not true : Expected at least 486 in playlist, but got only 193

This seems to happen, because the new code presumes all page links are on page one. However, this is is not the case. Instead, page one contains a couple pages near it, but then "Next" and "Last" buttons.
This PR restores the original behavior: use the links to find the last page number, and then iterate all the way to it by generating the page URLs.

oh, sorry. I was sure I tested it though 🤔

Thanks for the fixes @pukkandan. It now work correctly on master.


Crash upon custom head being rendered in inventory GUI

When my head (username: Confabulate if it's needed) is rendered in an inventory GUI when I have custom model rendering on, it immediately crashes the game. The crash log is provided below:
crash-2023-12-29_15.53.59-client.txt

OS: Arch Linux x86_64
GPU: Intel UHD Graphics 630
Mod loader: Fabric
Mod list: ask for the list
Game version: 1.20.2
Mod version: 0.6.13a

Had the same problem with Sodium.
Downgrading the Sodium version fixes the problem.
Custom head work without crashes only in Sodium version 0.5.3 and lower.

Tested it on 1.20.2 Fabric (fabirc v.0.15.0)
Tested with cpm and sodium mod only.
The game crashes when rendered Custom head is displayed in the gui or on the armor stand.
( If the custom head isn't visible or the model doesn't load, the game won't crash. )

can replicate as well--same exact stacktrace. downgrading to 0.5.3 sodium does indeed fix the problem


Routing and 404 file not found

Any solution to this? My starting url works to navigate around, but sharing a url with a friend, gives the github 404 file not found error message. You can test it here http://tech-flex.com/RSMuseum-ng/ Navigate to a different page and press f5

@amivit Github pages does not act as a normal server do, it just host your files on the base address.
To fix this simply use the hash location strategy
so instead of  http://tech-flex.com/RSMuseum-ng/  which is unknown to github
It will be http://tech-flex.com/#/RSMuseum-ng/

Nope, you don't need to change the strategy.
See this wiki entry:
https://github.com/angular-buch/angular-cli-ghpages/wiki/FAQ#why-is-the-routing-not-working-correctly-on-hard-reload-specific-to-github-pages-only
But anyway, I will start to implement a solution now. Nobody reads the wiki! ;-)

Please test<EMAIL_ADDRESS>

Most importantly<EMAIL_ADDRESS>works perfectly, thank you! I also tried copying the index.html to 404.html, as described in the previous wiki article. That worked too, but the automation from 0.5.1 is lovely.