Create Binding to the accent and theme elements so they can change at runtime.

Is your feature request related to a problem? Please describe.
I want one of my controls background to have the Accent brush. If I used the static resource way, the control will not change its background color if I changed the application accent at runtime. We need a way to create Binding to the color I need.
Describe the solution you'd like
First step of solution is to create a helper class with properties of the colors and brushes of both the theme and accent, and implement INotifyPropertyChanged interface.... Now we can create this helper class in the App resource and bind our control's property to its properties, and they will change there colors if I changed the theme and accent at runtime.... The helper class code may look like this:
using System;
using System.Collections.Generic;
using System.Linq;
using MahApps.Metro;
using System.Windows.Media;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace CM
{
    public class ThemeChange : INotifyPropertyChanged
    {
        #region Theme Change
        List<string> properties;
        private void ThemeChanged(object sender, OnThemeChangedEventArgs e)
        {
            if (properties == null) properties = GetType().GetProperties().Select(p => p.Name).ToList();
            foreach (var item in properties)
            {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(item));
            }
        }
        #endregion
        public ThemeChange()
        {
            ThemeManager.IsThemeChanged += ThemeChanged;
        }
        #region Accent Properties
        Accent GetAccent()
        {
            var a = ThemeManager.DetectAppStyle()?.Item2;
            if (a == null) a = ThemeManager.GetAccent("Cyan");
            return a;
        }
        T GetItem<T>([CallerMemberName]string key = null) => (T)GetAccent().Resources[key];
        public event PropertyChangedEventHandler PropertyChanged;
        public Brush AccentColorBrush => GetItem<Brush>();
        public Brush AccentColorBrush2 => GetItem<Brush>();
        public Brush AccentColorBrush3 => GetItem<Brush>();
        public Brush AccentColorBrush4 => GetItem<Brush>();
        public Brush AccentBaseColorBrush => GetItem<Brush>();
        public Brush WindowTitleColorBrush => GetItem<Brush>();
        public Brush IdealForegroundColorBrush => GetItem<Brush>();
        public Brush IdealForegroundDisabledBrush => GetItem<Brush>();
        public Brush AccentSelectedColorBrush => GetItem<Brush>();
        #endregion
        #region Theme Properties
        AppTheme GetTheme()
        {
            var a = ThemeManager.DetectAppStyle()?.Item1;
            if (a == null) a = ThemeManager.GetAppTheme("BaseLight");
            return a;
        }
        T GetThemeItem<T>([CallerMemberName]string key = null) => (T)GetTheme().Resources[key];
        public Brush ControlBackgroundBrush => GetThemeItem<Brush>();
        public Brush WhiteBrush => GetThemeItem<Brush>();
        #endregion
    }
}

Second step to make life easier is to create a MarkupExtension To use it directly in our code without the need to create a helper object in the App Resource. The MarkupExtension code may looks like this:
using System;
using System.Windows.Data;
using System.Windows.Markup;

namespace CM
{
    public enum ThemeElement
    {
        AccentColorBrush,
        AccentColorBrush2,
        AccentColorBrush3,
        AccentColorBrush4,
        AccentBaseColorBrush,
        WindowTitleColorBrush,
        IdealForegroundColorBrush,
        IdealForegroundDisabledBrush,
        AccentSelectedColorBrush,

        ControlBackgroundBrush,
        WhiteBrush
    }
    public class ThemeBinding : MarkupExtension
    {
        static ThemeChange themeChange = new ThemeChange();
        public ThemeElement Element { get; set; }
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var binding = new Binding(Enum.GetName(typeof(ThemeElement), Element)) { Source = themeChange, Mode = BindingMode.OneWay };
            var expression = binding.ProvideValue(serviceProvider);
            return expression;
        }
    }
}

And we can use it in our code like this:
<Grid Background="{cm:ThemeBinding Element=AccentColorBrush}">
.
.
.
</Grid>

Additional context
Closed Issues

If I used the static resource way, the control will not change its background color if I changed the application accent at runtime.

Why are you using StaticResource instead of DynamicResource if you want dynamic changes?

You are right in that point.... DynamicResource  will solve the problem.....
However, the binding way can give auto complete in xaml editor.... If you are working on that in another way it would be not necessary also.
Best Regards


gemspec: Drop unused test_files directive

RubyGems.org does not use this directive for anything.

Thank you!


Add hooks for CRUD nexus prisma fields

Hi everyone :)
Thanks for your amazing job with nexus and prisma. I want today propose a simple workaround for subscriptions and still allowing using autogenerated CRUD (since prisma v2 doesn't propose a built-in solution yet).
For now we can just use crud like this
t.crud.createOneUser()

But if you propose hooks, we will be able to add logic before/after the actual CRUD logic. Just like middlewares in fact. The after hook may provide all resolver args and add a new one "result" that is the returned value from the crud operation.
t.crud.createOneUser({
  after: (result, parent, args, ctx) => {
    // add more logic
    ctx.pubSub({ //... })
  }
})

This will help people like me awaiting for realtime API but also for devs that need to expose CRUD AND add futher logic

This feature was implemented in #674.
We've just released<EMAIL_ADDRESS>You can try the feature by installing nexus-prisma@next right now. Feel free to report any bug related to it in here. I'll re-open the issue if needed 🙏


[Python][C++] ArrowKeyError: Attempted to register factory for scheme 'file' when using pip-installed GDAL

Describe the bug, including details regarding any error messages, version, and platform.
As always, let me preface this with a thanks for this project and the help the arrow developers are giving to the community (which I have benefited from before).
Description
I've been tracking a more-than-likely install related bug. Here is a minimal reproducer
# file test.py
import osgeo
from pyarrow import fs
local = fs.LocalFileSystem()

and if I run it
$ python test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    local = fs.LocalFileSystem()
            ^^^^^^^^^^^^^^^^^^^^
  File "pyarrow/_fs.pyx", line 1112, in pyarrow._fs.LocalFileSystem.__init__
  File "pyarrow/error.pxi", line 155, in pyarrow.lib.pyarrow_internal_check_status
  File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowKeyError: Attempted to register factory for scheme 'file' but that scheme is already registered.

Note that if I do not import osgeo there is no error.
Reproduce
The steps from scratch are the following
conda create -n test-arrow python=3.12
conda activate test-arrow
pip install pyarrow 'gdal==3.9.2'

Probably relevant is the fact that I have gdal libraries installed with homebrew (on MacOS)
$ brew info gdal
==> gdal: stable 3.9.2 (bottled), HEAD
Geospatial Data Abstraction Library
https://www.gdal.org/
Conflicts with:
  avce00 (because both install a cpl_conv.h header)
  cpl (because both install cpl_error.h)
Installed
/opt/homebrew/Cellar/gdal/3.9.2_1 (497 files, 35.9MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-09-27 at 14:14:44
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/g/gdal.rb

Workaround
Everything works if I conda install gdal instead of using pip (presumably, this also install the libraries and does not use the homebrew-installed gdal).
Component(s)
Python

TThanks for raising this. It seems like we are registering on the FileSystemFactoryRegistry the filesystem twice on this specific case. @bkietz I might try to investigate further but any clue on what might be happening here?

This is probably due to conflicting versions of libarrow in the same process (one from brew's gdal and one from conda's pyarrow). Each libarrow is registering different factories for the file:// scheme, which is raised as an error. Installing with just conda ensures that only a single version of libarrow is visible which ensures that only one set of factories is registered. @gbelouze Could you check if gdal and conda indeed have multiple libarrows?
Having multiple versions of libarrow in play seems like something we'd want to avoid in any case; more subtle errors could arise than this KeyError with filesystem registration. Maybe we should try to assert this at runtime?

Thanks for your response. I am a bit puzzled because in the steps to produce the errors I am not installing anything with conda, just using it as a python environment manager. Could you maybe point to how I should check for libarrows ?
I have
$ conda list                                                                                ─╯
# packages in environment at /opt/homebrew/Caskroom/miniconda/base/envs/test-arrow:
#
# Name                    Version                   Build  Channel
bzip2                     1.0.8                h99b78c6_7    conda-forge
ca-certificates           2024.8.30            hf0a4a13_0    conda-forge
gdal                      3.9.2                    pypi_0    pypi
libexpat                  2.6.4                h286801f_0    conda-forge
libffi                    3.4.2                h3422bc3_5    conda-forge
libsqlite                 3.47.0               hbaaea75_1    conda-forge
libzlib                   1.3.1                h8359307_2    conda-forge
ncurses                   6.5                  h7bae524_1    conda-forge
openssl                   3.4.0                h39f12f2_0    conda-forge
pip                       24.3.1             pyh8b19718_0    conda-forge
pyarrow                   18.0.0                   pypi_0    pypi
python                    3.12.7          h739c21a_0_cpython    conda-forge
readline                  8.2                  h92ec313_1    conda-forge
setuptools                75.3.0             pyhd8ed1ab_0    conda-forge
tk                        8.6.13               h5083fa2_1    conda-forge
tzdata                    2024b                hc8b5060_0    conda-forge
wheel                     0.45.0             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h57fd34a_0    conda-forge

If you're using conda, that will put libarrow.so in $CONDA_PREFIX/lib/
Brew is configurable. IIUC the default is /usr/opt/lib but you can get the exact location for a package with brew --prefix gdal
I expect you will see libarrow in both of those places in your error case
On Linux you can see which dynamic libraries are loaded at runtime with
>>> print(pathlib.Path("/proc/self/maps").read_text())

... but I don't know what the equivalent for macOS would be

The basic question: Is it possible to install pyarrow in a way that doesn't include libarrow as a static bundle or otherwise tell it to use a system installed one?
Background: I am on a mac and using R & RStudio. Our R code uses many packages that use gdal and on Mac the natural way to get that is to use homebrew install which also installs the homebrew package apache-arrow which includes libarrow. But I'm also working with python code that calls out to R packages (using rpy2) which naturally loads the homebrew version of libarrow indirectly. I'm also  using geopandas which in order to write out GeoDataFrame objects into parquet files requires pyarrow installed. And thus I hit this issue.
I can workaround it in a number of ways:

round trip geopandas dataframes into R, then back to python pandas data frames and use pandas.DataFram,to_parquet with engine="fastparquet" (this maps the geometry column into WKT)
within python convert geopandas dataframes into pandas versions, manually converting the geometry column and then use pandas to_parquet (as above).
rewrite any code that needs to write geopandas dataframes to parquet to avoid import of rpy2 (thus avoiding the R environment being loaded and thus loading system / howbrew libarrow).

But given that libarrow installed as part of pyarrow on disk is already 50MB and I have another one installed in the homebrew setup (same version even!) it would be nice to just have one installed.


spirv-link fails when NUMBA_DPPY_DEBUG=1

Scenario: "run dpbench gpairs workload"
NUMBA_DPPY_DEBUG=1 python run_gpairs.py --test --size 64

...
  File "/localdisk/work/spokhode/numba-dppy/numba_dppy/spirv_generator.py", line 115, in link
    check_call(["spirv-link", *flags, "-o", opath, *binaries])
  File "/localdisk/work/spokhode/numba-dppy/numba_dppy/spirv_generator.py", line 37, in check_call
    return _real_check_call(*args, **kwargs)
  File "/localdisk/work/spokhode/miniconda3/envs/dev/lib/python3.9/subprocess.py", line 373, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['spirv-link', '--allow-partial-linkage', '-o', '/tmp/tmpzkvy2w_v/2-linked-spirv', '/tmp/tmpzkvy2w_v/1-generated-spirv', '/localdisk/work/spokhode/numba-dppy/numba_dppy/ocl/atomics/atomic_ops.spir']' returned non-zero exit status 1.

@reazulhoque
Any ideas?

It works if native atomics enabled.

Fixed in #1103

Native atomics is enabled by default and emulated atomics code is removed. The problem most likely was the *.cl kernel for atomics emulation was not pre-compiled with -g when the debug flag was used it was linking to a binary without debug symbols.
Since, emulation is now removed the problem is no longer reproducible.


Change PackageLicense to PackageLicenseExpression

PackageLicense is a deprecated option and PackageLicenseExpression is recommended. This will also make it easier for tools to identify the license and not report "Unknown"
This is also discribed in the guidelines from Microsoft

Thx. I wasn't aware


Make unique_everseen work with unhashable values

For sequences with unhashable values, fall back to a list instead of a set for caching seen values.
This means the worst case is now O(N^2) instead of O(N). However, any case that would take longer than O(N) would have failed with the original version.
Of course in some use cases, failing rather than silently taking longer is a good thing, but that's probably not typical for uses of this function.
For sequences that work with the original version, there is a tiny performance overhead caused by having to put each if element in seen: check inside a try block, but it's under 1%.
The change also requires switching from for element in ifilterfalse(seen.__contains__, iterable): to for element in iterable: if element in seen:, but that turned out to be faster in Py3 anyway (enough so to outweigh the cost of the try block).
Because sequences can be a mix of hashable and unhashable, test each one, instead of switching to the list on the first unhashable value. This slightly increases the overhead for the all- or mostly-unhashable cases (about 5% in 3.3, 9% in 2.7), but it dramatically improves the performance of mostly-hashable cases.
I also did some testing with a three-cache version, using a sorted sequence for values that are orderable but not hashable, but decided that wasn't worth including in general purpose code.
See the thread beginning at http://mail.python.org/pipermail/python-ideas/2012-November/017881.html for more info.

These commits are in #73, along with a change to the docstring and some tests. I'll close this one!


adding-progress-percentage to sensei's teachings

Hey, @gregmalcolm and mates!
I've created a branch in my station and made a very little commit here showing the percentage of lessons done and the total of lessons right after the lessons done.
And just wanted to know if you prefer I fork your project then you could incorporate my suggestion I added, or may I be part of the contributors of this repository to send my pull request?
Big hug!
ps: maybe I'm rebooting my technical life, starting from scratch with python development, so I wanted to give you this context and see if you take this risk ;-P

HI @soejima! Sorry it took me a while to get back to you. This sounds like a nice improvement. The best thing to do is fork the project and send a pull request so we can check out the change. Thanks! :-)


Implement --sort-keys

Sorting the keys is quite useful, e.g. when comparing two json files.
    --sort-keys / -S:

Output the fields of each object with the keys in sorted order.

I understand the usefulness of sorting keys, but this functionality could be equally well implemented as a filter.
What do you think about including the following definition in jaq?
def sort_keys: walk(if isobject then to_entries | sort_by(.key) | from_entries end);

That would allow you to replace jq --sort-keys 'f' by jaq 'f | sort_keys'.

I just realised that to_entries already sorts by key. That means that we can get away by writing simply:
def sort_keys: walk(if isobject then to_entries | from_entries end);

We can make that more performant by unfolding *_entries:
def sort_keys: walk(if isobject then [keys[] as $k | { ($k): .[$k] }] | add + {} end)

Unfolding add allows us to save one array:
def sort_keys: walk(if isobject then reduce (keys[] as $k | { ($k): .[$k] }) as $o ({}; . + $o) end);

And that's probably how fast it gets when doing it by definition.
Testing:
jaq -n 'def sort_keys: walk(if isobject then reduce (keys[] as $k | { ($k): .[$k] }) as $o ({}; . + $o) end); {c: {b: 1, a: 2}, a: 1, b: {}} | sort_keys'
{
  "a": 1,
  "b": {},
  "c": {
    "a": 2,
    "b": 1
  }
}

@01mf02 Implementing it as a filter instead of a commandline option would be fine for me, thanks! As far as I know, jq only supports the --sort-keys options, that's why I proposed it.

I just realised that to_entries already sorts by key. That means that we can get away by writing simply:

Is this on purpose? I ask because jq explicitly does not sort the keys since commit https://github.com/jqlang/jq/commit/4a57b84db03db7aee33c47ed6c7f6c1e648705fd.

@01mf02 wrote:

I just realised that to_entries already sorts by key.

If so, that is (or should be considered) a bug.

Is this on purpose? I ask because jq explicitly does not sort the keys since commit jqlang/jq@4a57b84.

No, that was not on purpose. 484dd27 should now correct this.
@pkoppstein, what would you think about including the proposed sort_keys in jq? This would make it possible to express sorting by keys the same way in both jaq and jq.

@01mf02 asked:

what would you think about including the proposed sort_keys in jq? This would make it possible to express sorting by keys the same way in both jaq and jq.

My only strong preference regarding these matters is that jaq's to_entries closely tracks jq's, so thank you for https://github.com/01mf02/jaq/commit/484dd270a084ee7e6f233c781f96444264af530b
It may, however, be of interest to know that some of the jq maintainers have a strong distaste for command-line options and seem only to retain -S mainly for the sake of backwards compatibility. In this particular case,
since the proposed sort_keys is trivial to implement in jq, I would tend to regard it as unnecessary bloat.  There are certainly other functions higher on my priority list for adding to the standard "built-ins".
Another consideration is that if jaq defines sort_keys before jq, then that will introduce a discrepancy and hence add confusion and noise.

Can we support -S for compatibility of jq, then wait #3012?

@Freed-Wu, @xduugu, after some reflection, I added --sort-keys after all to jaq 05f43ed71ce6e4d5269a83f5fef9a28373d59005. The reason behind this is that --sort-keys is more performant than running an equivalent filter before printing. That is because --sort-keys sorts only once it encounters an object, whereas an equivalent filter has to sort everything before printing the least part of a value.

That was unexpected. :star_struck: I just tested jaq 2.0 and it works great. Thanks a lot, @01mf02!


⚠ Turnos 24x7 has degraded performance

In 0c29c25, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 3478 ms

Resolved: Turnos 24x7 performance has improved in 3432927.


chore: introduce event filtering on pipeline and vertex

Changes
Support taking url query ?pipeline=abc&vertex=efg and apply the filter on events.
CAVEAT: right now the filtering is based on the prefix of the object name, which is NOT always accurate. e.g. if pipelineA is named "simple-pipeline" and pipelineB "simple-pipeline-1", query ?pipeline=simple-pipeline will return us events that are emitted by both because those events' obj names share same prefix.
Testing
error case - wrong input
https://localhost:8443/api/v1/namespaces/default/events?vertex=in
=>
{"errMsg":"Failed to get a list of events: namespace \"default\": vertex \"in\" is specified without pipeline","data":null}

get pipeline events - it returns events like pod events, job events, deployment and sts events that are related to the pipeline
https://localhost:8443/api/v1/namespaces/default/events?pipeline=simple-pipeline
=>
{"data":[{"timestamp":1698692616000,"type":"Normal","object":"Pod/simple-pipeline-in-0-gxu3m","reason":"Created","message":"Created container numa"},

...

{"timestamp":1698692614000,"type":"Normal","object":"Pipeline/simple-pipeline","reason":"ScalingVertex","message":"Scaled vertex simple-pipeline-out from 0 to 1 replicas"},{"timestamp":1698692614000,"type":"Normal","object":"Pod/simple-pipeline-out-0-492yd","reason":"Created","message":"Created container init"},

...

{"timestamp":1698692451000,"type":"Normal","object":"Deployment/simple-pipeline-daemon","reason":"ScalingReplicaSet","message":"Scaled up replica set simple-pipeline-daemon-7fc7f6bf99 to 1"},

{"timestamp":1698692451000,"type":"Normal","object":"ReplicaSet/simple-pipeline-daemon-7fc7f6bf99","reason":"SuccessfulCreate","message":"Created pod: simple-pipeline-daemon-7fc7f6bf99-j95j2"},

{"timestamp":1698692451000,"type":"Normal","object":"Job/simple-pipeline-cre-146557","reason":"SuccessfulCreate","message":"Created pod: simple-pipeline-cre-146557-6xd8b"}]}

get vertex events - it returns events like pod events that belongs to the vertex
https://localhost:8443/api/v1/namespaces/default/events?pipeline=simple-pipeline&vertex=in
=>
{"data":[{"timestamp":1698692616000,"type":"Normal","object":"Pod/simple-pipeline-in-0-gxu3m","reason":"Pulled","message":"Container image \"quay.io/numaproj/numaflow:latest\" already present on machine"},

...

{"timestamp":1698692470000,"type":"Normal","object":"Pod/simple-pipeline-in-0-2ais6","reason":"Pulled","message":"Container image \"quay.io/numaproj/numaflow:latest\" already present on machine"},{"timestamp":1698692470000,"type":"Normal","object":"Pod/simple-pipeline-in-0-2ais6","reason":"Created","message":"Created container numa"},

...

Use something like objectType and objectName as the parameters.

Use something like objectType and objectName as the parameters.

Great Idea! will do


Sync My List and library exports

This implements #318.
You can choose to automatically add exported movies and shows to "My List" (via a setting) and export all items of "My List" to your local library.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] I have read the CONTRIBUTING document.

All Submissions:

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Did you enable the setting to add exported items to My List in the addon config? It's disabled by default.
This is because it can't get the contents of My List (_check_response returning false instead of an iterable). I'll try to reproduce.

Yes sure i had enabled the setting


BUG: Userflows fails

Describe the bug
test_send_text_with_profile_id fails with an undelivered message. It loops over it for 30 seconds using sleep (questionable choice), waiting for the correct status change. The status never changed. Looked up the notification half an hour later and it wsa still "sending".
For some reason this does not fail if we deploy the userflows lambda.

Hey team! Please add your planning poker estimate with Zenhub @cris-oddball @EvanParish @ianperera @jakehova @k-macmillan @kalbfled @trevor2718

@cris-oddball @ldraney I cannot replicate the issue on my end, I am having ERROR lambda_functions/user_flows/test_retrieve_everything.py - botocore.exceptions.NoRegionError:  error, might need to connect to AWS to produce the error.

^ note about the above error, the user flows tests cannot be run locally, which is why the observed errors were returned.
Looping for 30 sec may also be a red herring.

Tests all pass (no logging on tests, so not possible to see what was sent or how many times the tests went through the wait_for_status() loop ) when running the Deploy to Dev  GitHub action with Include Lambda in deployment?  checked.
When running Deploy to Dev GitHub action withInclude Lambda in deployment? ` not checked, the tests will fail.
When using the Lambda test event in the AWS User Flows lambda console with the payload {"environment": "dev"} the tests will fail.
An example failed test response (partial) from User Flows:
for _ in range(30):
service_jwt = encode_jwt(service_id, service_test_api_key)
notification_status_response = get_notification_status(notification_id, notification_url, service_jwt)
assert notification_status_response.status_code == 200
if notification_status_response.json()['status'] == desired_status:
return notification_status_response.json()
time.sleep(1)
>       pytest.fail(f"Response did not reach desired status '{desired_status}': {notification_status_response.json()}")
E       Failed: Response did not reach desired status 'delivered': {'billing_code': None, 'body': 'This is a test SMS message', 'completed_at': None, 'created_at': '2022-11-03T17:52:06.798719Z', 'created_by_name': None, 'email_address': None, 'id': 'a2b1f2f3-560d-464a-951b-fdfb638eabe6', 'line_1': None, 'line_2': None, 'line_3': None, 'line_4': None, 'line_5': None, 'line_6': None, 'phone_number': '+14435679091', 'postage': None, 'postcode': None, 'provider_reference': 'cae0c17e-afe4-4016-848e-4d938926032b', 'recipient_identifiers': [{'id_type': 'VAPROFILEID', 'id_value': '203'}], 'reference': None, 'scheduled_for': None, 'sent_at': '2022-11-03T17:52:07.756810Z', 'sent_by': 'twilio', 'status': 'sending', 'status_reason': None, 'subject': None, 'template': {'id': '2c3c49b5-d676-4d08-a286-322c600de452', 'uri': 'https://dev.api.notifications.va.gov/v2/template/2c3c49b5-d676-4d08-a286-322c600de452/version/1', 'version': 1}, 'type': 'sms'}
test_retrieve_everything.py:254: Failed

Taking the ID from this example and searching the celery logs for that time frame (ecs/notification-celery/5f66a56f48124f0fb20ab64ffa78a0a6), the following logs were observed, noting that this is expected because Twilio cannot respond the endpoint because they are not on the VA Network.
2022-11-03T17:51:22 delivery delivery INFO no-request-id "Start sending SMS for notification id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae" [in /app/app/celery/provider_tasks.py:25]
[2022-11-03 17:51:22,139: INFO/ForkPoolWorker-4] Start sending SMS for notification id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae
2022-11-03T17:51:22 delivery delivery ERROR no-request-id "API POST request on https://dev.api.notifications.va.gov/notifications/sms/twilio/2ba9431b-6699-4e07-af6e-8f8b46f566ae failed with None" [in /app/app/celery/research_mode_tasks.py:96]
[2022-11-03 17:51:22,215: ERROR/ForkPoolWorker-4] API POST request on https://dev.api.notifications.va.gov/notifications/sms/twilio/2ba9431b-6699-4e07-af6e-8f8b46f566ae failed with None
2022-11-03T17:51:22 delivery delivery INFO no-request-id "Mocked provider callback request finished" [in /app/app/celery/research_mode_tasks.py:105]
[2022-11-03 17:51:22,215: INFO/ForkPoolWorker-4] Mocked provider callback request finished
2022-11-03T17:51:22 delivery delivery ERROR no-request-id "SMS notification delivery for id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae failed" [in /app/app/celery/provider_tasks.py:52]
Traceback (most recent call last):
File "/app/app/celery/research_mode_tasks.py", line 93, in make_request
response.raise_for_status()
File "/usr/local/lib/python3.8/site-packages/requests/models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: https://dev.api.notifications.va.gov/notifications/sms/twilio/2ba9431b-6699-4e07-af6e-8f8b46f566ae
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app/app/celery/provider_tasks.py", line 29, in deliver_sms
send_to_providers.send_sms_to_provider(notification, sms_sender_id)
File "/app/app/delivery/send_to_providers.py", line 78, in send_sms_to_provider
send_sms_response(provider.get_name(), str(notification.id), notification.to, notification.reference)
File "/app/app/celery/research_mode_tasks.py", line 66, in send_sms_response
make_request(SMS_TYPE, provider, body, headers, path)
File "/app/app/celery/research_mode_tasks.py", line 103, in make_request
raise api_error
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: https://dev.api.notifications.va.gov/notifications/sms/twilio/2ba9431b-6699-4e07-af6e-8f8b46f566ae
[2022-11-03 17:51:22,215: ERROR/ForkPoolWorker-4] SMS notification delivery for id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae failed
Traceback (most recent call last):
File "/app/app/celery/research_mode_tasks.py", line 93, in make_request
response.raise_for_status()
File "/usr/local/lib/python3.8/site-packages/requests/models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: https://dev.api.notifications.va.gov/notifications/sms/twilio/2ba9431b-6699-4e07-af6e-8f8b46f566ae
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app/app/celery/provider_tasks.py", line 29, in deliver_sms
send_to_providers.send_sms_to_provider(notification, sms_sender_id)
File "/app/app/delivery/send_to_providers.py", line 78, in send_sms_to_provider
send_sms_response(provider.get_name(), str(notification.id), notification.to, notification.reference)
File "/app/app/celery/research_mode_tasks.py", line 66, in send_sms_response
make_request(SMS_TYPE, provider, body, headers, path)
File "/app/app/celery/research_mode_tasks.py", line 103, in make_request
raise api_error
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: https://dev.api.notifications.va.gov/notifications/sms/twilio/2ba9431b-6699-4e07-af6e-8f8b46f566ae
[2022-11-03 17:51:22,237: INFO/ForkPoolWorker-4] Task deliver_sms[9d8df5d7-c32e-455e-9a27-92f1aa88935c] retry: Retry in 0s
[2022-11-03 17:51:22,261: INFO/MainProcess] Received task: deliver_sms[9d8df5d7-c32e-455e-9a27-92f1aa88935c]
2022-11-03T17:51:22 delivery delivery INFO no-request-id "Start sending SMS for notification id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae" [in /app/app/celery/provider_tasks.py:25]
[2022-11-03 17:51:22,269: INFO/ForkPoolWorker-4] Start sending SMS for notification id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae
[2022-11-03 17:51:22,278: INFO/ForkPoolWorker-4] Successfully sent sms for notification id: 2ba9431b-6699-4e07-af6e-8f8b46f566ae
2022-11-03T17:51:22 delivery delivery INFO no-request-id "deliver_sms took 0.0114" [in /app/app/celery/celery.py:20]
[2022-11-03 17:51:22,280: INFO/ForkPoolWorker-4] deliver_sms took 0.0114
[2022-11-03 17:51:22,281: INFO/ForkPoolWorker-4] Task deliver_sms[9d8df5d7-c32e-455e-9a27-92f1aa88935c] succeeded in 0.011439357011113316s: None

The plot thickens.
Running the code locally (copied code to a local repo, added env var for the secrets necessary to run the tests) against the hosted DEV APIs, the tests are flaky.  But the ones that fail through Github actions pass.  They also use pinpoint as the provider, not twilio.
Thus far we know... the tests in question fail with the "status" property in the response from GET /notification  never being set to "delivered"

two tests for sending an SMS consistently fail when User Flows is run via the Deploy to Dev GitHub action without deploying the lambdas. The failing tests consistently show Twilio as the provider.
all tests consistently pass when User Flows is run via the Deploy to Dev GitHub action and that action deploys the lambdas. We do not know the provider since the tests do not log anything nor do they print anything to stdout.
all tests pass when User Flows is modified to run locally against the hosted DEV APIs. The provider used is Pinpoint.
Twilio is not capable of sending us the delivered status because it has no access to the internal network (so how are we handling this case for the "status" response in the GET BY ID /notification route?)
Kyle was able to reproduce in Postman with Twilio set as the provider

At this moment, my thoughts are:

Determine why we never get back a "delivered" in the "status" response in the GET BY ID /notification given the service_id, the api key, the template ID, etc
Determine how we are supposed to report the  "status" response in the GET BY ID /notification when the provider is Twilio
Sunset User Flows in favor of a true e2e API regression as soon as possible
Do not use a lambda for the API regression.

The plot thickens again.  Whereas last Friday, running the tests locally against the DEV API, the provider was Pinpoint for Template ID 2c3c49b5-d676-4d08-a286-322c600de452.
This morning (Monday), the same template ID but now the provider is Twilio.
(debug stdout output)
Send SMS with profile ID; Template ID is 2c3c49b5-d676-4d08-a286-322c600de452
Provider for this call is twilio
Status at this time is sending

Since Twilio can never respond to us with a delivered status, these two tests (test_send_text and test_send_text_with_profile_id) should have the logic changed in the method wait_for_status() these tests us that repeatedly call the GET /notifications/:id route to see if the message has been delivered.
Something like (in pseudocode)
FOR loop
send request
if sent_by is twilio
then desired status should be sending (which means we initiated the call to twilio'
The remainder of the logic should then pass the assertions.
More critically, we need to understand why sometimes the call sends the request through pinpoint and sometimes it send it through twilio. This feels like a defect to since we should be in control of who the provider is, and not at the whimsy of the service.

Just capturing notes - question asked in va-notify-engineers:
OK, so for the template that User Flows sends, which is in service_id 93f39d73-c400-48c2-9b71-47e231a6855c and template_id 2c3c49b5-d676-4d08-a286-322c600de452  the provider_id on the template is null.
So, for User Flows, I am pretty sure the easiest fix is to just change the provider_id on that template to pinpoint. I do not see a way to do that through the UI, just the API? And before I do that....
Why is the service deciding to use pinpoint sometimes and twlio other times? Is that how the service is designed? Or is there actually some defect lurking here? Is anyone available to walk me through how our service chooses a provider?

@mjones-oddball What would you like me to do with this ticket? I don't see the point of changing the User Flows if I am replacing them with a better test harness for regression and once Dave completes his work, these tests should all pass (they appear to be passing today, actually).

@cris-oddball am I understanding correctly that the root cause of the failure was the provider issue you unearthed? CC @k-macmillan

@mjones-oddball Correct. When a test fails, it also dumps output to stdout (console) and that output included the API key that was used to make the call (noting that when all the tests run, that API key is then subsequently deleted). So, the only time you'd see the API key was on a test failure, and the tests fail when the provider used is switched to Twilio.

@k-macmillan You agree this can be closed? I think so.

@mjones-oddball @k-macmillan Oops, I left the wrong comment (thought this was another ticket - sigh).
But yes, the root cause was the provider issue. No changes needed to User Flows if we are going to disallow that provider switching for sms.

Given that the cause of the failure was the provider bug, closing this (Will Not Fix) since the tests here, while not ideal, are working as intended.


Override ArrayFieldTemplate for a specific case

Prerequisites

[X] I have read the documentation;
[X] In the case of a bug report, I understand that providing a SSCCE example is tremendously useful to the maintainers.

Description
I tried to customize the rendering of an array.
I found that I can use ArrayFieldTemplate for a general manipulation, which works great, but I need to customize each array on it´s own.
In my example there is a images and a persons array. I would like to have a "base" rendering for arrays, but I would like to override it for the case of images. In this case I tried to override it with the ui:field key of the uiSchema.
Maybe it´s just me and I didn't understand the docs, but I spent a lot of time to figure things out and still do not achieved the expected behavior.
Steps to Reproduce

Open my example
Open the console in your dev-tools.
Compare both logs.

Expected behavior
I would expect to get access to the same props in my uiSchema.images['ui:field'] as I have access to in the general ArrayFieldTemplate.
Actual behavior
The uiSchema has totally different props than ArrayFieldTemplate
Version
1.0.4

When using ui:field, you aren't using a template, but rather a custom field. It has the same props as ArrayField.

Ah, thanks @glasserc I did not know that.
But do you know the solution for my problem, is there any other way I can override the template for a specific case?

No, there is no way at present.

I found a workaround, which might be helpful to other people.
First of all I create a custom key/value pair inside of 'ui:options':
const uiSchema = {
  image: {
    images: {
      'ui:options': {
        myTemplate: 'image',
      },
    },
  },
};

And inside my ArrayFieldTemplate() I check whether this key is set and matches or it doesn't.
function ArrayFieldTemplate(props) {
   if (props.uiSchema['ui:options'].myTemplate === 'image') {
      // render image-specific template
   } else {
      // render default template
   }
}

I don't know if this is the best solution, but it works for me.


I hope there will be a multilingual version

Hope to bring multi-language versions such as support zh-CN.json

That's a nice-to-have feature! However, there are still many other things with higher priority such as shader support, BIOS support, and some infrastructure improvements, etc.
I'll keep this issue open, and I think i18n will be added eventually. Although it may take some time.


Add CONCURRENCY operator support to Query Specification

Adds support for the CONCURRENCY operator.
Resolves #108

Codecov Report

Merging #112 (ca3bb01) into main (06686a2) will decrease coverage by 0.08%.
The diff coverage is 71.42%.

:exclamation: Current head ca3bb01 differs from pull request most recent head 689dc7b. Consider uploading reports for the commit 689dc7b to get more accurate results

@@            Coverage Diff             @@
##             main     #112      +/-   ##
==========================================
- Coverage   85.62%   85.53%   -0.09%
==========================================
  Files          25       25
  Lines        1795     1798       +3
==========================================
+ Hits         1537     1538       +1
- Misses        204      206       +2
  Partials       54       54

Impacted Files
Coverage Δ

client/query_spec.go
89.47% <33.33%> (-3.12%)
:arrow_down:

honeycombio/data_source_query_specification.go
95.14% <100.00%> (ø)

Continue to review full report at Codecov.

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


mpfs/knsh: Add example target for SHM

Summary
Add example target for SHM
Impact
MPFS only
Testing
icicle:knsh

Seems like the config file was not normalized, hopefully I did it right this time


Program crashes after save parsing

I ran the executable (v2.3.2) with a save file (manual save, no iron-mode), and encountered a crash. I supposedly am in the right path, I directly used it inside the game path.
Game version is 1.13.2, I have Windows 11.
Screenshot:

Save File & report file:
https://file.io/9bTu0dpaRuwf

Thanks for your feedback, hope it wont be such a bother. I don't know if I can give you more info but feel free to ask.

Sorry for the delay, I have managed to replicate your problem after some digging. I have failed to notice the fact that you used the french localization, and that was the root of the problem. I have fixed your issue, and your save file does now work, though overall the support for different localization styles is... well lackluster. I shall attempt to improve the situation once I find some free time. Thanks for letting me know about the issue


Suppress deprecation warning for Regexp.new with 3rd argument

Follow up https://github.com/ruby/ruby/pull/6976.
This PR suppresses the following deprecation warning.
% ruby -v
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-darwin19]
% bundle exec rake
(snip)

/Users/koic/src/github.com/dwaite/cookiejar/lib/cookiejar/cookie_validation.rb:48: warning:
3rd argument to Regexp.new is deprecated and will be removed in Ruby 3.3; use 2nd argument instead

Yeah, that's exactly it!
@dwaite Could you review this PR and cut a new release if it is fine with you?


Google Docs does not open the generated file

Hi! Thank you for this project and keep up the great work.
I generated a hello world docx file with this library but Google Docs simply fails to open it.

If I try to open it with Google Docs, it shows a blank page.

Hey @IonicaBizau This package isn't yet complete, it still underway but I am sure I can help you with your problem, could you please tell me how did you use this package, if its via npm, the particular version?

I cloned the repository and executed the example, then uploaded the file on Google Drive.
Sent from my iPhone

On 2 Jun 2020, at 12:09, Kiran Mathew Mohan<EMAIL_ADDRESS>wrote:

Hey @IonicaBizau This package isn't yet complete, it still underway but I am sure I can help you with your problem, could you please tell me how did you use this package, if its via npm, the particular version?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hey @IonicaBizau I think I seemed to have the idea why you got an empty document is because if you check the html string fed into the module in example files are empty except for a h1 tag which for some reason I forgot to add support for. Sorry for that.
I plan to add a complete example which would demonstrate all capabilities like images, ordered and unordered lists, headers etc, in the near future as soon as this package is production ready and hope to do it soon.
For your reference, I have posted an html string which you can replace on example-node.js to get a nice docx for trial.
`

Document

Taken from wikpedia

                Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make
                a type specimen book.

It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages,and more recently with desktop publishing software
             like Aldus PageMaker including versions of Lorem Ipsum.
            Where does it come from? Contrary to popular belief, Lorem Ipsum is not simply random text.

Unordered list element

Ordered list element

`

Hi @IonicaBizau , I have forthwith updated the examples in the repository with the one I posted above and will be closing the issue, since it doesn't warrant to be open anymore. Please do reopen the issue if you feel the need to or open a new issue.

Thank you very much!


feat(docstring): created and edited metadata dates

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

Files
Coverage Δ

src/main.rs
0.00% <0.00%> (ø)

:loudspeaker: Thoughts on this report? Let us know!.


Replaced list comprehensions with generator expressions.

Previously, a list had to be created which was not necessary and hindered performance.
Generator expression handles this in the correct way.
Also now the all() can be shortcircuited as soon as it finds first False value and not goes through the complete list.

@redacted
Is something wrong with these changes.
If not, please review and merge this PR.

I think you should say, "Is there anything I can add or change to get this PR merged?" -- Remember, it's still a free/libre software project and nobody get paid (I guess).
But, yes, I guess there's nothing wrong with the PR. Maybe the set keyword  is unnecessary. You can use just the round brackets ( instead of the square ones [ to create a set instead of a list.

Sorry if it didn't sound right. English is not my native language, but I working on improving it.
And yes, the set keyword is necessary before the round brackets (). Otherwise, it will become a generator.

Hey Rahul - no worries at all. I don't get a lot of time during the work week to deal with PRs, I'll make sure to get to it this evening!

Thanks for your work here!


e2e: show previous logs if restarted

Currently there's no good way to debug a crash if the pod's logs on restart don't show what went wrong. Ran into this while working on #203.

Intentionally cancelled the job, to trigger fetching logs faster. The logs step seems ok, AFAICT


ssl works but wss doesn't work with the same certificates

Environment

OS: CentOS
Erlang/OTP: R20/9.0
EMQ: emq22

Description
I used ssl://url:8883 to connect the mqtt server with java client, it worked. But after I changed to wss://url:8084, it didn't work and the error log when I tried to connect mqtt shows as this:
03:12:42.624 [error] Supervisor 'esockd_connection_sup - <0.1557.0>' had child connection started with mochiweb_http:start_link({emqttd_ws,handle_request,[]}) at <0.1639.0> exit with reason {ssl_error,{options,{certfile,"etc/certs/server_cert1.pem",{error,enoent}}}} in esockd_connection:upgrade/1 line 131 in context connection_crashed
03:12:42.626 [error] Error in process <0.1639.0> on node<EMAIL_ADDRESS>with exit value:
{{ssl_error,{options,{certfile,"etc/certs/server_cert1.pem",{error,enoent}}}},[{esockd_connection,upgrade,1,[{file,"src/esockd_connection.erl"},{line,131}]},{mochiweb_http,init,2,[{file,"src/mochiweb_http.erl"},{line,30}]}]}
the emq.conf about wss as this:

I connect the mqtt using wss protocol in node.js by using mqtt.js. The certificates are same as what I have used in Java program with ssl. The code using js are as this:
var cacert = fs.readFileSync(path + "/cacert.pem");
var cert_crt = fs.readFileSync(path + "/client_crt.pem");
var cert_key = fs.readFileSync(path + "/client_key.pem");

var options = {
    'username':"username",
    'password':"client",
    'clientId':"ssss",
    'retain':false
    ,
    'protocol': "mqtt",
    'key': cert_key,
    'cert': cert_crt,
    'ca': cacert,
    'passphrase': "client",
    'rejectUnauthorized': false
};

var client = mqtt.connect(broker, options);

I don't know why it happened? And someone could help me to solve this?

I have the same problem. Do you fixed it ??

Hi @Qtianv587

{{ssl_error,{options,{certfile,"etc/certs/server_cert1.pem",{error,enoent}}}}

The error {error,enoent} means the directory does not exist.
So please check your configuration files and make sure the certs has exist!


BulkInsertOrUpdate Inserting Duplicate Rows

Hello
I am hoping I am just not understanding the right configuration to pass, but I am struggling with getting the upsert method to work as I expect.
Environment is SqlServer (localdb)
EntityFrameworkCore 6
Here's my code which I have used to reproduce the issue. Its just a simple addressType entity that I attempt to insert twice, and I'm expecting it to only insert once.
Any idea what I'm missing here?
var addressTypes = new List<AddressType>()
            {
                new AddressType
                {
                   Id = 1,
                    Name = "Primary"
                },
                new AddressType
                {
                    // Id = 2,
                    Name = "Billing"
                },
                new AddressType
                {
                    // Id = 3,
                    Name = "Shipping"
                },
            };

            // once
            using (var transaction = dbContext.Database.BeginTransaction())
            {
                dbContext.BulkInsertOrUpdate<AddressType>(addressTypes, new BulkConfig()
                {
                    PropertiesToIncludeOnUpdate = new List<string> { "" }
                });
                transaction.Commit();
            }

            // twice
            using (var transaction = dbContext.Database.BeginTransaction())
            {
                dbContext.BulkInsertOrUpdate<AddressType>(addressTypes, new BulkConfig()
                {
                    PropertiesToIncludeOnUpdate = new List<string> { "" }
                });
                transaction.Commit();
            }

method can be used when there is need for both operations but in one connection to database.
It makes Update when PK(PrimaryKey) is matched, otherwise does Insert.

Okay I was right it was all me. I didn't realize the PK was used in the match.


[feat] Implement the functionality of acceptProfileOwnership

Down below is the function that is to be implemented in the contract but in cairo.
https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L267
Inorder to do something similar to delete functionality on Starknet -> You will have to just change the values to 0.
Resources :
https://book.cairo-lang.org/
https://book.cairo-lang.org/ch08-01-generic-data-types.html?highlight=struct#structs
Unruggable memecoin : https://github.com/keep-starknet-strange/unruggable.meme/tree/main/packages/contracts/src
Blobstream : https://github.com/keep-starknet-strange/blobstream-starknet/tree/main/src
Exclusively for Starknet India team - To onboard new devs from India
Estimated Time taken to complete - 2-3 days (Max)

I would like to take on this

Hello! I would like to help with this one! It can take about a day to complete, I'm doing my first contributions and I want to improve my Cairo skills, completing this issue can help me!

hey there @Akashneelesh, I would like to take this one up.

Hello my name is Kenneth Komu. I am a Starknet developer and I would like to work on the issue.

Hello @Akashneelesh can I work on this

Would love to work on this

Heyy @Thirumurugan7 , you have been assigned this issue less goo !!
@danielcdz @Sh0g0-1758 @Josh-121 and @kenkomu since we work on fcfs basis, I have assigned this issue to @Thirumurugan7. There are alot more issues coming up !


Do not delete provider custom workflows in make ci-mgmt

We introduced a notion of provider-custom workflow files, such as:
aws-upstream-tests.yml

Currently CI knows to not delete them, but make ci-mgmt target still does. This PR fixes this so that make ci-mgmt
target matches the behavior of CI workflows.

Possibly yea - can I have this in the meanwhile? We're trying to keep the AWS workflow alive for running upstream tests.


Add Cloudflare Turnstile

This PR adds a Cloudflare Turnstile challenge on page load to help reduce bot traffic.
From https://developers.cloudflare.com/turnstile/:

Turnstile is Cloudflare’s smart CAPTCHA alternative. It can be embedded into any website without sending traffic through Cloudflare and works without showing visitors a CAPTCHA.

The current modal treatment is a bit heavy-handed, but it works for a proof-of-concept. The dev environment and preview deployment use a hard-coded test key, which always passes after showing the widget.
As an improvement, we should conditionalize the dialog to show only when the widget is showing. If we do that, then users passing an invisible challenges could use the app without noticing any change from how it works today.

Success case (show turnstile):
https://github.com/replicate/llama-chat/assets/14149230/ee909311-5811-47e8-8cf9-0b244d47264e
Success case (invisible):
https://github.com/replicate/llama-chat/assets/14149230/c3d112fc-9ce3-4eeb-b3a9-85e868d5b8f2
Fail case:
https://github.com/replicate/llama-chat/assets/14149230/6ea5ac67-c527-4485-a9b3-c62ac1f1aadc


How to get poe credentails?

Hello Maximilian,
I was trying to start up the project on local dev enviroment but it seems im missing .env.development file I noticed you provide a template but I don't have the client id and secret for poe api. I see that i have to write an email to GGG to get the oauth access, can you provide any tips or email template (type of client, grant type, scopes...)  on what to write in the email request so it gets acctually accepted?
Also thank you for sharing this repository, im currently learning Rust and this seems like a great repostiory to learn from 👍

Hey there, here is what I wrote them:

I'd like to register a personal project to access the public stash tab API:
Your PoE account name: $accountName
Your application's name: $whateverYouLike
The scopes you are interested in: service:psapi

It took a few day then everything was set-up.

I got the oauth credentials, thank you for your help.


Current state of Lychee-Laravel

Not an issue but more of a question:
What is the current state of Lychee-Laravel?
Lychee-Laravel is often referred to when talking about issues/requests to the the Lychee V3 implementation. The official Lychee website (https://lycheeorg.github.io) still links to Lychee V3 as the current version.
So i'm curios what is the current state of Lychee V4? Is it production ready? Is there a timeline to get it production ready? Are you heading for feature equality to Lychee V3 before releasing it (from what i read so far: i guess not :) )?
I found issue https://github.com/LycheeOrg/Lychee/issues/18 that provides some information about why a new backend implementation seems useful.

Lychee-Laravel aims to be Lychee v4. It's current status is Alpha/Beta.
Yes it is somewhat production ready in the sense that I'm using it with about 4000 pictures on my personal server.
As for the timeline, there is not really any. We need to fix a few more things: https://github.com/LycheeOrg/Lychee-Laravel/milestone/1
before actually releasing it. @SerenaButler is doing a great job as pointing current bugs. :smile:
I would really like to see it go live on April 1st but there is no real pressure for when it will be ready.

Are you heading for feature equality to Lychee V3 before releasing it?

No. Lychee v4 should cover what Lychee v3 has and add other features such as sub albums, multi users, landing page...

great to hear it can be used already in that compacity, my only question now is what is the state of Postgresql. I know it was an issue before Larvel, but can it be recommended for use now?

@psjbeisler Lychee-Laravel should be perfectly fine with Postgresql.
maybe worth reading: https://stackoverflow.com/questions/30480385/laravel-5-with-postgres-sql

just curious too, but what is the plan for v3 + v4 going forward, will they be kept as separate repos or is the expectation that Lychee-Laravel maybe gets merged or at least deprecates Lychee v3 all together?
Sorry is i missed this somewhere else, but being that this is a pinned issue for such a topic...

Naah, it is nice that you actually reuse this issue, it helps to centralize the questions on the status. :smiley:
And no, the answers to your questions are not anywhere yet. :+1:
To be honest we don't really know yet how we are going to handle the change from v3 to v4. It is still in discussion in the team: do we want to merge the repo? do we just rename each repo? do we provide a script to migrate? Do we rename lychee-v3 into lychee-legacy and just do basic support on it (a bit like a LTS)? There are still a lot of answered questions.
There are also some concerns such as the fact the installation process is slightly more complex: you do not need to drag and drop Lychee release for it to work, you need to make your host point at public, you need to do migration yourself (php artisan migrate) etc... Having a single install script (sh? php?) would be nice.
However one thing is for sure. We will not add more feature to the v3. We may do some rare backports but all the new stuff are going to this repo. :)

After some time playing with Lychee-Laravel I have some suggestions for improvement:

option to set up repository for data to separates volume/disk; idea behind is to run system/database (which is not so big) on SSD disk, but pictures/videos on big/cheap HDDs
although it is possible to do with symlinks, user defined setting in .env (default public/upload) would be cleaner (something similar #149)

option to change album name is on two places - "Rename" in Album's directory and set Title in "About"; my suggestion is instead "Rename" to place a link to album's root in album's directory

searching possibility not only on album's root, but in each album

after longer inactivity is no automatic logout, but only an error message (API not found) - in this case would be better redirect to login mask

@jprokop1 Here's my take on your suggestions:

Separate database and pictures/videos. In a way, I thought we already do? The pictures/videos are in public/uploads/ but the location of the database is not specified by Lychee (on my system it ends up in /var/lib/mysql/, I believe). With respect to public/uploads/, have you tried editing Lychee-Laravel/config/defines.php? I think that may do what you want...

Rename in two places. It's actually in three places, because you can also right-click on a thumb of an album and invoke Rename from the context menu that pops up :smile:. But is that a problem? I do agree with your other suggestion to add a link to album's root (it's actually called "albums view" in internal Lychee nomenclature) to that pop-down menu though.

Searching. I have no opinion on your suggestion, but your mention did trigger a lingering question that I have: do people actually want to use the Search feature at all and do they find it useful? I'm asking because I fixed several glaring bugs in it over the weekend (such as the wrong photo layout, or it not working at all with v4 for the last few days) and since I haven't seen much complaining about such problems, I wonder if people care about this feature and thus, is fixing it the best use of our time?

Inactivity timeout. We are already tracking this issue under #100 (you will see that there's a bit of a disagreement about it). I have an experimental patch that does what you suggest, but it's fragile (it stops working when APP_DEBUG is set to false in .env). It looks like we need support on the server side to make it work reliably but nobody stepped up with a patch so far...

@kamil4: thank you for the quick reply

config/defines.php is exactly what I want! I overlooked it.
with multiple renaming I have no problem, the link is important, thanks for realisation
the possibility of searching in photo documentation by tag to find relevant images is crucial to me.
There is no need to search by multiple criteria, but rather the ability to enter searches in albums and sub-albums - make the search in the mask available.
But if there is a direct link to albums view, it is sufficient for me
There are other suggestions - eg. watermark for public images, but you're right, it's only relevant if more people are interested.

@ildyria, @kamil4, why have you decided to hardcode all url/dir paths? It seems very strange to me. Can't get it... :/

@ildyria, @kamil4, why have you decided to hardcode all url/dir paths? It seems very strange to me. Can't get it... :/

Did you read the post above yours...?

Instead of getting url/dir paths from config/defines.php (as it used to be), you now switched to hardcoded paths and getting them by calling Storage::path('small/'...), etc, which is ugly, imho, for 2 reasons:

I can't now easily rename those paths in one place (defines.php) and need to modify a lot of source code files, that makes harder to upgrade Lychee later;
Earlier I COULD have different locations/storages for (small/thumb/medium/big/import), and now only one (e.g. uploads/*).

Ok, my bad.
I think this was to allow the use of S3 and other storage backends.
What are you actually trying to achieve?

hardcoding paths is a bad idea;
keep ability to separate them to different storages/disks, for example: small/thumb/medium (SSD) and import/big (HDD).

1. hardcoding paths is a bad idea;

We're only hardcoding one level of the path.

2. keep ability to separate them to different storages/disks, for example: small/thumb/medium (SSD) and import/big (HDD).

Have you considered symlinks? Or, if you're feeling fancy, a bind mount?

I lost track about the different lychee forks and versions and I am confused which is the actual project. Is it lychee-laravel oder https://github.com/LycheeOrg/Lychee ? Are both still developed? Why is the Link on https://lychee.electerious.com still pointed to the very old repository and how is everything connected or not connected?!

I lost track about the different lychee forks and versions and I am confused which is the actual project. Is it lychee-laravel oder https://github.com/LycheeOrg/Lychee ? Are both still developed?

https://github.com/LycheeOrg/Lychee-Laravel = v4
https://github.com/LycheeOrg/Lychee = v3.2....
v3 has been "on break" for quite a while. It is not actively developped anymore.
I consider v4 to actually be release ready, we just need to write the FAQ, documentation how to efficiently migrate from v3 to v4.
As for the activity of LycheeOrg:

@d7415 and @tmp-hallenser seems to also be pretty busy
@roblandry is in charge of the docker but this works rather well, he is currently adding support for other arch.
@kamil4 did not give any news for quite a while.
I am currently writting my PhD Thesis so it is pretty busy time for me.

That being said, @d7415, @tmp-hallenser and I are still monitoring the issues, helping on gitter and answering questions.

Why is the Link on https://lychee.electerious.com still pointed to the very old repository and how is everything connected or not connected?!

We do not have control on that page. We contacted the electerious but he basically told us that for history purpose he would not change that link.
The current link (and up to date) is : https://lycheeorg.github.io/

We also need to figure out how we are going to apply the update.

Do we rename that repository "Lychee", and "Lychee" into "Lychee classic"/"Lychee v3" ?
Do we change the master branch of Lychee into v3 and push this as the new master branch of Lychee...

The way to handle that is actually pretty difficult to solve.

thanks for the infos, I would really recommend to choose better names like v4 or v3, most people wont be interested if its on laravel or something else. And if someone is interested she will find out by herself.
But is there also a working release of lychee-laravel? Or should I use lychee-classic in production?

But is there also a working release of lychee-laravel?

You can use the beta ones: https://github.com/LycheeOrg/Lychee-Laravel/releases/tag/v4.0.0-beta.2

Or should I use lychee-classic in production?

I have been using Lychee-Laravel in prod for more than a year without any troubles.
That's my current Diagnostic:
    System Information
    ------------------
    Lychee-front Version:      3.2.16
    Lychee Version (git):      bae5f2b (master) - Up to date (2 hours ago).
    DB Version:                040000
    System:                    Linux
    PHP Version:               7.3
    MySQL Version:             10.3.22-MariaDB-1

    Lychee total space:        90.52 GB
    Upload folder space:       90.36 GB
    System total space:        489.18 GB
    System free space:         359.35 GB (73%)

    Imagick:                   1
    Imagick Active:            1
    Imagick Version:           1690
    GD Version:                2.2.5

Or should I better use current lychee-laravel, its best working just not very good documented?

Lychee-Laravel brings a lot compared to the v3, e.g. sub albums.
The install step are actually pretty on documented (if you use apache):
https://github.com/LycheeOrg/Lychee-Laravel/wiki/Install
https://github.com/LycheeOrg/Lychee-Laravel/wiki/Install-Steps-on-Debian-Testing

I love your teamwork on Lychee! 😍
Is it possible to support the development via GitHub Sponsors?

I love your teamwork on Lychee!
Is it possible to support the development via GitHub Sponsors?

The problem with GitHub Sponsors for the organization, is that it requires us to set up a Bank account etc and I see how it can be more efficient for you.
We don't have costs (aside from our time) as we are using the github.io infrastructure to host the web pages. At the moment, the only way to support us is to buy coffees to individual developers members. More details here: https://lycheeorg.github.io/support :confused:

Lychee-Laravel has now been released as Lychee v4, so I'm going to close this and unpin it.


[Snyk] Security upgrade eslint-plugin-package-json from 0.15.6 to 0.18.0

Snyk has created this PR to fix 3 vulnerabilities in the yarn dependencies of this project.
Snyk changed the following file(s):

advanced/dapps/react-dapp-v2/package.json
advanced/dapps/react-dapp-v2/yarn.lock

Note for zero-installs users
If you are using the Yarn feature zero-installs that was introduced in Yarn V2, note that this PR does not update the .yarn/cache/ directory meaning this code cannot be pulled and immediately developed on as one would expect for a zero-install project - you will need to run yarn to update the contents of the ./yarn/cache directory.
If you are not using zero-install you can ignore this as your flow should likely be unchanged.
Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Uncontrolled resource consumption SNYK-JS-BRACES-6838727
  169

Missing Release of Resource after Effective Lifetime SNYK-JS-INFLIGHT-6095116
  131

Inefficient Regular Expression Complexity SNYK-JS-MICROMATCH-6838728
  124

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Uncontrolled resource consumption

:tada: Snyk checks have passed. No issues have been found so far.
:white_check_mark: security/snyk check is complete. No issues have been found. (View Details)


Support for encoders in Pascal.

Current coverage is 36.93%

Merging #1706 into master will increase coverage by +10.71% as of d4c0d7f

@@            master   #1706   diff @@
======================================
  Files         1872     565    -1307
  Stmts        79017   24882   -54135
  Branches         0       0
  Methods          0       0
======================================
- Hit          20725    9191   -11534
  Partial          0       0
+ Missed       58292   15691   -42601

Review entire Coverage Diff as of d4c0d7f

Powered by Codecov. Updated on successful CI builds.


ETag API / improved ETag handling

ETag / validator API
Existing code improved to make use of higher level ETag API

@arturobernalg Please review.

If I hear no complaints I will merge this PR in the coming days.


Switch from Travis to GitHub Actions

Description of the problems or issues
Is your pull request related to a problem? Please describe.
GitHub Actions has more features and resources.
Does your pull request fix any issue.
N/A
Description of the proposed changes

[x] Switch from Travis to GitHub Actions
[x] Switch from coveralls to codecov.io
[x] Test uploading to TestPyPI (https://test.pypi.org/project/pdftotree/)

Test plan
A clear and concise description of how you test the new changes.
Checklist

[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.
[ ] I have updated the CHANGELOG.md accordingly.

For the next release (0.5.0), let's make a release candidate (0.5.0rc1) for a final check on PyPI.


LSTM support for MXNet Emitter

I'm trying to convert a Keras model with some LSTM layers to an MXNet equivalent by running the command mmconvert -sf keras -iw audio_model.h5 -df mxnet -om keras_to_mxnet_mmdnn.dnn ; the python script containing RefactorModel (and some other files) appear to be created fine, but the following exception is being thrown (contains a few extra lines that I logged out):
MXNet Emitter has not supported operator [LSTM].
lstm_22
type(IR_node): <class 'mmdnn.conversion.common.IR.IR_graph.IRGraphNode'>
IR_node.variable_name:  lstm_22_activation
Target network code snippet is saved as [db1ec0b5e7ac46e2815e951b4076dff9.py].
Traceback (most recent call last):
  File "/Users/slakshay/anaconda3/bin/mmconvert", line 10, in <module>
    sys.exit(_main())
  File "/Users/slakshay/anaconda3/lib/python3.6/site-packages/mmdnn/conversion/_script/convert.py", line 112, in _main
    dump_code(args.dstFramework, network_filename + '.py', temp_filename + '.npy', args.outputModel, args.dump_tag)
  File "/Users/slakshay/anaconda3/lib/python3.6/site-packages/mmdnn/conversion/_script/dump_code.py", line 32, in dump_code
    save_model(MainModel, network_filepath, weight_filepath, dump_filepath)
  File "/Users/slakshay/anaconda3/lib/python3.6/site-packages/mmdnn/conversion/mxnet/saver.py", line 2, in save_model
    model = MainModel.RefactorModel()
  File "db1ec0b5e7ac46e2815e951b4076dff9.py", line 10, in RefactorModel
    lstm_21_activation = mx.sym.Activation(data = lstm_21, act_type = 'tanh', name = 'lstm_21_activation')
NameError: name 'lstm_21' is not defined

Is this because LSTM is simply not supported for MXNet conversions? Or is there something that I might be doing incorrectly? Thanks!
Platform (like ubuntu 16.04/win10):
Mac OS Sierra 10.12.6
Python version: 3.6
Source framework with version (like Tensorflow 1.4.1 with GPU): Keras
Destination framework with version (like CNTK 2.3 with GPU): MXNet
Pre-trained model path (webpath or webdisk path): locally stored and self-created
Running scripts:

Hi @sharmalakshay93, I think it is just because the LSTM is not supported currently for MMdnn.

When will the mmdnn team will work on that? I have a problem on my end too on that.

Hi @eloi-loomai, if your source is TensorFlow,  mmdnn supports it.

Ok, unfortunately my source is pytorch


Kestrel gRPC support: provide more efficient APIs for reading request and response bodies

One of the possible ways how to integrate with gRPC is to write a generic handler that reads http request's body (httpContext.Request.Body) and parses them into grpc request messages  and writes grpc response messages into httpContext.Response.Body.  This works pretty well (see prototype in https://github.com/jtattermusch/grpc-aspnetcore-experiments), but both request body and response body are instances of System.IO.Stream, which works but isn't particularly efficient (e.g. copying of the data is required, it's hard to use with memory pooling etc.) and will probably become a performance bottleneck in the future.
Is there a way to access request and response bodies e.g. in terms of the new System.IO.Pipelines API?
Context: https://github.com/grpc/grpc/issues/15139

The base layer for this is done with #7603 and https://github.com/aspnet/AspNetCore/pull/7110. Counting this as done.


failure in query

2024-02-03 14:15:48.540 | INFO     | main:query_function:570 - Key 4lzfpPBR_pabKHefwv6zf not found, will generate again.
2024-02-03 14:15:50.437 | ERROR    | main:query_function:620 - encountered error: module 'openai' has no attribute 'OpenAI'
Traceback (most recent call last):
File "/Users/smai/workspace/ai/search_with_lepton/search_with_lepton.py", line 365, in local_client
return thread_local.client
^^^^^^^^^^^^^^^^^^^
AttributeError: '_thread._local' object has no attribute 'client'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/smai/workspace/ai/search_with_lepton/search_with_lepton.py", line 599, in query_function
client = self.local_client()
^^^^^^^^^^^^^^^^^^^
File "/Users/smai/workspace/ai/search_with_lepton/search_with_lepton.py", line 367, in local_client
thread_local.client = openai.OpenAI(
^^^^^^^^^^^^^
AttributeError: module 'openai' has no attribute 'OpenAI'
2024-02-03 14:15:50,438 - INFO:     <IP_ADDRESS>:64223 - "POST /query HTTP/1.1" 200 OK

Following readme.md seems not able to fix all the problem, could anyone improve the deployment doc?

I think a reasonable debug starting point could be checking the version of openai package on your end, make sure it is up-to-date with command
pip install -U openai


Possible problem with HTML syntax error

Hi,
This plugin was breaking my terminal when I put a syntax error in a file, the error was this one:
<button ng-if="following"  && platform === 'ios'"></button>

Would be great - if possible - if the task just break and point me where is the problem.
Congrats for the great plugin.

The HTML is not parsed by this Grunt task, so it can't really go into detail about the error. If you want to validate your HTML files I recommend using grunt-htmllint.


Use Jakarta 10 for imports instead of old javax

Problem
I cannot use this SDK with newer frameworks (Quarkus 3.2) with Jakarta 10, which has changed its namespace to jakarta.ws.rs.* from now legacy javax.ws.rs.*.
Therefore when running it, it throws a java.lang.ClassNotFoundException: javax.ws.rs.core.GenericType exception.
Solution
Changed the dependency and updated the imports.
Result
Self-explanatory.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hey. I would like to know when it will be merged.


Number key are undefined

While trying to set key as a number(0-9), the keycode is set as 0x00, which is obviously wrong.
A work-around of this would be to set directly the keycode as the key instead of the number.
Here is an output of skhd -V:
hotkey :: #62 {
	mod: 'cmd'
	mod: 'alt'
	key: '4' (0x00)
	cmd: 'yabai -m space --focus  4 || skhd -k "ctrl + alt + cmd - 4"'
}
hotkey :: #63 {
	mod: 'cmd'
	mod: 'alt'
	key: '5' (0x00)
	cmd: 'yabai -m space --focus  5 || skhd -k "ctrl + alt + cmd - 5"'
}
hotkey :: #64 {
	mod: 'cmd'
	mod: 'alt'
	key: '0x16' (0x16)
	cmd: 'yabai -m space --focus  6 || skhd -k "ctrl + alt + cmd - 6"'
}
hotkey :: #65 {
	mod: 'cmd'
	mod: 'alt'
	key: '7' (0x00)
	cmd: 'yabai -m space --focus  7 || skhd -k "ctrl + alt + cmd - 7"'
}
hotkey :: #66 {
	mod: 'cmd'
	mod: 'alt'
	key: '8' (0x00)
	cmd: 'yabai -m space --focus  8 || skhd -k "ctrl + alt + cmd - 8"'
}

What's your input source locale? Your samples have worked fine for me for like 7 years at this point.

What's your input source locale? Your samples have worked fine for me for like 7 years at this point.
my keyboard is set as fr-FR

Same problem here with a french macbook pro (azerty keyboard).

Same problem here with a french macbook pro (azerty keyboard).

That was with my Macbook Pro with azerty keyboard, I don't have time to do a PR to fix that, but just use skhd -o and set the keycode manually in the config file. E.g: 0x16

Same here with an Azerty keyboard. Works fine with 0x12


Examples should not use numbered inputs or outputs

Many of the Edge docs (including this page) use numbered naming for I/O routes which is not very descriptive, and can be confusing for users. Like variable naming, descriptive names should be used here.
A more descriptive configuration might look like:
...
        "routes": {
          "sensorToFilter": {
            "route": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filtermodule/inputs/sensorInput\")",
            "priority": 0,
            "timeToLiveSecs": 1800
          },
          "filterToIoTHub": {
            "route": "FROM /messages/modules/filtermodule/outputs/filteredOutput INTO $upstream",
            "priority": 1,
            "timeToLiveSecs": 1800
          }
        },

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

ID: ad3731a8-f0df-f1a1-d1a1-e89a769a0908
Version Independent ID: 50a5190e-eafa-7dde-c18f-be9505b00a0a
Content: Deploy module & routes with deployment manifests - Azure IoT Edge
Content Source: articles/iot-edge/module-composition.md
Service: iot-edge
GitHub Login: @kgremban
Microsoft Alias: kgremban

Hello @stewartadam
As this is related to the other issue, We will now proceed to close this and will be working with you on the related issue: https://github.com/MicrosoftDocs/azure-docs/issues/75956

Sounds good, thanks!


[bug]:

Environment
Device: ubuntu | linux-gnu | x86_64 |  /bin/bash | zsh | ubuntu/5.8-3ubuntu1.1
Reproduction steps
When I load it and run zsh, I get `Username for 'https://github.com':` asking me everytime. I downloaded Github CLI and logged in just to see whether it was an issue.

Expected behavior
Download packages as expected

Current behavior
asking me to login for every package

Code snippet
typeset -Ag ZI
typeset -gx ZI[HOME_DIR]="${LOCAL_CONFIG}/zi" ZI[BIN_DIR]="${ZI[HOME_DIR]}/bin"
command mkdir -p "$ZI[BIN_DIR]"
source <(curl -sL git.io/zi-loader); zzinit

zi ice depth=1;	 zi light romkatv/powerlevel10k
zi ice wait'!0'; zi light zsh-users/zsh-autosuggestions
# zi ice wait'!0'; zi light marlonrichert/zsh-autocomplete
zi ice wait'!0'; zi light zsh-users/zsh-completion
zi ice wait'!0'; zi light wfxr/forgit
zi ice wait'!0'; zi light zdharma-continuum/fast-syntax-highlighting
zi ice wait'!0' from"github-rel" as"program"; zi light ogham/exa
zi ice wait'!0' from"github-rel" as"program"; zi light junegunn/fzf
zi ice wait'!0' from"github-rel" as="program" pick="*/rg"; zi light BurntSushi/ripgrep
zi ice wait'!0'; zi snippet OMZP::gitfast
zi ice wait'!0'; zi snippet OMZP::docker
zi ice wait'!0'; zi snippet OMZP::docker-compose
zi ice wait'!0'; zi snippet OMZP::sudo
zi ice wait'!0'; zi snippet OMZP::copyfile
zi ice wait'!0'; zi snippet OMZP::dirhistory

Additional information
Directories set:
Home: /home/raza/.zi
Binary: /home/raza/.zi/bin
Plugin: /home/raza/.zi/plugins
Snippet: /home/raza/.zi/snippets
Service: /home/raza/.zi/services
Modules: /home/raza/.zi/zmodules
User-land: /home/raza/.zi/Polaris
Completions:/home/raza/.zi/completions
Loaded plugins: 7
Light loaded: 6
Downloaded plugins: 11
Compiled plugins: 8
Enabled completions: 144
Disabled completions: 0
Completions available overall: 145
Snippets loaded:
OMZP::copyfile <single file>, OMZP::dirhistory <single file>, OMZP::docker <single file>, OMZP::docker-compose <single file>, OMZP::gitfast <single file>, OMZP::sudo <single file>

Self-service

[ ] I'd be willing to address this documentation request myself.

Have you read the Contributing Guidelines?

[X] I have read the Contributing Guidelines.

Are you familiar with the Contributor Covenant Code of Conduct?

[X] I have read the Contributor Covenant Code of Conduct.

Contact Details
<EMAIL_ADDRESS>

Sorry for not getting back to this. I think it was on my end. I basically deleted everything and started again. and I cleaned up my ssh folder also.


Add info about deprecated and experimental options to CLI template

Capture new deprecated and experimental info in CLI flags.
This is WIP because it doesn't work yet. @johndmulhausen @allejo please help! I tried changing the tables to HTML to help eliminate problems to do with newlines. I think it's really close to working, I must be just missing something really obvious. Right now, you will want to apply this patch on top of  https://github.com/docker/docker.github.io/pull/4702/ which is the only place where the YAML has these extra items in it. Sorry it's a little bit hard to test.

@johndmulhausen This is not quiiiiite working yet. See https://github.com/docker/docker.github.io/blob/7f2fcb9e820d7b011d9dde562c2362f81c7664ec/_data/engine-cli-edge/docker_container_start.yaml how the --checkpoint flag is supposed to be experimental but in the rendered output it is still showing as stable 😭 Any thoughts? You should be able to actually build and this in the PR now because it's against vnext-engine which has the updated YAML files.

Thanks @thaJeztah !
We can tweak the styles in a follow-up, there is something a little funny about the alignment, and it is possible we should put the experimental or deprecated status of the flags at the beginning of their descriptions.

Thanks @allejo you were absolutely right!


Make el9 the default on NAF.

This PR makes Alma9/el9 the default on the NAF htcondor batch system.
The changes are pretty straight forward.
Switching to el9
At this time, naf-cms* login nodes 15 and higher are already on el9, so to switch, naf users would have to login only to these nodes and reinstall their entire software stack once (doing CF_REINSTALL_SOFTWARE=1 source setup.sh ... once).
Staying at centos7
To stay on the old OS, one could export CF_HTCONDOR_FLAVOR=naf_el7 or set --htcondor-flavor naf_el7 per task. However, I think this would only be a temporary solution since also login nodes ≤ 14 will be moved in the very near future so I guess we should all transition asap anyway.

Ok great. Then let's make this the default now.


Couldn't find matching frame capturer for ...

Downstream - https://github.com/gfx-rs/wgpu/issues/1349

Core 360000 14:41:59 target_control.cpp(585) Log Got remote handshake: play [360694]
Core 360694 14:41:59 core.cpp(770) Error Couldn't find matching frame capturer for device<PHONE_NUMBER>000000 window<PHONE_NUMBER>000000 from 0 device frame capturers and 0 frame capturers
Core 360694 14:42:02 core.cpp(770) Error Couldn't find matching frame capturer for device<PHONE_NUMBER>000000 window<PHONE_NUMBER>000000 from 0 device frame capturers and 0 frame capturers

Our code:
        rd.start_frame_capture(std::ptr::null(), std::ptr::null());
       // do stuff
        rd.end_frame_capture(std::ptr::null(), std::ptr::null());

This seems to have been fixed upstream, correct? I think this ticket should be safe to close, but please feel free to post and have this reopened anytime. Thanks for reporting!


Make interface methods take in SimplePoint instead of Point.

For example, Point.translate(Point) should just accept Point.translate({x:100,y:100}), which is less verbose than Point.translate(new Point(100,100))

Hey @davjhan! Thanks for pointing this out.
You could also use Point.add(), which takes a SimplePoint as a parameter. Alternatively, you could also use Point.shift(), which might be the least verbose option!

I've changed the type signature for all .translate() methods (not just Points) in https://github.com/mathigon/euclid.js/commit/4d69e6aea4f8b332b09cf51c4b8f36a062f7bc95. This will be published to NPM in our next update. However, the .shift(x, y) method might still be simpler in many cases.
Thanks for suggesting this!


Allow host IP <IP_ADDRESS> for local development

Currently, when running the development setup the Django ALLOWED_HOSTS settings make it unable to directly interact with the application running inside the container, because we access the Web application from the host system sending <IP_ADDRESS> as a host header.

This is just a case of a misleading message from Django. You should be able to access the site via http://localhost:8000/ on your host system. Docker Compose will forward connections on localhost:8000 to the container.
Within the container, Django is bound to <IP_ADDRESS>, but it would be a security risk for the host system to allow connections from all network interfaces (particularly external ones), since other users on your LAN could connect to the server in development mode.

More than a misleading message it's about developer usability. As a developer you click on the link, and it immediately works when <IP_ADDRESS> is also in the list of ALLOWED_HOSTS.

I think you've found a more important security issue. On the host, external interfaces (people on your LAN) should never be able to access a development server. Since Docker Compose's short port mapping syntax binds <IP_ADDRESS> on the host by default, we're relying on a host's firewall to prevent others from connecting to the insecure Django server.
The solution to the security issue seems to be to explicitly bind to only <IP_ADDRESS> on the host in the Docker Compose file.

I agree that there's still a developer usability problem here. The server prints a message saying it's available at http://localhost:8000/, but visiting that in the host's web browser doesn't work. I don't have any ideas on how to fully resolve this in a secure and maintainable way (i.e. not overriding the Django runserver command).
Since this is just an internal developer functionality, I think the best solution is to just add a README to the dev/ directory explaining things.


WIP: rebase 5

@wez I've resolved the merge conflicts between our branches. Can you take a look at this one to see if it builds for you on Mac?

Update: the blinky example was building fine natively. ble_app_template yields some missing references:

Which is odd, because all the symbols end up in bindings.rs, from what i can tell, so adding shims and nRF5-sdk recursively puts them there.

Okay, got ble_app_template to compile. I was missing the NRF_LOG feature in my Cargo.toml, so while the required functions ended up in bindings.rs, my app_config.h was generated as empty, and I got an error from the linker.
According to the docs, features are the way to allow conditional compilation, which is what we want to enable here. Yet, we have to check in Cargo.toml, so a question here is what features to enable by default?

Closing in favor of a squashed-down #9


gnomeExtensions.dash-to-panel: 43 -> 45

Motivation for this change
Update dash-to-panel to 45.
Changes:
https://github.com/home-sweet-gnome/dash-to-panel/compare/v43...v44
https://github.com/home-sweet-gnome/dash-to-panel/compare/v44...v45
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Is it just me, or does v44 not support GNOME 41?
It looks like gs41 support was added, but then removed:
https://github.com/home-sweet-gnome/dash-to-panel/commits/v44/metadata.json

Oh, good catch, I missed that commit.
Looks like the tracking issue for 41 is here: https://github.com/home-sweet-gnome/dash-to-panel/issues/1512

They just released v45 with GNOME 41 support: https://github.com/home-sweet-gnome/dash-to-panel/releases/tag/v45
Please keep the upgrades as separate commits: v45 also drops support for GNOME 40, this will make possible backporting or pinning easier.

Please keep the upgrades as separate commits: v45 also drops support for GNOME 40, this will make possible backporting or pinning easier.

Done!  Thanks for the heads up.

Tested the new version on nixos unstable (gnome 41), it works:

Looks good here.


Bridge serial number != bridge id

When discovering a bridge with MdnsBridgeLocator or SsdpBridgeLocator, the bridge id reported is actually the bridge serial number
https://github.com/Q42/Q42.HueApi/blob/4b4ef660cb31394efe3a5e3bfbf65ee55cc1fd12/src/Q42.HueApi/MUdpBasedBridgeLocator.cs#L152
but the bridge id reported in the BridgeConfig class or using HttpBridgeLocator is actually different from the serial number
example:
bridge id = ecb5fafffe0ed863
serial number = ecb5fa0ed863
so there is an extra fffe inserted to build the BridgeId, but can we assume it always follow that pattern?
not sure what the best way to fix that?

The BridgeLocator gets the serialnumber from http:///description.xml
I'm not sure if this always follows the same pattern. Maybe the official Hue forum can help with this question?

I workaround this issue in my own app, but I still think something should be done about it. At least a BridgeSerialNumber property should be added to the LocatedBridge class, and it's this property that should be set when discovering with  MdnsBridgeLocator  or SsdpBridgeLocator


Zarf overwrites namespace labels required when deploying to env with restricted pod security standard

Environment
Device and OS: RHEL 9
App version: 0.38.3
Kubernetes distro being used: rke2
Other:
Steps to reproduce

Create zarf namespace with labels that allow it to run in an environment that enforces the restricted pod security standard
Deploy Zarf with zarf init command (we use a custom package that only has the zarf agent based on iron bank images)

Expected result

Zarf leaves the existing NS labels alone

Actual Result
Zarf removes the labels and fails to deploy due to non compliance
Visual Proof (screenshots, videos, text, etc)
Severity/Priority
medium
Additional Context
Add any other context or screenshots about the technical debt here.
Instead of requiring users to apply exceptions Zarf should natively comply with the Kubernetes restricted pod security standard. Especially when building it for a government use case.
Please see
https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted

Hey @Ansible-man just to make sure I understand you are talking specifically about the zarf namespace correct? You are per-creating the zarf namespace with extra labels on it before running zarf init ?

Yes. Please see
https://kubernetes.io/docs/concepts/security/pod-security-standards/
https://kubernetes.io/docs/concepts/security/pod-security-admission/
https://kubernetes.io/docs/concepts/security/pod-security-admission/#exemptions
Because PSA is enforcing the restricted Pod Security Level and Zarf does not apply security context to its deployment like
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:

name: restricted-container
image: nginx:1.19.8
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsUser: 1000
runAsGroup: 3000
readOnlyRootFilesystem: true

We have to apply labels to the zarf namespace so the PSA will allow it to run
apiVersion: v1
kind: Namespace
metadata:
name: zarf
labels:
# This value must be privileged for the controller to run successfully.
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/enforce-version: v1.25
# We are setting these to our desired enforce level, but note that these below values can be any of the available options.
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/audit-version: v1.25
pod-security.kubernetes.io/warn: privileged
pod-security.kubernetes.io/warn-version: v1.25

I would be more than happy to do testing and put in a PR to apply the proper security context on the zarf-agent if its something you guys want. The root issue is Zarf not complying with the restricted pod security standard.

@AustinAbro321 Sounds good, I will look into doing this in the next few days. Thanks

Hey @AustinAbro321 @Ansible-man , have any updates in there ? I have same problem too.

I have it on my calendar to do this next week.
On Fri, Sep 20, 2024 at 2:18 AM Miaoxiang @.***> wrote:

Hey @AustinAbro321 https://github.com/AustinAbro321 @Ansible-man
https://github.com/Ansible-man , have any updates in there ? I have
same problem too.
—
Reply to this email directly, view it on GitHub
https://github.com/zarf-dev/zarf/issues/2932#issuecomment-2363001639,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AWHLQRVV23RBGIBYUSEBI7TZXPD47AVCNFSM6AAAAABNFBUEDWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNRTGAYDCNRTHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Cade Thomas

@AustinAbro321 I have the code ready to commit, I can't seem to make a branch or access the slack channel. I read the contributing docs and I see where it says to create a draft PR but I am not able to make the branch for the draft PR.

@Ansible-man Only members of the org can make a new branch in this repo, you'll have to create a fork

Tested the above in my rke2 cluster at home with the restricted PSS and all seemed to go well. We only deploy the zarf agent without any other components so I cannot speak to their compliance.

Tested the above in my rke2 cluster at home with the restricted PSS and all seemed to go well. We only deploy the zarf agent without any other components so I cannot speak to their compliance.

Hi @Ansible-man ,
Thanks, In fact, in my use case, the other components also need to be PSS compliant, which I've tried to do myself and tested successfully, so I'll create another PR to commit the code


New eWallets API

POST Create eWallet charge
https://developers.xendit.co/api-reference/#create-ewallet-charge
GET Get eWallet charge status
https://developers.xendit.co/api-reference/#get-ewallet-charge-status

the linter test is failed

@weisurya yes it's because credit card & virtual account integration test which is not implemented by me.. (for VA test, it passed in my local)

type object 'EWallet' has no attribute 'create_ewallet_charge'


Custom event not triggered

I'm trying to trigger a custom event like:
typeahead:select but nothing happens. my code is listing the info I want but then when i select nothing happens.
What am I doing wrong?
var route = "autocomplete";
    $('.clientName').typeahead({
        minLength: 1,
        highlight: true,
        source:  function (term, process) {
          return $.get(route, { term: term }, function (data) {
                return process(data);
            });
        }

    });

    $('.clientName').on('typeahead:select', function(ev, suggestion) {
      alert("here");
      console.log('Selection: ' + suggestion);
  });

@elzix looks this is not being supported. :/

The events were changed with version 0.11.0. You are probably using an older version.
In 0.10.5 typeahead:select is typeahead:selected and typeahead:open is typeahead:opened.
This should be in the documentation, but it would probably be better to switch to a supported fork.


Create sub-table/header for related field of SearchResultsTable data

Summary
Title largely explains it. Currently have old, crude inlined unordered list that expands search results in a very ugly way that does not line up with the rest of the app.

#161 ties this up well enough to close the issue. I think the correct fix will be to break out the identifier and kind into a separate element and provide a table just for related values.


[CELEBORN-676] celeborn.client.fetch.timeout should rename to celeborn.client.fetch.openStream.timeout

What changes were proposed in this pull request?
celeborn.client.fetch.timeout  was only used when open stream, we should rename it.
Why are the changes needed?
Does this PR introduce any user-facing change?
How was this patch tested?

ping @waitinfuture @pan3793 @RexXiong WDYT?


Fix username clobbering in mongodb_uri

I was unable to get mongo-connector to authenticate with mongodb as the origin using x509 auth.  When calling with username on the command line, i.e.,
mongo-connector --admin-username <X.509 derived username> -m mongodb://localhost/?replicaSet=rs&authMechanism=MONGODB-X509&authSource=$external&ssl=true&ssl_certfile=/etc/pki/tls/private/bundle.pem

mongo complains mongo_connector.errors.InvalidConfiguration: Admin username specified without password.
When calling with the username as part of the mongo uri, i.e.,
mongo-connector -m mongodb://<X.509 derived username>@localhost/?replicaSet=rs&authMechanism=MONGODB-X509&authSource=$external&ssl=true&ssl_certfile=/etc/pki/tls/private/bundle.pem

the username gets clobbered by connection.copy_uri_options() and the server rejects the connection.
This PR updates connection.copy_uri_options() to not clobber usernames and passwords. I haven't tested it with anonymous or any other type of authentication, but I believe it should work.
Note, using x509 auth with mongo as the destination db does not have this bug.

Experiencing the same issue with PLAIN authMechanism.
Adding some logging in the connection.copy_uri_options() results in the below:


Implement snapshot purge

Which issue(s) this PR fixes:

Issue longhorn/longhorn#7199
What this PR does / why we need it:
Need to rely on purge APIs to clean up system snapshots created by rebuilding automatically
Special notes for your reviewer:
Additional documentation or context

@shuo-wu It is a DRAFT. Will you convert it to READY?

@shuo-wu will update the unit test later.