BUG: --glob-input relative path error

I use the Windows binary to convert the images extracted from a PDF but when I give a relative path, it tells me that it does not find it.

It works properly with --input, so the problem probably comes from --glob-input.
It however works correctly if I give an absolute path.

I've confirmed that this is indeed an issue. Thanks!

I've been looking into this issue, and found lots of interesting questions:

globs are tricky
this bug is either caused by my misuse of the globwalk crate used by sic, or a bug or unsupported expansion in globwalk

A few days ago I tried and compared various different glob libraries in the Rust ecosystem, and found that each has its own set of quirks

for example: not all (rust) glob libraries support the same syntax

glob (unmaintained) and nu_glob (maintained) support a smaller subset than most others
globwalk, the one used by this crate combines globset via ignore (as alternative to using globset and walkdir directly), ignore can add glob overrides which affect directory traversal
wax supports an extensive set of syntax, and is very well tested, but only supports forward slashes, and flatly rejects drive letters (for windows), requiring some pre-processing and post-processing in the name of cross-platform support

a question every glob library has to ask: should the glob expansion support filesystem features, like .. (directory up) and . (current directory), or drive letters (windows drive mounting points)

globwalk, the library I currently use does not support these, but I already work around this issue for ./path relative paths in the current codebase
if yes, should they only be supported at the start of the path, or also between path components beyond the first, like hello/../world/*.png or hello/./world/*.png, and what should hello//world mean?
if no, can a dependent which does access filesystems infer these directories where possible, e.g. a reasonable

we can differentiate between a glob matcher libraries, like globset and a libraries which also resolves actual file system paths, like globwalk and glob

should only the latter support file system operations like .. and .?

if yes, should a resolving library "lower" glob patterns which include such syntax to paths which do not include this syntax, to be ingested by glob matcher libraries?

if yes, aren't we really still writing two glob parsers in one?

is it viable to support file system syntax, or can it make glob syntax ambiguous?

The plan

globwalk is unmaintained

I forked it into globwalker
This fork will aims to be cross platform and practical
First I will move the local workarounds from sic to the globwalker crate
Then I will consider fixing the bug reported here
Then I will consider supporting (or not) other file name


NOT allow to use double slash (//) in page path

Overview

Now, Crowi not allow to use double slash (//) in path.

Cause

When Crowi's path has a double slash and nginx's merge_slashes is on.

User request "double slash path" to nginx.
Nginx request "single slash path" to Crowi.
Crowi search page by "single slash path" in DB, but not found.

References

merge_slashes
nginx はデフォルトで merge slash する

Thank you!


[Bug]: Regarding the issue of the right sidebar not being displayed

Version
win10
node: 16.15.0
rspress: 1.18.1
plugin: @rspress/plugin-shiki: 1.18.1

Details
If I add italics to the text of the title, there will be a problem where the right sidebar cannot be displayed

Reproduce link
no link
Reproduce Steps
Randomly add italics to the title text content of an MD file, and then start viewing the right sidebar

This issue is caused by the plugin_toc of @rspress/mdx-rs, and I have fixed it in #28.
I still need to solve the issue of converting it in the sidebar in rspress, which will take a day.


Mbio map viz

this would add a viz to the viz tab, has nothing to do w the standalone map as of now, except to consider this as an alternative to putting a link to the SAM on UD pages

didnt want to merge this before release, just in case, but i see no reason not to now. can be easily undone if needed.


I'm very interested

I'm very interested in a way to deploy a SvelteKit app with SSR on a PHP only server (webspace).
Therefore I frequently search on GitHub for such repos.
The best I found is this:
https://github.com/basuke/vite-plugin-sveltekit-php-backend
Maybe it helps you 😃

Thank you! I'm glad my work has peaked your interest! The idea here is to treat Svelte in a similar fashion to how you'd treat templating Engines like Blade and Twig, but with a little more emphasis on client side rendering.


"File IO characteristics in General Purpose tier" vs Pricing Managed-Disks Reservation

Based on the "File IO characteristics in General Purpose tier" section on https://docs.microsoft.com/en-us/azure/azure-sql/managed-instance/resource-limits#service-tier-characteristics, looks like the SQLMI files jump directly from P10 (<=128GiB) to P20 (<=512GiB) in size tiers.

But according to "Reservation" section in https://azure.microsoft.com/en-us/pricing/details/managed-disks/, there is another storage tier P15 (<=256GiB).

If the database file will be sized at 200GB in SQLMI, will it get the performance characteristics of P15 or P20?  Will the 1st or 2nd link apply to such case?

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

ID: 4dff594a-77ba-dca2-e3ae-f3a7bf0c3e1d
Version Independent ID: b496ce1e-c8e6-8fe4-d41d-6f57606f5034
Content: Resource limits - Azure SQL Managed Instance
Content Source: articles/azure-sql/managed-instance/resource-limits.md
Service: sql-managed-instance
Sub-service: service-overview
GitHub Login: @vladai78
Microsoft Alias: vladiv

Hi @dianasm22 , thank you for the detailed question. We are currently investigating and will update you when we have accurate information to provide.

@dianasm22 Thank you for the detailed feedback.
This is being assigned to the content author to evaluate and update the documentation as appropriate.

adding @NikaKinska to help with this

Hi @vladai78 and @dianasm22
Our documentation is right: SQL MI does not use managed discs but premium page blobs, please see https://azure.microsoft.com/en-us/pricing/details/storage/page-blobs/
So, SQL MI does not have P15.

Thank you @NikaKinska for the clarification.  I also noticed that there is a link "increasing the file size" (https://techcommunity.microsoft.com/t5/azure-sql-blog/increase-data-file-size-to-improve-hammerdb-workload-performance/ba-p/823337) under the "File IO characteristics in General Purpose tier" that references a table which includes the P15 storage tier.  Should that be the table that has to be updated to avoid confusion for SQL MI?

Hi Diana,
I've already asked @Jovan @.> to do so (remove P15), but he hasn't been very willing to change the blog and it's his blog. @@.> - would you mind correcting this please?
Nevena
From: dianasm22 @.>
Sent: Tuesday, December 7, 2021 9:08 PM
To: MicrosoftDocs/azure-docs @.>
Cc: Nevena Nikolic @.>; Mention @.>
Subject: Re: [MicrosoftDocs/azure-docs] "File IO characteristics in General Purpose tier" vs Pricing Managed-Disks Reservation (Issue #84376)
Thank you @NikaKinskahttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNikaKinska&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800192665|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=DYqow%2B3%2BaTpFnINmt445LSBq5yRtvrFZRzWX6fTrbKU%3D&reserved=0 for the clarification. I also noticed that there is a link "increasing the file size" (https://techcommunity.microsoft.com/t5/azure-sql-blog/increase-data-file-size-to-improve-hammerdb-workload-performance/ba-p/823337https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-sql-blog%2Fincrease-data-file-size-to-improve-hammerdb-workload-performance%2Fba-p%2F823337&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800192665|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=jp%2BxbdyHs43%2FGYhakUZTlU2hSRBcJSztrNWLIzd6GxE%3D&reserved=0) under the "File IO characteristics in General Purpose tier" that references a table which includes the P15 storage tier. Should that be the table that has to be updated to avoid confusion for SQL MI?
[File IO MSFT]https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F94997777%2F145095200-33d614bc-1ed7-4281-8cb2-1e7ee09b4b17.jpg&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800242213|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=mtEOa2kb4a%2BbisOAkujqlge%2BTeg3Nz0pni8ZDNJ4Zvc%3D&reserved=0

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F84376%23issuecomment-988229826&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800242213|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=soRnkRLBEjrOjVAvSYPZQFrYVjU9asO%2Fk5sLzwWu%2FwM%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FANDEPJMQF7OT7GXZ5EMTDCTUPZSRTANCNFSM5IXEBB4A&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800242213|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=iap4I2qWvPOMMuvLEL1198GFnEo2H3e6nvdZ7w09M54%3D&reserved=0.
Triage notifications on the go with GitHub Mobile for iOShttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800242213|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=Nl1haDoHswf%2BTfAMi%2FoQaNBxTvLE%2F3%2BUIFn8yPRAxko%3D&reserved=0 or Androidhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04|01|nnikolic%40microsoft.com|788f2a8419ce445cd57e08d9b9bd414a|72f988bf86f141af91ab2d7cd011db47|1|0|637745044800242213|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=NROK40Q%2BIbPYL%2BSUzZqs3kbB8C%2FhuEsMcSllwTJlXog%3D&reserved=0.

Thank you again @NikaKinska and everyone for the help.  You may already close this issue.

#please-close

#assign:williamdassafMSFT


Get Player Score?

In IOS game center, I use to check the server player score and compare to local data score, if local is less than server, I update local, if server is less than local, I update local. Is very Important.
ex: user instaled the game and scored 100 pts, save local data end send to server.
So, I update the game, and the local score back to zero.
so when the user score 10 pts, It will update in server from 100, to 10 pts!!
am I clear about the issue?

This feature is not implemented in the ANE. You need to add it yourself.


transition() mixin prevent redundant 'transition: none' and pass null

This PR includes three points:
1. transition(null)  and transition(none) output the following redundant CSS, but should be prevented.
@media (prefers-reduced-motion: reduce) {
  selector {
    transition: none;
  }
}

2.  Fix the problem where libsass(node-sass) can't handle transition(null) well:
selector {
  @include transition(null);
}
// output
selector {
  transition:;
}

3.  The transition mixin now show warning message  when use none or null with multiple arguments.
Before: https://www.sassmeister.com/gist/b4d2d3ce8601116308e72df97a0d309a
After: https://www.sassmeister.com/gist/7ddae4ab995e0b41bbb93abe6eff616f

I found a problem, please don't review yet.

OK, ready for review.

Any reason we don't land this in v5?


annotate_nhood error

Hi @emdann ,
i've been trying to run through the tutorial (gastrulation) and I'm encountering the following problem. I'm using the pbmc3k dataset as an example as it gives the same error message below. My software versions are below. would you be able to help?
import scanpy as sc
import numpy as np

import milopy
import milopy.core as milo

adata = sc.datasets.pbmc3k_processed()
adata

## Simulate experimental condition ##
adata.obs["condition"] = np.random.choice(["ConditionA", "ConditionB"], size=adata.n_obs, p=[0.5,0.5])
# we simulate differential abundance in NK cells
DA_cells = adata.obs["louvain"] == "NK cells"
adata.obs.loc[DA_cells, "condition"] = np.random.choice(["ConditionA", "ConditionB"], size=sum(DA_cells), p=[0.2,0.8])

## Simulate replicates ##
adata.obs["replicate"] = np.random.choice(["R1", "R2", "R3"], size=adata.n_obs)
adata.obs["sample"] = adata.obs["replicate"] + adata.obs["condition"]

sc.pl.umap(adata, color=["louvain","condition", "sample"])

## Build KNN graph
sc.pp.neighbors(adata, n_neighbors=10)

## Assign cells to neighbourhoods
milo.make_nhoods(adata)

## Count cells from each sample in each nhood
milo.count_nhoods(adata, sample_col="sample")

## Test for differential abundance between conditions
milo.DA_nhoods(adata, design="~ condition")

## Check results
milo_results = adata.uns["nhood_adata"].obs

milopy.utils.build_nhood_graph(adata)
milopy.plot.plot_nhood_graph(adata, alpha=0.2, min_size=5)
milopy.utils.annotate_nhoods(adata, anno_col='louvain')

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[6], line 1
----> 1 milopy.utils.annotate_nhoods(adata, anno_col='louvain')

File [~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/milopy/utils.py:152](https://file+.vscode-resource.vscode-cdn.net/Users/Ali/Documents/GitHub/Alicia-Project-1/notebooks/~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/milopy/utils.py:152), in annotate_nhoods(adata, anno_col)
    148 anno_count = adata.obsm["nhoods"].T.dot(
    149     scipy.sparse.csr_matrix(anno_dummies.values))
    150 anno_frac = np.array(anno_count[/](https://file+.vscode-resource.vscode-cdn.net/)anno_count.sum(1))
--> 152 anno_frac = pd.DataFrame(anno_frac,
    153                          columns=anno_dummies.columns,
    154                          index=adata.uns["nhood_adata"].obs_names
    155                          )
    156 adata.uns["nhood_adata"].obsm["frac_annotation"] = anno_frac.values
    157 # Turn this to list so that writing out h5ad works

File [~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/pandas/core/frame.py:722](https://file+.vscode-resource.vscode-cdn.net/Users/Ali/Documents/GitHub/Alicia-Project-1/notebooks/~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/pandas/core/frame.py:722), in DataFrame.__init__(self, data, index, columns, dtype, copy)
    712         mgr = dict_to_mgr(
    713             # error: Item "ndarray" of "Union[ndarray, Series, Index]" has no
    714             # attribute "name"
   (...)
    719             typ=manager,
    720         )
    721     else:
--> 722         mgr = ndarray_to_mgr(
    723             data,
    724             index,
    725             columns,
    726             dtype=dtype,
    727             copy=copy,
    728             typ=manager,
    729         )
    731 # For data is list-like, or Iterable (will consume into list)
    732 elif is_list_like(data):

File [~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/pandas/core/internals/construction.py:329](https://file+.vscode-resource.vscode-cdn.net/Users/Ali/Documents/GitHub/Alicia-Project-1/notebooks/~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/pandas/core/internals/construction.py:329), in ndarray_to_mgr(values, index, columns, dtype, copy, typ)
    324         values = values.reshape(-1, 1)
    326 else:
    327     # by definition an array here
    328     # the dtypes will be coerced to a single dtype
--> 329     values = _prep_ndarraylike(values, copy=copy_on_sanitize)
    331 if dtype is not None and not is_dtype_equal(values.dtype, dtype):
    332     # GH#40110 see similar check inside sanitize_array
    333     rcf = not (is_integer_dtype(dtype) and values.dtype.kind == "f")

File [~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/pandas/core/internals/construction.py:583](https://file+.vscode-resource.vscode-cdn.net/Users/Ali/Documents/GitHub/Alicia-Project-1/notebooks/~/anaconda3/envs/MEDI7281/lib/python3.11/site-packages/pandas/core/internals/construction.py:583), in _prep_ndarraylike(values, copy)
    581     values = values.reshape((values.shape[0], 1))
    582 elif values.ndim != 2:
--> 583     raise ValueError(f"Must pass 2-d input. shape={values.shape}")
    585 return values

ValueError: Must pass 2-d input. shape=()

i originally had pandas 2.0.3 but downgrading to 1.5 didn't help
 pip freeze
anndata==0.9.1
appnope @ file:///home/conda/feedstock_root/build_artifacts/appnope_1649077682618/work
asttokens @ file:///home/conda/feedstock_root/build_artifacts/asttokens_1670263926556/work
backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work
backports.functools-lru-cache @ file:///home/conda/feedstock_root/build_artifacts/backports.functools_lru_cache_1687772187254/work
Bottleneck @ file:///Users/ec2-user/ci_py311/bottleneck_1678322312632/work
cffi==1.15.1
Choco==1.0.5
click==8.1.6
comm @ file:///home/conda/feedstock_root/build_artifacts/comm_1679481329611/work
contourpy==1.1.0
cycler==0.11.0
debugpy @ file:///Users/runner/miniforge3/conda-bld/debugpy_1680755705686/work
decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work
executing @ file:///home/conda/feedstock_root/build_artifacts/executing_1667317341051/work
fonttools==4.40.0
h5py==3.9.0
igraph==0.10.5
importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1688754491823/work
ipykernel @ file:///Users/runner/miniforge3/conda-bld/ipykernel_1688739399853/work
ipython @ file:///Users/runner/miniforge3/conda-bld/ipython_1685727999785/work
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1669134318875/work
Jinja2==3.1.2
joblib==1.3.1
jupyter_client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1687700988094/work
jupyter_core @ file:///Users/runner/miniforge3/conda-bld/jupyter_core_1686775757864/work
kiwisolver==1.4.4
leidenalg==0.10.0
llvmlite==0.40.1
loompy==3.0.7
MarkupSafe==2.1.3
matplotlib==3.7.2
matplotlib-inline @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-inline_1660814786464/work
milopy @ file:///Users/Ali/milopy
mkl-fft==1.3.6
mkl-random @ file:///Users/ec2-user/mkl/mkl_random_1682994911338/work
mkl-service==2.4.0
natsort==8.4.0
nest-asyncio @ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1664684991461/work
networkx==3.1
numba==0.57.1
numexpr @ file:///private/var/folders/sy/f16zz6x50xz3113nwtb9bvq00000gp/T/abs_1b50c1js9s/croot/numexpr_1683227065029/work
numpy==1.23.5
numpy-groupies==0.9.22
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1681337016113/work
pandas==1.5.3
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1638334955874/work
patsy==0.5.3
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1667297516076/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work
Pillow==10.0.0
platformdirs @ file:///home/conda/feedstock_root/build_artifacts/platformdirs_1688739404342/work
prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1688565951714/work
psutil @ file:///Users/runner/miniforge3/conda-bld/psutil_1681775196112/work
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1609419310487/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
pure-eval @ file:///home/conda/feedstock_root/build_artifacts/pure_eval_1642875951954/work
pycparser==2.21
Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1681904169130/work
pynndescent==0.5.10
pyparsing==3.0.9
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work
pytz==2023.3
pyzmq @ file:///Users/runner/miniforge3/conda-bld/pyzmq_1685519327106/work
rpy2==3.5.13
scanpy==1.9.3
scikit-learn==1.3.0
scipy==1.11.1
scvelo==0.2.5
seaborn==0.12.2
session-info==1.0.0
six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work
stack-data @ file:///home/conda/feedstock_root/build_artifacts/stack_data_1669632077133/work
statsmodels==0.14.0
stdlib-list==0.9.0
texttable==1.6.7
threadpoolctl==3.1.0
tornado @ file:///Users/runner/miniforge3/conda-bld/tornado_1684150418528/work
tqdm==4.65.0
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1675110562325/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1688315532570/work
tzdata==2023.3
tzlocal==5.0.1
umap-learn==0.5.3
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1673864653149/work
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1688902909232/work

HI @ali-harasty, what are you considering as "sample" in the pbmc3k dataset? Did you generate sample labels as in the README?

Hi @ali-harasty, thanks for reporting. This has to do with some recent change in rpy2, and it's also breaking the tests in github actions. I won't be able to work on a patch today but I'll get to it ASAP.
For now I would suggest downgrading to rpy2 < 3.5.5, although you might need to make a new environment for that (where you install r-base first and then rpy2 ). You can use the following environment.yml:
name: milopy-env
channels:
  - conda-forge
  - bioconda
dependencies:
  - r-base
  - bioconductor-edger
  - rpy2==3.5.4
  - notebook
  - pip
  - pip:
      - scanpy
      - git+https://github.com/emdann/milopy

Thank you so much!


Using the image in another Dockerfile and copy the sourcecode into the container

[x] I tried updating to the latest version.

[ ] I can't, there is an issue.

[ ] I Am on Windows

[ ] Ubuntu Bash on Windows
[ ] Fedora Bash on Windows

[ ] I Am on Linux
[x] I Am on macOS

Description
(As a side note, I'm not a Ruby developer. I just love Jekyll for it's simplicity)
I'm trying to deploy to Heroku, which requires a Dockerfile that should be deployed.
The idea was to create a Dockerfile in my project root, copy the contents into the container and run jekyll serve.

Run the image

docker run --rm -p 4000:4000 my-jekyll-app

Output
# Build the image
$ docker image build -t my-jekyll-app .

# Run the image
$ docker run --rm -p 4000:4000 my-jekyll-app
Fetching gem metadata from https://rubygems.org/..........
Fetching rake 12.3.1
Installing rake 12.3.1
# ... A lot more fetching and installing
Fetching minima 2.5.0
Installing minima 2.5.0
Bundle complete! 6 Gemfile dependencies, 43 gems now installed.
Bundled gems are installed into `/usr/local/bundle`
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-musl]
Configuration file: none
            Source: /srv/jekyll
       Destination: /srv/jekyll/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
     Build Warning: Layout 'post' requested in _posts/2018-06-30-welcome-to-jekyll.markdown does not exist.
     Build Warning: Layout 'default' requested in 404.html does not exist.
     Build Warning: Layout 'home' requested in index.md does not exist.
                    done in 0.237 seconds.
 Auto-regeneration: enabled for '/srv/jekyll'
    Server address: http://<IP_ADDRESS>:4000
  Server running... press ctrl-c to stop.

Expected
I guess it could be excepted to get the Build Warning messages, but I'm wondering how I can get my configuration and source files into the container to send it to Heroku?

You're only copying a subset of files that you need to copy into your Docker image, just copy everything into /srv/jekyll, and be warned that WEBRick is not production ready. You should look into adding nginx to your image.
I can't really help more than those few suggestions, sorry, this is out of scope.

I ended up with just running the generated content from _site as a static site on Nginx.

You're only copying a subset of files that you need to copy into your Docker image, just copy everything into /srv/jekyll, and be warned that WEBRick is not production ready. You should look into adding nginx to your image.
I can't really help more than those few suggestions, sorry, this is out of scope.

Webrick cannot be produced. How to add a server that can be produced. Is there an example of using dockerfile


pandas scatter plot: Secondary axis overrides primary

When a second scatter plot is added as ''secondary_y'', the outcome is that the primary is overridden.
import matplotlib.pyplot as plt
import pandas as pd,numpy as np

# secondary axis does not work on scatter plot
x=pd.Series(np.linspace(-10,10,201))
y,z=np.sin(x),np.cos(x)
df=pd.concat([x,np.sin(x),np.cos(x)],axis=1)
df.columns=['x','sin(x)','cos(x)']
ax=df.plot(kind='scatter',x='x',y='sin(x)',label='sin(x)',color='blue')
df.plot(kind='scatter',x='x',y='cos(x)',label='cos(x)',color='red', \
    ax=ax,secondary_y=True)
plt.show()

The above code returns this plot.

This could be a workaround, however I think that the first snippet should have worked.
ax=df.plot(kind='scatter',x='x',y='sin(x)',label='sin(x)',color='blue')
ax2=ax.twinx()
df.plot(kind='scatter',x='x',y='cos(x)',label='cos(x)',color='red', \
    ax=ax2,secondary_y=True)
plt.show()

Interestingly, the workaround still presents the problem that the label for the first series is missing.

@JohnNapier it looks like our secondary-y code is exclusively for LinePlots (`kind='line'``, which is the default). You can get a similar effect with
ax = df.plot(x='x', y='sin(x)', style='b.')
ax2 = df.plot(x='x', y='cos(x)', label='cos(x)',  style='r.', ax=ax, secondary_y=True)

+1


Fix nixio infinite reading.

Currently it transposes the list of elements, which leads to infinite processing by numpy. The first element of the list should be used instead, as is done in the surrounding code, since all the list elements are supposed to represent the same data.
The symptom is that that line causes cpu to get stuck at 100% and never stops.

Coverage remained the same at 52.09% when pulling e6d179af3505498d60e3b94dc104fe6554459e55 on matham:patch-1 into f3c82baa152b2e4dbe3d2f0c7adfec01eaf481eb on NeuralEnsemble:master.

@achilleas-k can you look at this?

In the surrounding code we use the first dimension because we're just extracting features from the data (e.g., length of the data). On the line in question, we're copying the actual signal data. Theoretically we would want the entire DataArray to be transposed and converted to a quantity. Using only dim0 is probably fine given that nix files created with the IO only create one-dimensional DataArrays.
I'm more curious about why the processing takes so long. If it's because the DataArray is big? Is it two-dimensional? If it's not, would transposing the first element make a difference?

Hmm, when I looked at the contents nix_da_group was actually a list containing a analog signal. So when numpy transposes it it transposes the list of an array.
This should be easily replicable from: https://github.com/matham/MCDConv/blob/master/MCDConv/init.py#L117. Some similar code based on the one that broke for me:
    ofile = NixIO(output, mode='ow')

    blk = Block()
    for group_name in map(str, range(3)):
        seg = Segment(name=group_name)
        for chan_name in map(str, range(20)):
            seg.analogsignals.append(AnalogSignal(
                np.zeros((512 * 1024,)), units=uV,
                sampling_rate=10000 * Hz, name=chan_name))
    blk.segments.append(seg)

    nix_file.close()

Now, just open this file in neo and do blocks = f.read(). You should see the CPU being fully utilized and memory increasing very slowly.

Thanks for the example. I'll have a look.
A correction on my previous comment (sorry, I misunderstood the position of the change):
You are correct that nix_da_group is a list. It should be a list of NIX DataArrays though, not AnalogSignals. When writing, NIX IO converts a single AnalogSignal to multiple DataArrays, one for each signal contained in the AS. On read, the DataArrays are collected into nix_da_group, the first DataArray is used to determine things like units, type, and metadata, since all DataArrays share this information.
On the line in question, signaldata = pq.Quantity(np.transpose(nix_da_group), unit), the DataArrays are eventually converted to a 2D Quantity, which will be used to reconstruct the original AnalogSignal. DataArrays behave like numpy arrays when you index or slice them, so the transpose call will result in a numpy array. The transposition in necessary because the dimensionality of a list of DataArrays is inverse from how neo uses AnalogSignals.
Now for the real bad news: The conversion isn't broken. It's working as intended. The issue with the infinite processing is simply an issue with the size. I'm open to suggestions on how to make it faster. It's possible that there's some inefficiency in how nixpy accesses data and so the reading takes too long during the call to transpose.

I wrote a sample script based on your code:
import sys
from neo import Block, Segment, AnalogSignal
from neo.io.nixio import NixIO
import numpy as np
from quantities import Hz, uV

def create():
    ofile = NixIO("somefile.h5", mode="ow")

    blk = Block("signal block")
    seg = Segment("signal group")
    blk.segments.append(seg)

    sig = AnalogSignal(np.random.random((10000,)), units=uV,
                       sampling_rate=10000 * Hz, name="signal data")
    seg.analogsignals.append(sig)

    print(np.shape(sig))
    print(sig[30])  # arbitrary value in the signal
    print(sig[90])
    ofile.write_block(blk)
    del ofile

def read():
    ifile = NixIO("somefile.h5", mode="ro")
    print("Reading file")
    blocks = ifile.read_all_blocks()
    print("Done")

    sig = blocks[0].segments[0].analogsignals[0]
    print(np.shape(sig))
    print(sig[30])
    print(sig[90])

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Specify either 'read' or 'create'")
    elif sys.argv[1] == "read":
        read()
    elif sys.argv[1] == "create":
        create()
    else:
        print("Specify either 'read' or 'create'")

Calls and output:
▶ python asignal.py create
(10000, 1)
[ 0.73751036] uV
[ 0.30869742] uV

▶ python asignal.py read
Reading file
Done
(10000, 1)
[ 0.73751036] uV
[ 0.30869742] uV

If you change the size of the data to the value you used in your example np.random.random((512 * 1024,)), it does indeed take too long to process.
I'll need to investigate whether the bottleneck is the reading of the data from nix or the transpose function. Perhaps we can skip the transpose when the data is one-dimensional and construct the AnalogSignal another way when necessary.
As I mentioned earlier, there is the possibility that the reading of the data from the NIX objects is the issue.

One part that isn't clear to me. Are you intending to call transpose on the list or on each item of the list? Because the problem seems to be the calling of transpose on a list containing the array which numpy probably interprets in a funny way leading to the issues.
In fact, in the debugger I did a = nix_da_group[0] + 1 and it took under a second, meaning it reads the data quickly, but is slow because numpy has issues transposing a list object which contains the data. It's probably because it's trying to slice the list and then the underlying data array, which is slow.
Shouldn't the fix then be signaldata = [pq.Quantity(np.transpose(d), unit) for d in nix_da_group]?

Thanks @matham, you're absolutely right that the issue is with transposing the items. Your proposed solution wont work since we want to transpose the entire set of data.
This works and is fast:
signaldata = np.array([d[:] for d in nix_da_group]).transpose()
signaldata = pq.Quantity(signaldata, unit)

I just tested the script I posted earlier and it's fast even with data with shape (512 * 1024, 200) (not instantaneous, but it doesn't take forever).

Coverage decreased (-0.003%) to 52.087% when pulling d08a8628cc3816f056f29000f4d297fc293641aa on matham:patch-1 into f3c82baa152b2e4dbe3d2f0c7adfec01eaf481eb on NeuralEnsemble:master.

Thanks! I updated the code with your suggested change.
I also looked at np.concatenate but it doesn't seem like it would be faster as it also does just a copy of the underlying arrays before building the resulting array.

Is this ready to merge now?

Yes. The change is correct and conversion should be much faster now.


Can you use Keyvault reference in web app services directly in the Portal configuration => Configuration?

From the doc it looks as though KeyVault references are only for ARM templates.
Can I not reference a secret from a Keyvault by going through the portal, my app service instance and add it directly to my application settings?

@bendubuisson
Thanks for the Question! Can you share the document url that you are following.

@bendubuisson Any update on the issue?

@bendubuisson
We will now close this issue. You can either open a new issue by providing Feedback directly on the document or If you have the document URL then please share so that we can reopen this issue.


Web UI Development on Add Heritage Item

New Add Heritage Item Page UI will be developed based on new mockups.
Web mockup v3

@uyguronur lets arrange a call when you are suitable and discuss about the design, because it will affect your development process.


Problems view with "Show Active File Only" filter needs tab switch to refresh

Type: Bug

Open two files, one with warnings, one without
Switch to the tab without warnings
Activate PROBLEMS view, click More filters, activate Show Active File Only
Activate TERMINAL view
Switch to editor tab containing warnings
Activate PROBLEMS view -> No warnings are shown!
Switch to other editor tab and back to the one with warnings -> Warnings are shown!

This happens on Linux and on Windows.
I'm doing this tab switch limbo several times a day, but I begin to think that this might be a bug and not a design decision.
 Can you please provide a sample set up that can show this problem?

Closing this since it cannot be reproduced and there is no response from the author.


add dublin bus RTPI sensor

Description:
Adds a sensor for the Dublin Bus real time information so that you can trigger an action based on a bus being due in a certain timeframe
Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#1745
Example entry for configuration.yaml (if applicable):
sensor:
  - platform: dublin_bus_transport
    stopid: [Stop ID]
    route: [Route]
    name: [Friendly Name]

Checklist:
If user exposed functionality or configuration variables are added/changed:

[* ] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[* ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[* ] New dependencies have been added to the REQUIREMENTS variable (example).
[* ] New dependencies are only imported inside functions that use them (example).
[* ] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[* ] New files were added to .coveragerc.

If the code does not interact with devices:

[* ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ ] Tests have been added to verify that the new code works.

:dolphin:

Had to edit my local dublin_bus_transport.py so the get request to the Dublin Bus website would look like this.
response = requests.get(
_RESOURCE,
params=params,
verify=False,
timeout=10)

@ordep your change seems to be required because of certificate errors.  I have also noticed an issue with the SSL certificate over the weekend on my hassbian install. It looks like the certificate on the server was updated on 03/02/17
verify=False will cause it to not check the certificate validity and work around the issue but wouldn't be recommended for a full fix.
Also, we should probably also take the discussion of this from the closed pull request into an issue


Azure DevOps YAML Template Powershell script file issue

I have created a YAML template in Azure DevOps which can be used across repos to perform certain job.
Part of YAML Template code:

task: PowerShell@2
inputs:
scriptType: filePath
filePath: "./script/Test.ps1"
displayName: "Create slicing filter condition"

This template resides in Repo1.
It contains a folder script inside which Test.ps1 file is located.
It works as expected when I use/refer this template inside some Azure pipelines in the same repo i.e. Repo1.
The issue occurs when I'm trying to refer this template in some other repo for e.g. Repo2.
When I'm creating a new pipeline and refer this template it's failing at runtime as it's not able to find the powershell script file "./script/Test.ps1" referred in template.
I tried to checkout the Repo1 inside Azure pipeline created in Repo2 but it's not resolving the issue.
Please help to share some solution on this issue.

@ashirulkar, how do you get a script in the pipeline?
There is documentation related to multi-repo checkout that can contain information that may help you.
Did you checkout with the proper checkout task?
Could you share the error output when you try to use a script?

This is resolved by correcting code error when checking out Repo1 inside Repo2


zuul route config. Is It possible to add different prefix for each route or append the path as prefix?

using the following zuul config as example
zuul:
  ignored-services: "*"
  routes:
    a:
      path: /a/**
      serviceId: a_service
    b:
      path: /b/**
      serviceId: _service

the url /a/** will transfer to a_service with url /**
the url /b/** will transfer to b_service with url /**
I want to pass /a/** to a_service and /b/** to b_service
Is it possible?

Set zuul.stripPrefix=false


Feature Request: Hiding title bars for more focused work and gaining screen real estate

Would you consider adding a toggle for hiding title bars of the notes automatically? I've seen example use cases in Minimal and Shimmering Focus themes.

:carrrl:

Hi @yigitozgumus,
With the release of v2.0.0, you can now toggle on Note Titlebar hiding (Go to Style Settings -> Prism Theme -> Feature Toggles -> Hide Note Titlebar).
Make sure to reset your Style Settings and restart Obsidian for the theme to work correctly after updating.
Here are the release notes for the v2.0.0 update: https://github.com/damiankorcz/Prism-Theme/releases/tag/2.0.0


Replicate Cargo environment variables

These might be relied on by procedural macros, and can also be accessed via env!.
Required for fixing https://github.com/rust-analyzer/rust-analyzer/issues/6696. We do not yet propagate these to any proc macros though.

bors r+


bysetpos excludes the first occurence

Hi @tplaner,
Thanks a lot for this awesome package. It's been working wonders for me, so kudo's!
I'm trying to implement a recurring item, that occurs every first Thursday of the month. Sounds easy enough; but I'm getting some inconsistent results.
I've attached an example that goes wrong. When you set $start to 2018-31-12, I get the correct results. Saw that this has to do with the $count > 0 in prepareOccurrences.  The count always starts with 0 so, the first result (jaunary) will be stripped of. Not sure why this is.
Hope you can help. Thanks!
$start = \DateTime::createFromFormat('Y-m-d', '2019-01-01');
$end = \DateTime::createFromFormat('Y-m-d', '2019-03-01');

$when = new \When\When();
$when->RFC5545_COMPLIANT = $when::IGNORE;

$when->startDate($start)
    ->until($end)
    ->byday('th')
    ->freq('monthly')
    ->bysetpos(1); // every first thursday of the month

var_dump($when->getOccurrencesBetween($start, $end));
// returns [2019-02-07], missing 2019-01-03

I believe ->bysetpos(1) in this context returns the first occurrence within the set of occurrences, which is why you see 2019-02-07 as the first occurrence.
I think this should give you the desired results of "the first thursday each month":
$start = \DateTime::createFromFormat('Y-m-d', '2019-01-01');
$end = \DateTime::createFromFormat('Y-m-d', '2019-03-01');

$when = new \When\When();
$when->RFC5545_COMPLIANT = $when::IGNORE;

$when->startDate($start)
    ->until($end)
    ->byday('1th')
    ->freq('monthly');

var_dump($when->getOccurrencesBetween($start, $end));

But that's just the thing. The first occurrence is 2019-01-03, which also gets generated. But when that set is processed by prepareOccurrences it is removed.

Run my example code, it includes 2019-01-03.

It does. I read 1th as 'first' instead of 'first thursday'.  Thanks you for the solve to my immediate problem.
I do still feel like the bysetpos is behaving improperly, and the issue might still be valid. But I'll leave that up to you 😀.
Thanks again.


Reference error using validationSchema with "hyphen-name"

🐛 Bug report
Current Behavior

A reference error is thrown when using validationSchema feature with a field's name containing an hyphen.
Expected behavior

I wanted my validation process to express all fields as required as soon as one of the three fields is set. I inspired myself from this example.
Reproducible example

Just set any field in the following Codesandbox example.
If you pause on caught exceptions with Chrome devtool, you can see those information:
(function anonymous(data) {
  return (data.birthdate-year) // ReferenceError: year is not defined
})

I wonder why it's not data["birthdate-year"] instead, but I have no clue how it happened.
Here's the call stack:

Here's the error:
Uncaught ReferenceError: year is not defined
    at Reference.eval [as getter] (eval at module.exports.getter (index.js:NaN), <anonymous>:3:24)
    at Reference.getValue (Reference.js:41)
    at eval (Condition.js:56)
    at Array.map (<anonymous>)
    at Condition.resolve (Condition.js:55)
    at eval (mixed.js:157)
    at Array.reduce (<anonymous>)
    at NumberSchema.resolve (mixed.js:156)
    at eval (object.js:155)
    at Array.forEach (<anonymous>)
    at ObjectSchema._cast (object.js:145)
    at ObjectSchema._validate (mixed.js:215)
    at ObjectSchema._validate (object.js:187)
    at ObjectSchema.validate (mixed.js:260)
    at validateYupSchema (formik.cjs.development.js:944)
    at eval (formik.cjs.development.js:336)
    at eval (formik.cjs.development.js:380)
    at eval (formik.cjs.development.js:396)
    at Object.unstable_runWithPriority (scheduler.development.js:818)
    at eval (formik.cjs.development.js:395)
    at eval (formik.cjs.development.js:1033)
    at eval (formik.cjs.development.js:647)
    at eval (formik.cjs.development.js:1033)
    at eval (formik.cjs.development.js:668)
    at eval (formik.cjs.development.js:676)
    at HTMLUnknownElement.callCallback (react-dom.development.js:336)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:385)
    at invokeGuardedCallback (react-dom.development.js:440)
    at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:454)
    at executeDispatch (react-dom.development.js:584)
    at executeDispatchesInOrder (react-dom.development.js:609)
    at executeDispatchesAndRelease (react-dom.development.js:713)
    at executeDispatchesAndReleaseTopLevel (react-dom.development.js:722)
    at forEachAccumulated (react-dom.development.js:694)
    at runEventsInBatch (react-dom.development.js:739)
    at runExtractedPluginEventsInBatch (react-dom.development.js:880)
    at handleTopLevel (react-dom.development.js:5807)
    at batchedEventUpdates$1 (react-dom.development.js:24368)
    at batchedEventUpdates (react-dom.development.js:1419)
    at dispatchEventForPluginEventSystem (react-dom.development.js:5898)
    at attemptToDispatchEvent (react-dom.development.js:6014)
    at dispatchEvent (react-dom.development.js:5918)
    at unstable_runWithPriority (scheduler.development.js:818)
    at runWithPriority$2 (react-dom.development.js:12130)
    at discreteUpdates$1 (react-dom.development.js:24384)
    at discreteUpdates (react-dom.development.js:1442)
    at dispatchDiscreteEvent (react-dom.development.js:5885)

Suggested solution(s)

The error disappear when I replace the key from "birthdate-year" to "birthdateYear"
Additional context

It is really strange that only the "year" key produce a bug, because "day" and "month" keys also have an hyphen in their name.
Your environment

Software
Version(s)

Formik
2.0.4

React
16.11.0

Browser
Google Chrome - Version 77.0.3865.90 (Official Build) (64-bit)

npm/Yarn
yarn 1.19.1

Operating System
Ubuntu Bionic

N.B.
It's possibly just a misuse of myself with the two libraries. I apologize in advance if this is the case.
Thanks in advance.

Hey @RemyMachado this seems to be an issue with yup, request you to please raise an issue at their end.
Always happy to help otherwise


numeric string type ASN.1 is not checksummed on address

observe the following:
<ts:selection id="notAdmin" filter="!(ownerAddress=admin)">
    <ts:denial>
        <ts:string xml:lang="en">Must be the admin</ts:string>
    </ts:denial>
</ts:selection>

With the following admin attribute:
<ts:attribute-type name="admin" syntax="<IP_ADDRESS>.4.1.14<IP_ADDRESS>.15">
    <ts:label>
        <ts:string xml:lang="en">admin</ts:string>
    </ts:label>
    <ts:origins>
        <ethereum:call function="admin" contract="GFO" as="address"/>
    </ts:origins>
</ts:attribute-type>

This comparison will not work because the attribute type admin is not checksummed but the owner address is, thereby making this selection impossible.
We need an ASN.1 syntax which handles checksums, not only for this use case but in general as it is unsafe NOT to use a checksum on an address.

There are 2 ways to solve this problem.
First is to define the syntax to be Integer ( <IP_ADDRESS>.4.1.14<IP_ADDRESS>.27 ) and relax the search expression to allow hex, therefore an owner_address address 0xdecafbad can be used in the expression (!(ownerAddress=admin)).
Second is to implement this (typing of attributes) which was originally intended for schema/06 but missed the deadline.
https://community.tokenscript.org/t/attribute-typing/368

What I propose is to do a full 𝑎 and a half-way 𝑏:
Convert this:
<ts:attribute-type name="admin" syntax="<IP_ADDRESS>.4.1.14<IP_ADDRESS>.15">
…

Into this:
<ts:attribute name="admin">
   <ts:type><ts:syntax><IP_ADDRESS>.4.1.14<IP_ADDRESS>.27</ts:syntax><ts:type>
…

Rational:

This avoids implementing <ts:equality>, therefore it's only a syntax change in the codebase, none of αW ios or android needs to change the way attributes are stored and handled. Easy to make it into 2020/06

When some day we properly decided what to do with the typing of attribute, we don't have to force any change of existing tokenscript, only that the new tokenscript should have additional elements.

I think the original snippet which @James-Sangalli posted might already work in the iOS version. Does it, James?
In the iOS implementation, every (attribute) value, wherever possible, is already associated with a "type", be it the syntax or the as). We should have to do something like this in order to implement this anyway:

𝑏) introduce typing to attributes (therefore onboarding caseIgnoreMatch matching rule.)

There is this bit of code in iOS:
func isTrueFor(attributeValue: AssetInternalValue, value: String) -> Bool {
    switch attributeValue {
    case .address(let address):
        switch self {
        case .equal:
            return address.eip55String.lowercased() == value.lowercased()

Because the implicit value ownerAddress is injected/interpolated as an "address" (actually Ethereum address for now), the comparsion operator "=" compares them accordingly case-insensitively.
Would this be expected behavior as well as easier to implement right away and closer towards the path of (𝑏), if Android is already tagging types — without thinking and enforcing too much type conversion and without requiring any change to the TokenScript files and schema.
If so, that's my (c)

I think the original snippet which @James-Sangalli posted might already work in the iOS version. Does it, James?
In the iOS implementation, every (attribute) value, wherever possible, is already associated with a "type", be it the syntax or the as). We should have to do something like this in order to implement this anyway:

𝑏) introduce typing to attributes (therefore onboarding caseIgnoreMatch matching rule.)

There is this bit of code in iOS:
func isTrueFor(attributeValue: AssetInternalValue, value: String) -> Bool {
    switch attributeValue {
    case .address(let address):
        switch self {
        case .equal:
            return address.eip55String.lowercased() == value.lowercased()

Because the implicit value ownerAddress is injected/interpolated as an "address" (actually Ethereum address for now), the comparsion operator "=" compares them case-insensitively.
Would this be expected behavior as well as easier to implement right away and closer towards the path of (𝑏), if Android is already tagging types — without thinking and enforcing too much type conversion and without requiring any change to the TokenScript files and schema.
If so, that's my (c)

@hboon while that may be the case, the admin attribute doesn't resolve in time for the selection logic so it doesn't work right now. The admin address is resolved correctly and does do the checksum.

I think the original snippet which @James-Sangalli posted might already work in the iOS version. Does it, James?
In the iOS implementation, every (attribute) value, wherever possible, is already associated with a "type", be it the syntax or the as). We should have to do something like this in order to implement this anyway:

𝑏) introduce typing to attributes (therefore onboarding caseIgnoreMatch matching rule.)

There is this bit of code in iOS:
func isTrueFor(attributeValue: AssetInternalValue, value: String) -> Bool {
    switch attributeValue {
    case .address(let address):
        switch self {
        case .equal:
            return address.eip55String.lowercased() == value.lowercased()

Because the implicit value ownerAddress is injected/interpolated as an "address" (actually Ethereum address for now), the comparsion operator "=" compares them case-insensitively.
Would this be expected behavior as well as easier to implement right away and closer towards the path of (𝑏), if Android is already tagging types — without thinking and enforcing too much type conversion and without requiring any change to the TokenScript files and schema.
If so, that's my (c)

@hboon while that may be the case, the admin attribute doesn't resolve in time for the selection logic so it doesn't work right now. The admin address is resolved correctly and does do the checksum.

@hboon flag this, it is probably me now that I think of it because the enabled selection resolves in compound


Is it possible to use this on windows 10

Hi
Is it possible to do this on windows 10?

Yes go for the page https://github.com/ikaya1965/-smail-Kaya


Make no-internal work in workspaces/cospaces/monorepos and add tests

With these changes, the eslint rule no-internal and the no-internal-report tool can work inside a monorepo (such as on our test apps), or inside a cospace. There were two issues in the way, resolution of the internal formatter module path, and isLocalFile being limited to thinking a path with node_modules is non-local which doesn't work in linked (e.g. workspaced) dependencies. You do have to turn on the new rule config option dontAllowWorkspaceInternal: true for the linter to not allow @internal usage inside the repo (but allow local internal usage).
Added some basic tests for the no-internal rule, deduplicated some test utilities from no-internal-barrel-imports, and copied the .mocharc.js from #5000
the newer functionality is still really heuristic. An ideal implementation would require knowledge of which packages it may use @internal api's from, and check from where references are imported to determine if it can use those apis.

I think the first iteration of this rule was implemented using a hardcoded list of imodeljs packages, but that list soon became outdated. There might be more edge cases with different package managers, so I'm debating if a whitelist in the config (instead of blacklist like last time) would be a better choice. So if you're working in a monorepo that's consuming iTwin.js packages, you would still have to add all the package names in your repository to the config, but you would get false positives that remind you to keep it up to date, instead of false negatives that always go unnoticed.

So if you're working in a monorepo that's consuming iTwin.js packages, you would still have to add all the package names in your repository to the config, but you would get false positives that remind you to keep it up to date, instead of false negatives that always go unnoticed.

In this PR you just have to add dontAllowWorkspaceInternal: true to the eslint config of each package that doesn't participate. Since you can use eslint overrides, you can apply that to any pattern of files and multiple packages at once in one override. Not as explicit though.
I did personally add this so that I could run pnpm exec no-internal-report on packages like the transformer and test-apps inside the monorepo itself to judge their usage of @internal APIs

Also because there is likely some conflict and it got here first, I will wait for #5000 to complete to merge this


Initial setup for fp load testing

don't need this as we are going to load test from our local machines for now


Improve hosted docs with 'envsubst' example to make configuring the deployment.yaml less tedious

IMO this makes docs more obscure. My intention was to actually show an example of the object without variables.

@a13x5 We can go with go template, that's fine, but you're comment makes me think perhaps their should just be a hosted subsection in the dev doc which includes the fast way of doing this.  I think most instances of hosted setup for someone that isn't a dev aren't going to reuse standalone resources anyways.  Thoughts?

@squizzi I think it's better to add convenient shortcuts in this doc and not in the dev doc, since it's provider specific. We will have other quirks for other providers described in their respective docs. For example I will add the same section for Azure as well.


Support Symfony 6

Q
A

Bug fix?
no

New feature?
yes

BC breaks?
no

Deprecations?
no

Related tickets

Documentation

License
MIT

What's in this PR?

Support Symfony 6.
Remove EOL PHP and Symfony versions.
Upgrade PHPStan.

Checklist

[x] Updated CHANGELOG.md to describe BC breaks / deprecations | new feature | bugfix
[ ] Documentation pull request created (if not simply a bugfix)

To Do

[ ] If the PR is not complete but you want to discuss the approach, list what remains to be done here

This should work, but I’m not seeing the Travis or Scrutinizer checks here. Why not?

travis builds stopped working with the changes they did. we migrated repositories to github actions, but aparently not on this repository. would you have time to rewrite the .travis.yml to a github-action workflow? similar to https://github.com/php-http/client-common/blob/master/.github/workflows/tests.yml

can you rebase on master please, and do the change on the github action instead of travis.yml?

tagged as https://github.com/php-http/vcr-plugin/releases/tag/1.2.1


Deploy Cardano transactions to testing-mainnet

Why
We want to test the scaling performance of the Cardano transactions signature on testing-mainnet network in order to prepare the upcoming optimizations of the process
What
Activate the CardanoTransactions signed entity type on the testing-mainnet network and monitor the perfromances of import, signature and proof.
How

[x] Activate the CardanoTransactions signed entity type on the network (environment variable of the network in GitHub)
[x] Monitor the import the transactions (size, time, memory, cpu, ...)

Activation of the signature of the Cardano Transactions on the testing-mainnet network:
Aggregator:

Import of 90M transactions (10M blocks)
Generation of 675K block range roots
Import + generation done in 21h (less than 10min for the generation of block range roots)
Resources needed by the signer were low: 55MB RES and ~30-50% one core CPU
Database size of 26GB
No new open message created during the import (network stuck)

Signer:

Started import after the aggregator computed the first CardanoTransactions open message (~22h)
Import of 90M transactions (10M blocks)
Generation of 675K block range roots
Import + generation done in 21h (less than 10min for the generation of block range roots)
Resources needed by the signer were low: 55MB RES and ~30-50% one core CPU
Database size of 26GB (will be pruned so we expect ~1-2GB then)
No new open message signed during the import (network stuck)

The network is stuck for 2 days once the signature of the transactions is activated: we need to have a warm-up mode for the nodes in order to import the transactions without preventing the Mithril network to create new certificates.
Once the initial import is done, the overall signature process takes only few minutes.