Define rules for CFU versioning

No rules are currently defined for when and how to increase a version. I propose we use semantic versioning (https://semver.org/) as that is relatively well understood. Technically I think we should replace the decimal 100 for version 1.00 with a 24-bit vector 24'hxxyyzz where roughly xx=major version (for incompatible changes), yy=minor version (for feature additions) and zz=revision (for non-functional changes, fixes, clarifications etc)

Thanks Olof! In this commit (https://github.com/grayresearch/CFU/commit/4226439e78e93cf0a9b20dac5c646c1859782a09) I renamed CFU_VERSION to CFU_LI_VERSION to clarify it defines the CFU-LI spec version, not a version of the CFU component itself. I adopted your suggestion of using semantic versioning version numbers. (I've been using those major.minor.revision in software since 1987.) I also added a new Introduction section 1.6 Versioning which is the start of a much longer discussion of versioning of the specs themselves, and specific custom interfaces, and implementations, how that works, and how it is supposed to preserve robust composition over time. Please take a look and I'd welcome more feedback and questions.

Looks great! Closing this


Badges of previous build not displayed during job execution.

With the new version (1.12+build.201704111018) the badges of the previous build are not displayed on the current running tile.
This is a very unfortunate behaviour for long & frequent running jobs, because there is only a very very short timespan for batches to be shown.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Hi @Xyaren, yeah my PR #301 "fixed" that (see issue #287). I suppose different people expect different things, it will be hard to get a single behavior which pleases everybody.
If you are using pipelines, try to add the badges as soon as you have the information available. Another option could be to copy the badges from the previous build at the beginning of the job and delete/re-create them with the new values at the end of the build.

Maybe add an option to the View settings where you can enable/disable the "clearing" of the badges on  job start ?

Agree with @Xyaren, new behaviour is pretty useless, as long as we have color of previous build still showing on progress (red if previous build has failed), we need to see badges from previous build because usually badges show us reason of previous build failure. I guess #287 isn't an issue and #301 should be rolled back or be an option in settings.

Also cleaning of badges can be done as first step of build which is mush easier than copying all of badges from previous build now.


increase timeout (read and write) in /etc/influxdb/config/config.toml

in the /etc/influxdb/config/config.toml the tiemout are really short (10s).
reporting-disabled = false
engine-path = "/data/influxdb2/engine"
bolt-path = "/data/influxdb2/influxd.bolt"
sqlite-path = "/data/influxdb2/influxd.sqlite"
http-read-timeout = "10s"
http-write-timeout = "10s"

can you increase those values to 60 second for exemple, i need this for doing backups and eventually restores
thanks in advance

good point.. i will address your requests by tomorrow...

Please give it a try

It seems better :
previous backup ended like this
2023/08/17 23:05:03 INFO: Backing up TSM for shard 764
2023/08/17 23:05:03 INFO: Backing up TSM for shard 775
2023/08/17 23:05:03 INFO: Backing up TSM for shard 788
2023/08/17 23:05:03 INFO: Backing up TSM for shard 804
2023/08/17 23:05:03 INFO: Backing up TSM for shard 816
2023/08/17 23:05:03 INFO: Backing up TSM for shard 2
Error: failed to backup bucket data: failed to download snapshot of shard 2: unexpected EOF

actual backup goes on :
2023/08/18 12:20:41 INFO: Backing up TSM for shard 749
2023/08/18 12:20:41 INFO: Backing up TSM for shard 764
2023/08/18 12:20:42 INFO: Backing up TSM for shard 775
2023/08/18 12:20:42 INFO: Backing up TSM for shard 788
2023/08/18 12:20:42 INFO: Backing up TSM for shard 804
2023/08/18 12:20:42 INFO: Backing up TSM for shard 816
2023/08/18 12:20:42 INFO: Backing up TSM for shard 2
2023/08/18 12:20:54 INFO: Backing up TSM for shard 168
2023/08/18 12:21:11 INFO: Backing up TSM for shard 178
2023/08/18 12:21:28 INFO: Backing up TSM for shard 188
2023/08/18 12:21:46 INFO: Backing up TSM for shard 198

actually still in progress


Proposal: Allow multiple JDBC Source Monitoring

This is just to initialize a proposal, the main code should work but needs style check, test case and document.
Brief description of changes applied
Change JDBC Monitoring to support multiple source (Instead of the single source that currently support)
Reason
We use multiple database implementation for our CAS, some for attribute some for authentication.
However, only single database can be monitor as of CAS 6.2.x, see: https://apereo.github.io/cas/development/configuration/Configuration-Properties.html#database-monitoring
Hence, I would like to propose if possible, to expand the number of JDBC monitor target. Just like LDAP monitoring as seen here: https://apereo.github.io/cas/development/configuration/Configuration-Properties.html#ldap-server-monitoring
Any possible limitations, side effects, etc
Breaking changes:
cas.monitor.jdbc.xxxx properties needs to change to cas.monitor.jdbc[0].xxx
Test cases and follow up
Will update test cases & update document if this proposal is ok
I understand that it is near 6.3.x launch. Therefore if the idea is accepted but schedule is tight, then this feature can be push back to next release.
Many thanks!

Will update test cases & update document if this proposal is ok

Sure. LGTM.

I understand that it is near 6.3.x launch. Therefore if the idea is accepted but schedule is tight, then this feature can be push back to next release.

We will not be merging features during code freezes, which is the period between the last RC and the final release. This will naturally go into some form of 6.4.x


Input Validation for each Selected Character Type

GIVEN I need a new, secure password
WHEN I answer each prompt
THEN my input should be validated and at least one character type should be selected

After reaching out to a TA, they helped clarify that I should join the arrays into one based on the users input.
I was attempting to figure out all of the possible outcomes that the user could make rather than making it easier on me and the code by simplifying the users actions.
I will be attempting to maneuver code around to accommodate these changes in making it more fluid.
That being said the code is able to take a users input and associate it into the userPass array.


Entity Extraction doesn't work for sample

Following to your page, we made a sample chat bot.  But the entity extraction in that chat bot doesn't work.
Is this bug or do I need to change anywhere?

ドキュメントの詳細
⚠ このセクションを編集しないでください。 docs.microsoft.com で必須です ➟ GitHub の問題のリンク。

ID: 598df6b5-6691-3a4c-8112-ec6aec43d175
Version Independent ID: 0a34a661-5035-3946-c2e4-a7ce5e697832
Content: クイックスタート: Microsoft Teams でボットを作成して展開する - Power Virtual Agents
Content Source: power-virtual-agents/teams/fundamentals-get-started-teams.md
Service: power-virtual-agents
GitHub Login: @iaanw
Microsoft Alias: iawilt

Thanks for your comment, @Katomasa0913. This issue has been assigned to the doc author for review.

Hi @Katomasa0913, are you referring to this section?

If so, what is happening for you instead?

Thanks, forgive me too late to answer.
That's so.
When the user ask national holidays, the bot doesn't bypass the question. The bot show the selection of vacation type.
Our edition is Japanese.
Sincerely,

Thank you for your comment.
I think that the article in English is accurate, but when translating to Japanese, the search word is little bit changed.  So the entity extraction doesn't work for us.
So I changed the search word was shorter, the entity extraction worked.
This article was only machine translated, but not tested in Japanese.
Anyway, thanks a lot for my bad english.
Sincerely,

@Katomasa0913 Ahh that makes sense. I'm going to reopen this issue so that I can bring it up to our localization team.
  I'm including @Dealgan12 who manages the translation of PVA documentation to follow thru and this this issue addressed.  Thanks once again for raise the issue !

@Katomasa0913 @v-alarioza @vinceno I have send this onto our localization supplier to review and update. Will let you know when completed.

@Dealgan12 Do you have any updates on this?

@v-alarioza This is the response from our Japanese linguist
No fixing will be done based on the following reason.
In this article, the source introduces how to build a chat bot but does not list the 2 search words in singular and plural forms "national holiday" and "national holiday". All the 9 occurrences of "national holidays" are all plural forms. And the linguist confirms that they are all translated consistently into "祝日"("holiday" in English). In ja-jp, there is no differences between singular and plural nouns, so the translation needs no fixing for this article according to the linguist.
The linguist suggests the following two different translation for the 2 search words to build the chat bot successfully.
national holiday: 祝日 (単一)     back translation: national holiday (single)
national holidays: 祝日 (複数)     back translation: national holiday (several)
Please tell us if any other fixings are needed.


Readme - do not merge

prep

@jianghaolu - please update the Maven dependency version number and snapshot version number for Azure Management Libraries for Java

@jianghaolu  - changed the release version number to 1.2.1 and snapshot number to 1.2.2-SNAPSHOT. However it is unclear if we should continue to point the snapshots to 1.0.5-SNAPSHOT for client runtime, authentication, etc.

I updated the snapshots to 1.1.1-SNAPSHOT for client runtime, authentication, etc. after talking to Anu.


HTML:5 Snippets. "!" isn´t works anymore on VScode ubuntu 22.04

Does this issue occur when all extensions are disabled?: Fresh instalation, no extra extensions

VS Code Version: 1.69.0
OS Version: Ubuntu 22.04

Steps to Reproduce:

open a new project
create a index.html
start with "!" (should start with html script)

we still can use "html" and chose emmet option, but the "!" shortcut isnt workin anymore
hoppe it can be helpful

Duplicate of https://github.com/microsoft/vscode/issues/154375


Cache latest results

@Mic92
What about a separate db table for storing a largest known number and we'd only check the latest entries and update this largest value? Would that work?

Yes, that was what I have meant by using procedures

Currently implemented as a materialized view in #167.

Database issue, any further discussion in #167.


Authentication Failed with cross-signed ISRG Root X1 on Windows Server

We have a number of Windows Servers from 2012 > 2019 all running win-acme. As of yesterday the DTS Root CA X3 certificate expired which is causing issue with our <7.1.1 Android devices.
For a number of our servers we have to support the R3 > ISRG Root X1 > DST Root CA X3 chain for the above reasons.
To get IIS to serve this chain over the newer R3 > ISRG Root X1 chain we had to move the newer chain to Untrusted.
This results in the server issuing the correct cross-signed chain however the server can now no longer authenticate with  https://acme-v02.api.lets... because it cannot validate the LE cert for this endpoint!
Is there anyway around this?

The fix for broader client compatibility is to change CA to ZeroSSL etc. I tried the CCS store idea as well but it didn't make a difference in my testing.
Another alternative would be to use Caddy, nginx or Apache as a front end for IIS, with whichever one of those doing that actual TLS termination nd proxy back to your read service. These services don't use the window trusts store and instead build a simple chain from the certificate pem files.


Select Card options show in default language instead of translation

Describe the bug
The select menu does not show the options in the correct language, while the state in the card indeed does show it correctly by default.
I can select "sweeping and mopping" and then the state shows automatically "Saugen und Wischen" (in German, which is the language I use in Home Assistant). So the state is shown correctly but the options not.
To Reproduce
Choose some entity where the options you can select have some translated options and create a bubble card.
This happens with any entity that has translations.
Expected behavior
I expect the options to show the translated version instead of the default language, as well as it does in the state.
Screenshots

YAML
YAML code of the card I used.
type: custom:bubble-card
card_type: select
entity: select.x40_ultra_complete_cleaning_mode
show_state: true
show_last_changed: false
show_attribute: false
force_icon: false
show_icon: true
scrolling_effect: true
name: Cleaning Mode
columns: 2
card_layout: normal

Informations (please complete the following information):

Bubble Card version: 2.3.2
Home Assistant version: 2024.12.2

Thank you! 🍻

Was this also like this in v2.3.0?
Hi
Due to some issues identified in the latest releases (v2.3.1, v2.3.2, v2.3.3), I have decided to mark them as pre-release versions. These updates may not be fully stable and could cause unexpected behavior. I strongly recommend rolling back to the latest stable release, v2.3.0, until further notice. This version has been thoroughly tested and provides a reliable experience. Thank you for your understanding and patience as we work to ensure a future updates that meets the highest standards of quality.

How to rollback

Click on the integration  in HACS.
Click on the three dots icon top right of the page.
Select Redownload.
Choose the version you want from the dropdown list.
Click Download.

I don't have this issue:
In Dutch:

In English:

@MrBearPresident that's indeed translated automatically for the HVAC modes, but I haven't found a way yet to translate every attribute lists. I will have to take a look at how HA handle this.

This should be fixed in the next release! 😃


Jinja2 extension

Any plan to support wagtailmenus' tags through a jinja2 extension ? That would be awesome !

@dperetti No, no plans I'm afraid. I'm not familiar with Jinja2 at all. I wouldn't know where to start.

It's really worth it. When you start using it, you don't want to go back ! Very powerful and very clean... and wagtail supports it !
From what I've seen of wagtailmenus' code, it wouldn't require any deep changes at all.
If you're willing to accept a pull request, I might feel like doing it :-)

@dperetti If you'd be happy to add tests and documentation to go along with it, a pull-request would be welcome, thanks.

My temporary solution is to copy main_menu and sub_menu templatetags code to a custom Jinja2 environment, doing some modification to make it works with Jinja2 API. Some notes:

Original main_menu take a context as 1st agrument, so you have to wrap it like this

class MenuExtension(Extension):
    def __init__(self, environment):
        super().__init__(environment)
        environment.globals.update({
            'main_menu': jinja2.contextfunction(main_menu),
            'sub_menu': jinja2.contextfunction(sub_menu),
        })

Unlike Django engine, the context of Jinja2 engine is immutable, so when in original main_menu, you do:

c = copy(context)
c.update({
    'menu_items': {}
})

in Jinja2, you must do
c = context.parent
ctx = {'menu_items': {})
c.update(ctx)

@hongquan I can't seem to get your solution to work; the context argument is missing for the main_menu and sub_menu functions.

@jorenham
Your source copy may be changed? The original source code has context argument: https://github.com/rkhleics/wagtailmenus/blob/master/wagtailmenus/templatetags/menu_tags.py#L27

Is anyone willing to work on a pull-request to add this functionality?
I've just merged some changes into master that I think will help with the 'immutable context objects' part of the problem (see https://github.com/rkhleics/wagtailmenus/commit/a8c81d465358c316880f6865afec8768944d6fe5) (though, I could be wrong).
So, i'm hoping it should just be a case of adding the Extension somewhere, and adding some docs/tests?

I wanted to work on it, but currently I shift my focus away my web app which uses wagtailmenus. I have working code, but only cover some cases (no modification for flat_menu yet).

Thanks for replying @hongquan. I'd really like to avoid having an entirely separate set of tags to maintain if possible, as it will make further development difficult. I'm hoping we can get away with changing just enough in the original tags so that they work for both engines, then just define the Extension itself in a separate file. Is this realistic/possible?
I'm guessing we'll also need to add jinja-compatible versions of all included menu templates too? This I can live with this, as template changes are incredibly rare.
What I'm most unsure about is how to extend the test suite to ensure Jinja compatibility remains intact once it's in place. But I suppose that can be tackled last of all.
Even if you didn't do the work yourself, any advice you (or anybody else) can share on the above topics would be much appreciated.

I'd really like to avoid having an entirely separate set of tags to maintain if possible, as it will make further development difficult. I'm hoping we can get away with changing just enough in the original tags so that they work for both engines, then just define the Extension itself in a separate file. Is this realistic/possible?

I think it is possible, like the upstream wagtail does.

I have pending PR #190 which is hope to solve this.
With that PR being merged, you can setup like this to use Jinja2 template:

Create jinja.py file:

import jinja2
from jinja2.ext import Extension
from wagtailmenus.templatetags.menu_tags import main_menu, sub_menu

class MenuExtension(Extension):
    def __init__(self, environment):
        super().__init__(environment)
        environment.globals.update({
            'main_menu': jinja2.contextfunction(main_menu),
            'sub_menu': jinja2.contextfunction(sub_menu),
        })

Setup TEMPLATES in settings.py (not complete):

TEMPLATES = (
    {
        'NAME': 'django-jinja',
        'BACKEND': 'django_jinja.backend.Jinja2',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'environment': 'project.jinja.environment',
            'match_extension': '.jinja',
        }
    },
)

Write your Jinja2 template for menu and change WAGTAILMENUS_DEFAULT_MAIN_MENU_TEMPLATE setting.

My convention is that Jinja2 template files are named with  .jinja extension and saved in templates folder.

Hi @hongquan.
My apologies. I've had to revert your PR merge for now, because I'm not 100% sure about the reasoning for some of the changes (I should have flagged this before merging, but I wasn't really thinking clearly this week due to other pressures). There are quite a few backwards-incompatible changes in the pull that I need to explain in release notes etc, so I really need to understand things a little better before I merge again.
The main thing i'm unsure about is why the switch to Django's get_template and select_template is necessary. Looking at the Django docs for these methods, there's a bit at the end that explains:

If you’re loading a template while you’re rendering another template with the Django template language and you have access to the current context, for instance in the render() method of a template tag, you can use the current Engine directly. Instead of using get_template (example given), you can write:

template = context.template.engine.get_template('included.html')

This will load the template with the current engine without triggering the multiple template engines machinery, which is usually the desired behavior. Unlike previous solutions, this returns a django.template.Template, like get_template() used to in Django 1.7 and earlier, avoiding all backwards-compatibility problems.

I took this to mean that if the Jinja template engine (or any other engine) is being used to render a context, then context.template.engine would give us the same engine as that already being used, which would be more efficient than triggering the 'multiple template engine machinery'. Is this not the case?
Or, is the problem not that the engine is used to find the template, but that the django.template.Template object returned can't be used for rendering?
If anyone can help explain, that would be much appreciated :) Thanks.

No, the context.template.engine is only available if the current-used engine is Django Template engine.
The context.template in this case is an instance of django.template.base.Template, which has engine attribute.
But if you are using Jinja2 template, the context is of jinja2.runtime.Context class, which has no template attribute and hence, no engine info.
That is why I have to use get_template, select_template.

Okay, thanks for confirming @hongquan. In this case then, I think I need to do a little more work to make the changes backwards compatible. I'll remerge your work again as it is, and work on the backwards compatibility changes as a new PR.

The problem of the solution of @hongquan is that jinja2.contextfunction(sub_menu) gets cached, i.e. the first time jinja2.contextfunction(sub_menu) returns the function, the second time the result of the last function call.
#main_menu.html
{% for item in menu_items %}
    {{ item.text }}

    {% if item.has_children_in_menu %}
        {# evaluates to `true` the first time only #}
        {%  if sub_menu.__class__.__name__ == 'function' %}
            {{ sub_menu(item, template='pages/menus/sub_menu.html') | safe }}
        {% else %}
            :(
{{ sub_menu.render_to_template()|safe }}
        {% endif %}
    {% endif %}
{% endfor %}

:confused:

Any progress?

Sorry, these days I am occupied by some other projects, not coming back to work on Wagtail yet.

@jeromelebleu/@hongquan I'm hoping the changes I'm currently working on in #279 will allow this problem to be circumvented, by removing the need to use the {% sub_menu %} tag all together.

If anyone is still struggling to use the {% sub_menu %} tag with Jinja2, the functionality referenced above has now been released. You can find more details in the release notes at the following URL:
https://wagtailmenus.readthedocs.io/en/stable/releases/2.12.html#new-add-sub-menus-inline-option-for-menu-tags

Anyone working on this?
For me it looks, like multiple {{ flat_menu(...) }} is not about how Jinja2 caches results, but how wagtailmenus uses context.
In Django these template tags are really tags, but in Jinja2 they are functions(), so they lives in context. But If I look at wagtailmenus/models/menus.py I can see code like:
class SectionMenu(DefinesSubMenuTemplatesMixin, MenuFromPage):
    menu_short_name = 'section'  # used to find templates
    menu_instance_context_name = 'section_menu'
    related_templatetag_name = 'section_menu'
    ...

class ChildrenMenu(DefinesSubMenuTemplatesMixin, MenuFromPage):
    menu_short_name = 'children'  # used to find templates
    menu_instance_context_name = 'children_menu'
    related_templatetag_name = 'children_menu'
    ...

class SubMenu(MenuFromPage):
    menu_short_name = 'sub'  # used to find templates
    menu_instance_context_name = 'sub_menu'
    related_templatetag_name = 'sub_menu'
    ...

class AbstractMainMenu(DefinesSubMenuTemplatesMixin, MenuWithMenuItems):
    menu_short_name = 'main'  # used to find templates
    menu_instance_context_name = 'main_menu'
    related_templatetag_name = 'main_menu'
    content_panels = panels.main_menu_content_panels
    menu_items_relation_setting_name = 'MAIN_MENU_ITEMS_RELATED_NAME'
    ...

class AbstractFlatMenu(DefinesSubMenuTemplatesMixin, MenuWithMenuItems):
    menu_short_name = 'flat'  # used to find templates
    menu_instance_context_name = 'flat_menu'
    related_templatetag_name = 'flat_menu'
    base_form_class = forms.FlatMenuAdminForm
    content_panels = panels.flat_menu_content_panels
    menu_items_relation_setting_name = 'FLAT_MENU_ITEMS_RELATED_NAME'
    ...

In my opinion, in Django it is fine, tag {% main_menu %} is different to instance {{ main_menu }}, but in Jinja2 function {{ main_menu() }} is redefined to instance {{ main_menu }} and later call in the same context results into error.
Please can anyone else double check my idea? Thank you.
So I see two possible solutions:

Implement real Jinja2 tags {% main_menu %}, etc.
or (my preference), rename instances to something else (e.g. main_menu_instance) and use function {{ main_menu() }}, etc.

As a workaround I use this code:
import jinja2
from jinja2.ext import Extension

from wagtailmenus.templatetags.menu_tags import (
        main_menu,
        flat_menu,
        section_menu,
        children_menu,
        sub_menu,
    )

class WagtailmenusExtension(Extension):
    def __init__(self, environment):
        super().__init__(environment)

        self.environment.globals.update({
                'main_menu_jinja2': jinja2.pass_context(main_menu),
                'flat_menu_jinja2': jinja2.pass_context(flat_menu),
                'section_menu_jinja2': jinja2.pass_context(section_menu),
                'children_menu_jinja2': jinja2.pass_context(children_menu),
                'sub_menu_jinja2': jinja2.pass_context(sub_menu),
            })

# Nicer import names
menu_tags = WagtailmenusExtension

and in my templates I use {{ main_menu_jinja2() }} instead of {{ main_menu() }}.

Looks like Jinja2 uses context differently. I realized, that in Jinja2 sub_menu some time works, some time not. After small diving in, I realized, that in wagtailmenus/models/menus.py _create_contextualvals_obj_from_context(cls, context) there is context.get('current_level', 0) + 1.
But this in Jinja2 never get reset to 0, so if I have on single page more {{ flat_menu() }} and {{ main_menu() }} with sub_menus, rendering of sub_menus depends on the order, as current_level starts from 0 only for first menu, but for any other it continues increasing the previous value.
Hope this report make sense.

I feel like this should be explained in detail in the docs. This issue is pretty much the only place jinja2 is mentioned - apart from the release notes that says it's supported.

Got wagtailmenus 3.1.9 working by doing as described here.
https://github.com/jazzband/wagtailmenus/issues/89#issuecomment-343105489
Everything works nicely, however the active_class is always empty.

WAGTAILMENUS_USE_BACKEND_SPECIFIC_TEMPLATES = True
WAGTAILMENUS_ACTIVE_CLASS = "test"
WAGTAILMENUS_DEFAULT_MAIN_MENU_TEMPLATE = "nav/main_menu.html"

{% for item in menu_items %}
{{ item.text }}
{% endfor %}

{{ main_menu() | safe }}

Anything I may have missed?


Feature/tt2 11  params validation

I'm replying this on my phone, let's see if it ends up on the PR! Isn't
there a special case in the linting for when there are single quotes inside
a double-quoted string (which there is here)
On Fri, 2 Sept 2022, 17:16 Andy Langridge, @.***> wrote:

@.**** commented on this pull request.
In src/services/generateS3ObjectPrefixes.spec.ts
https://github.com/alphagov/di-txma-ticf-integration/pull/38#discussion_r961835736
:

 expect(result).toEqual(expectedResult)

})
test('invalid date string', () => {
expect(() => {
generateS3ObjectPrefixes('invalid', 'invalid')

}).toThrow('String not valid date')

}).toThrow("String 'invalid' is not a valid date")

Although I realise it will not fail the pipeline since all we do is run yarn
lint (which has the --write flag in its implementation). So the pipeline
step will always pass. We should probably fix that! Maybe with a yarn lint
script that the pipeline uses (without the --write flag, and a yarn
lint:fix script that the pre-commit hooks use.
—
Reply to this email directly, view it on GitHub
https://github.com/alphagov/di-txma-ticf-integration/pull/38#discussion_r961835736,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2HPCNNQOQSKV4RINXV2N6TV4IR55ANCNFSM6AAAAAAQDC5VP4
.
You are receiving this because you authored the thread.Message ID:
@.***>


Prototype string functions

This is a prototype for functions to work with series of strings. There's a lot more to be done if we like the approach, but I wanted to check in before I spent too much time on it.
You can easily map a function onto a series:
In [4]: s = Series(["hi","hoot", "far"])

In [5]: strings.startswith(s, "h")
Out[5]:
0   True
1   True
2   False

You can also use other series to give arguments; they're not reindexed to the main series yet, but this is NaN aware:
In [6]: s = Series(["hi","hoot", "far", np.nan])

In [7]: strings.search_re(s, "h(.*)", groups=Series([0,1,1,0]))
Out[7]:
0    hi
1    oot
2    NaN
3    NaN

I'll go ahead and merge this in. I'm going to move the strings modules to the tools subdir, I think. We'll want to start building a test suite, of course, to permit refactoring

OK, thanks. I wasn't actually expecting this to get merged as is. I'll find time to improve on it.

Does little harm-- I want to hack on it too sometime in the next few weeks


Add 2D Delaunay triangulation

This PR intends to add a two dimensional Delaunay triangulation in the cupyx.scipy.spatial namespace. This is required as part of https://github.com/cupy/cupy/issues/7186, where some interpolants such as CloughTocher2DInterpolator require them.
This implementation is derived from https://doi.org/10.1145/2556700.2556710, where the implementation is reduced from 3D to 2D.

The following numbers correspond to the benchmark results when Delaunay is called with varying number of points. The gDel2D implementation has a highmark improvement of 55x over SciPy and QHull.

Benchmark script
from itertools import product

import cupy as cp
import numpy as np
from cupy import testing
from cupyx.profiler import benchmark

from cupyx.scipy.spatial import Delaunay as GPUDelaunay
from scipy.spatial import Delaunay as CPUDelaunay

from tqdm import tqdm

# input_sizes = [5, 10, 100, 1000, 5000]
input_sizes = [100, 1000, 5000, 10000, 50000, 100000]
modules = [(cp, GPUDelaunay, 'CuPy'), (np, CPUDelaunay, 'SciPy')]
kwargs = []
# kwargs = [('order', [1, 2, 4, 6, 10])]
# kwargs = [('extrapolate', [True])]
kwargs = list(product(*[list(product([x[0]], x[1])) for x in kwargs]))
measurement = {}

def gather_time(prof):
    cpu_time = prof.cpu_times.mean() * 1000
    gpu_time = prof.gpu_times.mean() * 1000
    return max(cpu_time, gpu_time)

def input_creation(xp, fn, size, **kwargs):
    points = testing.shaped_random(size + (2,), xp, xp.float64)
    return fn, points

def closure(fn, sig):
    return fn(sig)

for kwarg_comb in kwargs:
    kwarg_measurement = measurement.get(kwarg_comb, {})
    measurement[kwarg_comb] = kwarg_measurement
    kwarg_comb = dict(kwarg_comb)
    for size in tqdm(input_sizes):
        size_measurement = kwarg_measurement.get(size, {})
        kwarg_measurement[size] = size_measurement
        for xp, cls, _id in modules:
            b, x = input_creation(xp, cls, (size,), **kwarg_comb)
            prof = benchmark(closure, (b, x), n_repeat=100)
            size_measurement[_id] = gather_time(prof)

lines = []
for kwarg_comb in kwargs:
    kwarg_line = ', '.join([f'{x}={y}' for x, y in kwarg_comb])
    lines.append(f'### `{kwarg_line}`\n')
    lines.append('| Size | CuPy (ms) | SciPy (ms) | Speedup |')
    lines.append('|:----:|:---------:|:----------:|:-------:|')
    kwarg_measurement = measurement[kwarg_comb]
    for size in input_sizes:
        comp = f'{size}'
        size_measurement = kwarg_measurement[size]
        times = []
        for _, _, _id in modules:
            time = size_measurement[_id]
            times.append(time)
            time_info = f'{time:3f}'
            comp = f'{comp} | {time_info}'
        speedup = times[1] / times[0]
        comp = f'{comp} | {speedup:3f}'
        lines.append(f'| {comp} |')
    lines.append('\n')

print('\n'.join(lines))

| Size | CuPy (ms) | SciPy (ms) | Speedup |
|:----:|:---------:|:----------:|:-------:|
| 100 | 3.223754 | 0.372784 | 0.115637 |
| 1000 | 4.865109 | 2.848961 | 0.585590 |
| 5000 | 5.818882 | 15.383042 | 2.643642 |
| 10000 | 6.819357 | 33.797787 | 4.956155 |
| 50000 | 11.550030 | 227.356258 | 19.684474 |
| 100000 | 16.944136 | 517.125425 | 30.519434 |
| 500000 | 59.798636 | 3322.136601 | 55.555391 |

The memory pool that you include here is likely to conflict with CuPy one, I think you can use the C apis to get memory directly from the CuPy pool when needed, maybe it is better to try merging https://github.com/cupy/cupy/pull/7210 first!

@emcastillo the potential to mistranslation related to this feature can be high, which can potentially delay the implementation by several months, especially when porting over headers and functions that are 20+ years old.
Also, there are some implementation-specific data structures that depend directly on memory management, which can incur in extra copies or other kinds of overheads that might reduce the overall performance.
@ev-br what do you think about this proposition?

Can't this feature be left as an opt-opt at compilation time somehow?

Indeed, was it the original approach? Which showed it's a non-trivial amount of work with the result being worse for maintenance:

code provenance is worse (as is, it's an external library, vendored verbatim)
reworking the library is error-prone.

How bad is the compile time hit?
Or is the suggestion to rename the files from .cu to something else to hide them from the build system, and read the sources into RawKernels?

The problem of using RawKernel is that automatically you are constraining the host code to be called from Python. This library has several host calls from C++, hence you would need to translate those.

Although merging only this pull request may not significantly impact build time, we are concerned that if we accept more PRs like this the build time will keep increasing. Allowing this kind of implementation sets a precedent and it will be hard to reject similar PRs if this one is accepted as is.
I believe that a Python-only implementation utilizing CuPy arrays is the most straightforward and maintainable approach. Would you be willing to try to do it this way? we can provide assistance if needed since we understand the changes may be big.

These are the new performance results as of 9ecce11, indeed the initial version (which has a 100% correspondence w.r.t the original C++ implementation) has a drop in performance.
@emcastillo @asi1024 do you think the following numbers are enough? If not, please let me know and I'll optimize as much as possible. The performance drop is about 5x for small cases (i.e., 5000) and 2x for large cases.

Benchmark script
from itertools import product

import cupy as cp
import numpy as np
from cupy import testing
from cupyx.profiler import benchmark

from cupyx.scipy.spatial.delaunay_2d._kernels import DELAUNAY_MODULE
from cupyx.scipy.spatial import Delaunay as GPUDelaunay
from scipy.spatial import Delaunay as CPUDelaunay

from tqdm import tqdm

DELAUNAY_MODULE.compile()

# input_sizes = [5, 10, 100, 1000, 5000]
input_sizes = [100, 1000, 5000, 10000, 50000, 100000, 500000]
# input_sizes = [100000]
modules = [(cp, GPUDelaunay, 'CuPy'), (np, CPUDelaunay, 'SciPy')]
kwargs = []
# kwargs = [('order', [1, 2, 4, 6, 10])]
# kwargs = [('extrapolate', [True])]
kwargs = list(product(*[list(product([x[0]], x[1])) for x in kwargs]))
measurement = {}

def gather_time(prof):
    cpu_time = prof.cpu_times.mean() * 1000
    gpu_time = prof.gpu_times.mean() * 1000
    return max(cpu_time, gpu_time)

def input_creation(xp, fn, size, **kwargs):
    points = testing.shaped_random(size + (2,), xp, xp.float64)
    return fn, points

def closure(fn, sig):
    return fn(sig)

for kwarg_comb in kwargs:
    kwarg_measurement = measurement.get(kwarg_comb, {})
    measurement[kwarg_comb] = kwarg_measurement
    kwarg_comb = dict(kwarg_comb)
    for size in tqdm(input_sizes):
        size_measurement = kwarg_measurement.get(size, {})
        kwarg_measurement[size] = size_measurement
        for xp, cls, _id in modules:
            b, x = input_creation(xp, cls, (size,), **kwarg_comb)
            prof = benchmark(closure, (b, x), n_repeat=100)
            size_measurement[_id] = gather_time(prof)

lines = []
for kwarg_comb in kwargs:
    kwarg_line = ', '.join([f'{x}={y}' for x, y in kwarg_comb])
    lines.append(f'### `{kwarg_line}`\n')
    lines.append('| Size | CuPy (ms) | SciPy (ms) | Speedup |')
    lines.append('|:----:|:---------:|:----------:|:-------:|')
    kwarg_measurement = measurement[kwarg_comb]
    for size in input_sizes:
        comp = f'{size}'
        size_measurement = kwarg_measurement[size]
        times = []
        for _, _, _id in modules:
            time = size_measurement[_id]
            times.append(time)
            time_info = f'{time:3f}'
            comp = f'{comp} | {time_info}'
        speedup = times[1] / times[0]
        comp = f'{comp} | {speedup:3f}'
        lines.append(f'| {comp} |')
    lines.append('\n')

print('\n'.join(lines))

Size
CuPy (ms)
SciPy (ms)
Speedup

100
14.506556
0.377294
0.026009

1000
23.978261
2.838406
0.118374

5000
30.043801
14.882599
0.495363

10000
32.431401
33.145071
1.022006

50000
36.745877
218.159636
5.936983

100000
42.818693
533.102947
12.450239

500000
83.101113
3102.933850
37.339257

@andfoy The performance degradation is a bit higher than we expected. This degradation may be due to the longer CPU execution time of Python compared to the GPU execution time. Do you have any idea of what routines could be a bottleneck for CPU time? We can try to provide help to fix them or do it in a follow up PR :)

@asi1024, we also suspect that the CPU execution is taking longer after porting the implementation to Python. In particular, I suspect that the major bottleneck occurs in the _init_for_flip () method, which calls max,  min and unique, that can be seen on this profiling flamegraph, from the 6.86s to the 7.00s mark. Another significant bottleneck relates to copying the values to a new array in order to prevent modifications, this can be also removed, given that the points are being copied into another array in order to do the calculations (no need to double copy).
Both of these regions account for at least 50% of the computation time.

These are the benchmark results when removing the unique and the copy detailed above. However, there is not much of an improvement (3x).

Size
CuPy (ms)
SciPy (ms)
Speedup

100
19.535612
0.530353
0.027148

1000
32.956266
3.878908
0.117699

5000
41.986632
21.957715
0.522969

10000
44.652589
46.640094
1.044510

50000
51.745101
274.452174
5.303926

100000
58.017069
614.829551
10.597391

500000
93.568521
3752.015339
40.099120

This is the flamegraph after removing these two sections, there is still the max/min bottleneck. The unique bottleneck has been replaced by an argmax which is required in order to sort the points in a Z-curve (according to the reference paper results, sorting helped reducing the overall runtime), When unique was called, the sorted results returned were used instead of the argmax. Eliminating the extra copy did help a little bit, however, the main blockage occurs in max/min

Before profiling both implementations, I reproduced the benchmark results for the C++ implementation

Size
CuPy (ms)
SciPy (ms)
Speedup

100
3.066400
0.387718
0.126441

1000
4.782042
2.825747
0.590908

5000
6.048918
14.925128
2.467405

10000
6.623285
49.202431
7.428705

50000
11.051237
229.440171
20.761493

100000
16.243913
616.848576
37.974136

500000
54.174184
3606.194448
66.566659

Next, we proceed to profile both implementations individually, for this, I used dedicated prints for the most critical functions in GDel, including splitting and flipping the triangles (With an input of 500000 points). Then, the values produced by both programs were compared, where the following differences are found:

Timing scripts
// timing is an std::vector<std::tuple<std::string, double>>
auto start = std::chrono::system_clock::now();

// Function body

auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
timing.push_back(std::make_tuple("_compute", elapsed_seconds.count()));

// At the end of the execution
for(int i = 0; i < timing.size(); i++) {
        std::string fnName;
        double secs;
        std::tie(fnName, secs) = timing[i];
        std::cout << fnName << ": " << secs << std::endl;
}

For the Python version, a simple timing decorator:
def print_time(f):
    def wrapped_f(self, *args, **kwargs):
        start_time = time.time()
        result = f(self, *args, **kwargs)
        print(f'{f.__name__}: {time.time() - start_time}')
        return result
    return wrapped_f

# Function to benchmark
@print_time
def func(*args, **kwargs):
      ...

Comparison script
import numpy as np

def gather_times(filename):
    perf_map = {}
    with open(filename, 'r') as f:
        for line in f.readlines():
            key, value = line.strip().split(':')
            key_values = perf_map.get(key, [])
            key_values.append(float(value))
            perf_map[key] = key_values
    return {k: np.asarray(perf_map[k]) for k in perf_map}

cpp_perf = gather_times('out_cpp.txt')
py_perf = gather_times('out_py.txt')
print('| Function name | Avg C++ runtime | Avg Python runtime | Avg slowdown | Avg abs diff | Avg rel diff |')
print('|:-------------:|:---------------:|:------------------:|:------------:|:------------:|:------------:|')

for func_name in py_perf:
    py_values = py_perf[func_name]
    cpp_values = cpp_perf[func_name]
    slowdown = np.mean(py_values / cpp_values).item()
    abs_diff = np.mean(np.abs(py_values - cpp_values)).item()
    rel_diff = np.mean(np.abs(py_values - cpp_values) / cpp_values).item()
    avg_cpp = cpp_values.mean().item()
    avg_py = py_values.mean().item()
    print(f'| {func_name} | {avg_cpp:.2e} | {avg_py:.2e} | {slowdown:.2f} | {abs_diff:.2e} | {rel_diff:.2e} |')

Function name
Avg slowdown

_construct_initial_triangles
4.603449

_init_for_flip
4.244037

_split_tri
2.109865

_do_flipping
6.255789

In this case, we can appreciate that one of the major differences occur on the _init_for_flip/_construct_initial_triangles, which where the max/min/sub occurs. Other sections that report differences are _split_tri and _do_flipping, which have several cupy calls besides the shared kernel implementations.

After further inspection, these are the top-10 calls that are causing slowdowns (compute is given as a reference, all times are in milliseconds):

Func
Avg slowdown
Avg Py
Avg C
Avg abs diff
Time %
# Calls

compute
2.509
152.027
60.603
91.424
100.00%
1

_init_for_flip (unique/argmax)
16.512
42.086
2.549
39.537
27.68%
1

_do_flipping (mark compact)
18.713
0.687
0.036
0.651
18.09%
40

_do_flipping (compact_if_neg)
11.294
0.449
0.035
0.414
14.48%
49

_split_tri (split_tri_vec)
22.117
0.824
0.037
0.787
9.21%
17

_do_flipping (collect compact)
5.995
0.182
0.030
0.151
3.11%
26

_split_tri (ins_tri_map)
9.238
0.187
0.031
0.156
2.09%
17

_construct_initial_triangles (min/max/x)
8.331
2.003
0.240
1.763
1.32%
1

_do_flipping (flip)
2.486
0.039
0.085
0.080
1.23%
48

_do_flipping (tri_vote_vec)
3.273
0.037
0.018
0.020
1.18%
49

_do_flipping (update_opp)
1.653
0.030
0.081
0.072
0.95%
48

As we previously discussed, the call to unique/argmax is causing most of the performance damage in this case, given that it is a single call that accounts for almost 30% of the total compute time and is about 16x slower than thrust::sort_by_key and thrust::unique_by_key.  I don't know if there is a way to optimize this call, which could yield the biggest gains.
Next, the calls to mark compact and compact_if_neg consist on applying a boolean mask to a index tensor:
# Mark compact
# This yields a boolean mask
active_tri = is_tri_active(self.triangle_info)

# Get the indices that comply with the mask
self._act_tri = cupy.arange(0, active_tri.shape[0])
self._act_tri = self._act_tri[active_tri].astype(cupy.int32)

# Compact if neg
# Filter the values that are greater than zero
flip_to_tri = flip_to_tri[flip_to_tri >= 0]

Once again, any suggestion is welcome in order to improve this kind of operations.

In other updates, if unique is removed, then the performance drops, which is consistent with respect to the reference paper experiments

Size
CuPy (ms)
SciPy (ms)
Speedup

100
16.699395
0.459509
0.027517

1000
29.736610
3.527434
0.118623

5000
33.911562
19.526128
0.575796

10000
38.000970
40.853217
1.075057

50000
43.425706
241.185625
5.553983

100000
49.232984
537.830085
10.924182

500000
116.398724
3173.629539
27.265157

/test mini

@andfoy LGTM. Thanks for your contribution!

Hello everyone! Just checking, this will be part of the 13.1 March release right?
I've been looking forward to @andfoy 's 2D Delaunay implementation but I'm having issues building CuPy from source so I'm waiting for its release.

@Timothy-Anders0n This feature will be part of v14.0.0a1 to be released in March, but will not be backported to the v13 branch.

Once v14.0.0a1 is out, you can try installing the precompilled wheel for pre-releases.
https://github.com/cupy/cupy?tab=readme-ov-file#installation

Thank you @asi1024 and @kmaehashi. Reading #7555 I thought that the next release was going to be v13.1.0 rather than v14.0.0.
Regardless, as long as this PR is in there I'll be immensely happy. :)

@andfoy this probably deserves an entry in docs/source/reference/scipy_spatial.rst, right?

Thanks @rgommers for catching this one! There's a PR now to expose the docs: https://github.com/cupy/cupy/pull/8294


Feature Idea: Notifications on expired effects

This notification should apply whenever an Effect's time runs out, either to all effects or only to those that have multiple stages (afflictions), or maybe set by a flag that has a toggle button.
Use case is for when players need to make a roll after a period of time passes,as is common for all afflictions - but note, if this happens they should also have a real duration instead of "unlimited".
Maybe instead of building this feature into the module it's better to have it in the core pf2e system.

A possible alternative/additive to this would be another checkbox to mark a particular effect to not auto-delete when expired?
So you can set that Ghoul Fever for 1 day or that poison to an Hour and either get a message and/or see the effect as expired but still on the character so you can make the roll and stage it up/down (for afflictions)

Added in v1.7.0


[FEAT] add Showguesser component

Is your feature request related to a problem? Please describe.
react-admin has a really cool feature called the guesser component here https://marmelab.com/react-admin/ShowGuesser.html
basically this component try guesses (by print js code out to console) what should be show base on the type of prop that passed in,
It would be cool if refine.dev has this component, I use it all the time when I use react-admin, I plan to use refine.dev on a new project and one of the few things I miss from react-admin is the "guesser" feature.
this will enable refine to really do rapid development
Describe the solution you'd like
component similar to  this code  https://github.com/marmelab/react-admin/blob/dbd036f812/packages/ra-ui-materialui/src/detail/ShowGuesser.tsx and this example  https://marmelab.com/react-admin/ShowGuesser.html
Describe alternatives you've considered
another guester component that base on  data provider schema not just prop type
thank you for your project

Hey @vehas ,
Thank you for contacting us! The guesser feature is in our backlog but will be slightly different from react-admin's approach. Are there any situations where you are happy or dissatisfied with react-admin's approach? 👀

hey i'd like to work on this

Hey @vehas,
We are still discussing among ourselves about the guesser feature. If you create a PR for this, it probably will not merge because of it's a big feature. We want to add some game changer things, so we've decided to remove the hactoberfest label.
If you are looking for an issue for hacktoberfest, I can recommend to you #2127. 🚀

Hey @vehas, we're happy to announce that we've released @pankod/refine-inferencer package 🎉 🎉 It's generating components and lets you preview it with a formatted code ready to get you started 🚀 🚀
You can start by checking out this https://refine.dev/docs/packages/documentation/inferencer/ in documentation. We would love to hear your feedback if you try it out 🙏 🙏


Bolts conflict with Facebook SDK?

Hi, I'm trying to add the latest Facebook Android SDK from Gradle:
    compile 'com.facebook.android:facebook-android-sdk:4.5.0'

And I get this error:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lbolts/AggregateException;

Error:Execution failed for task ':app:dexFreeArmeabi-v7aDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

I got around this:
compile ('com.facebook.android:facebook-android-sdk:4.5.0') {
    exclude module: 'bolts-android'
}

The conflict seems to be between Parse SDK (i'm currently a bit behind on 1.9.1) and Facebook SDK.

Yeah, the Facebook SDK has a dependency on Bolts and that's the correct workaround. I'll be closing this issue for now, but feel free to comment if you need it to be reopened.

Even after mentioning it. i am still getting the below error
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.

com.android.build.transform.api.TransformException: java.util.zip.ZipException: duplicate entry: com/parse/AbstractQueryController$1.class

This is my grade dependency code:
dependencies {
compile fileTree(include: ['*.jar'], exclude: 'android-support-v4.jar',dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile files('libs/Parse-1.10.3.jar')
compile files('libs/bolts-android-1.2.1.jar')
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.github.satyan:sugar:1.3'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'
compile 'com.android.support:support-v4:23.1.0'
compile 'com.google.android.gms:play-services-analytics:8.1.0'
compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar'
compile files('libs/org.apache.http.legacy.jar')
compile ('com.facebook.android:facebook-android-sdk:4.6.0') {
exclude module: 'bolts-android'
}
}
Thanks
yakub

Hi @yakubpashask
Try to clean and rebuild:
./gradlew clean build

also maybe your have duplicated version of Parse in your libs.
Try to remove them and use this one instead:
compile 'com.parse.bolts:bolts-android:1.2.1'
compile 'com.parse:parse-android:1.10.3'

OMG!!! thats awesome .. that's fixed my build issues.

Thanks
Yakub.

A similar issue to this is back again: The newest version of Facebook SDK (4.8.2) is still using the old bolts-android. This causes duplicate class definitions if you are also relying on the newer bolts artifacts, bolts-tasks and bolts-applinks. In my case, this occurred because I upgraded my Parse SDK to 1.11.0 which uses the new bolts artifacts.
The solution for me was similar to the one from last time: exclude bolts-android when compiling Facebook. But you must also explicitly compile the two new artifacts, or else Facebook won't be able to find the classes it needs to work.
compile 'com.parse.bolts:bolts-tasks:1.3.0'
compile 'com.parse.bolts:bolts-applinks:1.3.0'

compile('com.facebook.android:facebook-android-sdk:4.8.2') {
    exclude module: 'bolts-android'
}

compile 'com.parse:parse-android:1.11.0'

Thanks Yuval, i will check this with the new version of sdk's
On Wed, Dec 9, 2015 at 6:16 AM, Yuval Gnessin<EMAIL_ADDRESS>wrote:

A similar issue to this is back again: The newest version of Facebook SDK
(4.8.2) is still using the old bolts-android. This causes duplicate class
definitions if you are also relying on the newer bolts artifacts,
bolts-tasks and bolts-applinks. In my case, this occurred because I
upgraded my Parse SDK to 1.11.0 which uses the new bolts artifacts.
The solution for me was similar to the one from last time: exclude
bolts-android when compiling Facebook. But you must also explicitly
compile the two new artifacts, or else Facebook won't be able to find the
classes it needs to work.
compile 'com.parse.bolts:bolts-tasks:1.3.0'
compile 'com.parse.bolts:bolts-applinks:1.3.0'
compile('com.facebook.android:facebook-android-sdk:4.8.2') {
exclude module: 'bolts-android'
}
compile 'com.parse:parse-android:1.11.0'
—
Reply to this email directly or view it on GitHub
https://github.com/BoltsFramework/Bolts-Android/issues/80#issuecomment-163070166
.

--
Regards,
Yakub..

try this works for me
implementation "com.github.parse-community.Parse-SDK-Android:parse:1.24.1"
implementation ('com.github.parse-community:ParseFacebookUtils-Android:1.14.0'){
        exclude module: 'bolts-android'
    }


set -o option assumes bash shell

The current script defaults to using bourne shell, yet -o pipefail is used, which is only available in bash. Changing the shebang line to match accordingly

Thanks for the heads up. Actually this script is also used within Alpine which does not come with bash as default. So I'd prefer to be more passive and enable set -o only when running under bash. Of course on systems having both, a plain bourne shell and bash it would be nice to "upgrade" to bash when available. Ash on the other hand also supports 'set -o', so maybe we can add a feature check and enable it if possible ? (so actually two things: (a) check for set -o and (b) upgrade to bash if installed)
would have to polish my shell fu for this a bit though ;-)

I just refactored the scripts so that the should work with a multitude of shells, so no need anymore to restrict to bash.
Thanks for the PR anyway, hope its ok for you that I close the PR.


add a starter dashboard for user event metrics

fixes #1074

Keycloak User Events-1733496358137.json
Here is a snapshot of the dashboard from the daily runs. And the PR is ready for review.


Refactor existing code

Clean up existing code, without any new features.
Can use archicad json api  as reference.

We already did a clean start.


Dynamically get GoogleAPIKey

Issue description
I want to get the google API key from the backend and use it for angular google maps.
I tried https://gist.github.com/msaxena25/fa59c2130642de3ef6330c6cff2ce6c2
but got no success there.
Can you help? Documentation isn't that informative as to how to use.
angular2 & angular-google-maps version
@angular/cli: ~7.3.9
@agm/core: ^1.0.0-beta.7

Hey, this is a usage question, not a bug or a feature request so please ask it on StackOverflow, or on our discord. Thanks.


Neverending Blood - Improve description (thanks to Discord's Alchyr #3696, Darkglade #0323, Vex'd #2468 and gkjzhgffjh #4772 with their suggestions and comments)

Darkglade: You can probably remove floored as well since most of the time people will assume it's rounded down
Alchyr: Upon losing HP in combat, increase your Regen to a maximum of 1/3 of the lost HP.
is the shortest I can put it
Vex: The first 7 times you lose HP, gain 1/3 that much Regen. Regains 2 uses when healing outside of combat.

Some changes ended up at the #437 issue, but NOW IT IS DONE.


[Question]"resume_download" support in model download phase?

System Info
Trying the hello world example within docker environment
docker run -d --gpus all -e NCCL_SHM_DISABLE=1 -e HF_HUB_ENABLE_HF_TRANSFER=1 -p 8080:80 -v ./inference_text:/data ghcr.io/huggingface/text-generation-inference:1.1.0 --model-id tiiuae/falcon-7b-instruct

but I always failed downloading the model in the half way due to the network(maybe), is there any way to resume the download from previous?
directory and file info when the download process seems get stuck
➜  inference_text ls -alh
total 7.2G
drwxr-xr-x  3 root root 4.0K Oct 24 09:25 .
drwx------ 11 root root 4.0K Oct 24 09:43 ..
drwxr-xr-x  6 root root 4.0K Oct 23 19:07 models--tiiuae--falcon-7b-instruct
-rw-------  1 root root 9.3G Oct 24 09:42 tmpt2a3f1qm
-rw-r--r--  1 root root    1 Oct 23 19:07 version.txt

Information

[X] Docker
[ ] The CLI directly

Tasks

[X] An officially supported command
[ ] My own modifications

Reproduction

launching the server via the instruction in README.

Expected behavior
the server fully running.

That's weird. The donwload should ignore the files that were already downloaded.
Can you share the error that you got?


Missing LICENSE

Software licenses grant people right to use, modify and redistribute your software.  This nice program doesn't seem to have a license.
For simple programs like this, I recommend the MIT Expat License, CC0 or Apache 2.0.  for larger programs, I recommend the GNU GPL.
Under most jurisdictions' copyright law, I can't use this in any way unless otherwise permitted.
Please add a license, thanks!

Thanks for the suggestion!
I have added a license


Error while installing tensorflow using pip on Ubuntu 14.04 32-bit system

Hi devs,
I was trying to install the package in Ubuntu when this error is occurring. I am not sure what the reason is since I am using Python 2.7.6 and already have numpy and six installed.
/usr/local/bin/pip run on Tue Nov 10 12:44:29 2015
tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this platform.
Exception information:
Traceback (most recent call last):
 File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
  status = self.run(options, args)
 File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 257, in run
  InstallRequirement.from_line(name, None))
 File "/usr/local/lib/python2.7/dist-packages/pip/req.py", line 167, in from_line
   raise UnsupportedWheel("%s is not a supported wheel on this platform." % wheel.filename
UnsupportedWheel: tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on    this  platform.

Apologies if this is a common problem. Thanks in advance :)

Hi there! We've only released binaries for (and tested TensorFlow with) 64-bit platforms so far. You might have more luck building from sources: http://tensorflow.org/get_started/os_setup.md#installing_from_sources

Hi, thanks a lot for the reply. I will try installing from the sources and let you know. Sorry for my ignorance since I didnt clearly understand meaning of x86_64.


💄 Large screen gridstack max value to 32 and sidebar gridstack over 13 bug fix

Category

Cosmetic

Overview

Augments the maximum gridstack value for large screens to 32, previously 20.
Better targets wide and ultrawide screens.

Since this bug is in the same file, as to avoid merge conflicts, I've added the fix here.
Fixes the bug where widgets that could go 1 width would bug out and not fill the whole sidebar when the gridstack was more than 12,

Issue Number

Closes #1336
Closes #1278

Screenshot

Oh, I did check if it appeared as 32 column which it did but I can't seem to move things in that space. Hold on a second

Found it. now if we want to make it even bigger in the future we won't be blocked by the global gridstack styling and can just augment the slider

Ok so this is good to merge @manuel-rw ?
Then maybe we should add some kind of scroll area to the tiles if they overflow. I’m using Mac so I didn’t realize how ugly it looks with the 2003 vibes of the windows scroll bars

I'm already adding those scroll areas to widgets that don't have it on other dedicated PR's whenever I encounter it. Like #1342

Yes, please merge


Navbar is not sticky

Problem subject
Navbar
Description
Navbar is not sticky at top in any of the pages.
Expected behavior/contents
Navbar should be sticky so that user can navigate using Navbar rather then scrolling up.
Actual behavior/contents
No response
Code of Conduct

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

Would you like to work on this, @ZaidKhan2002? 🙂

Yes I would like to work on this.

Yes I would like to work on this.

Okay I am assigning you this issue, Here you go 🚀

The issue was taken, please see the other issue that you like to work on. This issue has been fixed

I was about to make PR regarding this issue it's okay. I will se another issue.

We currently need help in #131

Sure!!


Implement immediate effect and refactor

Fix #245
Initial stuff that will become necessary for #218
This implements two hooks:

useRequest to simplify the creation of requests while keeping a stable reference, so we don't have to check for request.key
useImmediateEffect to simplify running an effect immediately outside of useEffect for SSR/suspense, which then otherwise behaves like a normal useEffect.

Have made a little seperate branch where I'm testing some implementations for Query and made my suggested changes. Will  PR against this branch

@JoviDeCroock I've got another PR here that just drops compatibility with older React versions and reuses hooks, if you mean the Query component? Wdyt? https://github.com/FormidableLabs/urql/pull/252

That fully removes the need for it yes, allright. I think we're almost there then, just alter the snapshots and we're finished 🎉

@JoviDeCroock Cheers! We're working on fleshing out the core library so we can move on to write more exchanges soon!
The unsubscription in useImmediateEffect and the main hooks should be more solid now. Just waiting for a couple of reviews from other core contributors so this can go in 🙌
After this SSR shouldn't be too hard to get done

@andyrichardson I'll merge this for now, but let's have a retroactive review at some point :+1:


Wrong behavior onClick with GenericItem and swipeable

Initial:

GenericSomeItem as wrapper for adapter and SomeItem as model
FastAdapter with GenericItemAdapter with drag'n'drop and onClick listeners
2 items: yellow at 0 position and red at 1st position

Script:

drag yellow from 0 to 1st position
click on red (0 position). In onClick(View v, IAdapter adapter, GenericShiftTypeItem item, int position) function we get: position: 0, item: yellow. It should be 'red'!

@dexion can you provide a sample showcasing exactly this issie?

@mikepenz, I can't make video with explanation, so I made TestApplication.
Please, look at function ListShiftTypeActivity.java#L224 with code comments. At ListShiftTypeActivity.java#L213 we notified adapter about movement, but adapter still return wrong item at right position.
If I use position for retrieving my Item I can't use list filtering. If I use item.getModel() I can't use drag'n'drop.

@dexion to fix your issue just replace
fastAdapter.notifyAdapterItemMoved(oldPosition, newPosition);

in line 208 of your ListShiftTypeActivity with
itemAdapter.moveModel(oldPosition, newPosition);

The following happens. By default this would be done by the SimpleSwipeDragCallback but as you want to handle the event on your own, the default behavior does not kick in and you have to call this method. You also don't have to notify then as this is done within the moveModel method.


Update Trusted CA Bundle with K8s CA

Some things need the Kubernetes CA to be trusted to function properly (i.e. KubeCF) - add it to the system-wide bundle in a pre-deploy script.
This really ought to be able to handle both ubuntu and centos stemcells, equally.

In Ubuntu, this is handled by:
cp /var/vcap/jobs/kubelet/tls/ca/cert.pem \
   /usr/local/share/ca-certificates/k8s-boshrelease.crt \
&& update-ca-certificates

In CentOS, this is handled by:
cp /var/vcap/jobs/kubelet/tls/ca/cert.pem \
   /etc/pki/ca-trust/source/anchors/k8s-boshrelease.crt \
&& update-ca-trust


Change ICustomAuthorizeRequestValidator.ValidateAsync to not return AuthorizeRequestValidationResult

Copy how token validation works with CustomTokenRequestValidationContext

@leastprivilege  I'm looking at the details of the request/response objects -- we should discuss. Also, looks like the ITokenValidator follows the old pattern as well, so this might be in more then just this one place.

PR done for this


Update README with current execution workflow with NEURON

Once https://github.com/neuronsimulator/nrn/pull/707 will be merged, this PR shows how regular NEURON user can use CoreNEURON.
fixes #367

@pramodk took the liberty of doing a few cosmetic touches. Feel free to change/revert.

no problem, thanks!!

Please retest


Implement fee handling with IPC

Remove the sequence number from coins (as Rigel is building a replacement), and finish implementing the fee module as a middleware that uses IPC (inter-plugin communication) to charge the fees as needed.
Add this meaning to the --fee flag in the cli and test
Note: every chain defines one currency in which to charge fees, and can optionally set a minimum value for it.

:+1: on setting the fee currency per chain


TLS for RPC and GraphQl

Implements #88

Codecov Report

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

@@            Coverage Diff             @@
##           master      #91      +/-   ##
==========================================
- Coverage   59.05%   58.94%   -0.12%
==========================================
  Files         118      118
  Lines        6277     6277
==========================================
- Hits         3707     3700       -7
- Misses       1964     1968       +4
- Partials      606      609       +3

Impacted Files
Coverage Δ

pkg/core/consensus/selection/filter.go
77.41% <0%> (-16.13%)
:arrow_down:

pkg/core/consensus/user/keys.go
76.74% <0%> (-4.66%)
:arrow_down:

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 164891c...92b0733. Read the comment docs.

Closed due to inactivity and a growing amount of conflicts. Victor has said he will reimplement it later on, after finishing his current work.


Determine string encoding based on Content-Type

See discussion: https://github.com/httprb/http.rb/commit/1ab394f06da8b0ce5b9e26b21e07460351677277#commitcomment-11136186

I did look into this briefly (before realizing it was more complicated than a quick fix). Couple of things I found https://github.com/mime-types/ruby-mime-types/ has a binary? method on mimetypes that could be useful. And https://github.com/jmhodges/rchardet exists to detect character encoding the same way browsers do.

I love both gems. But would like to avoid having dependency, and definitely against having rchardet as default resolution algorithm (it's pretty heavy). Probably this should be done like pluggable extensions to body streamer.
In any case I'm removing this from any milestone. This will not introduce (most likely) any backward compatible changes so it can be implemented whenever it's possible. So if somebody will implement this - will be happy to review PR.

We merged #234


casting image dtype for consistant scaling.

resolving this fixes #1002

Do you have a specific example where this changes the results?  That is, is there a test we can add or I can run locally to see the behavior change?

Do you have a specific example where this changes the results? That is, is there a test we can add or I can run it locally to see the behavior change?

The additional casting doesn't change the results. I have tested a few RGB, Single channel, and multichannel images. All their im_tile array are already in unint8 I'm not sure if we encounter float as an im_tile datatype in a WSL file. If it doesn't, we can remove this casting code.

Do you have a specific example where this changes the results? That is, is there a test we can add or I can run locally to see the behavior change?

Inside the detect_nuclei_with_dask function there are already methods that check if it is a single channel/float datatype and converts the image accordingly. So I believe the data will be consistent in the case of single-channel images.  We might not need to add additional code for data consistency.

I have used the large_image.getThumbnail() get generate a low-res image of the WSI to the size 1024

@manthey - The Cli ComputeNucleiFeatures also uses the mu and sigma calculation of the lab space for data processing. So, can I also make this similar updates on that files in this same PR?

A follow-up PR #1043 has been generated to abstract the nuclei detection code.


ProtosCompiler unable to locate Classes

Currently using Recode to convert WCF app to grpc all classes etc appear to be converted, a bit like AutoMapper
But the ProtoCompiler errors
BalanceDto" is not defined.
project ContractCore
file contract_core.proto
any ideas what the issue is
Kind regards
Peter

using grpc.AspNetCore

Sorry, I don't understand what is the issue you're facing. You'd need to provide more details and code examples.


Add css import support

Fix #290

This looks great! I do have one nitpick, though. Would you mind moving the fixture changes into a separate commit? Then, we can use the "Rebase and merge" button on Github and keep the commit history a little cleaner. Now that the regex syntax has been refactored, the commit adding CSS import would be ideal to reference in CONTRIBUTING.md, which is currently a bit outdated.

@josephfrazier I updated the contributing doc and remove some outdated parts. Later, we should add a more detailed version of the plugin architecture.

Sweet, thanks for updating the docs too! I just pushed a merge commit and I'm hoping that github's rebase/merge feature will just fast-forward to it, so it won't break the commit hash reference. Once CI passes, I'll try it.
More detailed architecture docs would be nice. I wonder if anyone's avoided getting involved due to lack of documentation...?


Web Doc Version Link not visible on some pages

Describe the bug
Appreciate the effort from #196 .
However versioning drop down link (on top right corner of webpage)

Is visible on https://gramaziokohler.github.io/compas_fab/latest/
Not visible on https://gramaziokohler.github.io/compas_fab/stable/ or any other branch after clicking on a specific version.

ACK on this!
I am aware of it, older docs don't have it because we haven't regenerated them. But it's only a transitory problem. We'll rebuild them soon with the new theme.


remove trusted=True from skops.io.load(s)

We got a CVE report where an attacker can execute arbitrary code with trusted=True. While one can argue this is a feature and not a bug, it does pose the issue that people might be overly optimistic about the security of the format.
Therefore removing it might be a better idea. This doesn't change any functionality since users can still trust the file by blindly passing trusted=get_untrusted_types(...)
cc @BenjaminBossan
I also have to say, having typehints made the process a LOT easier here.
CVE:https://www.recordedfuture.com/vulnerability-database/CVE-2024-37065

We got a CVE report where an attacker can execute arbitrary code with trusted=True. While one can argue this is a feature and not a bug, it does pose the issue that people might be overly optimistic about the security of the format.

IMO this is a bit silly, with the same logic the whole pickle module would need to be removed. But I guess since there is a simple (albeit not really safer) solution, I'd be okay with the change. I'm wondering, however, if this should be deprecated?

This doesn't change any functionality since users can still trust the file by blindly passing trusted=get_untrusted_types(...)

We could add a check that __repr__ has been called at least once on the output of get_untrusted_types and at least 1 second per item has passed since. Just kidding of course, but yeah...

I also have to say, having typehints made the process a LOT easier here.

Nice!

I'm wondering, however, if this should be deprecated?

We used to have the hint that the API is really subject to change though. That's why I didn't deprecate. However, this has been used now for a while and pretty stable. So I removed the comment here and from now we can be even more conservative in changes.

@BenjaminBossan you okay with this now?

While reviewing, I also stumbled upon the fact that from typing import Sequence is apparently deprecated:

Cool, I'll open a separate PR for that.

Could a release with this change be put out so that we can silence our CVE warning 😅

@judahrand yes, working on a numpy2 compatibility PR and will release with that one.

Release is out.


RSS feed

Hi!
Good effort on the website, I'm glad this is happening.
An RSS feed for the blog/articles would be a nice addition.

There are... :)

It seems that I was missing something and not you. I just didn't see them anywhere, but apparently they could be found by my feed reader.

I'm not convinced this should be closed yet. Would it help to put RSS icons anywhere?

Would it help to put RSS icons anywhere?

Yes.

Yeah, would be helpful. I was used to getting the link and copying it to my feed reader, I wasn't aware that there was a standard by which it would find the feeds automatically. I didn't think to just put the domain until you wrote that they are in fact available.

OK, I'll work on something soon.

Fixed in #152


Move the SDK into Production

This PR updates the readme and moves the sdk from Beta to Production.

Thank you so much for this @nplasterer! 🙇🏻♀
Added just a few tech writer-type questions - and I think the README will be ready to go once we are ready for production release.

The Android Test CI is flaky feel free to merge this without it passing 🙏


MGDOBR-528: Update MC config to use RHOC staging data plane

MGDOBR-528

@kostola Could you please update also minikube profile and https://github.com/5733d9e2be6485d52ffa08870cabdee0/sandbox/blob/main/.github/workflows/Manager-CI.yaml ?

I struggle to verify this PR manually - trying just a sanity check - following DEMO.md. I will share steps I did locally. Please, could anyone tell me if I miss some step, or do some wrong step?

mvn clean install -Dquickly
MANAGED_CONNECTORS_CLUSTER_ID, MANAGED_CONNECTORS_CONTROL_PLANE_URL and OPENSHIFT_OFFLINE_TOKEN set in dev/bin/localconfig according to the OpenBridge - Environment Details spreadhseet
dev/bin/credentials initialized with rhose-*.json files
./dev/bin/minikube-start.sh
./dev/bin/minikube-build-docker-images.sh
docker-compose -f dev/docker-compose/docker-compose.yml up -d
docker-compose -f dev/docker-compose/docker-compose.yml ps
docker-compose -f dev/docker-compose/docker-compose.yml logs
in one window ./dev/bin/manager-run.sh as it run on foreground
in second window ./dev/bin/shard-run.sh as it also run on foreground
then I start DEMO.md with command .  dev/bin/credentials/local_env
I continue DEMO.md successfully, but sending cloud event fails with 404 response

<title>404 Not Found</title>

404 Not Found

nginx

@sutaakar I updated the scripts, minikube profile and github workflow...could you please take a look and approve if you're ok with the changes?

Verified testProcessorsAreDeployed is running locally. Test is failing for MC due to missing https://github.com/5733d9e2be6485d52ffa08870cabdee0/sandbox/pull/577 (merged soon after)


Fix ClassImbalance.validate() Docstring

Last trio of ">>>" needs to be indented.
Example:
            >>> import pandas as pd
            >>> X = pd.DataFrame()
            >>> y = pd.Series([0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
            >>> target_check = ClassImbalanceDataCheck(threshold=0.10)
        >>> assert target_check.validate(X, y) == {"errors": [{"message": "The number of instances of these targets is less than 2 * the number of cross folds = 6 instances: [0]",\
                                                               "data_check_name": "ClassImbalanceDataCheck",\
                                                               "level": "error",\
                                                               "code": "CLASS_IMBALANCE_BELOW_FOLDS",\
                                                               "details": {"target_values": [0]}}],\
                                                   "warnings": [{"message": "The following labels fall below 10% of the target: [0]",\

@jpcarroll Here's a good, super easy one to continue your GitHub profile ;)


Sometimes the method onCanStartVideoServiceChanged is not called with canStartVideoService = true

Hi,
The ConversationCallback is really inconstant.
Sometimes it calls some methods multiple times, sometimes it don't call them at all.
The problem I'm getting right now is that sometimes the method onCanStartVideoServiceChanged(boolean canStartVideoService) is never called with value true...
I simulate two diferente situation.
https://github.com/4brunu/SkypeForBusinessAndroidVideoIssue/blob/master/app/src/main/java/com/microsoft/office/sfb/healthcare/SkypeCallFragment.java#L108-L111
The first one, I only init the ConversationHelper and don't call         mConversationHelper.ensureVideoIsStartedAndRunning();.
Here are two different log's when I try this.
*First log*
onCanSendMessage(boolean canSendMessage = true)
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = true)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = false)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = true)

*Second log*
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanSendMessage(boolean canSendMessage = true)
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanStartVideoServiceChanged(boolean canStartVideoService = true)

The second one, is when I init the ConversationHelper and call ConversationHelper.ensureVideoIsStartedAndRunning().
Here are more different log's when I try this.
*first log*
onCanSendMessage(boolean canSendMessage = true)
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanStartVideoServiceChanged(boolean canStartVideoService = true)

*second log*
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanSendMessage(boolean canSendMessage = true)
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanStartVideoServiceChanged(boolean canStartVideoService = true)

*third log*
onCanSendMessage(boolean canSendMessage = true)
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = true)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = false)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = true)

*fourth log*
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanSendMessage(boolean canSendMessage = true)
onCanSetPausedVideoServiceChanged(boolean canSetPausedVideoService = true)

*fifth log*
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanStartVideoServiceChanged(boolean canStartVideoService = false)
onCanSendMessage(boolean canSendMessage = true)
onSelfAudioMuteChanged(AudioService.MuteState newMuteState = MUTED)
onCanStartVideoServiceChanged(boolean canStartVideoService = true)

if the method onCanStartVideoServiceChanged is not called with canStartVideoService = true, where am I suppose to start the video?
The situations above, where simulated in the same conditions, with the same meting and the same device (Moto G first generation - Android 5.1).
I did some additional tests with the following devices, and got the same issues:

Nexus 5X - Android 7.1.2
One Plus X - Android 6.0.1
Samsung GT-S7580 - Android 4.2.2

I'm using Skype for business SDK 1.1.0
Thanks

I created a sample project to illustrate the issue.
https://github.com/4brunu/SkypeForBusinessAndroidVideoIssue
In the App, I'm trying to archive the automatic start of the video, when someone join's the skype for business metting. When the method is called with true, the video work's out of the box, otherwise it doesn't, and the only way to get it to work, is to click the button pause/resume the video.
I think this may be a SDK issue, but I'm not sure.

@4brunu could you try with the last version of the SDK and let me know if you still see this issue?

@jovillas There is no new version of the SDK for Android.
The last release is still 1.1 from February.
https://www.microsoft.com/en-us/download/details.aspx?id=51961
Only the SDK for iOS has a new version, 1.2 from July.
https://www.microsoft.com/en-us/download/details.aspx?id=51962

@jovillas after testing with the 1.3.0 SDK version, the problem is still there.


Can't use helm chart from an Azure container registry as dependency chart

Is there any way using a helm chart from an Azure container registry as dependency chart.
There is no info regarding that on the docs.
If I:

run helm dep up "no repository definition for testrepo.azurecr.io/helm/testchart:v0.1. Please add them via 'helm repo add'"
tried to add the acr repo as helm repo "helm repo add testrepo testrepo.azurecr.io/helm/testchart:v0.1" ->
"Error: could not find protocol handler for:"

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

ID: 59c4be11-ec02-7160-e65b-2218bfd70f68
Version Independent ID: 19e08339-390f-ccfa-885c-2643722bd186
Content: Store Helm charts - Azure Container Registry
Content Source: articles/container-registry/container-registry-helm-repos.md
Service: container-registry
GitHub Login: @dlepow
Microsoft Alias: danlep

@bellaned Thank you for the feedback. We will work on it and will keep you updated on the thread

@bellaned Thank you for the feedback. We will work on it and will keep you updated on the thread

Hello @bellaned - Thanks for reaching out. Currently with Helm v3 you can't add an Azure container registry as a Helm repository. For example, see https://github.com/helm/helm/issues/8094. If I'm understanding your dependency chart correctly, you won't be able use it with the current OCI support in ACR.

Hello @bellaned - Thanks for reaching out. Currently with Helm v3 you can't add an Azure container registry as a Helm repository. For example, see https://github.com/helm/helm/issues/8094. If I'm understanding your dependency chart correctly, you won't be able use it with the current OCI support in ACR.

@dlepow  This means that an ACR cannot be used to store helm charts the same way it previously was able to using Helm 2 and the AZ CLI correct? You need to store them in a repository in your ACR, similar to Container images.
@bellaned  it seems like this is currently being worked on helm/helm#8843.

@dlepow  This means that an ACR cannot be used to store helm charts the same way it previously was able to using Helm 2 and the AZ CLI correct? You need to store them in a repository in your ACR, similar to Container images.
@bellaned  it seems like this is currently being worked on helm/helm#8843.

@bellaned Hope the provided information is helpful.
We will now close this issue. If there are further questions regarding this, please tag me in a comment. I will reopen it and we will continue the discussion.

@bellaned Hope the provided information is helpful.
We will now close this issue. If there are further questions regarding this, please tag me in a comment. I will reopen it and we will continue the discussion.

Hello @bellaned - Thanks for reaching out. Currently with Helm v3 you can't add an Azure container registry as a Helm repository. For example, see helm/helm#8094. If I'm understanding your dependency chart correctly, you won't be able use it with the current OCI support in ACR.

How do I run it with normal deprecated helm update? Is it possible or it cant be used in whichever mode.

Hello @bellaned - Thanks for reaching out. Currently with Helm v3 you can't add an Azure container registry as a Helm repository. For example, see helm/helm#8094. If I'm understanding your dependency chart correctly, you won't be able use it with the current OCI support in ACR.

How do I run it with normal deprecated helm update? Is it possible or it cant be used in whichever mode.


Default translations on translated model

Can I somehow use a model field (name) as default translation fallback instead a row on translations table?
For example:
Table countries

id
name
iso

1
Greece
gr

Table country_translations

id
country_id
name
locale

1
1
Griechenland
de

Code
$country = Country::where('iso', '=', 'gr')->first();
echo $country->translate('en')->name; // Greece

App::setLocale('en');
echo $country->name;     // Greece

You can do this:
App::setLocale('en');

$country = Country::where('iso', '=', 'gr')->first();
echo $country->translate()->name; // Greece

Thanks @dimsav.
To avoid all views modification, I will write accessors on models, like this:
public function getNameAttribute()
{
    return $this->translate()->name;
}

Any idea to write less code?

Have you tried this without any accessor? Should work too.
App::setLocale('en');

$country = Country::where('iso', '=', 'gr')->first();
echo $country->name; // Greece

Yes, that what I tried first. It prints null.
Any ideas? Perhaps I have to set something on config file?

Have you set the property $translatedAttributes?
class Country {

    public $translatedAttributes = array('name');

}

Yes I did.
Also, if I do $country->translate()->name prompts me the error: Trying to get property of non-object.
Now I'm 100% sure that I'm doing something wrong... but what?

@dimsav I guess that my problem explanation is not clear enought.
I don't have any other translations on country_translations table. The main language should be english, and the default translations is setted on models table, countries.
I don't want to move all the model fields (name) to country_translations table, with en locale.
If I run the following code
App::setLocale('en');
$country = Country::where('iso', '=', 'gr')->first();
echo $country->name;

... it doens't print anything. I figured out that getTranslation function from Translatable is triggered, and the functions result is a NULL. So if I run this code:
App::setLocale('en');

$country = Country::where('iso', '=', 'gr')->first();
echo $country->translate()->name; // Greece

... the error Trying to get property of non-object. makes sence, since its trying to get name property from a NULL.
Hope the issue is more clear now.

I am sorry but this is not how this package works. If you want to translate the country's name, you have to explicitly move it to the translation table and remove it from the model.

@dimsav Ok, thanks.
I will try to fork and code it.
Thanks for your time, and for the package, its awesome.

You are welcome :)


Fix wrong path of Dockerfile in action.yaml

Verified by https://github.com/apache/skywalking-python/pull/110/checks?check_run_id=1613578753 good for release now


fix(side-panel): fixed header fone-size

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
7951

Relevant Lines:
8974

💛  - Coveralls


Exit 1 when there are failures and add gateway4 backend in test cases

Also fixed a minor issue conversion between c++ and cxx.

[trickle] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_trickle.BM_PumpStreamServerToClient_Trickle_2M_32k.opt.new: 1

[trickle] No significant performance differences

If auth test works on GCE only, shall we make the test case generation more intelligent so we can still run the whole testcase file manually from local?
For example, instead of
docker run --test_case=non-authtest
docker run --test_case=auth-test
Can we do
docker run ... --test_case=non-authtest
test <is_on_gce> && docker run ... --test_case=authtest
?

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

There's definitely ways to work around this. Same for cloud gateways and gateways. But I'd like to do that in a separate PR, if you don't mind. I added comments.

Supporting "master" is a quick way to verify the sanity of the framework itself without relying on complex "git checkout" logic.  Without it, how do you plan to quickly test changes of the driver?
Also if we add auth tests like this, we lose the ability to run the test case script locally.  Can we at least add an env to skip auth tests during runtime so we can still run the generated test cases with command like
docker_image=gcr.io/grpc-testing/grpc_interop_go1.7:master skip_auth=1 ./testcases/go__master
?

When you create new tests, you don't need to change or add new images. Note that I'm not changing the version of the test cases, which is still just "master" right now. I'm just removing "master" images.
If we want to test the framework itself, I think it's better to add a test script. The master images are confusing as we don't know easily which commit it was created from. We probably should cleanup the GCS as well to remove all images that were created for testing the framework and only keep the official ones.

Reverted the change of removing master images. PTAL.

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__2M_2_0.counters.new: 1

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.counters.old: 1

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

Artifact Build Windows (internal CI)  #12911
Asan C #12912
Basic Tests C Linux [dbg] #12913
Basic Tests C++ Linux [dbg] #12873, #11008


Only send focus to mouse position if the mouse crosses a boundary

Right now, the focus will change even if you move it over an unfocused window without moving over a border. This is not the i3 behavior, and I think it implies some other problems too.

fixed. sending pr in a moment


Remove unused stopwatch

PR Summary
Remove unused stopwatch which was used for legacy telemetry
PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Change is not breaking
[x] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[x] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[x] Not Applicable
OR
[ ] User-facing Documentation needed

[ ] Issue filed - Issue link:

Testing - New and feature

[x] Not Applicable or can only be tested interactively
OR
[ ] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

@anmenaga we're keeping the existing telemetry code for future reference


Threefold connect: after verifying identity, the first login attempt doesn't pop up since there is a widget unmounted

Verified on Android 14,
Threefold-Connect: 4.0.0-184
APK:12-12-2024
The first Login after verifying identity worked normally.

https://github.com/user-attachments/assets/4554c544-1f5e-4604-8644-9cb2840b6e10
Related Link:

https://app.testlodge.com/a/26076/projects/40893/suites/206114?expand_section=407477#case_4412672