検討機能の不具合修正

説明 / Description
検討機能に関する以下の不具合を修正

1 手あたりの時間を指定した場合に、局面を変更しても残り時間がリセットされない問題
読み筋を棋譜へ挿入した際にエンジンへ無駄なコマンドを送る問題

チェックリスト / Checklist

MUST

[ ] npm test passed
[ ] npm run lint was applied without warnings
[ ] changes of /docs/webapp not included (except release branch)
[ ] console.log not included (except script file)

RECOMMENDED (it depends on what you change)

[ ] unit test added/updated
[ ] i18n

Codecov Report
Patch coverage: 72.50% and project coverage change: +0.03 :tada:

Comparison is base (f5032ff) 70.49% compared to head (968a82d) 70.52%.

:exclamation: Current head 968a82d differs from pull request most recent head 85a154e. Consider uploading reports for the commit 85a154e to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #518      +/-   ##
==========================================
+ Coverage   70.49%   70.52%   +0.03%
==========================================
  Files          75       76       +1
  Lines       15436    15484      +48
  Branches     1974     1983       +9
==========================================
+ Hits        10881    10920      +39
  Misses       2609     2609
- Partials     1946     1955       +9

Impacted Files
Coverage Δ

src/renderer/store/record.ts
67.88% <70.83%> (+0.30%)
:arrow_up:

src/renderer/store/research.ts
61.59% <75.00%> (+2.21%)
:arrow_up:

... and 1 file with indirect coverage changes

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


Feature Suggestion: Add Markdown support

Personally a nice-to-have for me, but would be cool.
See https://github.com/adam-p/markdown-here/wiki/Markdown-Here-Cheatsheet

Example of a "dead simple" markdown editor from the official vue docs itself: https://vuejs.org/v2/examples/

Agree with @connecteev
Canvas really easy to use. Canvas with Markdown support will be even greater 😆.


Remove IndirectSort [HPPC-178]

Issue: HPPC-178 (migrated from JIRA), created by Dawid Weiss (@dweiss)

Comment by Dawid Weiss (@dweiss) (migrated from JIRA)
Darn, this still can't be cleanly done with new JDKs.


Current implementation of (py)ballista has limitation when it comes to DataFrame operations.
following code will result with an error:
from pyballista import BallistaBuilder
from datafusion import SessionContext
from datafusion import functions as f

# %%
ctx: SessionContext = BallistaBuilder()\
    .config("ballista.job.name", "example ballista")\
    .config("ballista.shuffle.partitions", "16")\
    .standalone()

df = ctx.sql("SELECT 1 as r").aggregate(
    [f.col("r")], [f.count_star()]
)
df.show()

it will throw exception (similar to):
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
File /Users/user/git/arrow-ballista/python/examples/example.py:3
      1 # %%
      2 # Select 1 to verify its working
----> 3 df = ctx.sql("SELECT 1 as r").aggregate(
      4     [f.col("r")], [f.count_star()]
      5 )
      6 df.show()

TypeError: argument 'group_by': 'Expr' object cannot be converted to 'Expr'

Actually previous implementation had the same problem, the same error will be thrown (git checkout 2f223db21557c15080bf865ac692d276b8f0b770)
# %%
from pyballista import SessionContext
from datafusion import functions as f

ctx = SessionContext("localhost", 50050)

df = ctx.sql("SELECT 1 as r").aggregate(
    [f.col("r")], [f.count_star()]
)
df.show()

The similar issue is there if SessionConfig is used:
from ballista import Ballista, RuntimeConfig, SessionConfig
from datafusion import RuntimeConfig, SessionConfig, SessionContext

runtime = RuntimeConfig().with_disk_manager_os().with_fair_spill_pool(10000000)
config = (
    SessionConfig()
    .with_create_default_catalog_and_schema(True)
    .with_default_catalog_and_schema("foo", "bar")
    .with_target_partitions(8)
    .with_information_schema(True)
    .with_repartition_joins(False)
    .with_repartition_aggregations(False)
    .with_repartition_windows(False)
    .with_parquet_pruning(False)
    .set("datafusion.execution.parquet.pushdown_filters", "true")
)

# %%
ctx: SessionContext = Ballista.builder\
    .with_runtime(runtime)\ # it will panic at this point, complaining that `RuntimeConfig` object cannot be converted to `RuntimeConfig`
    .with_config(config)\
    .standalone()

ctx.sql("SELECT 1").show()

problem with RuntimeConfig, SessionConfig could be solved if they are re-exported in ballista:
from ballista import Ballista, RuntimeConfig, SessionConfig
from datafusion import SessionContext

but the first problem with DataFrame would still remain.
My guess is that there is FFI issue as ballista and datafusion is different package, I'm not sure what the problem is nor how to resolve this issue.
@timsaucer comment https://github.com/apache/datafusion-ballista/issues/1091#issuecomment-2436167064 make more sense to me now.
Possible Solution (I)
One obvious way would be to move ballista context creation to datafusion-python. We need one line context creation:
let ctx = datafusion::prelude::SessionContext::remote("df://localhost:50050").await?;

As ballista context is the SessionContext it would be trivial to integrate, and, I believe, it would avoid previous issues.
We could only provide "remote context" (no standalone), making it optional feature for which users python datafusion users could to opt in. This would somewhat limit number of libraries ballista would bring to datafusion-python (we could split core to core and client-core to further reduce deps)
This proposal would mean that we would have to bring optional dependency to datafusion-python, and additional complexity in (datafusion-python) release process.
(py)ballista would stay, it could expose scheduler and executor control as proposed in https://github.com/apache/datafusion-ballista/issues/1107
Big risk for of this proposal is that ballista could block datafusion python release in case it goes back to unmaintained mode.
Possible Solution (II)
Another possible solution is to re-export all classes from datafusion-python in ballista. I'm not sure how complex or practical this is going to be.
I'm not sure if datafusion python applications would need some kind of re-writing to be able to run on ballista.
This would put additional responsibility to ballista maintainers (not too many of them).
Any Other Solution?
I'm not sure, open to suggestions
Proposal
Short term proposal:

Remove test used to test (py)ballista code on ballista commit https://github.com/apache/datafusion-ballista/blob/81cfa632f94ef794cc9f35c81676cf9a010c1dbe/.github/workflows/rust.yml#L121-L122 .
update datafusion to latest https://github.com/apache/datafusion-ballista/pull/1125 .
focus on ballista (rust) release https://github.com/apache/datafusion-ballista/issues/974 .

We should release (py)ballista once we figure out the best approach to fix it.

But even if that unblocks you I worry it still doesn’t resolve to core issue of trying to share that session context from one python package to another.

Draft patch to illustrate "Possible Solution (I)", for datafusion-python (v42) which would solve (py)ballista issues:
diff --git a/Cargo.lock b/Cargo.lock
index 815323b..a00bdc5 100644
diff --git a/Cargo.toml b/Cargo.toml
index df72cd4..cf3cb1c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -47,6 +47,7 @@ async-trait = "0.1"
 futures = "0.3"
 object_store = { version = "0.11.0", features = ["aws", "gcp", "azure", "http"] }
 url = "2"
+ballista = { path = "../arrow-ballista/ballista/client", default-features = false }

 [build-dependencies]
 prost-types = "0.13" # keep in line with `datafusion-substrait`
diff --git a/python/datafusion/context.py b/python/datafusion/context.py
index 957d7e3..ca6094a 100644
--- a/python/datafusion/context.py
+++ b/python/datafusion/context.py
@@ -423,7 +423,7 @@ class SessionContext:
     """

     def __init__(
-        self, config: SessionConfig | None = None, runtime: RuntimeConfig | None = None
+        self, config: SessionConfig | None = None, runtime: RuntimeConfig | None = None, url: str | None = None
     ) -> None:
         """Main interface for executing queries with DataFusion.

@@ -448,7 +448,7 @@ class SessionContext:
         config = config.config_internal if config is not None else None
         runtime = runtime.config_internal if runtime is not None else None

-        self.ctx = SessionContextInternal(config, runtime)
+        self.ctx = SessionContextInternal(config, runtime, url)

     def register_object_store(
         self, schema: str, store: Any, host: str | None = None
diff --git a/src/context.rs b/src/context.rs
index f445874..a40bc47 100644
--- a/src/context.rs
+++ b/src/context.rs
@@ -23,6 +23,7 @@ use std::sync::Arc;
 use arrow::array::RecordBatchReader;
 use arrow::ffi_stream::ArrowArrayStreamReader;
 use arrow::pyarrow::FromPyArrow;
+use ballista::prelude::SessionContextExt;
 use datafusion::execution::session_state::SessionStateBuilder;
 use object_store::ObjectStore;
 use url::Url;
@@ -271,11 +272,13 @@ pub struct PySessionContext {

 #[pymethods]
 impl PySessionContext {
-    #[pyo3(signature = (config=None, runtime=None))]
+    #[pyo3(signature = (config=None, runtime=None, ballista_url=None))]
     #[new]
     pub fn new(
         config: Option<PySessionConfig>,
         runtime: Option<PyRuntimeConfig>,
+        ballista_url: Option<String>,
+        py: Python,
     ) -> PyResult<Self> {
         let config = if let Some(c) = config {
             c.config
@@ -293,9 +296,16 @@ impl PySessionContext {
             .with_runtime_env(runtime)
             .with_default_features()
             .build();
-        Ok(PySessionContext {
-            ctx: SessionContext::new_with_state(session_state),
-        })
+
+        match ballista_url {
+            Some(url) => Ok(PySessionContext {
+                ctx: wait_for_future(py, SessionContext::remote_with_state(&url, session_state))
+                    .map_err(DataFusionError::from)?,
+            }),
+            None => Ok(PySessionContext {
+                ctx: SessionContext::new_with_state(session_state),
+            }),
+        }
     }

     /// Register an object store with the given name

more details at https://github.com/apache/datafusion-python/compare/main...milenkovicm:datafusion-python:feat_add_ballista
If we go this direction we would need to make ballista optional feature

One more option to throw in. Could we reduce the scope for (py)Ballista for now to just support SQL and not the DataFrame API?
We would just need the ability to send SQL to the server (perhaps via FlightSQL) and then fetch record batches.


Only set endpoint if url is not empty

see #20
This is a bit of a quick hack until I figure out a better way to test the various conditions.

Looking forward to this quick fix on the master branch.


Feature Request: meters adjustement

Hello,
in my application at ESS I've decided to group Medusa Gauge instances in 2 categories: meters and gauges.
Meters will use the following skin: AMP, GAUGE, HORIZONTAL, LINEAR, QUARTER, VERTICAL and THREE-QUARTERS (creates from OverviewDemo's gauge9).

All these sking have a lot of common characteristics, but few are missing:

AMP and LINEAR don't have sections highligh, markers and threshold;
VERTICAL doesn't have LCD support.

Moreover, the LED inside GAUGE, HORIZONTAL, QUARTER and VERTICAL is small and, due to its position, can be hidden by the needle. So my suggestion is a bigger led positioned on the top-left angle, like in AMP.

Would also be good having a THREE-QUARTERS skin ;-)

If I understand you right this should be possible by using the GaugeSkin and set the angleRange to 270 degrees :)

the AMP skin was more or less another test (like the FGauge). In principle the idea is not to provide solutions for all problems but give users examples on how to create their own skins. So you could for example take the LinearSkin, fork it and tweak it in the way you like. After that you could use your own skin by calling setSkin(myOwnSkin) on the gauge control :)
You are right, the Led size and locations are not optimal but I don't like the idea to put them somewhere "outside" the gauge , I'll increase them a bit and try to find better locations :)

the AMP skin was more or less another test

I agree. I think I'll not give AMP to my users: it is easy to put a coubple of rounded rectangle below an HORIZONTAL to obtain the same thing.

take the LinearSkin, fork it and tweak it in the way you like

OK, I'll do it to enable the same "sections highligh" behavior the is the one I'm more interested in now.

I don't like the idea to put them somewhere "outside" the gauge

OK, probably it could be on the right side of the knob for GAUGE and HORIZONTAL, over the knob for QUARTER and VERTICAL.

So I've increased the size of the LED in the given skins and I think I will stay with the current LED positions. If you really need another indication you might want to use an addition control (e.g. I could send you the LED as stand alone control) and add it to your dashboard where ever you need it. I think this would make more sense than modifying the skins until they will fit your current needs.
It's pretty easy to link an external control to the thresholdExceeded property from the outside. I hope this is ok for you...

OK, thank you.
I remember to have read your article about LED, by I'm unable to find it now.
If you can send me the LED stand alone control or the link to the artile will be much appreciated.

You should find different implementations of the LED control here: https://github.com/HanSolo/hol1634/tree/master/src/main/java/eu/hansolo/fx/hol1634/regionbased


Converting world error

Chunker Version
1.3.0-main-2cdf4aa
Input World Version
Bedrock 1.21.40
Output World Version
Bedrock 1.21.40
Platform / Operating System
win32-x64-10.0.19045
Issue Description
Error Chunker Displayed: A fatal error occurred during conversion.

If you're able to provide the following so we can look further into the issue:

Can you send a copy of your main.log from %APPDATA%/chunker-electron/logs, you'll want to put that path into Explorer / Run dialog (Windows Key + R)
The world if possible or a world that produces the same error, you can also email it to<EMAIL_ADDRESS>

Sure, here i
qg1t59QdNJA=.zip
https://drive.google.com/file/d/1DDIIljXSXvBIP0SQs3QUm4YjfAiuns07/view?usp=drive_web
t is.
Em qua., 30 de out. de 2024 às 06:24, Myles @.***>
escreveu:

If you're able to provide the following so we can look further into the
issue:

Can you send a copy of your main.log from
%APPDATA%/chunker-electron/logs, you'll want to put that path into
Explorer / Run dialog (Windows Key + R)
The world if possible or a world that produces the same error, you
can also email it to @.***

—
Reply to this email directly, view it on GitHub
https://github.com/HiveGamesOSS/Chunker/issues/106#issuecomment-2446301514,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BMQ2O64UVOWRJP3RB2HHVUDZ6CQU5AVCNFSM6AAAAABQ2UNUMGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINBWGMYDCNJRGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

Awesome, thank you, seems to be related to two issues in the world:

It fails to correctly retain world data because of an old/unknown dimension
There is a chunk with corrupted/old entity data which it fails to convert.

We'll look into getting this fixed for the next release :)

This should be fixed in the latest release - https://github.com/HiveGamesOSS/Chunker/releases :)


Updated with PyGem Menus and Evandro files.

Updated with Evandro's and Tomislav initial files/changes


[cherry-pick] Fix bug: TiSpark Catalog has 10-20s delay (#1108)

cherry-pick: https://github.com/pingcap/tispark/pull/1108

/run-all-tests mode=full

/run-all-tests mode=full


Scroll @ explorer panel

Issue Type
Performance Issue
Description
Scrolling lags drastically(no smooth scroll) except  when scroll bar is used to move from top and bottom vice versa.


Adds an executeMultiple function

executeMultiple allows you to define a series of actions that you would like to perform sequentially
This is especially useful for animation scheduling so that you don't have to nest successive animations within completion blocks.

retest this please


CLI refactor and enhanced support for newer revisions

Currently the CLI seems to be under-documented regarding the usage and options that are set by default and there seems to be lack of good defaults, hard requirement flags for required args like addr (setting this as localhost by default would be nice and this should possibly be a required argument)
I'd also like to refactor the CLI in such a way that least collectors are initialized, that is it starts up with the minimum functionality and the rest is offered as optional arguments to the end user.
Also add support for newer revisions of Python
I'd be happy to work and contribute to this if you happen to find this as a reasonable proposal.
Lastly thank you for working on this, the metrics seem to be really well organized by type.

I don't use this anymore, but I'm happy to assist if you'd like to make some improvements!
When you say refactor in such a way that the least collectors are initialized, are you referring to the ProcessCollector?  I think I chose the current default based on a standard install, and opted to just log a warning if we can't read the pidfile instead of erroring.  Optimistic, but not critical.
The --addr flag is empty by default which, if I recall, binds on all interfaces.  That one was chosen because I figured folks tend to run external Prometheus servers, so binding on localhost is not very useful.  I figure if you have public interfaces on the machine you'd hopefully be paying more attention to these arguments anyway.
I'd like to keep the project up-to-date with Python, so if you had any changes for that I'd be more than willing to accept PRs.

Yes, I was referring to the Process Collector, yes so having the --addr as localhost, makes it convenient for doing functional testing before exposing it on the public interface.
I'm also testing this with trafficserver9 and it works great so far.

Glad to hear v9 is working well!
I didn't mean to stall this discussion, but I'm not sure it's worth breaking for users that rely on the current <IP_ADDRESS> bind given it's easy to bind to localhost for dev work.
I went and added newer Python releases to the tox and setup.py suite in https://github.com/gdvalle/trafficserver_exporter/commit/5836d96841b6718713de5bf72d91ed6aaad0f5cd since this was opened, and also published it to pypi.

Yep makes sense, thank you for the changes, I'll close the PR for now and reopen in case required.


Modify which package to add a service access parameter

Prerequisites
Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

[ ] I checked the documentation,issues and found no answer

Expected Behavior

Please describe the behavior you are expecting

Current Behavior

What is the current behavior?

Failure Information (for bugs)
Please help provide information about the failure if this is a bug. If it is not a bug, please remove the rest of this template.
Steps to Reproduce
Please provide detailed steps for reproducing the issue.

step 1
step 2
you get it...

Context
Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

Operating System:

PHP Version:

php.ini:

php-fpm or apache:

pinpoint_agent.conf:

Failure Logs
Please include any relevant log snippets or files here.

pinpoint_log.txt  php.log  php-fpm.log etc (Anything could help us )

Modify which package to add a service access parameter #408

?

I can't understand it


[FR]: Add info about endpoint, region and cloud function when an error happens

Description
I noticed that when an error happens like for example a not found in a callable function, the region, endpoint and host are not included inside the nserror dictionary.
API Proposal
Added to it, and also make open to read the region property inside functions instance
Firebase Product(s)
Functions

Thanks for the FR. It's not on our near-term roadmap, but we're happy to review a PR.


Icons

Is your feature request related to a problem? Please describe.
Implement and document icons in storybook
Describe the solution you'd like.

[ ] Implement and document icons and usage in storybook
[ ] Sizes?
[ ] Colors?

Moved to https://github.com/Energinet-DataHub/MightyDucks/issues/143


Allow XDG_CONFIG_HOME on macOS

For many tools, especially those designed for use across Linux/Unix/Mac, it makes sense to use XDG as a common standard. This especially applies to command line tools, for which ~/Library/* breaks inherited convention (and thus breaks interop).
I have previously submitted PRs to resolve this in several applications on macOS, but it would be easier to establish good defaults here instead of sending PRs to patch around it downstream. (This also makes this a blocker for personal usage – at least without vendoring and modifying the module, which isn't ideal.)
Appdirs issue: https://github.com/ActiveState/appdirs/issues/78

I want (some version of) this change personally too, but I think we have to be quite careful -- the Apple guidelines are clear, so I'm:

+1 on "follow XDG_* if set, even on macOS"
But -1 for any suggestion of following the XDG-recommended behavior (which says what to do when XDG_ is unset) on macOS
But +0 on "add a way for libraries using platformdirs to opt-in to that behavior even on macOS", which is sometimes useful -- e.g. ~/Library/Application Support has a space in it, so for libraries that install scripts with shebangs and put them there, they literally won't execute (unless they use the newer ~/Library/ApplicationSupport spaceless symlink), and for those, always defaulting to ~/.local/share, a la XDG_DATA_HOME's default seems potentially reasonable

(Not sure you were suggesting anything about default behavior, but yeah just mentioning my own opinion on all 3 decisions).

(Not sure you were suggesting anything about default behavior, but yeah just mentioning my own opinion on all 3 decisions).

For the record, I'm +1, +0, and +1 on those three points.

Apple does not follow the XDG spec, so at best what I've seen is people roughly mapping it, see https://stackoverflow.com/questions/3373948/equivalents-of-xdg-config-home-and-xdg-data-home-on-mac-os-x
If anyone has better links/documentation on what exactly would mean following the XDG spec when the XDG env-vars are set feel free to clarify.

If XDG* is set (and is a CLI program), then the program should use XDG.
Other cases (GUI programs) are less clear, but if it has an application
bundle, then it's less likely that XDG is the answer.

How do you identify if the Python app is CLI or not?

I think that the default should assume CLI. At the very least, this needs
to be specifiable downstream. Cross platform applications using Python most
likely see use in XDG compliant systems as well, and they often use configs
editable in Vim/etc. So having them in a well known location across
platforms is a compelling concern IMHO.

It gets tricky because platformdirs might be a dependency of one of your libraries, so the caller codebase might not have direct access to it, and could not necessarily tell in what env type is used. We could make it a global state I guess, something like
platformdirs.set_cli_type(False)

So then GUIS could call part of their setup that code, even if it's used by a transient dependency.

I'm unsure if it makes sense for a dependent library to use platformdirs. I
guess it needs to be supported regardless, though.
Actually, what if this is done per key?

I'd personally rather have one global flag. Are we aware of other languages/libraries respecting XDG on macOS as precedence?

If you are aware of ones that don't support XDG, please let me know so
that I can PR it in the future. With any luck, I can just PR platformdirs
instead of appdirs. :)
But in all seriousness, anything ported directly from Linux/Unix that
already uses XDG generally adheres to XDG on Mac. Anything that uses
~/.config follows the half of XDG that I care about (and a lot of stuff
uses ~/.config these days, including git).
And a concrete example: I did recently PR XDG into the Backblaze SDK, which
is used by their CLI and in other applications as a library.

Feel free to open a pull request :+1:

How should backwards compatibility be handled?

What do you suggest?

Pushed my proposal for backwards compat to #35, which is mostly complete (just needs more tests, a bit of bikeshedding, and a rebase).

* unless they use the newer `~/Library/ApplicationSupport` spaceless symlink

This symlink is created by iTerm2, it's not a new addition to the OS.

Would you accept a PR to extend the XDG_* environment variables to Windows as well as Mac? I've ran into cases on Windows where I would like to override the cache directory using an environment variable. My thought on the implementation would be to
have all systems obey the environment variable like Unix currently does and to revert to the current logic if it is not set.

I personally would be alright with this, however, considering its wide-ranging implications I'd like to get input of some of the downstream users; e.g. pip cc @pradyunsg, pytest @asottile @nicoddemus. Plus the opinion of other maintainers: @RonnyPfannschmidt @ofek @Julian.

I felt icky about it when seeing the email notification last night, but I can't place my finger on why yet :)
I am obviously pro doing it on macOS, so I slept on it personally and couldn't think of a reason Windows users should get left out -- I think to me the justification is that a user who sets this envvar, regardless of platform, likely intends to use it. So yeah +0 for now from me for doing this on all OSes.
I would feel less good however about proactively telling users that this is the "recommended" way to get this behavior on all OSes, because indeed these envvars do not have wide adoption on Windows, and even macOS to some extent, so other software will not work this way -- (if we were to advertise a way to mutate these dirs I would instead prefer we have an explicit PLATFORMDIRS_* set of vars for the fully blessed case) But I could be convinced off of that too and just stick with these if others are for it.

I don't think pytest uses platformdirs/appdirs yet though many of its consumers do
so my opinion is less rooted but I'll give it anyway:

personally (and I know I'm wrong so no need to tell me!) platform-specific directories confuse me and my users so I tend to just use xdg everywhere (the pre-commit cache for instance on every platform will end up in ~/.cache/pre-commit)
this makes support and triage much easier since it cuts out the "oh you're on windows, uh look in hmm %APPDATA%\Local, or was it Roaming err..."

that said, I think having some way to configure the directories via an environment variable is a desirably feature, and XDG is fairly well specced to enable such a feature.  there's an additional question as to how you handle XDG considering a "default" -- and in that case you'd probably want to ignore XDG's recommended defaults and use the platform-specific defaults.  the other edge case is when the xdg variable is present but empty -- which seems to imply a bit more "I want xdg" but typically empty should be treated the same as missing (though a popular "standard" (NO_COLOR) gets this wrong as well)
anyway, I'm not a maintainer here -- nor am I currently a direct consumer -- nor am I a maintainer of a direct consumer -- so feel free to ignore my thoughts on this :) -- I'm going to unsubscribe from notifications and if you need me please @-mention directly

I'm a -1 for doing any changes related to this on Windows, and -0 for adopting XDG-when-set on MacOS (as long as there's a way to opt out, or if it's made opt-in). I'd lean toward having pip not enable such support on MacOS.
There's absolutely no reason to follow XDG for Windows; and doing so will only complicate the story for files on Windows. For pip, this will mean additional caveats to the configuration file story on Windows.
I'm not sure I'd want pip to support XDG configuration on MacOS either, since we're already technically out of sync with the Apple's specification for where configuration files should be; in more ways than one. Adding XDG as an additional layer of complexity on that would not be something I'd be enthusiastic about, to put it mildly.

(if we were to advertise a way to mutate these dirs I would instead prefer we have an explicit PLATFORMDIRS_* set of vars for the fully blessed case) But I could be convinced off of that too and just stick with these if others are for it.

I would prefer this as well. Using XDG on windows feels wrong and that way we don't run into issues causing unintended behavior for other applications that are using those environment variables.

I'm a soft -1 for doing any changes related to this on Windows

Does that also include adding PLATFORMDIRS_*  env vars?

Are there any well know / used standards for this on windows?
IMHO the platform specific override mechanism should be used

CC @zooba in case he cares to opine.

if we were to advertise a way to mutate these dirs I would instead prefer we have an explicit PLATFORMDIRS_* set of vars for the fully blessed case [...]

I was subscribed to this issue as a macOS user who'd potentially benefit from this change.
My opinion is that it should be the applications's responsibility to enable this behaviour and not exposed as an env var to end users that would affect every application which depends on platformdirs that they might have installed, by creating a parallel XDG not-spec.  Fundamentally, libraries should not be configured from the environment.

My opinion is that it should be the applications's responsibility to enable this behaviour and not exposed as an env var to end users

I fundamentally disagree with this personally -- regardless of mechanism, applications make crappy choices about where to put things sometimes (e.g. if platformdirs made this choice and someone hated it, they should be able to control their own system and apps running on it).
So I at times have agreed with @pradyunsg (that if we support XDG everywhere it should be opt-in by the app), but no matter what, I am -1 on any change that does not provide a user-facing way to control the choice.

Fundamentally, libraries should not be configured from the environment.

(I don't disagree with this though, I think some day platformdirs may unfortunately need a config file).

I don't disagree with providing an escape hatch and I totally sympathise that applications can and do make crappy choices - I disagree that it should take the form of a platformdirs-specific global override.  platformdirs could auto-generate (and respect) APP_NAME_* env vars for an application given its name, but the same env var should not be used for all applications serviced by platformdirs, unless it is part of a standard (like XDG), or unless you are setting out to, actually, standardise configuration overrides.

This is a contentious topic seems and given there's no agreement here I'll need to decline the request to add XDG support on Windows for now.

As a Windows user, I would dislike the adoption of specs from other platforms.

My opinion is that it should be the application's responsibility to enable this behaviour and not exposed as an env var to end users

I agree with this, and with the compromise of respecting env vars for an application given its name.

I am in complete support of using XDG directories on all platforms if defined. I have been working with the XDG spec and trying to adapt it to all platforms in order to make multi-platform development easier.
One of my primary areas of concern is finding a way to determine which python packages can be shared across platforms (pure python) and which need to have distinct directories. XDG talks about using a shared directory structure for a user across multiple platforms and how some directories need to be distinct and some can be shared.
In my case I have a $HOME directory that I am sharing across all platforms and my dot files and .config directory are used for all platforms. In contrast, $HOME/.local/bin is for Linux and $HOME/.local/bin_win is for Windows and set using SDG dirs (Not really because the define the executable directory but don't provide the variable for it yet. I'm working on it. However for other dirs it works great.)

I'm a soft -1 for doing any changes related to this on Windows, and -0 for adopting XDG-when-set on MacOS (as long as there's a way to opt out, or if it's made opt-in). I'd lean toward having pip not enable such support on MacOS.
There's absolutely no reason to follow XDG for Windows; and doing so will only complicate the story for files on Windows. For pip, this will mean additional caveats to the configuration file story on Windows.
I'm not sure I'd want pip to support XDG configuration on MacOS either, since we're already technically out of sync with the Apple's specification for where configuration files should be; in more ways than one. Adding XDG as an additional layer of complexity on that would not be something I'd be enthusiastic about, to put it mildly.

I have to disagree with the logic. There is absolutely a reason to support XDG on both MacOS and Windows.  It gives developers options. Regular "I don't know anything about computers" users won't care. But, I certainly do.
I share my HOME directory tree across platforms. During development I hate to have to go digging around in AppData to find things. Being able to control that would be very helpful. You may think that Windows has standard directories for everything, but many application don't use them. For years Python only installed in C:\Python.
And along came WSL. Now I can run Linux and Windows at the same time and share files. Being able to have a project directory seen by both platforms is great for development. With XDG dirs I can have python tools install into $HOME/.local/bin or $HOME/.local/bin_win.
Please remember that adding support for XDG dirs doesn't affect anyone that doesn't use them (for MacOS and Windows). On Linux if not set they should default appropriately.

Please remember that adding support for XDG dirs doesn't affect anyone that doesn't use them (for MacOS and Windows).

We hear your points, but please respect the decision of the maintainer team on this topic 👍 Unless the current maintainers come back that they've changed their minds there's nothing else to do.

I understand.

Closing per above.

@gaborbernat is the maintainer team also against implementing it on MacOS? If not - might be worth keeping this open?

I think we were 🤔

What about a opt-in environment variable PLATFORMDIRS_USE_XDG? Poeple who don't have it will not be affected. It will be a quite simple patch:
--- __init__.py.bak     2023-03-25 16:36:36.753498600 +0800
+++ __init__.py 2023-03-25 16:38:20.665189000 +0800
@@ -19,6 +19,9 @@

 def _set_platform_dir_class() -> type[PlatformDirsABC]:
+    if os.getenv("PLATFORMDIRS_USE_XDG"):
+        from platformdirs.unix import Unix as Result
+
     if sys.platform == "win32":
         from platformdirs.windows import Windows as Result
     elif sys.platform == "darwin":

Got surprised I could not find a way to specify PDM config dir on macOS, in order to change it from
~/Library/Application Support/pdm

to much more appropriate
~/.config/pdm

which is effectively XDG_CONFIG_HOME, as per XDG Base Directory Specification
Digging into PDM code led me eventually to this thread, as well as I found your referring some macOS Guidelines:
https://github.com/platformdirs/platformdirs/blob/b866d404c74d3467ab7a16e2be974612b14145b7/src/platformdirs/macos.py#L10-L11
Having config stored at
~/Library/Application Support

is anything but Unix thing. It's also not exactly macOS native thing, as all plist configs should go to
~/Library/Preferences

but I guess it's fine for some cross platform, especially, GUI apps, to use the former.
Because macOS is certified Unix (inspired by BSD at POSIX level), it's not unnatural to expect basic Unix conformance, which is luckily the case (notwithstanding its infamously being known to deviate from all kinds of standards).
It also implies one should be able to live a decent life, without need to know about Library and other macOS-specific stuff (given they enjoy Unix-only workflows).
The concern I can immediately come up with (there might be more) is related to dotfiles  management, e.g. using one of tools:

Home Manager
stow
dotdrop
dotbot
chezmoi

Besides:

there is unspoken contract for them to reside at
$HOME/.config

or
$HOME/.local/share

which rules out their placement to Application Support. For this to work,
it's expected for CLI apps to have their config dirs configurable, if they opt for Application Support relative path.
With all respect to the maintainers: it's disappointing that the issue was closed, and, from what I see, PRs are not too much welcome. Please kindly correct me if I'm wrong, @gaborbernat.

Because macOS is certified Unix

I do not believe this to be the case to the extent you wish to be.

I do not believe this to be the case to the extent you wish to be.

I suppose it was meant that macOS is POSIX certified? But at that level we are just splitting hairs and getting nowhere further to solving a major pain point that users are complaining about here.
The commenters in this issue have given plenty of use cases for supporting XDG_CONFIG_HOME on macOS.
Being technically correct about this or that is not the same as "doing the right thing". To me, open source is about respecting user freedom.

Sometimes freedom from incorrect implementation is more important than freedom to do broken things out of preference


Initial groups vanish after removal from deployment hand

INITIAL groups that are defeated and subsequently removed from the deployment hand still vanish and cannot be manually redeployed.
The bug appears to affect neither RESERVED nor MANUALLY deployed groups.

Addendum: After Celstra's posting in the forum, I was able to replicate his bug, and more:

EARNED villains that are removed from the deployment hand vanish, too.
Even villains that were set as EARNED but never added to the deployment hand are removed from the deployment list and cannot be deployed manually.


Dunder variables not listed with new language server

With Jedi:

With new Language Server:

@qubitron @brettcannon @MikhailArkhipov
Please review and changer Milestone accordingly.

"python.autoComplete.showAdvancedMembers": true

Shouldn't that be the default?

Are they commonly used? With all props visible user coding against their own class with 3 properties will be seeing a lot of stuff they don't care about. VS does not show those by default (unless user specifically types _). Unfortunately, there is no fine-grained control over typing in VSC.

Are they commonly used?

I believe the following are commonly used:

__nam__
__file__
__package__

VS does not show those by default (unless user specifically types _)

Why can't we display them in VSC as well, and reverse the sort order so they are displayed at the bottom. This way when users type something starting with _, then these items will appear (get filtered out)
@qubitron ?

__name__ and __file__ are somewhat common, but __package__ isn't.

VS does not show those by default (unless user specifically types _)

I'm confused, in this case looks like Don specifically typed _, so why wouldn't all the available dunder items appear?

@qubitron VS in this case means Visual Studio 2017, not VSCode. It would be nice to get similar behavior in VSCode but it's not there yet.

Decision is to enable this by default.


Add ability to selectively override removeNonexistentObjects

By adding an array of globs in the config, we can now define certain glob paths as folders that should persist.
This is useful if you cannot use pathPrefix and have content in the S3 bucket that is not generated by gatsby.
In our setup the root sitemap.xml and a "static" folder is built and used by another app and we need to prevent the plugin from removing these folders and files. We still want the plugin to clean up old files, but need to "whitelist" a bunch of files and folders that aren't coming from the gatsby build.

Sorry for the delay in responding to this. This looks like a great addition.
Would you mind adding E2E tests to cover this change? All that's needed is a test to make sure that objects which don't match the glob are still removed, and a test to check that objects which do match the glob are not removed.
For the configuration variable, persistNonexistentObjects sounds like a yes/no to me. What do you think about something like ignoreNonexistentObjectsPatterns or retainObjectsPatterns? Or maybe objectsToRetain?

Sure, I'll look into doing that, probably won't have time till next week.
I didn't think about the name too much, retainObjectsPatterns sounds best so I'll change it to that and add some E2E tests.
Thanks for the feedback!

I've updated with some tests that in theory should work, I had a lot of trouble getting the gatsby build to run during the tests.
Kept giving me this error even though install seemed to work (once I figured I had to run install in the examples folders).

    [BABEL] /.../gatsby-plugin-s3/examples/with-redirects/.cache/production-app.js: Cannot find module '@babel/compat-data/corejs3-shipped-proposals'

I've also found it a bit fiddly to get the tests to run. What works for me (and what we do in CircleCI) is:
npm ci --dev
cd examples/with-redirects
npm ci --dev
cd ../..
npm ci --dev

(Yes, we run npm ci in the project root twice. It's wasteful, but it's the only way we could get it to work. NPM doesn't like nested projects.)
Tests look pretty good to me, although you'll need to also specify the Permissions.DeleteObject permission when you do deploySite. Also, please update persistNonexistentObjects to retainObjectsPatterns in the docs.
Thanks again for your help with this!

Yea, I'm familiar with the annoyances of npm. More often then I like I run rm -rf node_modules && rm package-lock.json && npm i 😂
I tried running that but it still can't seem to build correctly, I updated with the changes you suggested and let's see if the CI tests pass.

I'm not sure if you can see the CircleCI results. The test is failing, but it looks to me like it's not the fault of your code. The test "can create a bucket if it doesn't already exist" is failing with "NoSuchBucket: The specified bucket does not exist". Pretty funny if you ask me.
I'll re-run the tests now. I don't have time to investigate the issue properly at the moment, but I'll take a look later if it persists.

I can see the circleci results now. It looks like this time it ran - my new tests failed with AccessDenied: Access Denied so I guess that's something I've missed. Time to go look through some docs to see if I can figure out which one I've missed/misspelled 📖

Yep, looks like on the re-run the "can create a bucket if it doesn't already exist" test passed, must be a transient issue with that one. "correctly handles non-built files" also failed when I ran tests on my own fork. (Which I definitely did on purpose and didn't just happen because I accidentally pushed your branch to the wrong repo, haha)

OK, thanks for your patience. Found out my install/build issues were because I was using node 12.18, switching to 12.16 let me install and run locally. The Access Denied was because the Admin account doesn't have put object, so I created a second export to help with that so it doesn't overlap.

Ah, good find!
The ideal way to solve this would be to modify the IAM policy so that Admin includes the PutObject permission, but that would require everyone who is currently running tests to update their IAM role in AWS manually. We'll probably do this later as a cleanup/maintenance operation, so for now I think doing Admin+PutObject is a good solution.
Feel free to just add PutObject to the main s3 object instead of creating two instances. It's fine for the test suite to have all the permissions, restricting permissions is only useful for testing Gatsby.

Cool, I've updated to add the permission to the main s3 item and remove the extra one I had. Tests should pass this time I think.

@JoshuaWalsh @jariz Can you let me know when a new version with this will be published? Want to know if I should wait or just target the commit directly (which feels kinda bad)

@JoshuaWalsh @jariz Any updates on a new version?

Sorry, I don't have any insight into the publishing process. Jari takes care of that.
@jariz If you release a new version, can you please review #192 first?


Daedalus Testnet Sync get stuck at slot 426654 epoch 153

Hello,
My Daedalus Testnet sync gets stuck every time on that slot, I tried restarting everything, I uninstalled and reinstalled it again but still the same.
Logs: Google Drive

What is the version of your Daedalus Testnet?

It's v4.3.0

@abdellahaski can you try to do a full re-sync please?

@nikolaglumac I installed Testnet latest dev build 4.3.0 \ 1.29.0 and was able to sync 0-100% with no issues or stuck states. Last network block 154.
@abdellahaski Could you please make sure you are following the Uninstall instruction and try to re-sync from the scratch ?
Instruction below :
https://iohk.zendesk.com/hc/en-us/articles/360013170694-Uninstall-Daedalus-and-remove-wallet-s-data

Hello, Thanks guys for the help but unfortunately I still face the same issue I installed and removed all the files, reinstalled again, and got stuck on epoch 153, restarted the Node still the same.
The mainnet is working without a problem, and also I have a small Ubuntu server on the same network running a Testnet node that syncs without a problem. (it's currently not running)

Thanks for the details! We will investigate further...

@abdellahaski Hello, hope you are fine.
Could you please do the steps below as I would like to gather more information for further research.

Clean Daedalus re-install ( I believe you already did it and this did not resolved the issue. However let's do it one more time to keep logs small.
Once you face the issue and you are stuck at epoch 153 please Close the Daedalus and then attach the Node log.
Open CMD and navigate to C:\Program Files\Daedalus Testnet Once there hit the "cardano-node.exe --version" and please share the output.

Thank you in advance.

Any news @abdellahaski? We would really appreciate if you could send us the info @dmitrii-gaico requested 🙏

Sorry, I wasn't able to provide the info, was on vacation :).
Actually, an update to 4.3.1 resolved the issue, it's syncing now to 100%.
Thanks guys for the help

Glad to hear that!
Thanks for letting us know!


Prevent fork bombs

Running
sandbox --tasks-max=1 --syscalls-file=whitelist --timeout=5 --memory-limit=64 --learn -- ruby -e 'loop { fork }
kills the application:
playpen: application terminated abnormally with signal 9 (Killed)
But the fork bomb still goes through and keeps forking until the machine crashes. Am I missing something? Is whitelist the way to prevent this?

-T 512 should help.

The memory limit and task limit both work fine here. If the resource limits aren't working, then something is wrong with control groups on your system.

It's worth noting that the ability to limit the number of tasks is very new. The memory limit prevents a fork bomb though, and the CPU shares are provided to the group as a whole so it shouldn't get an unfair amount of resources. Perhaps you're on a distribution disabling the memory control group functionality by default (Debian-based?).

The cgroups mounted on my system are pasted below. The cpuacct cgroup isn't mounted. Could that be the issue?
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/bfqio type cgroup (rw,nosuid,nodev,noexec,relatime,bfqio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

Also, if the main process dies then the whole group of processes should die with it due to the process namespace. Can you try with a vanilla kernel?

It does make sense that a DoS could happen if the memory limit is too high and there's no support for the new pids control group but... the main process is dying for you so all of the processes should be dying with it because PID1 in the process namespace acts as init.

And if the cpu,cpuacct control group was mounted, it wouldn't be grabbing a ridiculous amount of CPU shares.

I was using the linux-cf kernel which was causing the problems. Using a vanilla kernel fixed the problem. It also mounted the missing cgroups:
tmpfs on /sys/fs/cgroup type tmpfs (rw,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,clone_children)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgmfs on /run/cgmanager/fs type tmpfs (rw,relatime,size=100k,mode=755)

The lack of the CPU control group might have just resulted in the machine being hopelessly overloaded. It's strange that the process control group wasn't resulting in everything being torn down quickly when the main process died though.

Anyway, soon the pids control group will be available (systemd already supports it, and Playpen uses it via that API) so the tasks limit will actually be enforced, and this won't only be enforced indirectly via the memory control group with the CPU control group mitigating the damage.


[Enhancement] when shard list is empty in StarosAgent#deleteshards func, just return

What type of PR is this：

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

[FE PR Coverage Check]
:disappointed: fail : 0 / 2 (00.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/lake/StarOSAgent.java
0
2
00.00%
[370, 371]

run starrocks_admit_test

run starrocks_admit_test

@Mergifyio backport branch-3.0


Update version from 0.0.138 to 0.0.139

This is an automated version-update on pyproject.toml.
The workflow was triggered by a succesfull pull request from branch:
With push event SHA of: a0aa45431fa8b9155455d3a5cad60eb44f04bfb9
This action is performed by the Github Action: publish.yml after every accepted pull request. When finished,
this will have published the latest patch of the Extractable codebase to Pypi so it can be pip installed.

updated version in pyproject.toml from 0.0.138 to 0.0.139


clean the code so that it is compatible for python 3

Hi Riccardo,
I fixed some issues of mixed space and tab indents and make the code compatible for python 3. Now it runs perfectly on my computer. Hope you can find it useful.
Best,
Henghui.

Thank you Henghui, I've merged your code into a 'python3' branch which is now referenced in the README.
Best,
Riccardo


Expose MapState

Allow users to pass an instance of MapState, so they can get access to map's properties and be able to programmatically control the map.

Thanks for the contribution! I've included this in #25


Set sessionAffinity in prometheus service spec

Reading the documentation, there are several mentions of using sessionAffinity when configuring for HA.  I have not found a way to configure that in the Prometheus service.  Looking at the helm charts, it does not appear to be configurable right now and just defaults to "none".
My question is - how do i properly setup ha so that i'm not bouncing between different prometheus servers?  I see a PR was closed/rejected concerning this, but i am not sure why and what i am supposed to do.

@jaglade I'll be glad to have a PR adding the sessionAfinity configuration in the helm charts. Yesterday I wrote a doc explainning how to contribute to helm charts. Let me know if you can make it

@gianrubio I'd like to take a crack at it.  Will submit a PR once i get it written and tested.  Thanks.

@gianrubio PR submitted.  #952
Also note that i found an issue with the 'how to contribute' instructions.  Packaging the prometheus-operator led to me installing it twice (since we already installed it once in the first line of instructions) which wreaked havoc in my cluster.

I made a small comment on the PR feel free to express your thoughts and thanks for reviewing the contribute instructions.

Solved on #952

@gianrubio Thank you for merging my PR.  The issue is that someone used the chart version that i was using (0.0.13) and was merged first.  I had to submit another pull request to bump chart versions.  Can you please take a look and merge?  #963
Thanks.

sorry for the inconvenience, #917 will fix that


Error in the HTTP2 framing layer

Description
Today I found this
==> servicesmirror-trace.log <==
2023/10/13 21:23:16 ...irror/mirror_pull.go:290:runSync() [E] SyncMirrors [repo: <Repository 17976:solidiquis/erdtree>]: failed to update mirror repository:
Stdout:
Stderr: fatal: unable to access 'https://github.com/solidiquis/erdtree.git/': Error in the HTTP2 framing layer

Err: exit status 128
        /source/services/mirror/mirror_pull.go:290 (0x246377e)
        /source/services/mirror/mirror_pull.go:432 (0x2466187)
        /source/services/mirror/mirror.go:28 (0x245e04e)
        /source/services/mirror/mirror.go:125 (0x245ea24)
        /source/modules/queue/workerqueue.go:246 (0x1c9ecbc)
        /source/modules/queue/workergroup.go:98 (0x1ca14ad)
        /source/modules/queue/workergroup.go:162 (0x1c9e6c8)
        /usr/local/go/src/runtime/asm_amd64.s:1598 (0x472700)
                goexit: BYTE    $0x90   // NOP

22 times in my gitea.log.
Any ide what can be the reason for this?
Gitea Version
1.20.5
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
No response
Git Version
2.42.0
Operating System
Ubuntu 20.04.6
How are you running Gitea?
gitea-1.20.5-linux-amd64
Database
PostgreSQL

I don't think this is a Gitea problem. Do you have a proxy or something infront of Gitea which could mess up the connection?

There is no prxy. I see this since two days. But not for every mirrorr update. And this is random. And I don't have any connections issues. Or this is an gitHub problem. I try to analyze it.

I can't reproduce it or GitHub fixed this.


Properly align the Network side panel toggle button

Should be vertically centered like the toggle in the Console panel.
Current:

@thomasandersen Looks good to me when testing on Mac.
Any other work needed here?
Honza


Opening modal in dom

Apologies in advance, this is not an issue but a support request...
I love this lib, it´s great for most use cases. I´m just missing the option for a more "specific" use case when you don´t want to create a component (extending SimpleModalComponent) but rather just include it in your parent component. This is the way other libs (for ex Angular Bootstrap 3 Modal Component  work. I´d really like to have the best of both worlds, have components for alerts, confirms, etc as you do but also to pull the modal from DOM in a more Bootstrapish approach.
My approach to do this is to create a "DomComponent" with "" selector that in turn calls SimpleModalService  to open it´s content (through a GenericModalComponent). I´ll post the code i´m using, but it might be a totally wrong approach, so I can point out the problems i´m encountering....
In parent component ....
 <button type="button" class="btn btn-default" (click)="domModal.open()">Open
      <modal> in dom.</button>

inputText: {{inputText}}

    <modal (onClose)="event_here?()" title="Modal title" #domModal>
      <modal-header>Hi this is head of modal.
        Bold
      </modal-header>
      Modal body here.... this is the first modal.
      <input type="text" evInput evIcon="fa-android" [(ngModel)]="inputText" />
      <modal-footer>Hi this is modal footer.
        <button class="btn btn-success" (click)="modalInnerSubmit(domModal)">InnerSubmit</button>
      </modal-footer>
    </modal>

And DomModal component:
(BaseModalComponent  extends SimpleModalComponent).
@Component({
  selector: 'modal',
  template: `<ng-template #domModalContent>
  <ng-content ></ng-content>
  </ng-template>
  <ng-template #footer >
  <ng-content select="modal-footer"></ng-content>
  </ng-template>
  <ng-template #header >
  <ng-content select="modal-header"></ng-content>
  </ng-template>`
})
export class DomModalComponent extends BaseModalComponent  implements GenericModalModel, OnInit, OnDestroy {
  @ViewChild('domModalContent') content: TemplateRef<any>;
  @ViewChild('footer') footer: TemplateRef<any>;
  @ViewChild('header') header: TemplateRef<any>;
  openM: Observable<any>;
  modalIndex: number;
  openModal: SimpleModalService;
  constructor(private modalService: SimpleModalService,
    private _componentFactoryResolver: ComponentFactoryResolver) {
    super();
  }
   private closerCallback(modal){
    // does not work... modal is opener (this) not the one service opened.
    // this.modalService.removeModal(modal);
    const openModals = this.modalService.modalHolderComponent.modals;
    const index = _.indexOf(openModals, this.openModal);
    const activeComponent = this.modalService.modalHolderComponent.modals[index];
    if (activeComponent) {
      activeComponent.close();
    }
  }

  open() {
    // how many of this.properties are attributes to pass along to creation?
    const attrObject = this.attributesToObject() || {};

    this.openM = this.modalService.addModal(GenericModalComponent,
      {...attrObject},
      {closeOnClickOutside: true}
     );
     // this never fires...
     this.openM.subscribe((isConfirmed) => {
      if (isConfirmed) {
        this.close();
      }
    });
     // Might fail because modalHolderComponent  is private in service
     const openModals = this.modalService.modalHolderComponent.modals;
     this.openModal = _.last(openModals);
     this.modalIndex = openModals.length ? openModals.length - 1 : null;
  }
  attributesToObject() {
    const availableAttrs = Object.keys(this);
    // attributes we want to parse...
    const attrObject = new GenericModalModelClass();
    for (const attr of Object.keys(attrObject) {
       if (this[attr]) {
        attrObject[attr] = this[attr];
      }
    }
    return attrObject;
  }
}

I have major issues here.
I can open the modal just fine using Service. But i have no reference to the opened Modal, the only way i can seem to access it is by " this.modalService.modalHolderComponent.modals;" which seems wrong and even more since it´s a private var.
I implemented "closerCallback" to be able to extend, since DomModal is not opened through service... here is where i close the opened modal... But "this.modalService.removeModal();" needs the opened modal which i can´t seem to target, so I hackishly target modalHolderComponent to get the last opened modal.
There must be a better way (for sure ;) and even if my approach is halfway alright (doubt it) there must be a way of interacting (closing, etc) with the opened modal through Promises, Observables... Triggering the opened modal close() and resolving without direct ref to modalHolderComponent....
I´d really love to implement this to cover all cases. Thanks in advance!!.

ok so i'll be honest i'm still digesting your implementation but if i was to take what i think i understand as your requirement you want the ability to do something like this
import { Component, ViewChild } from '@angular/core';
import { BsModalComponent } from 'ng2-bs3-modal';

@Component({
    selector: 'parent-component',
    template: `
        <bs-modal #myModal>
            ...
        </bs-modal>
    `
})
export class ParentComponent {
    @ViewChild('myModal')
    modal: BsModalComponent;

    close() {
        this.modal.close();
    }

    open() {
        this.modal.open();
    }
}

Hi, thanks for the response.
Yes, your example from 'ng2-bs3-modal' is the kind of implementation I´m after. I´m sorry if i wasn´t clear enough.
Since ngx-simple-modal does it´s magic through ComponentFactoryResolver my approach was to sort of mimic modalHolderComponent/wrapper... read the content of the child modal ('bs-modal' in your example)  and pass it to a "holder" component via the service... ng-bootstrap modal  has this option of opening a component modal via service or a modal in the template/dom.
This might be totally worng or overhead... I tried getting this "component markup" (templateRef) into "message" but I can´´t get message to render the html... Bassically, it´s just getting a modal to open markup on the page/template...
As for my approach, it´s actually working except this.modalService.modalHolderComponent is private , sometimes it works, sometimes it gives me an error.
Thanks for your patience...

I managed to close the opened modal via suscriber which looks like an OK approach... (I´m a noop at suscribers and promises)...
Code in parent template modal.component.html:
<button type="button" class="btn btn-default" (click)="domModal.open()">Open
      modal in dom.</button>

          Result:
          {{modalAction}}

    <modal
    (onOpen)="modalAction='OPEN'"
    (onClose)="modalAction='CLOSED'"
    (onDismiss)="modalAction='DISMISSED'"
    title="Modal title"
    #domModal>
      <modal-header>Hi this is head of modal.
        Bold
      </modal-header>
      Modal body here.... this is the first modal.
      <input type="text" evInput evIcon="fa-android" [(ngModel)]="inputText" />
      <modal-footer>Hi this is modal footer.
        <button class="btn btn-success" (click)="modalInnerSubmit(domModal)">InnerSubmit</button>
      </modal-footer>
    </modal>

modal.component.ts
...
modalAction = null;
modalInnerSubmit(modal: SimpleModalComponent<any, any>) {
    alert('modalInnerSubmit');
    modal.close();
  }

dom-modal.component.ts
@Component({
  selector: 'modal',
  template: `<ng-template #domModalContent>
  <ng-content ></ng-content>
  </ng-template>
  <ng-template #footer >
  <ng-content select="modal-footer"></ng-content>
  </ng-template>
  <ng-template #header >
  <ng-content select="modal-header"></ng-content>
  </ng-template>`
})
export class DomModalComponent extends BaseModalComponent  implements GenericModalModel, OnInit, OnDestroy {
  @ViewChild('domModalContent') content: TemplateRef<any>;
  @ViewChild('footer') footer: TemplateRef<any>;
  @ViewChild('header') header: TemplateRef<any>;
  @Output() onClose: EventEmitter<any> = new EventEmitter(false);
  @Output() onDismiss: EventEmitter<any> = new EventEmitter(false);
  @Output() onOpen: EventEmitter<any> = new EventEmitter(false);

  openM: Observable<any>;
  modalIndex: number;
  openModal: SimpleModalService;
  public openedModalResult: any = null;
  modalAction: EventEmitter<any> = new EventEmitter();
  suscriber;
  constructor(private modalService: SimpleModalService,
    private _componentFactoryResolver: ComponentFactoryResolver) {
    super();
  }
  close(): Promise<any> {
    // this.suscriber.next(true);
    this.suscriber.unsubscribe();
    this.onClose.emit(true);
    return  new Promise((resolve, reject) => resolve(true) );
  }
  dismiss() {
    this.suscriber.unsubscribe();
    this.onClose.emit(false);
    return  new Promise((resolve, reject) => resolve(false) );
  }

  open() {
    // how many of this.properties are attributes to pass along to creation?
    const attrObject = this.attributesToObject() || {};
    this.suscriber = this.modalService.addModal(GenericModalComponent,
      {...attrObject},
      {closeOnClickOutside: true}
     ).subscribe((modalResult) => {
      this.openedModalResult = modalResult || null;
      this.modalAction.emit(this.openedModalResult);
      if (modalResult) {
        // this.close();
        this.onClose.emit(true);
      } else if (modalResult === false) {
        this.onDismiss.emit(null);
      } else {
        this.onClose.emit(modalResult || null);
      }
    });
    this.onOpen.emit(true);
  }
  attributesToObject() {
    const availableAttrs = Object.keys(this);
    // attributes we want to parse...
    const attrObject = new GenericModalModelClass();
    for (const attr of Object.keys(attrObject)) {
       if (this[attr]) {
        attrObject[attr] = this[attr];
      }
    }
    return attrObject;
  }
}

Going to close this for now - its a bit  of a different direction tbh from where the component is. I'll revisit it further on.


menu: fix typo

I didn't get to poking around the draft site soon enough, so this slipped through to launch 😩

Lint, y u mad?


[v7.0.2] Crop can move on resize and goes beyond boundaries.

Hello, there is issue when u have min dimensions. Assume we have crop component with minWidth/minHeight 160/90px (add those props to ReactCrop component). If you drag your crop to bottom of canvas leaving some space to enlarge crop to bottom. Then drag bottom-left corner to the bottom edge of the canvas and keep dragging.

crop moves to the left.
crop can move beyond left edge of the canvas.
It is reproducible in demo.
Although checking on crop x position in onCropChange is an option - there's still an issue 1 - crop kinda shouldn't move while user attempts to resize.

Hi thanks for the clear bug report 👍 Please try 7.0.3

@de83c78d1f any luck?

Thank you for fast response/fix. Yeah, new version actually fixes the bug mentioned above.
But... Introduces another, which is kinda mirrored version.

Ah good catch thanks for checking will take a look soon

@de83c78d1f Finally getting round to look at this, was this was definitely on 7.0.3? Can you try with this sandbox https://codesandbox.io/s/reactimagecrop-issue-261-qq72y or else spot if I'm doing something wrong?:
I have set same min/max as you and 16/9 aspect, but crop isn't growing on the other side:

Edit: ignore, I can reproduce now

@de83c78d1f Fixed in 7.0.4

This should be fixed in #7.0.5 now

Hi, all fixes are irrelevant after version 8. Library does not respect boundaries anymore. Nor it respects min dimensions.

Ping

I'm aware of the bug, I looked into it but didn't find a fix easily. I'm
working on multiple other things at the moment so don't know when I'll next
delve into it. If I recall JCrop didn't have the issue so you could use
that if you prefer
On Wed, Aug 28, 2019 at 12:01 PM de83c 78d1f<EMAIL_ADDRESS>wrote:

Ping
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/DominicTobias/react-image-crop/issues/261?email_source=notifications&email_token=AAFZT6RI6RWRX7CCCTLOWVDQGZLKDA5CNFSM4HOHYAXKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5KXNDY#issuecomment-525694607,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAFZT6WSMXMOHMGU2HL2YQTQGZLKDANCNFSM4HOHYAXA
.

Fixed in 8.4.0


no sybase stored proc results shown after execution

hi,
I'm new to dbeaver and am using version 3.8.1.
I use it to do t-sql development on Sybase servers running ase version 15+. When I run plain sql cmds, the resulting rows are shown. But when I run a stored proc like sp_who, only the proc's executing statistics are shown, not the actual results returned by the proc itself.
Please let me know how to correct this. I've seen other people do it successfully from dbeaver in my workplace, but they are not sure what to set to make it work.
Thank you.
SC

This works ok (all standard sp_* procedures return some resultset, sometimes multiple resultsets) on SQL Server. Unfortunately I don't have a live test Sybase server. Maybe there is some SQL syntax difference or maybe you use wrong driver. Did you try jTDS driver?

Closing.
Please reopen if any new information/details will appear.


Any plan to add Statutory Holidays Category to Hong Kong?

In Hong Kong, there are 2 lists of holidays that companies can observe:

Statutory Holidays (法定假日) defined by the Section 39 of Cap. 57 Employment Ordinance of the Hong Kong Legislation (《香港法例》第57章 《僱傭條例》第39條), shorted to 勞工假 in Chinese (URL: https://www.elegislation.gov.hk/hk/cap57!en-zh-Hant-HK?INDEX_CS=N)
General Holidays (Public Holidays) (公眾假期) defined by Cap. 149 General Holidays Ordinance of the Hong Kong Legislation (《香港法例》第149章《公眾假期條例》), also called bank holidays (銀行假) by the general public (URL: https://www.elegislation.gov.hk/hk/cap149!en-zh-Hant-HK?INDEX_CS=N)

All Statutory Holidays are General Holidays, but not all General Holidays are Statutory Holidays, until the year 2030 where the two lists align.

2017 - 2021: 12 Statutory, 17 General Holidays
2022 - 2023: 13 Statutory, 17 General Holidays
2024 - 2025: 14 Statutory, 17 General Holidays
2026 - 2027: 15 Statutory, 17 General Holidays
2028 - 2029: 16 Statutory, 17 General Holidays
2030 - Until further change: 17 Statutory, 17 General Holidays

Companies are required to grant holidays to employees on the days listed under Statutory Holidays (or an alternative day under employer-employee agreements), but are not required to grant holidays on the days ONLY listed under General Holidays.
Is there any plan to add a separate category for Statutory Holidays?

So, Statutory Holidays are mandatory for everyone, "General Holidays"-only holidays are optional? Is that correct, @bbayu123 ?

That is correct. Statutory Holidays are applicable to all employees employed under the law of Hong Kong, where as holidays that are General but not Statutory are only applicable to banks, educational establishments, public offices and Government departments. However, employers can, at their own discretion, decide to grant employees rest days on General Holidays.
The e-Legislation links that I provided actually provide past legislations dating back to 1997, when British (Hong Kong) became HKSAR. It should help you should you decide to add in dates from older years (for example the General Holiday "the birthday of Her Majesty The Queen" prior to HKSAR Establishment, though the exact date where the legislation changes is not really clear without further research.


Disallow statements starting with continuation characters

What version of this package are you using? 14.1.0
What problem do you want to solve? I'd like to continue the semicolon purge by disallowing semicolons as a workaround for lines that start with  [, (, `, +, *, /, -, ,, or .. In other words:

Note: If you're often writing code like this, you may be trying to be too clever.
Clever short-hands are discouraged, in favor of clear and readable expressions, whenever possible.

What do you think is the correct solution to this problem??
{ "beforeStatementContinuationChars": "never" }

Before:
;(function () {
  window.alert('ok')
  var x = 42
}())

;[1, 2, 3].forEach(bar)

;`hello`.indexOf('o')

After:

{
  // ES6 curly jail
  // All the benefits of IIFE without the mess
  window.alert('ok')
  let x = 42
}

var nums = [1, 2, 3]
nums.forEach(bar)

var word = `hello`
word.indexOf('o')

Are you willing to submit a pull request to implement this change? Absolutely.

Pairs well with #633.

This is a fascinating suggestion. The first step is to look into ecosystem impact of the change by temporarily adding the rule to eslintrc.json and running the test suite. We need to get a sense of how much code would need to change and if we think the changes are a net win.
@christianbundy Want to give that a shot?

Yeah! It looks like the beforeStatementContinuationChars rule works differently than I expected -- it seems to allow semicolons when it prevents an ASI hazard, whereas the behavior I'm looking for is throwing an error on both:

an unexpected multi-line statement
a semicolon used to circumvent an unexpected multi-line statement

I ran the test suite on the rule as-is, which only throws errors when it sees a leading semicolon that does not circumvent an unexpected multi-line statement, which it sees as an extra semicolon, but I'm sure there will be more problems found once I fix the rule in ESLint. I'll report back when I have some more info. :+1:

I made a small change to ESLint to get the behavior we're discussing:
// ✔ fine because there's no semi or unexpected multi-line statement
[1, 2, 3].forEach((x) => console.log(x))

// ❌ error because of the unexpected multi-line statement
foo()
[1, 2, 3].forEach((x) => console.log(x))

// ❌ error because of the semicolon
foo()
;[1, 2, 3].forEach((x) => console.log(x))

// ✔ fine because there's no semi or unexpected multi-line
foo()
var nums = [1, 2, 3]
nums.forEach((x) => console.log(x))

I re-ran the tests and it looks like only four modules needed fixes, all were super simple:
simple-get/index.js:94:1: Extra semicolon. (semi)
binary-split/test.js:40:5: Extra semicolon. (semi)
reusify/benchmarks/createNoCodeFunction.js:14:3: Extra semicolon. (semi)
bitmidi.com/src/views/adsense.mjs:9:5: Extra semicolon. (semi)

1..188
# tests 188
# pass  184
# fail  4

I've included the solution diffs below. I've made the smallest change, using `--fix` when possible, to illustrate how this rule change will interact with these projects.
simple-get
diff --git a/index.js b/index.js
index ab88116..92aad0c 100644
--- a/index.js
+++ b/index.js
@@ -91,7 +91,7 @@ simpleGet.concat = (opts, cb) => {
   })
 }

-;['get', 'post', 'put', 'patch', 'head', 'delete'].forEach(method => {
+['get', 'post', 'put', 'patch', 'head', 'delete'].forEach(method => {
   simpleGet[method] = (opts, cb) => {
     if (typeof opts === 'string') opts = { url: opts }
     return simpleGet(Object.assign({ method: method.toUpperCase() }, opts), cb)

binary-split
diff --git a/test.js b/test.js
index f122e08..b7230fd 100644
--- a/test.js
+++ b/test.js
@@ -37,9 +37,11 @@ test('custom matcher', function (t) {
     t.equals(items.length, 5)
     t.equals(items.join(' '), 'hello yes this is dog')
     t.end()
-  });
+  })
+
+  var strings = ['hello yes ', 'this', ' is d', 'og']

-  ['hello yes ', 'this', ' is d', 'og'].map(function (chunk) {
+  strings.map(function (chunk) {
     return bufferFrom ? Buffer.from(chunk) : new Buffer(chunk) // eslint-disable-line
   }).forEach(function (chunk) {
     splitStream.write(chunk)

reusify
diff --git a/benchmarks/createNoCodeFunction.js b/benchmarks/createNoCodeFunction.js
index ce1aac7..2d19fff 100644
--- a/benchmarks/createNoCodeFunction.js
+++ b/benchmarks/createNoCodeFunction.js
@@ -11,13 +11,13 @@ function createNoCodeFunction () {
   /* eslint no-constant-condition: "off" */
   var num = 100

-  ;(function () {
+  {
     if (null) {
       // do nothing
     } else {
       fib(num)
     }
-  })()
+  }
 }

 for (var i = 0; i < max; i++) {

bitmidi
diff --git a/src/views/adsense.mjs b/src/views/adsense.mjs
index ada6982..d652f32 100644
--- a/src/views/adsense.mjs
+++ b/src/views/adsense.mjs
@@ -6,7 +6,7 @@ import { isBrowser, isProd, tokens } from '../config'
 export default class Adsense extends Component {
   componentDidMount () {
     if (!isBrowser || !isProd) return
-    ;(window.adsbygoogle = window.adsbygoogle || []).push({})
+    (window.adsbygoogle = window.adsbygoogle || []).push({})
   }

   shouldComponentUpdate () {

Thank you for this suggestion and work, @christianbundy.
Personally, I'd like to see more examples before I can feel about this.

Update: I wrote a new rule that resolves this by throwing errors on any statement that starts with a continuation character. Documentation is available here, but in summary this prevents statements from starting with [, (, +, /, -, /, and ` regardless of semicolons.
Code that passes this rule should be able to be safely used, copied and pasted, and even stripped of semicolons without changing the semantics. Here's the new pass/fail info for the code above:
// ❌ error because of the [
[1, 2, 3].forEach((x) => console.log(x))

// ❌ error because of the [
foo()
[1, 2, 3].forEach((x) => console.log(x))

// ❌ error because of the [
foo()
;[1, 2, 3].forEach((x) => console.log(x))

// ✔ fine because no statements start with a continuation character
foo()
var nums = [1, 2, 3]
nums.forEach((x) => console.log(x))

This was what I was originally looking for when I opened the issue, I just didn't realize that it'd require writing a new rule. :sweat_smile: It passes on 177 / 188 (95%) modules in the test suite, and I'm a bit surprised that it only fails on 9 modules with 13 errors total. I'd love feedback either here or in my ESLint PR, I'm super open to questions and suggestions.

I have felt into this and I'm okay with it. What would make it clear that this is desirable is how much more concise the semicolons section in the rules docs would be, I imagine. If you're willing to make a PR for that change, I feel that it would make it clear that this is desirable.


Add-on crashes and is not restarted by watchdog

I've had glow2mqtt set up and running for a couple of months (not local MQTT). Occasionally there have been hiccups with incorrect data entering the database (isolated readings of millions or billions of kWh) which I've corrected using the statistics tool in Home Assistant. However, in the last few days, the Glow2MQTT add-on has been crashing with the error log below and has not been restarting.
Home Assistant is fully updated:
Home Assistant 2022.11.3
Supervisor 2022.10.2
Operating System 9.3
Frontend 20221108.0 - latest
Running on a RPi 4B (2GB), with the GlowStick CAD for SMETS1 meters and Cloud MQTT from Hildebrand
MQTT found in this Home Assistant instance.
Starting glow2mqtt.py...
MQTT connected...
Connected to Glow MQTT broker...
Configuring Home Assistant...
{'elec_imp': 42743.259, 'watt_now': 396}
Traceback (most recent call last):
File "/glow2mqtt.py", line 240, in
mqttg.loop_forever()
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 1756, in loop_forever
rc = self._loop(timeout)
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 1164, in _loop
rc = self.loop_read()
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 1556, in loop_read
rc = self._packet_read()
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 2439, in _packet_read
rc = self._packet_handle()
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 3033, in _packet_handle
return self._handle_publish()
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 3327, in _handle_publish
self._handle_on_message(message)
File "/usr/lib/python3.10/site-packages/paho/mqtt/client.py", line 3570, in _handle_on_message
on_message(self, self._userdata, message)
File "/glow2mqtt.py", line 83, in process_msg
if '00' in data['elecMtr']['0702']['04']:
KeyError: '04'
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Hi @bertha73 ,
Thanks for raising an issue. It looks like the data you are receiving is not always including current power readings for some reason. Are you able to connect to the Hildebrand broker with an MQTT client (e.g. MQTT Explorer and send me an example of the data you are receiving with your personal data removed of course.
I will get the code updated to accommodate.
It would also be great if you can send me an example of an incorrect import reading. I'd be interested to know if these erroneous readings are always the same high value or different each time which would be harder to cater for. I know some were reporting getting '0' readings often which was causing issues but random high readings is a new one.

Hope you can do something with the data below. As I'm watching the add-on log in Home Assistant in real time I can see that it does restart by itself from time to time, but there are occasions when it crashes but doesn't restart as above.
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB902","01":"000000000000","00":"0000028C9C85","14":"02","02":"000000000000"},"04":{"01":"000CA8","00":"000211"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:08:07","hversion":"EHZBWIFI0v4","time":"6379FC87","gmtime":1668938887,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:08:02","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB8FA","01":"000000000000","00":"0000028C9C84","14":"02","02":"000000000000"},"04":{"01":"000CA6","00":"0002A1"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:07:54","hversion":"EHZBWIFI0v4","time":"6379FC7A","gmtime":1668938874,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:07:54","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB8ED","01":"000000000000","00":"0000028C9C82","14":"02","02":"000000000000"},"04":{"01":"000CA4","00":"0002A5"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:07:47","hversion":"EHZBWIFI0v4","time":"6379FC73","gmtime":1668938867,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:07:41","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB8D7","01":"000000000000","00":"0000028C9C7F","14":"02","02":"000000000000"},"04":{"01":"000CA0","00":"0001A5"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:07:26","hversion":"EHZBWIFI0v4","time":"6379FC5E","gmtime":1668938846,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:07:19","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB8CA","01":"000000000000","00":"0000028C9C7D","14":"02","02":"000000000000"},"04":{"01":"000C9E","00":"0001AC"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:07:12","hversion":"EHZBWIFI0v4","time":"6379FC50","gmtime":1668938832,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:07:06","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB8C1","01":"000000000000","00":"0000028C9C7B","14":"02","02":"000000000000"},"04":{"01":"000C9D","00":"0001D8"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:06:59","hversion":"EHZBWIFI0v4","time":"6379FC43","gmtime":1668938819,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:06:57","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"00":{}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:06:52","hversion":"EHZBWIFI0v4","time":"6379FC3C","gmtime":1668938812,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB893","01":"000000000000","00":"0000028C9C74","14":"02","02":"000000000000"},"04":{"01":"000C96","00":"000281"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:06:22","hversion":"EHZBWIFI0v4","time":"6379FC1E","gmtime":1668938782,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:06:11","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB888","01":"000000000000","00":"0000028C9C73","14":"02","02":"000000000000"},"04":{"01":"000C93","00":"0001B7"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:06:01","hversion":"EHZBWIFI0v4","time":"6379FC09","gmtime":1668938761,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:06:00","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB888","01":"000000000000","00":"0000028C9C73","14":"02","02":"000000000000"},"04":{"01":"000C93","00":"0001B7"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:06:01","hversion":"EHZBWIFI0v4","time":"6379FC09","gmtime":1668938761,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:06:00","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"03":{"01":"000001","05":"29","04":"AB","02":"0003E8","07":"Metering PointID","08":"----------------","03":"AB","00":"00","06":"00"},"00":{"07":"2B0CB877","01":"000000000000","00":"0000028C9C70","14":"02","02":"000000000000"},"04":{"01":"000C92","00":"00025D"},"02":{"00":"00"}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:05:49","hversion":"EHZBWIFI0v4","time":"6379FBFD","gmtime":1668938749,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"ets":"2022-11-20 10:05:43","error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}
{"elecMtr":{"0702":{"00":{}}},"gasMtr":{"0702":{"00":{}}},"ts":"2022-11-20 10:05:39","hversion":"EHZBWIFI0v4","time":"6379FBF3","gmtime":1668938739,"pan":{"status":"joined","nPAN":"00","join":"0","lqi":"FF"},"error":{"lastCommand":"00","errorCode":"00"},"gid":"70B3D521E0003AA5"}

Thanks for sending that over @bertha73
It looks like occasionally you are getting data with no electric or gas readings included (such as the final one in the data you sent me). Let me put a catch in the code for this and get the addon updated.

Thanks. Don't know if it's relevant or not but there will never be any gas meter data since only the electricity meter is smart! The gas one is a traditional manually read meter and there's no prospect of it changing apparently for technical reasons.

@bertha73 I am hoping this is fixed with the latest update to the addon (1.2.4).

Updated and it seems rock solid now. Thank you!


feat: improve docs

Documentation updates/fixes related with templates:

Fix type of secret (not tls)
Add new example with two keys in the same secret

Note: {{ printf "{{ .mysecret }}" }} is used because {{ .mysecret }} doesn't work, return a <nil> value

Hi @djerfy ! We cannot put an example with printf as it would make it compatible only with helm charts 😞 I don’t think we can add the example with that.

Hi @gusfcarvalho ! I understand, and if I change that for a note for use from Helm? In the end of this template page.
Just for { printf "{{ .mysecret }}" }} inside {{ .mysecret }} for Helm case.

I think what we can do is add a commented line with the helm example. That would be the best, I guess - because we do receive a lot of issues that are basically people using helm.

/approve


[feature] Put collection added, closes #40

Great :+1:

@nikitin-da btw, no need in commit "tags" anymore :)


Add Microsoft docs

Almost all of Microsoft's documentation is open source even if the product/project being documented is not open source.
You can browse the MicrosoftDocs org to see the public repos for docs.
Here are some notable repos:

PowerShell-Docs - this is the repo I maintain
azure-docs-sdk-python
azure-docs-powershell
microsoft-365-docs
Azure-docs
azure-docs-cli

Thanks for pointing this out, will add them to the list soon, and also you doing awesome job as a maintainer @Powershell Docs

They have been added, thank you.


Adding additional memory cache options for squid webproxy

memory_cache_mode: 	Controls which objects to keep in the memory cache (cache_mem)
default = always. If always is set, value will not saved to config.
Maximum object size in memory: Objects greater than this size will not be attempted to kept in the memory cache. This should be set high enough to keep objects accessed frequently in memory to improve performance whilst low enough to keep larger objects from hoarding cache_mem.
default = 512KB. If value not set default applies.
Only visible with advanced config. Help text formated and adapted form squid documentation.

@Xeroxxx looks good, thanks!


Allow registering existing objects for ACL

A registered private key can be used to register an existing object store object with the gateway for permissioning
A registered private key can also store an object without being an enabled Data Storage Account also
Object permissions can now be revoked by the permission granter (won't do anything if no permissions for an object hash/granter/grantee combination)
Now storing granter/address of encryption key/object meta proto status for object permissions

Forgot we have a client for this... updated with the two new endpoints and the new field for putObject

Forgot we have a client for this... updated with the two new endpoints and the new field for putObject

Whoops - samesies lol.  :looking:


Upgrade dependencies

Upgrade dependencies to resolve some downstream-impacting vulnerabilities coming from jsonwebtoken. I just pushed everything to the latest and ran the tests.

Tests are failing on Node 4, which went EOL almost a year ago.


Adds inspections to Morphs

This still presents a testing issue, because you still have to manually run the migration to get it to work. We need to facilitate running migrations after the test has been set up

on

I don't think we can pass the console through the constructor because we only control the base class and we don't want to assume the user's intentions. Same for withConsole. No harm in letting people inject their own logic should they wish.


Not recognizing Architectury 3.7.38 as valid (Works OK w/ 3.7.37)

Incompatible mod set!
net.fabricmc.loader.impl.FormattedException: Mod resolution encountered an incompatible mod set!
A potential solution has been determined:
- Install architectury, version 3.6.15 or later.
Unmet dependency listing:
- Mod 'Biome Makeover' (biomemakeover) 1.18.1-1.4.8 requires version 3.6.15 or later of architectury, which is missing!
at net.fabricmc.loader.impl.FabricLoaderImpl.load(FabricLoaderImpl.java:190)
at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:142)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:71)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245)
at org.multimc.EntryPoint.listen(EntryPoint.java:143)
at org.multimc.EntryPoint.main(EntryPoint.java:34)

odd. ill check it out later, but make sure you're not using the forge version of arch

Downloaded it straight from the Fabric page. Shouldn't be Forge (Unless They mixed up the repositories somehow...)

Closing this as I can confirm it works on my end.
It's VERY likely you've downloaded the forge version OR it's not in the mods folder, as it tells you what version you currently have if it can recognize the .jar and it's an invalid version.

Also you're on a very old version of BM

I'm using 1.18.1 (not 1.18.2), and BM 1.18.1-1.4.8 (Latest available for 1.18.1 according to Curseforge).
Curseforge Link to BM: https://www.curseforge.com/minecraft/mc-mods/biome-makeover/files/3667657
If there's a newer 1.18.1 version available, it hasn't yet made it to CF, AFAICT
And I DID use the 1.18.1 (Fabric) Architectury (Also latest according to Curseforge).
Curseforge link to Architectury (Fabric): https://www.curseforge.com/minecraft/mc-mods/architectury-fabric/files/3728612
I JUST D/L'ed it Again, and NOW it works.... :o
Since BOTH the Forge and Fabric D/L files themselves seem to have the Exact SAME Name, I'll Assume that there was a CF Screwup, and they were serving the wrong file on the Fabric page... (?)
Anyway, the problem has now been corrected. :)  Thank You for your prompt response to the issue.
Cheers!


better version of identifyUI detection and print CORE-2877

@maxtaco again! (sorry)

👍 Sorry I didn't get it right the first time


Add spacing_tol parameter to dft

As requested, added some tests for new parameter option.

Codecov Report

Merging #26 into master will decrease coverage by 0.77%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #26      +/-   ##
==========================================
- Coverage   90.55%   89.78%   -0.78%
==========================================
  Files           1        1
  Lines         233      235       +2
  Branches       80       81       +1
==========================================
  Hits          211      211
- Misses         11       12       +1
- Partials       11       12       +1

Impacted Files
Coverage Δ

xrft/xrft.py
89.78% <100%> (-0.78%)
: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 0893f42...31d87df. Read the comment docs.


Reliability: Move actor command queuing to the client

In the SDK we do a lot of work internally to queue actor commands until we hear back that the actor has been fully created. In the sync layer, we have code to ensure actors have been created on all peers before allowing the app to know about this fact. The whole system would be greatly simplified if each client were responsible for pending commands that rely on other processes to complete.

Going forward let's leave these open until they're released.

Oh this IS released!


Implement a new shop config diagnostic endpoint

Part of the work on #379
This PR implements a new endpoint /health/shop that performs a bunch of tests on the shop configuration.
In a separate PR I'll add a basic page in the shop's admin tool to call the back-end and display the data.
Note: there are additional checks that could be added (ex: test paypal webhook, prinful credentials, etc...) but in the spirit of getting something out quickly and iterating, I'll leave those out of this PR for now.

I ended up including a simple UI that shows the shop diagnostic data under the admin Console page.
Merging this in now.


ui/map:  singleton navigation requests

There are multiple instances of MapSettings in home and map, each with its own RequestRepeater to query from commaapi for navigation requests.  these duplicate requests result in wasted bandwidth and resources, and may potentially lead to synchronization issues.

The destination list is empty onroad, first starting after this commit :confused:

It does seem related as I can't reproduce the issue on the prior commit (d34138e2759e8067e9d7d005957e29a23684c71c)

I'm checking to see what the possible problem is. It's unlikely to be this pr's problem.

@incognitojam it's Indeed a related issue.  NavigationRequest only reads the locations from ApiCache_NavDestinations on initialization and then emit locationsUpdated. this results in only the first mapSetting window can gets an immediate update. the second mapsetting can only be updated when NavigationRequest gets the list from the server, which can take up to 30 seconds.


update ObjC model template comment to use ObjC generics

Since we no longer support Xcode 6, might as well encourage the use of ObjC generics.

:+1: