Use Canvas's status of "published" internally

looks great, and glad you also changed the unit tests!


Remove the notebookContentProvider API proposal

The notebookContentProvider API proposal is currently not on track for finalization. This api was introduced when we were still figuring out the model for working with notebooks and was inspired by the custom editor api. However we ultimately went with the much simpler NotebookSerializer API
Parts of the notebookContentProvider API are not well tested or supported today and maintaining it adds complexity to VS Code. We'd like to remove it, however the API is currently used by (or at least enabled for):

[ ] Liveshare @alyssajotice @fubaduba (please copy correct owners if I got them wrong
[x] Dot net interactive @brettfo, @colombod

Please let us know if/how you are using the notebookContentProvider api and if there are any factors that would block you from migrating off of it

@mjbvz we should have what we need to migrate here: https://github.com/microsoft/vscode/issues/125757. I expect to have this done by the end of the month. I'll update this thread when we've stopped using it.

@mjbvz here is an update: https://github.com/microsoft/vscode/issues/125757#issuecomment-1101818621

@alyssajotice How's Liveshare's migration been going? Run into any blockers or have any questions?

Hey @mjbvz, I am currently working on the design docs for this. This will be a large, three-part change to the Live Share notebooks architecture, and our goal is to have this done by the fall. I'll send you the design doc when it is complete so you can stay up to date.

Looks like liveshare is not using save, saveAs, or backup. Let's remove these from the proposal entirely

All consumers have now migrated off this api
We just need to move our tests off of this api and then we can remove it entirely: https://github.com/microsoft/vscode/issues/160580


subscriptionid in bssappuser.serviceinstance does not change when subscription update

[build]
PRIVATE-BUILD-ON-ESTITNB52016/11/25(master-branch)
[Steps to reproduce]

Subscribe service
Update subscription name
Wait finishing update

[Expected result]
subscriptionid in bssappuser.serviceinstance is updated
[Actual result]
subscriptionid in bssappuser.serviceinstance is not changed
[Detail]
This is important for extension interface. subscriptionid used for check as authentication and extension interface cannot get information form IaaS cloud if authentication is failed.

The problem was a wrong execution order after the last change. Fix was merged into master

verified 16.1 fix 3 build 01.12.2016


Remove createJSModules @ovveride marker - RN 0.47 compatibility

createJSModules is now not required on Android from RN 0.47. I actually can't build an app on RN 0.47 without removing this method/@ovveride marker. There is similar PR (#292), but this solution seems better for backwards compatibility.

Was going to submit the same thing - this change should work for backward compat.

Could you please release a new npm version asap.


(Suggestion) Make a mod wiki

A wiki listing all the materials added by the mod, what they do, and the tags for each material (for modpack makers).

the tags are simple. if the material is a gem, forge:gems/gem_name, if the material is a metal forge:ingots/material_name
(replace ingots/gems with dusts and stuf for the other stuff)
also the materials can be found in my mod's book(reforging guide)
i'm working on a balance update so don't expect a wiki just yet
the reforging guide book will include that information when i'm done with the 1.18.2 balance update

Nice, I was able to find each material and get the tags for them overtime. I was asking about a list though to make it easier to find out every material the mod has to offer without scouring the books (it took me a while with jei to figure out what belonged to base tinkers, reforged, and materialis). I'm making a mod pack with pmmo and the more recent versions require that you manually put in each material and what levels they require, so a list that I could copy and paste the tags and materials from would've been beneficial.


Twitter embed option is using an unsupported API

It looks like this component is making use of an unsupported Twitter endpoint.
	return await safeGet(`https://cdn.syndication.twimg.com/tweet?id=${id}`);

Worth noting that this may change or become inaccessible at any time, so I'd encourage either using the Twitter embedded JavaScript widgets (publish.twitter.com), or a server-side option that uses the latest Twitter API v2.

Thanks! Using the unsupported syndication API was a conscious choice made to avoid users needing to set up API keys, but with the knowledge that the API may change as you mention. Similarly, the Twitter embedded widgets ship JavaScript (and a lot of it!) whereas these components are JavaScript-free, so very intentional decision not to use those here.


MM-46904: Channel members is able to remove themselves from channel from the RHS members list

Summary
This PR allows channel members to be able to remove themselves from channel from the RHS members list
Ticket Link
Fixes https://github.com/mattermost/mattermost-server/issues/21356
JIRA: https://mattermost.atlassian.net/browse/MM-46904
Screenshots

before
after

Release Note
Channel members is able to remove themselves from channel from the RHS members list

/update-branch

E2E tests not automatically triggered, because PR has no approval yet. Please ask a developer to review and then try again to attach the QA label.

Interestingly, mattermod didn't add labels or assigned someone automatically.
The CI checks also didn't start automatically, I had to use update-branch command to trigger it.

As discussed here, I updated the PR to reuse existing translation string

Thanks for the contribution @sinansonmez. A couple things from me:

I wonder if we should make the menu item dangerous style like we do in the Channel menu:

In addition, I think we need a confirmation modal in this context when choosing 'Leave Channel'. We don't do think for public channels right now, but we do this when you attempt to leave any private channel. In this context, can we always have a confirmation?

thanks for the comments @matthewbirtch Follow up question: should I add dangerous style and confirmation modal for remove from channel action when removing others from the channel?

Good question @sinansonmez. I think that's a good suggestion and would make sense to treat it similarly I think.

@matthewbirtch I added dangerous style and add confirmation modal for both Leave Channel and Remove Channel actions.
Feel free to suggest changes for wording in the confirmation modal

@sinansonmez I think we should be able to re-use the same modal that shows (and it's language) when you try to leave a Private channel from the main channel menu.

For a public channel we could revise this to say:
Leave Channel {Channel Name}
Are you sure you wish to leave the channel {Channel name}? You can re-join this channel in the future if you change your mind.

@matthewbirtch thanks for the feedback.
I was able to reuse LeavePrivateChannelModal with changes on title and message.
I also renamed LeavePrivateChannelModal to LeaveChannelModal as now it is currently more generic, and not only used for private channels.

/e2e-test

Successfully triggered e2e testing!
https://git.internal.mattermost.com/qa/cypress-ui-automation/-/pipelines/258078

Thanks @sinansonmez Tested, looks great. Just one small issue - for channel admin, option to leave the channel is tucked slightly under managing members section.

@jgilliam17 I assume this is due to the problems we have with our menu component. Having said that, In this example, I feel like the menu should open below the button since it's near the top of the screen.

Thanks @jgilliam17 and @matthewbirtch for the feedback.
I agree with @matthewbirtch that issue is not because of this PR but rather it is a general point related to menu component. For this PR, I fixed the issue by opening the from the bottom of the button.


AuthorizationPermissionMismatch error on document upload

This issue is for a: (mark with an x)
- [X ] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

As the owner of the resource group and user that ran azd up I'm able to upload documents through the USER_UPLOAD settings in the readme. However, other users in the tenant get a permission error while trying to upload documents to be ingested. I've run the roles.sh script, recreated the storage and AI Search Index, made the user a Contributor, manually added the roles and still the error persists.

Any log messages given by the failure

'User-Agent': 'azsdk-python-storage-dfs/12.14.0 Python/3.11.10 (Linux-<IP_ADDRESS>-microsoft-standard-WSL2-x86_64-with-glibc2.36)'
'Authorization': 'REDACTED'
No body was attached to the request
INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 403
Response headers:
'Content-Length': '227'
'Content-Type': 'application/json;charset=utf-8'
'Server': 'Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0'
'x-ms-error-code': 'AuthorizationPermissionMismatch'
'x-ms-request-id': '81fa3302-b01f-0093-3c66-15cb19000000'
'x-ms-version': 'REDACTED'
'x-ms-client-request-id': '60e8dd6c-8159-11ef-bf27-0242ac110002'
'Date': 'Thu, 03 Oct 2024 07:30:34 GMT'
ERROR:app:Exception on request POST /upload
Traceback (most recent call last):
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/quart/app.py", line 1376, in handle_request
return await self.full_dispatch_request(request_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/quart/app.py", line 1414, in full_dispatch_request
result = await self.handle_user_exception(error)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/quart/app.py", line 1007, in handle_user_exception
raise error
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/quart/app.py", line 1412, in full_dispatch_request
result = await self.dispatch_request(request_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/quart/app.py", line 1506, in dispatch_request
return await self.ensure_async(handler)(**request_.view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/ai-hub/app/backend/decorators.py", line 53, in auth_handler
return await route_fn(auth_claims)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/ai-hub/app/backend/app.py", line 269, in upload
await user_directory_client.set_access_control(owner=user_oid, permissions='rwx------')
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/azure/core/tracing/decorator_async.py", line 88, in wrapper_use_tracer
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/azure/storage/filedatalake/aio/_path_client_async.py", line 334, in set_access_control
process_storage_error(error)
File "/workspaces/ai-hub/.venv/lib/python3.11/site-packages/azure/storage/filedatalake/_deserialize.py", line 221, in process_storage_error
exec("raise error from None")   # pylint: disable=exec-used # nosec
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1, in
azure.core.exceptions.HttpResponseError: () This request is not authorized to perform this operation using this permission.
RequestId:81fa3302-b01f-0093-3c66-15cb19000000
Time:2024-10-03T07:30:34.9735835Z
Code: AuthorizationPermissionMismatch
AuthorizationPermissionMismatch
Message: This request is not authorized to perform this operation using this permission.
RequestId:81fa3302-b01f-0093-3c66-15cb19000000
Time:2024-10-03T07:30:34.9735835Z

Expected/desired behavior

User can upload documents as I can.

OS and Version?

All including web app.

azd version?

Versions

Mention any other details that might be useful

.env setup:

AZURE_ENFORCE_ACCESS_CONTROL="true"
AZURE_ENABLE_GLOBAL_DOCUMENT_ACCESS="true"
AZURE_USE_AUTHENTICATION="true"
USE_LOGIN="false"
USE_USER_UPLOAD="true"
(Storage and Userstorage env also are set)

Thanks! We'll be in touch soon.

Hi! I am also having this problem :(


AutoOptimization Tutorial: BigBenchHard data download Value Error

Describe the bug
The module fails to download or load the training data. Possibly the result of portability issue with wget on Windows. Error appears both in colab and local ipynb notebook.
To Reproduce
Steps to reproduce the behavior:

Go to https://colab.research.google.com/drive/1n3mHUWekTEYHiBdYBTw43TKlPN41A9za
Run on Windows

Expected behavior
download and load the dataset
Screenshots
`Downloading dataset to C:\Users\sherm\AppData\Roaming\adalflow\cache_datasets\object_counting\object_counting.json
FileNotFoundError                         Traceback (most recent call last)
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\datasets\big_bench_hard.py:79, in BigBenchHard._check_or_download_dataset(self, data_path, split)
77 try:
78     # Use subprocess and capture the return code
---> 79     result = subprocess.call(
80         [
81             "wget",
82             f"https://raw.githubusercontent.com/suzgunmirac/BIG-Bench-Hard/main/bbh/{self.task_name}.json",
83             "-O",
84             json_path,
85         ]
86     )
88     # Check if wget failed (non-zero exit code)
File ~\Anaconda3\envs\ada\Lib\subprocess.py:389, in call(timeout, *popenargs, **kwargs)
382 """Run command with arguments.  Wait for command to complete or
383 timeout, then return the returncode attribute.
384
(...)
387 retcode = call(["ls", "-l"])
388 """
--> 389 with Popen(*popenargs, **kwargs) as p:
390     try:
File ~\Anaconda3\envs\ada\Lib\subprocess.py:1026, in Popen.init(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask, pipesize, process_group)
1023             self.stderr = io.TextIOWrapper(self.stderr,
1024                     encoding=encoding, errors=errors)
-> 1026     self._execute_child(args, executable, preexec_fn, close_fds,
1027                         pass_fds, cwd, env,
1028                         startupinfo, creationflags, shell,
1029                         p2cread, p2cwrite,
1030                         c2pread, c2pwrite,
1031                         errread, errwrite,
1032                         restore_signals,
1033                         gid, gids, uid, umask,
1034                         start_new_session, process_group)
1035 except:
1036     # Cleanup if the child failed starting.
File ~\Anaconda3\envs\ada\Lib\subprocess.py:1538, in Popen._execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_gid, unused_gids, unused_uid, unused_umask, unused_start_new_session, unused_process_group)
1537 try:
-> 1538     hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
1539                              # no special security
1540                              None, None,
1541                              int(not close_fds),
1542                              creationflags,
1543                              env,
1544                              cwd,
1545                              startupinfo)
1546 finally:
1547     # Child is launched. Close the parent's copy of those pipe
1548     # handles that only the child should have open.  You need
(...)
1551     # pipe will not close when the child process exits and the
1552     # ReadFile will hang.
FileNotFoundError: [WinError 2] The system cannot find the file specified
The above exception was the direct cause of the following exception:
ValueError                                Traceback (most recent call last)
Cell In[10], line 3
1 # check the datasets
----> 3 train_data, val_data, test_data = load_datasets(max_samples=2)
4 print(train_data[0])
Cell In[9], line 6, in load_datasets(max_samples)
4 def load_datasets(max_samples: int = None):
5     """Load the dataset"""
----> 6     train_data = BigBenchHard(split="train")
7     val_data = BigBenchHard(split="val")
8     test_data = BigBenchHard(split="test")
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\datasets\big_bench_hard.py:56, in BigBenchHard.init(self, task_name, root, split, *args, **kwargs)
54 self.task_name = task_name
55 data_path = prepare_dataset_path(self.root, self.task_name)
---> 56 self._check_or_download_dataset(data_path, split)
58 self.data = []
59 split_csv_path = os.path.join(data_path, f"{split}.csv")
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\datasets\big_bench_hard.py:103, in BigBenchHard._check_or_download_dataset(self, data_path, split)
98         raise ValueError(
99             f"Downloaded file is empty. Please check the task name '{self.task_name}' or network issues."
100         )
102 except Exception as e:
--> 103     raise ValueError(
104         f"Either network issues or an incorrect task name: '{self.task_name}'.\n"
105         "Please verify the task name (the JSON file name) by checking the following link:\n"
106         "https://github.com/suzgunmirac/BIG-Bench-Hard/tree/main/bbh"
107     ) from e
109 with open(json_path) as json_file:
110     data = json.load(json_file)
ValueError: Either network issues or an incorrect task name: 'object_counting'.
Please verify the task name (the JSON file name) by checking the following link:
https://github.com/suzgunmirac/BIG-Bench-Hard/tree/main/bbh
`
Desktop (please complete the following information):

OS: windows 11

Furthermore, after downloading the data manually it seems the trainer has not been implemented. Maybe finish these before putting tutorials up?
`Loading Data:   0%|                                                                                | 0/50 [00:00<?, ?it/s]

NotImplementedError                       Traceback (most recent call last)
Cell In[14], line 1
----> 1 diagnose(**gpt_3_model)
Cell In[13], line 11, in diagnose(model_client, model_kwargs)
9 adal_component = ObjectCountAdalComponent(model_client, model_kwargs)
10 trainer = adal.Trainer(adaltask=adal_component)
---> 11 trainer.diagnose(dataset=trainset, split="train")
12 trainer.diagnose(dataset=valset, split="val")
13 trainer.diagnose(dataset=testset, split="test")
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\optim\trainer\trainer.py:194, in Trainer.diagnose(self, dataset, split)
192 log_paths = self.adaltask.configure_callbacks(save_dir=save_path)
193 # 2. evaluate
--> 194 acc = self.adaltask.validation_step(dataset, 0, self.num_workers)
195 acc_score = acc.avg_score
196 acc_per_item_scores = acc.per_item_scores
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\optim\trainer\adal.py:472, in AdalComponent.validation_step(self, batch, batch_idx, num_workers, minimum_score)
470 # TODO: let use decide which mode to be
471 self.task.eval()
--> 472 completed_y_preds, completed_samples, index_to_score = self.pred_step(
473     batch, batch_idx, num_workers, running_eval=True, min_score=minimum_score
474 )
475 if index_to_score:
476     # compute score from index_to_score
477     print(
478         f"completed_samples: {len(completed_samples)}, len: {len(list(index_to_score.values()))}"
479     )
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\optim\trainer\adal.py:381, in AdalComponent.pred_step(self, batch, batch_idx, num_workers, running_eval, min_score)
379 tqdm_loader = tqdm(batch, total=len(batch), desc="Loading Data")
380 for i, sample in enumerate(tqdm_loader):
--> 381     task_call, kwargs = self.prepare_task(sample)
382     future = executor.submit(task_call, **kwargs)
383     futures.append((future, i, sample))  # preserve the order of the samples
File ~\Anaconda3\envs\ada\Lib\site-packages\adalflow\optim\trainer\adal.py:108, in AdalComponent.prepare_task(self, sample, *args, **kwargs)
91 def prepare_task(self, sample: Any, *args, **kwargs) -> Tuple[Callable, Dict]:
92     r"""Tell Trainer how to call the task in both training and inference mode.
93
94     Return a task call and kwargs for one training sample.
(...)
105             return self.task, {"x": sample.x}
106     """
--> 108     raise NotImplementedError("prepare_task method is not implemented")
NotImplementedError: prepare_task method is not implemented`

Perhaps the tutorial I was using was a deprecated version - this I confirm works: https://colab.research.google.com/github/SylphAI-Inc/AdalFlow/blob/main/notebooks/qas/adalflow_object_count_auto_optimization.ipynb


Upgrade to Django 1.9 and upgrade other dependencies

I've taken a quick test through the various list-endpoints and made sure they work. Also tested adding member and modifying inventory counts.
Might be something will get broken, but it will have to be fixed upon being identified. Should probably implement some real tests to cover this in the future.

Kan ikke se noe jeg reagerer på i denne i alle fall. Er nok bare å merge den inn.

Looks good. Can't see a reason for not merging it in.


Added mkdocs

Do we need nice docs ?
Docs support added for tinygrad, running github pages with linting and CI.

Already running at my github pages since I forked it:

If accepted the PR, this line need to be changed https://github.com/RakibFiha/tinygrad/blob/2790a239d8c31f6b89524f147fe0e27cd0008b1a/docs/mkdocs.yml#L8

Passing: https://github.com/RakibFiha/tinygrad/runs/1508474434

This is a ton of lines and copied README.md.
If you are interested in documentation, I think a good place to start would be high quality comments in the Python files.


Exporting nested group instead of layers?

Hi,
Great creation!
My psd file with a layer structure like this:
https://i.gyazo.com/0ddddcf5821e030a463b8829aff17daf.png
What I am thinking is to export all the greed arrow groups but not red groups.
Is this possible?
I already tested the script, the trouble is if I selected the group named Works, and it exports all the layers. Only if I selected Saiboat, and it exports the 5 groups which is right.
I wonder if this works for exporting every nested groups instead of exporting every layers?

Hi, thanks.

What I am thinking is to export all the greed arrow groups but not red groups.
Is this possible?
Yes, you describe how in the next sentence, given the script option "Selected group" is selected.

I wonder if this works for exporting every nested groups instead of exporting every layers?
I don't understand.

Sorry, my poor language.
This great script does almost perfect to me, but something is different in my project and I guess this is not a special case.
My project
I have a big project that will keep growing with each passing day in both main arts and backgrounds, each art-work maybe have over 10 different background styles(the background is not an issue).
It looks like this image:

God blessed I know I can manage all art-works in a single .psd file, I sort them out by using nested folders as category.
It looks like this image:

The inconvenience
The trouble is not every art-work in my psd are single layer, a few of  them are single layer and lots of them are separated by layers. I can’t merge them since some of them may be updated later when need.
The difference between single layer art-work and multi layers art-work:

So what can I do, I can just manage every single art-work in an exclusive folder, I named every end folder the art-work's name.
The suggestion
If the script has an option for exporting the end(last) folders instead of every single layers under the selected folder, and names the exporting files the end folder’s name, then it will be perfect in this case:)

Hi, that's a much better explanation ;-)

If the script has an option for exporting the end(last) folders instead of every single layers

You're right, it can't do that. The feature's been requested many times, but there's just not enough development effort at the moment. Thank you for your suggestion though. It definitely matters. It shows us what functionality people want from our script, so we might add it later.
In your case specifically though, there's help, I think. Group your "multi layer artworks" into Smart Objects. Then they will export as single layers ;-)


fix for metrics library url at getting started section

Metrics for metrics
Metrics project url http://metrics.codahale.com/ does not point to valid url, how about pointing to http://metrics.dropwizard.io/?

Changes Unknown when pulling 9ec41f6769a11fc8463c6612ab92a21e524ae0a1 on burakdd:fix-metrics-link into ** on dropwizard:master**.

Thanks!


CSG support

Can this addon work on CSG shapes as well?
CSGMesh works perfectly with the existing codebase after find_meshes is modified to search for those as well.

Sure, if you want to work on it, I'd happily merge a PR

#13 opened.


String literal must be prefixed by '@'

So sorry, I made the changes directly on Github, hence ended up breaking...


Automate Door Lock?

Is there a way to automate the relay to lock after a set period of time after unlocking?
For my door gate, not driveway, it’s on an electric strike - and when i play with that, I was curious if this plugin provided latitude to do it.

I’d look into other homebridge plugins like homebridge-delay-switch to do something like this.
There are other similar plugins to the above...google. :smile:


Remove depricated.datasources config property

Datasources property in ServerConfig is depricated and has not been in use for quite
a long time.

@electrum . Can you please review them ?

@electrum , @kokosing I have resolved those changes.


Actor gains 4th level slots a level too early

Submitted By: @JustinTheDM#5827
Feedback Type: Bug
Core: 0.8.9
System: dnd5e v1.4.3
Module Version: illandril-third-pact v1.2.3
Description:
The actor I have configured with custom pact magic progression gained 4th level slots at 8th level; according to the config, slots should upgrade to 4th at CL8.
Module Settings
roundingMode: standard,
illandril_custompact_a: [{"slots":1,"spellLevel":1},{"slots":2,"spellLevel":1},{"slots":2,"spellLevel":1},{"slots":2,"spellLevel":2},{"slots":3,"spellLevel":2},{"slots":3,"spellLevel":3},{"slots":3,"spellLevel":3},{"slots":3,"spellLevel":3},{"slots":3,"spellLevel":4},{"slots":3,"spellLevel":4},{"slots":4,"spellLevel":4},{"slots":4,"spellLevel":4},{"slots":4,"spellLevel":4},{"slots":4,"spellLevel":5},{"slots":4,"spellLevel":5},{"slots":4,"spellLevel":5},{"slots":5,"spellLevel":5},{"slots":5,"spellLevel":5},{"slots":5,"spellLevel":5},{"slots":5,"spellLevel":5}],
illandril_custompact_b: ,
illandril_custompact_c: ,
hitDice-d4: false,
hitDice-d20: false

Active Modules
ATL--v0.2.17;
ActiveAuras--v0.3.08;
CautiousGamemastersPack--v0.4.1;
CommunityLighting--v0.4.7;
Custom-Token-Animations--v0.2.51;
Dynamic-Effects-SRD--v6.0.01;
LockView--v1.4.14;
My-Shared-Compendia--v1.0.0;
TokensVisible--v2.7.0;
WallCutter--v1.1.1;
_mathjs--v7.5.1-fvtt2;
about-time--v1.0.4;
actor-attribute-lists--v0.0.5;
advanced-macros--v1.11;
autoanimations--v0.6.33;
better-rolltables--v1.8.3;
betterroofs--v<IP_ADDRESS>;
bug-reporter--v1.3.2;
colorsettings--v2.8.0;
combat-utility-belt--v1.6.2;
compendium-folders--v2.3.53;
condition-automation--v3.0.2;
custom-classes--v0.1.00;
cycle-token-stack--v0.5.4;
dae--v0.8.57;
danger-zone--v0.0.9;
ddb-importer--v2.5.18;
df-settings-clarity--v3.2.1;
dfreds-convenient-effects--v1.13.0;
dice-calculator--v1.2.1;
dnd5e-helpers--v3.0.2;
enhancedcombathud--v0.9.3;
fa-dm-screen--v0.4.1;
fateroll--v0.4.5;
find-the-culprit--v1.4.0;
force-client-settings--v1.0.3;
forien-copy-environment--v2.0.6;
forien-quest-log--v0.7.7;
forien-unidentified-items--v0.3.17;
foundry_community_macros--v0.48.0;
foundry_community_tables--v0.17.0;
foundryvtt-simple-calendar--vv1.3.66;
fxmaster--v1.2.1;
gm-notes--v0.4.1;
gm-screen--v2.8.1;
illandril-third-pact--v1.2.3;
inventory-plus--v0.3.5;
itemacro--v1.5.5;
jb2a_patreon--v0.2.8;
koboldpressogl--v0.26;
levels--v1.9.7;
lib-changelogs--v0.4;
lib-df-hotkeys--v2.3.5;
lib-find-the-path--v1.5.0;
lib-wrapper--v<IP_ADDRESS>;
lmrtfy--v1.20;
lootsheetnpc5e--v3.1.0;
magicitems--v2.1.2;
midi-qol--v0.8.67;
midi-srd--v0.1.02;
mob-attack-tool--v0.3.11;
module-sets--v1.0.1;
monks-active-tiles--v1.0.30;
monks-little-details--v1.0.37;
monks-scene-navigation--v1.0.17;
monks-tokenbar--v1.0.52;
mookAI--v0.2.0;
moulinette-core--v3.8.0;
moulinette-imagesearch--v2.3.0;
moulinette-scenes--v2.10.0;
moulinette-tiles--v3.5.1;
multiface-tiles--v1.0.2;
party-overview--v2.5.13;
permission_viewer--v0.8.10;
ping-logger--v1.2.10;
plutonium--v1.39.2;
resourcesplus--v1.6.11;
roll-from-compendium--v1.1.2;
rounded-distance-for-measured-templates--v0.5.1;
searchanywhere--v2.2.0;
select-tool-everywhere--v1.2.0;
sequencer--v1.1.0;
settings-extender--v1.1.6+0.8.6;
siftoolkit--v0.1.29;
smalltime--v1.13.3;
smart-doors--v1.2.9;
smarttarget--v0.6.6;
socketlib--v1.0.9;
t-is-for-target--v0.4;
template-wall-collision--v1.0.3;
tidy-ui_game-settings--v0.1.25;
tidy5e-sheet--v0.5.16;
times-up--v0.8.19;
token-action-hud--v1.3.13;
token-attacher--v4.2.0;
token-variants--v1.12.2;
tokenmagic--v<IP_ADDRESS>;
turnAlert--v2.0.0;
wall-height--v<IP_ADDRESS>;
wild-magic-surge-5e--v1.3.0;
wonderwalls--v0.1.01;
zsync--v0.0.4;
srd5e--v1.39.2;

Additional Details
undefined

Mistyped above - slots should upgrade to 4th level at CL9, not CL8.

That was it! Not sure how, but the actor had been set back to normal Pact
Magic. Thanks!
On Sun, Oct 10, 2021, 10:17 AM Joe Spandrusyszyn @.***>
wrote:

I was unable to reproduce this - when I use your JSON, at level 8 the
character has 3 level 3 slots, and at level 9 they have 3 level 4 slots.
Is the character multi-classed?
Can you double-check to make sure the class's "Spell Progression" is set
to "Custom Pact Caster A"?
I did find a different issue that might be related - I fixed that issue
and added some additional logging in 1.2.4.
Can you update, and see if you still see the issue?
If you do, open up the browser dev tools, turn on debug logging, and
filter the output to "Illandril's Third", and then refresh your browser.
You should see something like this in the console output (with "Custom A
1" replaced by the name of the character you're using with custom pact
slots):
Illandril's Third Pact Slot | Refreshing Pact Slots for Custom A 1 module.js:6:9
Illandril's Third Pact Slot | Actor[Custom A 1] has at least one pact class module.js:6:9
Illandril's Third Pact Slot | Deriving pact slots for Custom A 1 module.js:6:9
Illandril's Third Pact Slot | Actor[Custom A 1] has a custom pact slot class module.js:6:9
Illandril's Third Pact Slot | Custom pact options for [illandril_custompact_a]: [{"slots":1,"spellLevel":1},{"slots":2,"spellLevel":1},{"slots":2,"spellLevel":1},{"slots":2,"spellLevel":2},{"slots":3,"spellLevel":2},{"slots":3,"spellLevel":3},{"slots":3,"spellLevel":3},{"slots":3,"spellLevel":3},{"slots":3,"spellLevel":4},{"slots":3,"spellLevel":4},{"slots":4,"spellLevel":4},{"slots":4,"spellLevel":4},{"slots":4,"spellLevel":4},{"slots":4,"spellLevel":5},{"slots":4,"spellLevel":5},{"slots":4,"spellLevel":5},{"slots":5,"spellLevel":5},{"slots":5,"spellLevel":5},{"slots":5,"spellLevel":5},{"slots":5,"spellLevel":5}] module.js:6:9
Illandril's Third Pact Slot | Custom pact options for level 8: {"slots":3,"spellLevel":3} module.js:6:9
Illandril's Third Pact Slot | Calculated pact slots for customPactClass[illandril_custompact_a]: {"value":0,"override":null,"max":3,"level":3} module.js:6:9
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/illandril/FoundryVTT-third-pact/issues/8#issuecomment-939500432,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AP5RVEDW4K6KVYXYAU2BWMLUGGVCNANCNFSM5FVWGGCA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Update mission control for eventing module

We need to update the UI to add the following features:

Describe schema for event types
Describe Security rules for event types
Describe default security rule

Done. Coming in v0.16.0.


[Blog] Recent post section is broken

URL: https://main--moleculardevices--hlxsites.hlx.page/lab-notes

This is broken because of the missing metadata in one of the blog pages in the latest import.
I will try to add some checks to avoid NPEs and maybe add some defaults if possible, but it should ultimately be fixed by adding the missing metadata on blogs.


Feature: Support for configuring managed_headers

Current Terraform and Cloudflare provider version
2.27
Description
Managed Transforms do not appear to be a currently supported or documented item in the Terraform provider, but are generally available via the Cloudflare UI and API (https://developers.cloudflare.com/rules/transform/managed-transforms/configure/ / https://api.cloudflare.com/#managed-headers-api-change-state-of-managed-headers)
Use cases
The ability to enabling / disable specific of Managed Transforms via Terraform would be excellent.
Potential Terraform configuration
resource "cloudflare_ruleset" "zone_level_managed_waf" {
  zone_id     = "cb029e245cfdd66dc8d2e570d5dd3322"
  name        = "managed transforms"
  description = "managed transforms ruleset description"
  kind        = "zone"
  phase       = "http_request_transform_managed"

  rules {
    action = "execute"
    action_parameters {
      id = "add_cf-bot-score_header"
    }
    description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
    enabled = true
  }
}

References
No response

i don't think the potential configuration makes sense here as it isn't a ruleset endpoint; this would be best as a new resource (possibly a trasform_rule resource or similar but given the others are rulesets, 🤷 ).

@jacobbednarz I'm not precious in any way about the implementation / potential configuration - I am a very much a newbie to Terraform in general so I barely understand what I'm working with most of the time. 😅

cloudflare-go has support now via cloudflare/cloudflare-go#923


We have decided to offer an alternative project from this project

You have done a great job on this project and it was definitely working great at the time it was maintain. But we do need a bit more responsiveness on this as its core to one of our major product.
We understand that its open source but as its under nextui we would have expect active maintainers and also that your main project would have use the latest version not a really old one.
We have created in my company a similar project with a different approach for it for people who would be interest in this. We will maintain it as its part of our design system.
https://github.com/busbud/tailwind-buddy
There is still work to do in the documentation that I will work on this week.

There is a lot that goes into developing a library like this one, and maintainers can frequently have difficulty in keeping up based on other commitments in work/life. Rather than creating a separate project altogether, I'd recommend helping contribute to existing projects to growth the contributor community.
Maintaining open-source software is the job of the community, not just the "designated maintainers".

I understand your point. And totally fair as I am also maintaining other libraries
Unfortunately having a good communication about this would have been fair and honest to the community also and ask for maintainers.
To be able to iterate fast and we do see some fundamental practices totally different. We will continue in our path.
I hope you will be able to continue maintaining the library. wish you all the best


bump concurrent ssh sessions for DC/OS installer

DCOS-7596

add optional ssh_parallelism option to a config file. The value must be
integer within 1..100 range.

use default ssh_parallelism of 20 for DC/OS installer.

@cmaloney your comments addressed, please review

:ship:

https://mesosphere.atlassian.net/browse/DCOS-7596


[Question] Unable to view GPU memory usage in Windows (N/A memory usage)

Required prerequisites

[X] I have read the documentation https://nvitop.readthedocs.io.
[X] I have searched the Issue Tracker that this hasn't already been reported. (comment there if it has.)
[X] I have tried the latest version of nvitop in a new isolated virtual environment.

Questions
Whether I use nvidia-smi or nvitop, they both list my GPU memory usage as N/A and WDDM:N/A respectively. Seeing as nvitop uses nvidia's SMI under-the-hood, I suppose that's why I'm having the similar issue. Oddly, using Process Explorer I am able to see the memory usage of my applications. My drivers are up to date, but the behavior is odd. Has anyone experienced this or better yet resolved it?
OS: Windows 10
GPU: RTX 3080 (531.18)
Both on WSL2 or Windows environments

Whether I use nvidia-smi or nvitop, they both list my GPU memory usage as N/A and WDDM:N/A respectively.

OS: Windows 10
GPU: RTX 3080 (531.18)
Both on WSL2 or Windows environments

Hi @Infinitay, this is intentional behavior and there is nothing we can do on our side. Both nvidia-smi and nvitop query the GPU states from the NVIDIA Management Library (NVML). Since you are using Windows, the GPU is set with the Windows Display Driver Model (WDDM) mode, the NVML cannot report per-process SM utilization and GPU memory usage.

GPU Memory Usage Amount of memory used on the device by the context. Not available on Windows when running in WDDM mode because Windows KMD manages all the memory not NVIDIA driver.

Ref: nvidia-smi documentation

Driver Model
On Windows, the TCC and WDDM driver models are supported. The driver model can be changed with the (-dm) or (-fdm) flags. The TCC driver model is optimized for compute applications. I.E. kernel launch times will be quicker with TCC. The WDDM driver model is designed for graphics applications and is not recommended for compute applications. Linux does not support multiple driver models, and will always have the value of "N/A".
Current The driver model currently in use. Always "N/A" on Linux.

Processes
List of processes having Compute or Graphics Context on the device. Compute processes are reported on all the fully supported products. Reporting for Graphics processes is limited to the supported products starting with Kepler architecture.
Each Entry is of format "<GPU Index> <PID> <Type> <Process Name> <GPU  Memory Usage>"
GPU Index Represents NVML Index of the device.
PID Represents Process ID corresponding to the active Compute or Graphics context.
Type Displayed as "C" for Compute Process, "G" for Graphics Process, and "C+G" for the process having both Compute and Graphics contexts.
Process Name Represents process name for the Compute or Graphics process.
GPU Memory Usage Amount of memory used on the device by the context. Not available on Windows when running in WDDM mode because Windows KMD manages all the memory not NVIDIA driver.

Note that the TTC mode is not available for Geforce GPUs:
Fri Mar  3 17:11:30 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 528.49       Driver Version: 528.49       CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:09:00.0  On |                  N/A |
|  0%   42C    P8    42W / 350W |   3064MiB / 24576MiB |     22%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                           ^
                           +------ WDDM mode

$ nvidia-smi --force-driver-model=1
Unable to set driver model for GPU 00000000:09:00.0: Not Supported
Treating as warning and moving on.
All done.

Feel free to ask to reopen this if you have more questions.


advanced option for 'Usage rights' filter?

Is there an appropriate filter for 'Usage rights' options on Google Image Search similar to the options below: ?
advanced: {
      imgType: 'photo', // options: clipart, face, lineart, news, photo
      resolution: 'l', // options: l(arge), m(edium), i(cons), etc.
      color: undefined // options: color, gray, trans
  }

Yes there is: https://github.com/pevers/images-scraper/pull/39
I added a general option field to pass down as query parameters. In the last update you can do:
tbs: { sur: "fc" // commercial reuse } for example


questions about : python scripts/run.py

(1)python scripts/run.py --config configs/default.yaml --config configs/base_cfgs/*.yml --config ...
What does this line of code mean? Are the three --config configuration files executed at once, or in three separate executions? The --config ... What does it mean?
(2)what's problem with this? :
Traceback (most recent call last):
File "scripts/run.py", line 17, in
from ordinalclip.runner.data import RegressionDataModule
ModuleNotFoundError: No module named 'ordinalclip'

Hi, Zhengdong! 🤗

It means that the config files are compositional, i.e., you can combine different config files at one job execution.
Please follow the installation instructions to “pip install ordinalclip”。

Execute ”Single-run mode“ and ”Multi-run mode“ in sequence, or just choose one of these two

Hi Zhengdong, Sorry for the late reply!
Just choose one of these two. Multi-run mode is used for sweeping over multiple combinations of config.
For the Single-run mode, you might compose different config files in configs/ folder. For example, you can choose different optimizers configs/base_cfgs/runner_cfg/optim_sched/optim/.

@luozhengdong Hi, have you solved the second problem?


[firebase_auth] Exeptions on updateEmail aren't documented

FirebaseUser.updateEmail() has the following exceptions documented:
>  ///  * `ERROR_INVALID_CREDENTIAL` - If the email address is malformed.
  ///  * `ERROR_EMAIL_ALREADY_IN_USE` - If the email is already in use by a different account.
  ///  * `ERROR_USER_DISABLED` - If the user has been disabled (for example, in the Firebase console)
  ///  * `ERROR_USER_NOT_FOUND` - If the user has been deleted (for example, in the Firebase console)
  ///  * `ERROR_REQUIRES_RECENT_LOGIN` - If the user's last sign-in time does not meet the security threshold. Use reauthenticate methods to resolve.
  ///  * `ERROR_OPERATION_NOT_ALLOWED` - Indicates that Email & Password accounts are not enabled.

I tested my code with a wrong email and I got an `ERROR_INVALID_EMAIL` instead of a `ERROR_INVALID_CREDENTIAL`.

The docs should be updated with the new exception if there are any,

Closing as covered by https://github.com/FirebaseExtended/flutterfire/issues/183


Include reference to role-assignable groups

Even if users have no roles assigned, if they are members or owners of role-assignable groups, Authentication Administrator role will not be able to manage these users' credentials and manage MFA.
This reference will prevent future confusions (consequence of the role-assignable groups restrictions.)

@LucasLeitao-MSFT : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @rolyon ,
Do you have any updates from your review?
Thanks!


[Event Request] Codeunit 5899 "Calc. Inventory Value-Check"

Describe the request
Our customer in the functionality in the inventory journal using the function of calculating the value of inventory would like to skip some inventory ledger entries.
In NAV2009 this functionality was available, in BC14 we added in the standard object 5899 its event.

I would ask you to add an event that allows you to skip checking these records.
Proposed event design in object "Calc. Inventory Value-Check", function name: "FindOpenOutboundEntry"

Additional context
I need this event in Business Central OnPrem 22, eventually 23.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 14309.


Compatibility with Visium CytAssist?

Hello Team,
I am very excited to try out this tool on our ST datasets. However most samples we have profiled recently have been using the Visium CytAssist technology, which I believe is probe based expression profiling. I was wondering if CalicoST can be used with this data? I know I couldn't use Numbat on these samples.
Thank you

Hi,
CalicoST currently requires the BAF information from sequencing-based ST technologies and does not support probe-based ones. We plan to evaluate the performance of CalicoST using only the expression information and include that option in a future lease.
At the mean time, we refer you to STARCH, which infers total copy numbers and leverages the spatial information. Particularly, the develop branch has the option for using the hexagonal grid in Visium layouts by specifying --platform Visium
Publication: https://iopscience.iop.org/article/10.1088/1478-3975/abbe99
Github: https://github.com/raphael-group/STARCH/tree/develop
Best,
Cong


Base Roof Block and Base Roof Slab recepies are not working with TFC 1.18.2-2.2.32

I'm playing Auto-TerraFirmaCraft modpack and have Mcw_TFC_aio-0.5.7-1.18.2 installed.
Recepies for Base Roof Block and Base Roof Slab do not work because TFC does not have a stone cutter.
Neither they work with mechanical saw.

Can you test a work-around for me? If you take an item filter from create, place the Base Roof Block in the filter (you can drag and drop items from JEI into create filters) and then place a terracotta block on the mechanical saw it should work.

Sadly, no. It doesn't work. Also it will not help players who don't have Create installed.
However, thank you for telling me abot that featuer with dragging items from JEI to filters, it is awesome.


http response code for failed login

Is it possible to get a http response code when a failed login occurs rather than using the token error message?

yes

In general, please refer to stackoverflow.com for questions. It's also very helpful if you add more detail (which authenticator are you using etc.) so people don't have to guess what your use case is.


Add significantly more unit tests

It is impossible for GoGi to be fully reliable without a lot more unit tests, including ones on actual UI elements, not underlying calculations.

This must be implemented for v2.

There are currently several packages that cannot be skipped for testing, and GitHub action failures seem to be the same. When the code testing coverage is high, I imagine that beginners like me will be more likely to learn drawing logic

I will definitely work on implementing a lot of tests after I finish some of the other issues.

I added many more unit tests, and all of the infrastructure is in place and working for image-based GUI testing. We are now above 40% test coverage, which is similar to other Go GUI frameworks and perfectly sufficient for v1. I will file a separate long-term issue about adding more unit tests, as that is an ongoing process and we do want to increase test coverage more eventually, but that will not be a high priority for now.


POL-409 10 Possible Superseded Instances

Added the missing instances for which the customer was getting error.
Description
10 Possible Superseded Instances | Incorrect Results
Issues Resolved
Added the missing instances.
Contribution Check List

[ ] All tests pass.
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable
[ ] New functionality has been documented in CHANGELOG.MD

The JSON file has been updated only with the instances, for which the customer is getting error. There are many more instances that are not in the JSON file. This will be handled separately in another ticket.

Closing the branch as Travis issue was not getting resolved. Another PR created and merged.


Tweak RNDF generation

General refactors
Fixed (lat,lon) transformation and RNDF generation

Sample RNDF output for the 10km² sample

@garyservin all yours :)


Deploy Django app with AppService and PostGRES doesn't work

See Azure CLI issue: https://github.com/Azure/azure-cli/issues/16939
This tutorial as written doesn't work. When I try to run webapp vnet-integration add I get an error that the subnet is missing the required delegation. However, the subnet DOES have the required delegation, because the postgres flexible-server create command sets it up that way.
I tried setting up the VNET integration through portal, but that blade doesn't "see" the VNET, so I can't set it there either.
I'm not sure if the problem lies in the postGRES service, webapp service, or the article itself.

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

ID: f1891a95-019e-8644-ec3f-8723b778ec5c
Version Independent ID: 81c0513e-1628-e2c3-e65f-9b4d52ddfad4
Content: Tutorial: Deploy Django app with App Service and Azure Database for PostgreSQL - Flexible Server (Preview) in virtual network
Content Source: articles/postgresql/flexible-server/tutorial-django-app-service-postgres.md
Service: postgresql
GitHub Login: @mksuni
Microsoft Alias: sumuth

@tjprescott Thank you for the feedback. We are actively investigating and will get back to you soon.

Well, not sure what I did, but now the webapp can at least see the VNet... but it says that subnet is not available for delegation. The article states that you have to use the same subnet as the one the flexible server is delegated to, so I'm not sure what steps to take next.

@tjprescott Thanks for reporting this issue, I was able to repro it as well. As per my understanding this should not be problem related to PostgreSQL service but should be related to article. I am assigning it to content author to evaluate and update as appropriate.

Thanks @AnuragSharma-MSFT. The WebApp team concurred in their response: https://github.com/Azure/azure-cli/issues/16939#issuecomment-780475821

please close the issue as it is fixed

#please-close


[MINOR]: Rename get_arrayref_at_indices to take_arrays

Which issue does this PR close?

Closes #.
Rationale for this change

What changes are included in this PR?
As in the suggestion, this PR renames the util function get_arrayref_at_indices to take_arrays.
Also, type of the indices parameter is changed from &PrimitiveArray<UInt32Type> to &dyn Array to make it similar to compute::take's API.

Are these changes tested?

Are there any user-facing changes?

thanks @akurmustafa I feel we can move it to arrow-rs as for me it is natural API evolvement on top of take which is used by downstream projects.
Another thing came to my mind we probably want to optimize take as it likely a bottleneck for SMJ we found in apache/datafusion-comet#901 (comment)

Figuring out how to make take  faster would certainly be a good idea, though I think that will require some significant effort. There is not a lot of "low hanging fruit" in that kernel that I know of

By the way, I opened a PR to move this util to arrow-rs.


Rotation of Screen Loses, replacement colors.

Pretty basic. Change the color, turn the screen, color went back to the original.

That won't fix it. It will simply redisplay the view in the rotated state without the shutdown and restore. Rather it should simply write all current embroidery to the bundle. After all this problem is going to crop back up if Android kills it for memory.  You can call .pack() on the PointList and get an array of floats. And you can save an array of floats to a bundle. Include the color of the layer, and iterate through the layers and that'd do it. Just telling it not to rebuild the view or kill the view totally makes it matter less, but it still matters.

It seems to work fine, have you tried it ? Declaring android:configChanges="orientation|screenSize" will prevent the Activity from restarting and let the framework handle the rest, hence, leaving the state immutable. It is a simple solution which I think is ok for now.

It would work for a while. And covers the rotation instances. I'd also toss in the keyboard thing (older model phones will reload on the pull-out of the physical keyboard). But, it would still lose that information if it got killed for memory or any of the other very good reasons it has for saving the state. It'll certainly work for like 95% of cases which is fine. But, actually writing the data to the bundle and reading it back out, is certainly preferred, and not remotely that hard to do. It would also, have some perfectly determinable effects like having the calculated _width and _height things wrong after a rotation and the matrix that figures the position will stay where it was set for the other configuration. -- But, sure most of the test cases it'll do pretty well.

Properly fixed this. https://github.com/Embroidermodder/MobileViewer/pull/75
Actually saves the data to internal memory so it won't lose it even if you hard close the app. Removed the kludge.


hint at windows troubleshooting

I don't think we need it. We'll have package that does not rely on debug version real soon(tm) now

It looks like this won't be a dependency for long, so the consensus is to not add the troubleshooting hint about the requirement.


Infrastructure access for GS using Crossplane

figure out how to configure infrastructure access through crossplane for giant swarm
- use case: we want to create a S3 bucket everywhere we deploy harbor
- info about how it works and what's needed in crossplane: https://docs.crossplane.io/v1.10/reference/configure/
- idea: let's only provide docs that show how to add a secret to MCF. Then, for each use case, a user can add a new provider access secret tuned and limited to their scope, without us solving the problem of how to provide a generic, yet secure set of permissions
- it still doesn't help with tasks like "I need 1 new access token for S3 on each MC"
- docs for the above

Access using infrastructure provider generated keys is tested and worked for the Harbor project. Results are described here.
What's left is to figure out key-less access on AWS

Examples how to do it are in the crossplane-examples repo.


CSV.parse can't handle double double-quoted column at Ruby 2.6.0

At first, I don't know whether the following CSV is valid format.
a,""b""

Ruby 2.5's CSV library handles it well.
However, Ruby 2.6's shows different behavior.
Ruby 2.6
$ ruby -v t.rb
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]
Traceback (most recent call last):
	5: from t.rb:7:in `<main>'
	4: from /Users/watson/.rbenv/versions/2.6.0/lib/ruby/2.6.0/csv.rb:683:in `parse'
	3: from /Users/watson/.rbenv/versions/2.6.0/lib/ruby/2.6.0/csv.rb:1180:in `read'
	2: from /Users/watson/.rbenv/versions/2.6.0/lib/ruby/2.6.0/csv.rb:1180:in `to_a'
	1: from /Users/watson/.rbenv/versions/2.6.0/lib/ruby/2.6.0/csv.rb:1171:in `each'
/Users/watson/.rbenv/versions/2.6.0/lib/ruby/2.6.0/csv/parser.rb:273:in `parse': Do not allow except col_sep_split_separator after quoted fields in line 1. (CSV::MalformedCSVError)

Ruby 2.5
$ ruby -v t.rb
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18]
[["a", "\"b\""]]

Test code
require 'csv'

csv =<<CSV
a,""b""
CSV

p CSV.parse(csv)

Ah, this isn't a valid CSV. It should be quoted:
a,"""b"""

This is a bug of csv in Ruby 2.5.

But I don't like backward incompatibility.
I'll consider how to handle this.

I've added liberal_parsing: {double_quote_outside_quote: true} option. The following code works on both Ruby 2.5 and Ruby 2.6 + csv master:
require 'csv'

csv =<<CSV
a,""b""
CSV

p CSV.parse(csv, liberal_parsing: {double_quote_outside_quote: true})


add support for eslint-plugin-lodash

https://www.npmjs.com/package/eslint-plugin-lodash
if it is not already so.

You can add additional plugins.

It's a good plugin, but it's not something I want to include here. You can add it yourself if you need.


Files hang while During deleting files

Description
system hang while During deleting files
Steps To Reproduce
try to delete some files that requires Admin privilege's,
files hangs for a while  , then after deleting them using windows file explorer, files works
Expected behavior
should be able to delete without any hang
Files Version
Version: <IP_ADDRESS>
Windows Version
OS Version: 10.0.19043.1320
Relevant Assets
debug.log
debug_fulltrust.log

@lakani is this still an issue in the preview version? https://files.community/download/preview


after opening/closing folders, tree view can get garbled

See attached.  Sometimes it happens, sometimes not.  Atom 1.02, OSX 10.11b4, a-m-ui 0.5.9.

This happens to me quite often too

I can't seem to reproduce this. Do you guys have some more info?

I have the theme set to the "compact" tree.  I also have Roboto Mono
installed (In fact, I find I get better editing text if I un-check your
"use Roboto for editor" and simply choose through Atom prefs), not sure if
any of those things make it more likely.
FWIW, 10.11b4 seemed to have some video display wonkiness, let's see if it
happens again in beta 5
On Wed, Jul 29, 2015 at 3:08 PM, Silvestre Herrera<EMAIL_ADDRESS>
wrote:

I can't seem to reproduce this. Do you guys have some more info?
—
Reply to this email directly or view it on GitHub
https://github.com/silvestreh/atom-material-ui/issues/46#issuecomment-126061443
.

@silvestreh Its quite difficult to reproduce as I don't even know what causes it.
I'm using OS X 10.10 btw

I don't believe this is an issue with this theme, but an issue with atom/treeview. I've seen this happen in other themes, as well.

I'm closing this one as it's been a while and haven't been able to reproduce it. Please reopen if you know how to reproduce it.


Dev -> Stg

Update workflows and Terraform

Restore terraform init

Format terraform

Update .github/dependabot.yml

Co-authored-by: Scott Hutchings<EMAIL_ADDRESS>
Update terraform-iac/prd/setup/setup.tf

Co-authored-by: Scott Hutchings<EMAIL_ADDRESS>

Add dev/stg lock files

Add dev/stg lock files

Add prd/cpy terraform lock files

Update default tags block

Format terraform

Shorten bucket name

Update s3 static site

Co-authored-by: Scott Hutchings<EMAIL_ADDRESS>

Reminds me of this XKCD, but with waiting for the cert


[v4] Computed field function call omits non-null argument value.

I have a function (computed field) like my_schema.user_total_purchased_shares_in_company(_user my_schema.user, company_id integer), but when I attempt to select its field in a query, I get the error message: function my_schema.user_total_purchased_shares_in_company(my_schema.\"user\") does not exist
This is a query that encounters the error:
{
  viewer {
    id
    totalPurchasedSharesInCompany(companyId: 2)
  }
}

I was unable to reproduce this. Whilst digging around I did find a couple bugs in the function code, so it's possible I've fixed it now in<EMAIL_ADDRESS>- can you give that a try and if it still fails please provide a minimal schema that reproduces the issue?

@benjie Yep, I'll try this today and report back!

@benjie Awesome!  This seems to be resolved in<EMAIL_ADDRESS>


[Android] Infinite Loading - AAC

During a test I came across an infinite loading error.
The same did not report error through existing events. But when you look at the Android Log (adb logcat -d), the following error is encountered:
 2324 16587 W SoftAAC2: aacDecoder_DecodeFrame decoderErr = 0x4002
 2324 16587 W SoftAAC2: AAC decoder returned error 0x4002, substituting silence
Note: When you "Stop" and "Play" again, it will pick up again.

This looks like an ExoPlayer issue. Can you send the track that you're trying to play?

Track 1: https://live.hunter.fm/live
Track 2: https://live.hunter.fm/mobile


Update repo url in README.rst

ok, I give up on the browser-based PR, I can not sort out how to tell it to make the branch on my fork.


RightOn Host: Game In Progress - Storybook Question Index Header

Touch base with @zach2025 about integrating his working timer with the question index into Host repo. Would be useful to get those components in - then create a story from there


started working on group_membership_type

Dominic needs to incorporate the more complicated stuff (including some changes in the filtering)

Is this to hold the relationship in the family?
Please can you rebase/compress to single commit?


Import Order Line, "Parameter name: Required field SalesOrder Id is missing" message display

SalesOrder Id  has been contained in the xml file of order line，but when I imported the file for the first time with CDS Data Migrator,
it says 'Warning:DataCrmStoreWriter PersistUsingUpdateCreateRequests : Create Entity Issue salesorderdetail:a836c0a9-05d4-eb11-bacc-000d3aa1256e - Error:Value cannot be null.
Parameter name: Required field SalesOrder Id is missing'.
But I click the “Execute”button again, the data can be imported normally.(The content of the file has not been changed yet.)
What's the reason？Is there any problem with the operation?
In addition, the ‘description’ field cannot be updated by the field content in the xml file. The value of the ‘description’ field in the product entity is used to populate the field.

Hi @GHSunnyGH, I've had a brief look but I'm not sure why this could be. I'm not familiar with entity with regards to exporting and importing them.
If you are comfortable, I would recommend you debug this following these setups using your own data and config. Don't forget to turn up the log level. https://github.com/Capgemini/xrm-datamigration/wiki/Setup#Setup-Steps
One last question, is your data in JSON or CSV format?

Hi @tdashworth, my data is in JSON format.

Oddly enough I was also getting this yesterday. How many records were you trying too import?
I have a feeling it could be to do with you limits as it continued to work shortly afterwards.

This error occurs even if only one record is imported.


[vue.js] [withKnobs] addon causes to re-create a new story at knobChange

Bug summary
knobs refresh mechanism is causing the story to re-render fully instead of recycling/updating it. I've hesitated for a long time to post this issue, but actually it's also in your v4 demo so i thought it was worth it.
Steps to reproduce

create a story
add a few knobs
add created and destroyed hooks with console.log to witness the bug
play with the knobs. you should see the div#root remounting the whole thing

The most basic story does it :
storiesOf('Addon|Knobs', module)
  .addDecorator(withKnobs)
  .add('Simple', () => {
    const name = text('Name', 'John Doe');
    const age = number('Age', 44);
    const content = `I am ${name} and I'm ${age} years old.`;

    return {
      template: `<div>${content}</div>`,
      created() { console.log('created') },
      destroyed() { console.log('destroyed') },
    };
  })

Reproduction URL

https://storybooks-vue.netlify.com/?selectedKind=Addon|Knobs&selectedStory=Simple

Please specify which version of Storybook and optionally any affected addons that you're running

@storybook/vue 3.4.2
@storybook/addon-knobs 3.4.2

Quickfix
Beware : this hack assumes that knobs properties are in the data() reactive space and that knobs label and properties names are synced. it is definitely not ideal but it works, and you're not using any other decorators.
<EMAIL_ADDRESS>:
---<EMAIL_ADDRESS>2018-06-10 13:30:01.000000000 +0900
+++<EMAIL_ADDRESS>2018-06-20 12:18:25.000000000 +0900
@@ -51,7 +51,11 @@
             var knobOptions = knobStore.get(name);

             knobOptions.value = value;
-            this.story = this.getStory(this.context);
+            //this.story = this.getStory(this.context);
+
+            if (name.toLowerCase() in this.$children[0])
+              this.$children[0][name.toLowerCase()] = value;
+
             this.$forceUpdate();
           },
           onKnobClick: function onKnobClick(clicked) {

Example story for this fix :
storiesOf('Addon|Knobs', module)
  .addDecorator(withKnobs)
  .add('Simple', () => {
    const name = text('Name', 'John Doe');
    const age = number('Age', 44);
    const content = `I am ${name} and I'm ${age} years old.`;

    return {
      data() { return {
        name : text('Name', 'John Doe'),
        age : number('Age', 44)
      }},
      computed: {
        content() { return `I am ${this.name} and I'm ${this.age} years old.`
      },
      template: `<div>${content}</div>`,
      created() { console.log('created') },
      destroyed() { console.log('destroyed') },
    };
  })

I actually produced a more reliable patch, if anyone fixing is interested :
---<EMAIL_ADDRESS>2018-06-10 13:30:01.000000000 +0900
+++<EMAIL_ADDRESS>2018-06-20 17:04:32.000000000 +0900
@@ -38,7 +38,7 @@
           };
         },
         render: function render(h) {
-          return h(this.story);
+          return this.story.render ? this.story.render(h) : h(this.story);
         },

Here's a better patch, in case someone needs it. This assume you don't use any other decorator (i tried to make it work with vue-info-addon without success)
---<EMAIL_ADDRESS>2018-06-20 18:49:55.000000000 +0900
+++<EMAIL_ADDRESS>2018-06-20 18:36:18.000000000 +0900
@@ -38,7 +38,16 @@
           };
         },
         render: function render(h) {
+          if (!this.cache) {
+            this.cache = h(this.story);
+          }
+
+          if (this.story.data && this.cache.child) { // replicating data changes
+            Object.entries(this.story.data())
+                  .forEach(([k, v]) => this.cache.child[k] = v)
+          }
+
-          return h(this.story);
+          return this.story.render ? this.story.render(h) : this.cache
         },

well it's not inactive, it's been ignored.

Hey @y-nk, sorry for being not responsive. In the v4 version, we changed the knobs addon to be framework agnostic, in order to support by default every new framework.
@storybooks/team, can anyone familiar with vue integration suggest a solution for this?

@y-nk does is this issue still current on the alpha releases?

@ndelangen, I've checked this yesterday and it does exist.

I just tried this on my local branch (a few commit ahead of master) and I'm NOT seeing the logs when change knobs, but AM seeing them when switching stories.
That seems correct to me.
Sorry this took so long to report back @y-nk. The 4.0.0 release is close now, but in the mean-time you could try the alpha release.

I am using @storybook/html 4.0.0-alpha.20 and @storybook/addon-knobs of the same version and root element is still fully re-rendered when I change a knob value.
It causes some issues to me so I am wondering if it is expected behaviour or a bug.

@ndelangen thanks a lot for reporting. i don't feel very secure to use an alpha build, but i'll give it a try in a separate env before migrating. is there any set date for v4 release ?
@kuka-radovan oh. is that in a clean new env ?

@y-nk Yes... I don't have there anything else. Only one simple story with one addon - addon-knobs. Nothing more, nothing less.

So, Is it fixed in the current v4 alpha version?

@yukun-kooboo I didn't check the alpha as the cycle release takes some time (which i totally understand).
@kuka-radovan When we discovered this bug, we had many plugins installed, and the "matriochka" pattern of plugins made this bug quite hard to fix. We had to remove every single plugin to be able to use the knobs correctly. Do you think that this new version will also work with plugins ?

@yukun-kooboo I didn't check the alpha as the cycle release takes some time (which i totally understand).
@kuka-radovan When we discovered this bug, we had many plugins installed, and the "matriochka" pattern of plugins made this bug quite hard to fix. We had to remove every single plugin to be able to use the knobs correctly. Do you think that this new version will also work with plugins ?

Sorry guys, I forgot this issue. I switched from html renderer to polymer renderer. We are playing with web-components but we were using stencil at that time, so I thought html renderer will be better decision. But we have switched to polymers lit-element and storybook works correctly now. I’m not sure if it is still happening with old stack.


Activating Open Collective

Hi, I'm making updates for Open Collective. Either you or a supporter signed this repo up for Open Collective. This pull request adds backers and sponsors from your Open Collective https://opencollective.com/TastyIgniter ❤
It adds two badges at the top to show the latest number of backers and sponsors. It also adds placeholders so that the avatar/logo of new backers/sponsors can automatically be shown without having to update your README.md. [more info]. See how it looks on this repo.
We have also added a postinstall script to let people know after npm|yarn install that you are welcoming donations (optional). [More info]
You can also add a "Donate" button to your website and automatically show your backers and sponsors there with our widgets. Have a look here: https://opencollective.com/widgets
P.S: As with any pull request, feel free to comment or suggest changes. The only thing "required" are the placeholders on the README because we believe it's important to acknowledge the people in your community that are contributing (financially or with code!).
Thank you for your great contribution to the open source community. You are awesome! 🙌
And welcome to the open collective community! 😊
Come chat with us in the #opensource channel on https://slack.opencollective.com - great place to ask questions and share best practices with other open source sustainers!

Thanks for the PR! Our sponsors and backers logo are already in place, the only thing missing are badges.
Also, I don't think we want the extra npm dependencies since the packages.json is only available for reference.

Dealing with personal issues. Will merge as soon as I get the chance.

Already added 👍

Glad you are doing better - :)


Flexibly Create Nested Database Entries from Incoming Pydantic/SQLModels

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the SQLModel documentation, with the integrated search.
[X] I already searched in Google "How to X in SQLModel" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to SQLModel but to Pydantic.
[X] I already checked if it is not related to SQLModel but to SQLAlchemy.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
# Sudo Code Based on Examples in Docs

class Team(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str
    headquarters: str

    heroes: List["Hero"] = Relationship(back_populates="team")

class Hero(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str
    secret_name: str
    age: Optional[int] = None

    team_id: Optional[int] = Field(default=None, foreign_key="team.id")

    team: Optional[Team] = Relationship(back_populates="heroes")

payload = {
    "name": "Team Name",
    "headquarters": "Whereever".
    "heroes": [
        "name": "Name 1"
        // Other Requied Fields... 👇
    ]
}

with Session(engine) as session:
    Team.create_all_nested(session, payload) # or something?

Description
I would like to do what is described in FastAPI issue #2194

How to make nested sqlalchemy models from nested pydantic models (or python dicts) in a generic way and write them to the database in "one shot".

In the example above, I'd like to pass in the payload to a method and the following to occur.

Create new Team entry
Create Hero entry and/or Relate the existing Hero to the Team

Similarly, I'd like the same to happen on update. Effectively making writing to the SQL database akin to writing to MongoDB
I don't believe this is supported or haven't gotten it to work, but my main questions are.

Is this supported?
If no, is this a use-case you've thought of?
Are you interested in a PR to support this either as a utility method or some sort of decorator?

Loving working with this so far, thanks for all your hard work!
Operating System
macOS
Operating System Details
No response
SQLModel Version
0.0.3
Python Version
3.9.6
Additional Context
I have accomplished this with SQLAlchemy in the past by using an auto_init decarator.
from functools import wraps
from typing import Union

from sqlalchemy.orm import MANYTOMANY, MANYTOONE, ONETOMANY

def handle_one_to_many_list(relation_cls, all_elements: list[dict]):
    elems_to_create = []
    updated_elems = []

    for elem in all_elements:
        elem_id = elem.get("id", None)

        existing_elem = relation_cls.get_ref(match_value=elem_id)

        if existing_elem is None:

            elems_to_create.append(elem)

        else:
            for key, value in elem.items():
                setattr(existing_elem, key, value)

            updated_elems.append(existing_elem)

    new_elems = []
    for elem in elems_to_create:
        new_elems = [relation_cls(**elem) for elem in all_elements]

    return new_elems

def auto_init(exclude: Union[set, list] = None):  # sourcery no-metrics
    """Wraps the `__init__` method of a class to automatically set the common
    attributes.

    Args:
        exclude (Union[set, list], optional): [description]. Defaults to None.
    """

    exclude = exclude or set()
    exclude.add("id")

    def decorator(init):
        @wraps(init)
        def wrapper(self, *args, **kwargs):  # sourcery no-metrics
            """
            Custom initializer that allows nested children initialization.
            Only keys that are present as instance's class attributes are allowed.
            These could be, for example, any mapped columns or relationships.

            Code inspired from GitHub.
            Ref: https://github.com/tiangolo/fastapi/issues/2194
            """
            cls = self.__class__
            model_columns = self.__mapper__.columns
            relationships = self.__mapper__.relationships

            session = kwargs.get("session", None)

            for key, val in kwargs.items():
                if key in exclude:
                    continue

                if not hasattr(cls, key):
                    continue
                    # raise TypeError(f"Invalid keyword argument: {key}")

                if key in model_columns:
                    setattr(self, key, val)
                    continue

                if key in relationships:
                    relation_dir = relationships[key].direction.name
                    relation_cls = relationships[key].mapper.entity
                    use_list = relationships[key].uselist

                    if relation_dir == ONETOMANY.name and use_list:
                        instances = handle_one_to_many_list(relation_cls, val)
                        setattr(self, key, instances)

                    if relation_dir == ONETOMANY.name and not use_list:
                        instance = relation_cls(**val)
                        setattr(self, key, instance)

                    elif relation_dir == MANYTOONE.name and not use_list:
                        if isinstance(val, dict):
                            val = val.get("id")

                            if val is None:
                                raise ValueError(f"Expected 'id' to be provided for {key}")

                        if isinstance(val, (str, int)):
                            instance = relation_cls.get_ref(match_value=val, session=session)
                            setattr(self, key, instance)

                    elif relation_dir == MANYTOMANY.name:

                        if not isinstance(val, list):
                            raise ValueError(f"Expected many to many input to be of type list for {key}")

                        if len(val) > 0 and isinstance(val[0], dict):
                            val = [elem.get("id") for elem in val]

                        instances = [relation_cls.get_ref(elem, session=session) for elem in val]
                        setattr(self, key, instances)

            return init(self, *args, **kwargs)

        return wrapper

    return decorator

Usage

class AdminModel(SqlAlchemyBase, BaseMixins):
    name = Column(String, index=True)
    email = Column(String, unique=True, index=True)
    password = Column(String)
    is_superuser = Column(Boolean(), default=False)

    @auto_init(exclude={'is_superuser'})
    def __init__(self, **_):
        this.is_superuser = false

    @classmethod
    def get_ref(cls, match_value: str, match_attr: str = "id"):
        with SessionLocal() as session:
            eff_ref = getattr(cls, match_attr)
            return session.query(cls).filter(eff_ref == match_value).one_or_none()

```decorator

Hello @hay-kot , i have tried your solution on nested models, and it works just fine, I will try with more nested pedantic models and see if it works, yet I would greatly appreciate if you could provide some explanation(documentation) of what you did because although I read it many times, I am still afraid to use it for production.

SQLModel is fantastic as it cuts so much time out managing pydantic schemas and sqlalchemy models.
I too would like to know how to create database entries with incoming nested SQLModels.
Does anyone know how to do this yet?

This would such an amazing feature. Any update on this?

Any update on this ?

This is a major feature that is missing from sqlmodel that is preventing myself from migrating a larger project from marshmallow. There is a lot of boilerplate code that needs to be added to handle nested objects

I would also love to see this addition to the awesome SQLModel library.

Started working with this wonderful library and encountered the same problem. Any updates?

+1 on this.
First of all, this library is amazing!
Last year, I was using Sqlalchemy and Pydantic models separately, but this library would be such a quality of life improvement..
Unfortunately, the fact that this feature is missing is kind of a deal breaker.
Last year, I also built a custom recursive solution to do this in Sqlalchemy+Pydantic, just like OP did.
But, I don't think it would be easy/a good idea to port it to SqlModels.
Any updates would be greatly appreciated!

Any update on this? Would love to use hydra as a configuration management the way it is meant to be used (hierarchical and out of the box configurable with separation of concerns) rather than making a single flat yaml for all configs

Almost 3 years and no updates? If there are no plans to add this feature, I'm afraid I'll have to switch to another library.

There any temporary guidance from best practices to avoid this issue?

any updates on it? this is something that will be amazing for SQLModel to have.

Hi, is there any updates or fixes for this?
Still having this issue in Nov 2024, a good 3 years after this issue was originally created.
I'm sure a lot of people (including me) would benefit from this being fixed.
@tiangolo

Still facing these issues is there any updates about?

I successfully solved all these problems in one line. Just by converting my pydantic class models to dictionary and storing the dictionary in the database through SQLModel"s, class table=True

I successfully solved all these problems in one line. Just by converting my pydantic class models to dictionary and storing the dictionary in the database through SQLModel"s, class table=True

Could you provide a short code sample for this? I'm not 100% sure what you mean.

I successfully solved all these problems in one line. Just by converting my pydantic class models to dictionary and storing the dictionary in the database through SQLModel"s, class table=True

Could you provide a short code sample for this? I'm not 100% sure what you mean.

You have to convert your base model to f
dictionary using model_dump() - pydantic.
Or look to this tutorial:
https://sqlmodel.tiangolo.com/tutorial/fastapi/multiple-models/#columns-and-inheritance-with-multiple-models

Hi @UmarBelloKanwa,
I think you triggered some of this issues' followers quite a bit with your teaser. Could you provide a MVE of how you managed to get your nested schemas to be validated and correctly fed into the ORM? Thanks a bunch.
I am also stuck at this very problem and building quite a complex data structure I'd be delighted if SQLModel provided some way to simplify nested model deserialization.
Merry Xmas everyone.


New data source for New Zealand

There's a new street addresses layer for New Zealand here: https://data.linz.govt.nz/layer/3353-nz-street-address/. The layer that was being used previously (street addresses electoral) has been deprecated and is going to be replaced with this layer.  Uploaded a new cached source for it and updated the script/download instructions.
The new layer has a slightly cleaner separation of cities and suburbs. Suburbs are not really a separate component in OpenAddresses, so storing them in the district column. Spot checked it with OSM and it looks like in cases where suburb_locality is present but town_city is not, the suburb_locality field is a standalone remote village which could be considered the city. Otherwise it's a suburb/neighborhood. Could also invert the fields (suburb_locality=city, town_city=district) if anyone has a preference.

Added a new cached Docker image to the instructions and decided to indeed switch locality_suburb to be the city, with the understanding that when there's a district field present and the name differs, it's a suburb.

Thanks Al, I appreciate you taking the time to bring the scripts up to date as well.

oh man, I've just been working on this over at https://github.com/openaddresses/openaddresses/pull/2161#issuecomment-302059696

hey @thatdatabaseguy @migurski a lot of the work here was already at https://github.com/openaddresses/openaddresses/pull/2161 and now there are merge conflicts there.
I've been working on updating that PR based on the advice at https://github.com/openaddresses/openaddresses/pull/2161#issuecomment-302059696. Any chance we could revert this PR and focus on #2161?

Didn't see that. Happy to add the region field if needed, but for my purposes (training data for libpostal), "town_city" is important. It contextualizes whether suburb_locality is a suburb of a major city or a standalone village, which are two different classes for us. I generally don't think a source field should be ignored in favor of a derived one when possible.

@thatdatabaseguy So back in Nov 2016 I updated it per https://github.com/openaddresses/openaddresses/pull/2161/commits/bd9ed11dbe95f5485fd98fe0ca468e067cdee234 and it was just as complete as your PR but no one merged it it sat there until now, so I figured that's because it wasn't good enough and needed the spatial join, so I've been slaving away trying to fix that so it could be merged, then it turns out that your PR which implements what I had in Nov 2016 gets merged straight away and now I need to go to additional effort to rebase so I'm not too happy about that. I'd prefer this PR get's reverted (to remove the merge conflicts) and we all focus efforts on #2161.
The folks from the data provider suggest to derive the other fields, https://github.com/openaddresses/openaddresses/pull/2161#issuecomment-302059696. I think we should follow their advice.

but for my purposes (training data for libpostal), "town_city" is important. It contextualizes whether suburb_locality is a suburb of a major city or a standalone village, which are two different classes for us. I generally don't think a source field should be ignored in favor of a derived one when possible.

OA doesn't have the capacity within the current schema to differentiate a suburb within a major city and and standalone village https://github.com/openaddresses/openaddresses/blob/master/CONTRIBUTING.md#attribute-tags. Maybe you could propose a change in the schema model to support your use case here?
I can't comment on NZ but in Australia the city an address falls in doesn't form part of the address so shouldn't be in OA (which is about street addresses after all, not administrative regions). eg. 1 Main Street, Balmain, NSW, Australia, although the city this is in is Sydney, it doesn't form part of the address so we use the suburb in the OA city field as it's the best fit and leave Sydney out.
Until we can clarify what it should be for NZ, we should revert this and instead focus on merging #2161.
/cc @migurski

Sorry I missed your PR. The spatial join was definitely not a requirement for merging. It probably just didn't get merged because people were out for Thanksgiving in the US in late November, it required maintainer action, and the build was failing/it seemed like there were some issues still being worked out, so it got lost in the fray of red PRs. Mine was merged quickly simply because, as a frequent contributor to this repo, I have push access to master as well as the cache, and therefore I was able to upload the new file and merge it myself. In any popular project with many contributors worldwide, there's bound to be some duplication of effort, but it's usually more effective to focus on preventing current/future wasted effort (i.e. asking @migurski to add you to the OpenAddresses org so this doesn't happen again) than on sunk costs. If it's a matter of credit attribution, happy to use your changes instead. The merge conflicts can be resolved with "git checkout --ours" on the various files in your PR, which would just overwrite my changes in favor of yours where applicable.
In any case, I would still advocate for keeping the town_city field from the source in place of at least one of the spatial joins. In reading over #2161, two things jump out:

In that same comment from Bill Nelson at LINZ, he says "Stats NZ boundaries are administrative / political boundaries so not always the same as common usage in postal addresses." That reads less like advice on what should be done and more like: here's how to do it if the city/district/region schema is a requirement (which it's not).

In https://github.com/openaddresses/openaddresses/pull/2161#issuecomment-304435852 you mentioned that the spatial join, which is the only real difference between the PRs, doesn't complete in a reasonable amount of time (could still likely be implemented with SQLite but would need to build an R-tree index for that to be efficient - see here under "Spatialite spatial index")

So I'm left asking: if district/region are not required or regularly used in NZ addresses, are not part of the original source, and adding them requires a more complicated script and a longer runtime (even with a best-case R-tree that narrows every point query down to exactly one bounding box, that's still ~4 million point-in-polygon tests on relatively large polygons, which is not cheap), why not just include what's in the primary source?
For OpenAddresses the only required fields in practice are lat/lon, number, and street. City and postcode are nice to have, and everything else is optional. I usually try to ensure the presence of city when it's available and does not conflict with OSM's definitions, as it can save hours of compute time in point-in-polygon tests for libpostal's use case (we import virtually all 450M+ addresses from OA, so it adds up) without really disrupting anyone else's workflow.
Re: a suburb field in OA, it's possible but considerably more involved as it would require a backward-incompatible schema change to every source, as well as migrating everything in a way that wouldn't break downstream consumers. That seems a relatively large effort for a handful of sources when there are adequate workarounds using the existing fields.

Sorry I missed your PR. The spatial join was definitely not a requirement for merging. It probably just didn't get merged because people were out for Thanksgiving in the US in late November, it required maintainer action, and the build was failing/it seemed like there were some issues still being worked out, so it got lost in the fray of red PRs. Mine was merged quickly simply because, as a frequent contributor to this repo, I have push access to master as well as the cache, and therefore I was able to upload the new file and merge it myself. In any popular project with many contributors worldwide, there's bound to be some duplication of effort, but it's usually more effective to focus on preventing current/future wasted effort (i.e. asking @migurski to add you to the OpenAddresses org so this doesn't happen again) than on sunk costs. If it's a matter of credit attribution, happy to use your changes instead. The merge conflicts can be resolved with "git checkout --ours" on the various files in your PR, which would just overwrite my changes in favor of yours where applicable.

It was more disappointing that it could have been merged long ago, but good that it's finally merged now. No worry about credit. Agreed it will be better to focus on future work now, then dwell on this. Thanks for the git tip, I didn't know about that option.

In #2161 (comment) you mentioned that the spatial join, which is the only real difference between the PRs, doesn't complete in a reasonable amount of time (could still likely be implemented with SQLite but would need to build an R-tree index for that to be efficient - see here under "Spatialite spatial index")

Yeah I tried that, but it's still way too slow.

So I'm left asking: if district/region are not required or regularly used in NZ addresses,

It would be great for some locals to help out here. https://www.nzpost.co.nz/personal/sending-within-nz/how-to-address-mail/correct-address-formats-envelope-layouts says "Don’t use a province, region, district or territory name instead of (or in addition to) the town or city name.". which seems to backup your approach.


Fix incorrect LICENSE from BSD3-Clause to BSD-3-Clause

The correct LICENSE is BSD-3-Clause with a dash, update the LICENSE assignment in all recipes where this is not correct. This fixes OE build errors like these:
ERROR: flutter-... do_populate_lic: QA Issue: flutter-...: No generic license file exists for: BSD3-Clause in any provider [license-exists]
ERROR: flutter-... do_populate_lic: Fatal QA errors were found, failing task.

@marex hey thanks for the great catch.  Did you use the roll_meta_flutter.py to update the app recipes?
Also note I am putting together an upcoming AGL release so there will be some churn in the next week.

https://github.com/meta-flutter/meta-flutter/pull/416

@marex hey thanks for the great catch. Did you use the roll_meta_flutter.py to update the app recipes?

No, plain git grep -l and sed -i .

Also note I am putting together an upcoming AGL release so there will be some churn in the next week.

Hmmm, looking at the replacement MR, that is awful. Instead of having one well separated fix for one issue (licensing) and with description of the issue in a commit message, there is now a mega-commit doing multiple disparate things all mashed together, and the authorship of this fix also went out of the window.

You have some good points.  My intent was/is not to take away the contribution you made.
The process to change any of the app recipes is now:

edit conf/include/flutter-apps.json

run roller script:

./roll_meta_flutter.py --path /mnt/raid10/meta-flutter --json /mnt/raid10/meta-flutter/conf/include/flutter-apps.json

https://github.com/meta-flutter/workspace-automation/blob/main/roll_meta_flutter.py

check into a feature branch and test.  Run image build with all the package group recipes, and if meta-gnome is enabled include the file selector example.

Create PR of tested changes.

Given the auto-roller touches all but two of the app recipes (I can now get some of my life back), it is a massive PR.  One change in approach to help keep commits easy to follow would be to only check in the flutter-apps.json change.  Independent of the roll.
The other issue around grouping commits is that there is a massive time span in running tests and validating changes.  Keeping separate commits sometimes is impractical due to the span of time required to test things end to end.  For example the PR I merged for this spanned a number of days given my current workload, and it also required some changes in workspace-automation work, etc.  The update to 3.19.1 was a result of the auto-roll.

You have some good points. My intent was/is not to take away the contribution you made.
The process to change any of the app recipes is now:
1. edit `conf/include/flutter-apps.json`

2. run roller script:

./roll_meta_flutter.py --path /mnt/raid10/meta-flutter --json /mnt/raid10/meta-flutter/conf/include/flutter-apps.json

https://github.com/meta-flutter/workspace-automation/blob/main/roll_meta_flutter.py
3. check into a feature branch and test.  Run image build with all the package group recipes, and if meta-gnome is enabled include the file selector example.

4. Create PR of tested changes.

Given the auto-roller touches all but two of the app recipes (I can now get some of my life back), it is a massive PR. One change in approach to help keep commits easy to follow would be to only check in the flutter-apps.json change. Independent of the roll.
The other issue around grouping commits is that there is a massive time span in running tests and validating changes. Keeping separate commits sometimes is impractical due to the span of time required to test things end to end. For example the PR I merged for this spanned a number of days given my current workload, and it also required some changes in workspace-automation work, etc. The update to 3.19.1 was a result of the auto-roll.

There is literally zero need for such involved manual multi-day testing. The change adjusts the recipe LICENSE, nothing else.
All that was needed to detect this issue was this in local.conf:
WARN_QA:remove = "incompatible-license license-exists license-no-generic license-syntax license-format license-incompatible license-file-missing obsolete-license"
ERROR_QA:append = " incompatible-license license-exists license-no-generic license-syntax license-format license-incompatible license-file-missing obsolete-license"

If there is a defective LICENSE string, the build will fail, all automatically.

That might be a good addition to the readme.
Anything requires testing before merging.  It's part of the process in making reliable software.