🐛 Bug Report: pymdownx.snippets base_path setting does not work for base directory of repository

📜 Description
I can only use snippets from files that are in my /docs directory, but I want to grab snippets from files that are one level up in my Git repository.  This configuration works for a local build of MkDocs, but doesn't work in Backstage:
markdown_extensions:
  - pymdownx.snippets:
        base_path:
          - ".."
        check_paths: true

For the above configuration, I just specify something like this in my Markdown file and it will grab the content from the Readme.md one level up from the /docs directory where my mkdocs.yml file is stored:
--8<-- "Readme.md"
👍 Expected behavior
It should support base_path: ".."
👎 Actual Behavior with Screenshots
The Backstage build throws an error when building the TechDoc.
👟 Reproduction steps
Here is the mkdocs.yml file that I used:
# This file is used for the downloadable starter files for TechDocs
# This file is used by Backstage to build your TechDocs

# This is the title of your TechDocs in Backstage
site_name: Your-TechDocs

# https://www.mkdocs.org/user-guide/configuration/#docs_dir
# The directory containing the documentation source markdown files.
docs_dir: 'docs-content'

# Specify your repo URL in GitLab. Update this value so you can edit the files in GitLab.
# https://www.mkdocs.org/user-guide/configuration/#repo_url
repo_url: https://gitlab.com/dematic/devex/techdoc-starter-files-testing

# Update this value if you publish your documentation to GitLab Pages
#site_url: https://dematic.gitlab.io/devex/techdocs-documentation

# https://www.mkdocs.org/user-guide/configuration/#edit_uri
# The path from the base repo_url to the docs directory when directly viewing a page,
# accounting for specifics of the repository host of GitLab, the branch, and the docs directory itself.
# This setting enables the "Edit this page" functionality in BackStage.
edit_uri: blob/main/docs-for-backstage/docs-content

# https://www.mkdocs.org/user-guide/configuration/#repo_name
repo_name: put-your-repo-name-here

# DO NOT MODIFY the plugin values
plugins:
  # Core MkDocs plugin for Spotify's Backstage.
  - techdocs-core
  # Required for Mermaid-Kroki diagrams in Backstage.
  - kroki
  - monorepo
  - search:
    # https://squidfunk.github.io/mkdocs-material/plugins/search/#config.separator
      separator: '[\s\-,:!=\[\]()"/]+|(?!\b)(?=[A-Z][a-z])|\.(?!\d)|&[lg]t;'
      lang: en
markdown_extensions:
  - pymdownx.snippets:
        base_path:
          - ".."
        check_paths: true
theme:
        name: 'material'
        features:
          # https://squidfunk.github.io/mkdocs-material/setup/setting-up-site-search/?h=searc#setting-up-site-search
          - search.share
          # https://github.com/squidfunk/mkdocs-material/issues/3409, the search highlighting will fade after 30 seconds as per this custom CSS—See  the extra.css file for the
          # customization details.
          - search.highlight
          - search.suggest

###### Table of Content/navigation for your docs inserted here ##############
### These files are examples only, feel free to delete or repurpose ####
### Always use forward slashes '/' in the file paths.  Do not use backslashes '\'. ###
#### Refer to this page for the latest on how to use TechDocs: https://backstage.private.gcp.dematic.dev/catalog/default/component/techdocs-example/docs/getting-started-techdocs/
nav:
  # index.md is the home page of the documentation. It is a requirement of MkDocs to name the file 'index.md'
  - First heading example: index.md
  # Heading only, no content associated with 'Second heading example' title.
  - Second heading example:
      -  Subtopic example: subtopic.md
        # Remember to use forward slashes '/' in the file paths.  DO NOT USE backslashes '\' which do not work on Backstage.
      -  Sub-directory example: doc-sub-directory/sub-directory-doc.md

#######################

📃 Provide the context for the Bug.
Here is the build logs.  Line 35 shows the base_path being set and line 111 shows the error.
1info: Step 1 of 3: Preparing docs for entity component:default/testing-techdocs-geoff {"timestamp":"2024-06-06T13:36:22.522Z"}
2info: Prepare step completed for entity component:default/testing-techdocs-geoff, stored at /tmp/backstage-grz4Pj {"timestamp":"2024-06-06T13:36:23.736Z"}
3info: Step 2 of 3: Generating docs for entity component:default/testing-techdocs-geoff {"timestamp":"2024-06-06T13:36:23.736Z"}
4DEBUG   -  Loading configuration file: /tmp/backstage-grz4Pj/mkdocs.yml
5DEBUG   -  Loaded theme configuration for 'material' from '/usr/local/lib/python3.10/dist-packages/material/templates/mkdocs_theme.yml': {'language': 'en', 'direction': None, 'features': [], 'font': {'text': 'Roboto', 'code': 'Roboto Mono'}, 'icon': None, 'favicon': 'assets/images/favicon.png', 'static_templates': ['404.html']}
6INFO    -  DeprecationWarning: warning_filter doesn't do anything since MkDocs 1.2 and will be removed soon. All messages on the mkdocs logger get counted automatically.
7  File "/usr/local/lib/python3.10/dist-packages/mkdocs_monorepo_plugin/parser.py, Opens in a new window", line 22, in
8    from mkdocs.utils import yaml_load, warning_filter, dirname_to_title, get_markdown_title
9  File "/usr/local/lib/python3.10/dist-packages/mkdocs/utils/init.py", line 453, in getattr
10    warnings.warn(
11DEBUG   -  Config value 'config_file_path' = '/tmp/backstage-grz4Pj/mkdocs.yml'
12DEBUG   -  Config value 'site_name' = 'Your-TechDocs'
13DEBUG   -  Config value 'nav' = [{'First heading example': 'index.md, Opens in a new window'}, {'Second heading example': [{'Subtopic example': 'subtopic.md, Opens in a new window'}, {'Sub-directory example': 'doc-sub-directory/sub-directory-doc.md, Opens in a new window'}]}]
14DEBUG   -  Config value 'pages' = None
15DEBUG   -  Config value 'exclude_docs' = None
16DEBUG   -  Config value 'not_in_nav' = None
17DEBUG   -  Config value 'site_url' = None
18DEBUG   -  Config value 'site_description' = None
19DEBUG   -  Config value 'site_author' = None
20DEBUG   -  Config value 'theme' = Theme(name='material', dirs=['/usr/local/lib/python3.10/dist-packages/material/templates', '/usr/local/lib/python3.10/dist-packages/mkdocs/templates'], static_templates={'sitemap.xml', '404.html'}, name='material', locale=Locale('en'), language='en', direction=None, features=['search.share', 'search.highlight', 'search.suggest'], font={'text': 'Roboto', 'code': 'Roboto Mono'}, icon=None, favicon='assets/images/favicon.png')
21DEBUG   -  Config value 'docs_dir' = '/tmp/backstage-grz4Pj/docs-content'
22DEBUG   -  Config value 'site_dir' = '/tmp/techdocs-tmp-T7pMd0'
23DEBUG   -  Config value 'copyright' = None
24DEBUG   -  Config value 'google_analytics' = None
25DEBUG   -  Config value 'dev_addr' = IpAddressValue(host='<IP_ADDRESS>', port=8000)
26DEBUG   -  Config value 'use_directory_urls' = True
27DEBUG   -  Config value 'repo_url' = 'https://gitlab.com/dematic/devex/techdoc-starter-files-testing, Opens in a new window'
28DEBUG   -  Config value 'repo_name' = 'put-your-repo-name-here'
29DEBUG   -  Config value 'edit_uri_template' = None
30DEBUG   -  Config value 'edit_uri' = 'blob/main/docs-for-backstage/docs-content/'
31DEBUG   -  Config value 'extra_css' = []
32DEBUG   -  Config value 'extra_javascript' = []
33DEBUG   -  Config value 'extra_templates' = []
34DEBUG   -  Config value 'markdown_extensions' = ['toc', 'tables', 'fenced_code', 'pymdownx.snippets']
35DEBUG   -  Config value 'mdx_configs' = {'pymdownx.snippets': {'base_path': ['..'], 'check_paths': True}}
36DEBUG   -  Config value 'strict' = False
37DEBUG   -  Config value 'remote_branch' = 'gh-pages'
38DEBUG   -  Config value 'remote_name' = 'origin'
39DEBUG   -  Config value 'extra' = {}
40DEBUG   -  Config value 'plugins' = {'techdocs-core': <src.core.TechDocsCore object at 0x7d8ee3773760>, 'kroki': <kroki.plugin.KrokiPlugin object at 0x7d8ee3695ba0>, 'monorepo': <mkdocs_monorepo_plugin.plugin.MonorepoPlugin object at 0x7d8ee2e63250>, 'material/search': <material.plugins.search, Opens in a new window.plugin.SearchPlugin object at 0x7d8ee2e63160>}
41DEBUG   -  Config value 'hooks' = {}
42DEBUG   -  Config value 'watch' = []
42DEBUG   -  Config value 'watch' = []
43DEBUG   -  Config value 'validation' = {'nav': {'omitted_files': 20, 'not_found': 30, 'absolute_links': 20}, 'links': {'not_found': 30, 'absolute_links': 20, 'unrecognized_links': 20}}
44DEBUG   -  Running 1 startup events
45DEBUG   -  Running 4 config events
46DEBUG   -  kroki: Configuring
47DEBUG   -  kroki: File and Diagram types configured: {'bytefield': 'svg', 'ditaa': 'svg', 'erd': 'svg', 'graphviz': 'svg', 'nomnoml': 'svg', 'plantuml': 'svg', 'structurizr': 'svg', 'c4plantuml': 'svg', 'svgbob': 'svg', 'vega': 'svg', 'vegalite': 'svg', 'wavedrom': 'svg', 'pikchr': 'svg', 'umlet': 'svg', 'd2': 'svg', 'dbml': 'svg', 'tikz': 'svg', 'symbolator': 'svg', 'wireviz': 'svg', 'blockdiag': 'svg', 'seqdiag': 'svg', 'actdiag': 'svg', 'nwdiag': 'svg', 'packetdiag': 'svg', 'rackdiag': 'svg', 'bpmn': 'svg', 'excalidraw': 'svg', 'mermaid': 'svg'}
48DEBUG   -  kroki: Client initialized
49DEBUG   -  Looking for translations for locale 'en'
50DEBUG   -  No translations found here: '/tmp/tmpviiszf4h/locales'
51DEBUG   -  No translations found here: '/usr/local/lib/python3.10/dist-packages/mkdocs/templates/locales'
52DEBUG   -  No translations found here: '/usr/local/lib/python3.10/dist-packages/material/templates/locales'
53DEBUG   -  Running 1 pre_build events
54INFO    -  Cleaning site directory
55INFO    -  Building documentation to directory: /tmp/techdocs-tmp-T7pMd0
56DEBUG   -  Looking for translations for locale 'en'
57DEBUG   -  No translations found here: '/usr/local/lib/python3.10/dist-packages/mkdocs/contrib/search/templates/locales'
58DEBUG   -  No translations found here: '/tmp/tmpviiszf4h/locales'
59DEBUG   -  No translations found here: '/usr/local/lib/python3.10/dist-packages/mkdocs/templates/locales'
60DEBUG   -  No translations found here: '/usr/local/lib/python3.10/dist-packages/material/templates/locales'
61DEBUG   -  Reading markdown pages.
62DEBUG   -  Reading: index.md, Opens in a new window
63DEBUG   -  Running 2 pre_page events
64DEBUG   -  Running 1 page_markdown events
65DEBUG   -  kroki: on_page_markdown [page: Page(title='First heading example', url='./')]
66DEBUG   -  kroki: Image url: https://kroki.io/blockdiag/svg/eNpdzEEKgzAQheG9p5hm7wlKexFxMeojBNOMTKQSSu-u0SKpy8f7-Dsv_Tg4tvSpiLpz1U-yCFCeEfMw-1XnT_kVzf2q3cHe0ETgmG4b-TNNL16UHmSsAiHBe1lMm0PXeGEnF8YfKtIFEOVgkcm3WgGbCEEb?no-transparency=false, Opens in a new window
67DEBUG   -  kroki: KrokiResponse(err_msg=None, image_url='https://kroki.io/blockdiag/svg/eNpdzEEKgzAQheG9p5hm7wlKexFxMeojBNOMTKQSSu-u0SKpy8f7-Dsv_Tg4tvSpiLpz1U-yCFCeEfMw-1XnT_kVzf2q3cHe0ETgmG4b-TNNL16UHmSsAiHBe1lMm0PXeGEnF8YfKtIFEOVgkcm3WgGbCEEb?no-transparency=false, Opens in a new window')
68INFO    -  DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the register method instead.
69  File "/usr/local/lib/python3.10/dist-packages/markdown_inlinegraphviz.py, Opens in a new window", line 48, in extendMarkdown
70    md.preprocessors.add('graphviz_block',
71  File "/usr/local/lib/python3.10/dist-packages/markdown/util.py, Opens in a new window", line 462, in add
72    warnings.warn(
73INFO    -  DeprecationWarning: The 'md_globals' parameter of 'markdown_inline_graphviz.InlineGraphvizExtension.extendMarkdown' is deprecated.
74  File "/usr/local/lib/python3.10/dist-packages/markdown/core.py, Opens in a new window", line 125, in registerExtensions
75    ext._extendMarkdown(self)
76  File "/usr/local/lib/python3.10/dist-packages/markdown/extensions/init.py", line 82, in _extendMarkdown
77    warnings.warn(
78INFO    -  DeprecationWarning: 'version' is deprecated. Use 'version' instead.
79  File "/usr/local/lib/python3.10/dist-packages/markdown/init.py", line 51, in getattr
80    warnings.warn(
81  File "/usr/local/lib/python3.10/dist-packages/mdx_truly_sane_lists/init.py", line 1, in
82    from .mdx_truly_sane_lists import makeExtension
83ERROR   -  Error reading page 'index.md, Opens in a new window': Snippet at path 'Readme.md, Opens in a new window' could not be found
84Traceback (most recent call last):
85  File "/usr/local/bin/mkdocs", line 8, in
86    sys.exit(cli())
87  File "/usr/local/lib/python3.10/dist-packages/click/core.py, Opens in a new window", line 1157, in call
88return self.main(*args, **kwargs)
89  File "/usr/local/lib/python3.10/dist-packages/click/core.py, Opens in a new window", line 1078, in main
90rv = self.invoke(ctx)
91  File "/usr/local/lib/python3.10/dist-packages/click/core.py, Opens in a new window", line 1688, in invoke
92return _process_result(sub_ctx.command.invoke(sub_ctx))
93  File "/usr/local/lib/python3.10/dist-packages/click/core.py, Opens in a new window", line 1434, in invoke
94return ctx.invoke(self.callback, **ctx.params)
95  File "/usr/local/lib/python3.10/dist-packages/click/core.py, Opens in a new window", line 783, in invoke
96return __callback(*args, kwargs)
97  File "/usr/local/lib/python3.10/dist-packages/mkdocs/main.py", line 286, in build_command
98build.build, Opens in a new window(cfg, dirty=not clean)
99  File "/usr/local/lib/python3.10/dist-packages/mkdocs/commands/build.py, Opens in a new window", line 322, in build
100_populate_page(file.page, Opens in a new window, config, files, dirty)
101  File "/usr/local/lib/python3.10/dist-packages/mkdocs/commands/build.py, Opens in a new window", line 175, in _populate_page
102    page.render(config, files)
103  File "/usr/local/lib/python3.10/dist-packages/mkdocs/structure/pages.py, Opens in a new window", line 271, in render
104self.content = md.convert(self.markdown)
105  File "/usr/local/lib/python3.10/dist-packages/markdown/core.py, Opens in a new window", line 261, in convert
106self.lines = prep.run, Opens in a new window(self.lines)
107  File "/usr/local/lib/python3.10/dist-packages/pymdownx/snippets.py, Opens in a new window", line 366, in run
108return self.parse_snippets(lines)
109  File "/usr/local/lib/python3.10/dist-packages/pymdownx/snippets.py, Opens in a new window", line 351, in parse_snippets
110raise SnippetMissingError("Snippet at path '{}' could not be found".format(path))
111pymdownx.snippets.SnippetMissingError: Snippet at path 'Readme.md, Opens in a new window' could not be found
112error: Failed to build the docs page for entity component:default/testing-techdocs-geoff: Failed to generate docs from /tmp/backstage-grz4Pj into /tmp/techdocs-tmp-T7pMd0; caused by unknown error 'Command mkdocs failed, exit code: 1' {"timestamp":"2024-06-06T13:36:24.521Z"}
🖥 Your Environment
No response
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
None

By the way, my mkdocs.yml file is not located in the root of the repository.  It is nested inside a directory one level down. That's why I'm specifying base_path: "..".

Hey, thanks for raising this. It's a little unclear for me but is the snippet that you're trying to reference at the same level as where your mkdocs.yml file is? If thats the case then I think using the default base_path: '.' and referencing it just as you were (--8<-- "Readme.md") should work.
If the file you're trying to reference is a level above the directory where the mkdocs.yml lives, then unfortunately that is most likely the intended outcome due to security reasons and how tech docs generation works. The source directory (where mkdocs.yml lives) and it's contents is whats used for the tech docs generation.

You are right, I had to redo my configuration to put the mkdocs.yml in the root of the repository so that I could access all files in my repo.  It took me several days to figure out this was a security issue.  Maybe better documentation would help here?  Although not sure which documentation should be updated.
The Devs in my company don't like others cluttering up the root of their repos, so that's why I tried to avoid putting the mkdocs file there in the first place.

Cool. Yeah, we could definitely update the docs for it to be a bit more clear. Perhaps somewhere in this section of the docs.
Closing this for now as the issue is resolved.


Colors above a certain Value are set transparent

I typically set the top and bottom of the color scale different from the max and min of the data. When I do this in steno the part of the data that are outside these bounds is not shown. Could you please change this functionality so that the color below and above the bounds is set to the top or bottom color of the color scale respectively?
or do I need to clip the data myself?

It sounds like you are adjusting the bounds using the data settings dialog:

This removes data outside the bounds. You may also adjust the colorbar sliders to modify the min/max range:

This will set everything above/below the limits to the top/bottom value. If you want the color limits to show up this way by default (ie on page load, without adjustment), you will need to clip the data yourself.

thanks for the clarification I got confused about the two difference. Actually this provides me with a decent amount of control over the use experience.


for market-rows, clamp market titles at longer than 3 lines with an ellipsis

@phoebemirman - what do you mean?

limit the length of the market titles in these market cards (also in portfolio, positions, my markets, active markets)

cut off with an ellipsis.
On Fri, Apr 5, 2019 at 12:12 PM Chwy5<EMAIL_ADDRESS>wrote:

@phoebemirman https://github.com/phoebemirman - what do you mean?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AugurProject/augur/issues/1315#issuecomment-480390752,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGdkH2piXyZcyA9RYBY5bXS3O-K2bQ_Vks5vd6AYgaJpZM4by-mQ
.

Ok gotchya...do we need design on that?

no, @matt-bullock requested this a while ago.

Ok agree...moving this backed to be worked

@phoebemirman @bthaile -- Do the new market cards / portfolio cards do this now?
adding to bugs/misc for sprint 14

Currently does not cut off w/ an ellipse on the trading pg or in additional details, as well as the portfolio pg.  still needs to be worked on.


Add more snark unit tests

including values that should fail
maybe use quickcheck for this?

cc @imeckler where's a strategic place to insert some unit tests?  Going to close.


Resolve ota-proxy performance bottleneck.

Introduction
This PR tries to resolve the bottleneck of ota-proxy performance caused by inefficient db operation implementation.
Changes

remove lock in OTACacheDB class, use sqlite3’s own lock mechanism instead
enable WAL mode and autocommit
serialize requests by dispatch all db requests to a dedicated threadpool
refactor some parts of ota-cache module
minor changes:
5.1 ditch the usage of janus.queue as it is not so necessary in our implementation
5.2 using the std queue
5.3 decrease the backoff timeout of queue.get to 1ms

Result on small scale test
with ota-image of 1.9G, containing 73543 files
before: 490+s
after: 150+s
Result on VM test

number of download errors significantly lower now(less than 10 per 100,000 requests)
memory usage of ota-proxy also stable now(a potential memory leak is fixed)
(BUG) it seems that there are some bugs in cache renews logics when space soft limit is reached, will be addressed in a new PR in the future.

TODO

[x] small scale test
[x] test on VM

[ ] standalone
[ ] standalone w/ resetting system and retry
[ ] multiple

      "ecu_status_list": {
        "ecu_statuses": [
          {
            "ecu_name": "perception1",
            "status": "in_progress",
            "failure_type": "FAILURE_TYPE_NO_FAILURE",
            "progress_rate": 10.094333,
            "release_name": "1.2.3",
            "total_number_of_files": "243977",
            "processed_number_of_files": "13810",
            "processed_file_size": "131080924",
            "elapsed_time": "457.321s",
            "transfer_rate": 286829.16,
            "total_file_size": "18361760855",
            "remaining_time": "63559s",
            "remaining_time_status": "valid",
            "copy_processed_number_of_files": "9078",
            "copy_processed_file_size": "44645076",
            "copy_elapsed_time": "0.576s",
            "link_elapsed_time": "0s",
            "download_processed_number_of_files": "4732",
            "download_processed_file_size": "86435848",
            "download_elapsed_time": "925.725s",
            "download_transfer_rate": 93444.16,
            "download_error_counts": "16",
            "download_error_rate": 0.0033812341,
            "failure_reason": "",
            "copy_transfer_rate": 0,
            "link_processed_number_of_files": "0",
            "link_processed_file_size": "0",
            "link_transfer_rate": 0
          },
          {
            "ecu_name": "autoware",
            "status": "in_progress",
            "failure_type": "FAILURE_TYPE_NO_FAILURE",
            "progress_rate": 24.95834,
            "release_name": "20220407032921",
            "total_number_of_files": "271479",
            "processed_number_of_files": "60203",
            "processed_file_size": "1901604435",
            "elapsed_time": "458.245s",
            "transfer_rate": 4151974.8,
            "total_file_size": "23995013228",
            "remaining_time": "5321s",
            "remaining_time_status": "valid",
            "copy_processed_number_of_files": "56018",
            "copy_processed_file_size": "1712419614",
            "copy_elapsed_time": "13.516s",
            "copy_transfer_rate": 131724584,
            "link_elapsed_time": "0s",
            "download_processed_number_of_files": "4185",
            "download_processed_file_size": "189184821",
            "download_elapsed_time": "1013.502s",
            "download_transfer_rate": 186756.98,
            "download_error_counts": "4",
            "download_error_rate": 0.00095579453,
            "failure_reason": "",
            "link_processed_number_of_files": "0",
            "link_processed_file_size": "0",
            "link_transfer_rate": 0
          }
        ],

@Bodong-Yang download_transfer_rate of perception is twice slower than autoware. Is this appropriate?
download_transfer_rate is total download file size / CPU time for downloading.
Currently, the max number of CPUs is 3, so autoware ecu and perception ecu use the same number of CPUs for downloading.
So the comparison of download_transfer_rate is fair/appropriate.

After finishing autoware ecu updating, perception ecu download_transfer_rate is increasing.
        "ecu_statuses": [
          {
            "ecu_name": "perception1",
            "status": "in_progress",
            "failure_type": "FAILURE_TYPE_NO_FAILURE",
            "progress_rate": 20.419855,
            "release_name": "1.2.3",
            "total_number_of_files": "243977",
            "processed_number_of_files": "41801",
            "processed_file_size": "1622397263",
            "elapsed_time": "3209.649s",
            "transfer_rate": 505577.22,
            "total_file_size": "18361760855",
            "remaining_time": "33109s",
            "remaining_time_status": "valid",
            "copy_processed_number_of_files": "9078",
            "copy_processed_file_size": "44645076",
            "copy_elapsed_time": "0.576s",
            "link_processed_number_of_files": "204",
            "link_processed_file_size": "1086707",
            "link_elapsed_time": "0.043s",
            "download_processed_number_of_files": "32519",
            "download_processed_file_size": "1576665480",
            "download_elapsed_time": "9022.711s",
            "download_transfer_rate": 174757.88,
            "download_error_counts": "145",
            "download_error_rate": 0.0044589317,
            "failure_reason": "",
            "copy_transfer_rate": 0,
            "link_transfer_rate": 0
          },
          {
            "ecu_name": "autoware",
            "status": "in_progress",
            "failure_type": "FAILURE_TYPE_NO_FAILURE",
            "progress_rate": 100,
            "release_name": "20220407032921",
            "total_number_of_files": "271479",
            "processed_number_of_files": "271479",
            "processed_file_size": "23995013228",
            "elapsed_time": "3210.570s",
            "transfer_rate": 7475082,
            "total_file_size": "23995013228",
            "remaining_time": "0s",
            "remaining_time_status": "almost_done",
            "copy_processed_number_of_files": "261842",
            "copy_processed_file_size": "22861340271",
            "copy_elapsed_time": "552.948s",
            "copy_transfer_rate": 41415470,
            "link_processed_number_of_files": "144",
            "link_processed_file_size": "427019589",
            "link_elapsed_time": "0.392s",
            "download_processed_number_of_files": "9493",
            "download_processed_file_size": "706653368",
            "download_elapsed_time": "3094.261s",
            "download_transfer_rate": 228394.75,
            "download_error_counts": "15",
            "download_error_rate": 0.0015801117,
            "failure_reason": "",
            "link_transfer_rate": 0
          }
        ],

@Bodong-Yang download_transfer_rate of perception is twice slower than autoware. Is this appropriate?

Yes it is expected, ota-client on autoware can access ota-proxy on autoware with much lower latency. So ota-client on autoware can occupy more time slots comparing to perception, results in autoware has higher average downloading rate comparing to perception.

@obi-t4 Oh by the way, uvicorn(the server part of ota-proxy) will adjust the in-coming requests when there are too many,  and reject some of them. This is the cause of download_errors in most cases. This can be handled by the the retry mechanism on the ota-client side.

[ ] standalone w/ or w/o ota-proxy transfer rate almost same

w/ ota-proxy
            "download_processed_number_of_files": "3314",
            "download_processed_file_size": "341486967",
            "download_elapsed_time": "563.742s",
            "download_transfer_rate": 606548.8,

@Bodong-Yang How can we disable ota-proxy for standalone ecu environment?

w/o ota-client (I'm not sure the transfer rate of w/o ota-proxy is slower than w/ ota-proxy :-))
            "download_processed_number_of_files": "4373",
            "download_processed_file_size": "741449270",
            "download_elapsed_time": "1973.644s",
            "download_transfer_rate": 375797.9,

@Bodong-Yang How can we disable ota-proxy for standalone ecu environment? proxy_info.yaml
gateway: true
enable_ota_proxy: false

Is OK?
--> I think it is OK since /ota-cache is not creating.

Yes, enable_ota_proxy will totally disable the ota-proxy.
But one of the feature ota-proxy is when resuming from interrupted ota update, the ota-client don't need to download already downloaded files again, do we need to drop this feature for standalone mode?

[x]  standalone w/ or w/o ota-proxy transfer rate almost same

Yes, actually the overhead is very small.
I think after the database is fixed, the main bottleneck now should be the disk IO speed when writing cache. If we disable the cache of ota-proxy, the speed should almost the same as directly downloading from the Internet.

@obi-t4 Currently the ota-client always enable cache when launching the ota-proxy.
# ota_client_stub.py: 165~167
            if proxy_cfg.enable_local_ota_proxy:
                _init_cache = self._ota_client.get_ota_status() == OtaStatus.SUCCESS
                self._ota_proxy.start(enable_cache=True, init_cache=_init_cache)

If needed, we can introduce a flag in the proxy_info.yaml to enable/disable cache mechanism of the ota-proxy.

But one of the feature ota-proxy(with cache enabled) is when resuming from interrupted ota update, the ota-client don't need to download already downloaded files again, do we need to drop this feature for standalone mode?

No, I just wanted to compare w/ and w/o ota-proxy transfer rate to make sure that w/ ota-proxy was not degrading.

If needed, we can introduce a flag in the proxy_info.yaml to enable/disable cache mechanism of the ota-proxy.

Currently, I think we don't need this feature.

OK! I will merge this PR after some minor code cleanup!

@Bodong-Yang

OK! I will merge this PR after some minor code cleanup!

It is better to do minor code cleanup by another PR.

@Bodong-Yang

OK! I will merge this PR after some minor code cleanup!

It is better to do minor code cleanup by another PR. This PR is already confirmed.

OK!

@Bodong-Yang

OK! I will merge this PR after some minor code cleanup!

It is better to do minor code cleanup by another PR. This PR is already confirmed.

OK!


Add to public postman collection and docs for new controllers, schemas, etc

For the upcoming hackathon we want to allow external teams to be able to create their own controllers, schemas, cred defs, proof requests, etc. The goal of this issue is to (1) test the demo controller in dev to make sure it can handle everything we want (2) add the required API calls to a public postman collection (3) document everything, including the in-between steps like getting an Auth0 user

The first pass of this is completed here https://documenter.getpostman.com/view/14780387/Tzz4RzZc#intro
Filed new ticket for further expansion next sprint https://github.com/kiva/protocol-demo/issues/48


csharp hljs module has incorrect require path

Describe the bug
Requiring react-syntax-highlighter/dist/esm/languages/hljs/cs fails because it is requiring a module path that does not exist: https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/languages/hljs/cs.js#L7
The correct path should target csharp not cs:
https://github.com/highlightjs/highlight.js/blob/014343e8d57f35ac6b01c619d9a3d8989de39dfe/src/languages/csharp.js
To Reproduce
Steps to reproduce the behavior:

import csharp via hljs: import csharp from 'react-syntax-highlighter/dist/esm/languages/hljs/cs'
try to compile your project
the require fails:

ERROR  Failed to compile with 1 errors

This dependency was not found:

* highlight.js/lib/languages/cs in ./node_modules/react-syntax-highlighter/dist/esm/languages/hljs/cs.js

To install it, you can run: npm install --save highlight.js/lib/languages/cs

Expected behavior
The require should not fail.
Screenshots
NA
Desktop (please complete the following information):

OS: MacOS
Browser: NA
Version:

Additional context
<EMAIL_ADDRESS><EMAIL_ADDRESS>

Hey @mshwery, thanks for highlighting this. I probably should have called out the language-renaming changes from  highlight.js 10.1.x a little more emphatically in our 13.0.0 release notes.
We autogenerate our language modules from highlight, so if you want to use react-syntax-highlighter 13+, you'll need to change your import statement to:
import csharp from 'react-syntax-highlighter/dist/esm/languages/hljs/csharp'

I'll work on removing any remaining traces of cs in our codebase to avoid any future confusion.


No ParallaxEffect when using Fragments that extends SlideFragment

Am I allowed to use Parallax animation when using Fragment slides that extend SlideFragment?
Initially, when my Fragment slides extended Fragment (from Android.app), I have to replace
 addSlide(new FragmentSlide.Builder()                 .fragment(FragmentChooseLanguage.newInstance())
with
 addSlide(new FragmentSlide.Builder()                 .fragment(R.layout.fragment_choose_language)
and the Parallax animation worked fine. Since I wasn't able to play with ClickListeners in the latter case, I started using fragment slides extending SlideFragment. But since then the Parallax animation isn't working at all. Am I missing something???
Regards

Yeah, you have to manually add the parallax effect to custom slides for now. Look at the source code of ParallaxFragment and just copy the implementation.
It would also be great if you create a pull request where you edit SlideFragment to extend from ParallaxFragment rather than from Fragment. That way every SlideFragment would have parallax support too.


Ts2.5/develop

Codecov Report

Merging #53 into ts2.5/master will not change coverage.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           ts2.5/master    #53   +/-   ##
===========================================
  Coverage           100%   100%
===========================================
  Files                11     12    +1
  Lines               546    570   +24
  Branches             19     27    +8
===========================================
+ Hits                546    570   +24

Impacted Files
Coverage Δ

src/statechart-writer/puml-writer/interface.ts
100% <100%> (ø)

.../statechart-writer/puml-writer/puml-writer.spec.ts
100% <100%> (ø)

src/state-machine.spec.ts
100% <100%> (ø)
:arrow_up:

src/statechart-writer/puml-writer/puml-writer.ts
100% <100%> (ø)

src/state-history.ts
100% <100%> (ø)
:arrow_up:

src/statechart-writer/interface.ts
100% <100%> (ø)

src/state-machine.ts
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Spell-check ?

would it make sense to add spell-check to sphinx? With this we could make sure that we run spell-checks during tests [ci]

This has been reinstated in #526. Closing.


Starting Spot Marker

Per Will:
Starting spot - on many of the layers noted above, the “crawlway” that takes you to it, drop you at a different X,Y location (so they are not like stairs).  In these cases, we have used a “green dot” to show the starting locations (you can see the green dot in the map below - it comes from stairs going down, but you then drop and can’t get back up that way on this map)

More generally, it would be neat to be able to indicate that a square is the destination for map moverment options, be they teleporters, chutes, transporters, stairs or crawlways. (Stairs are currently "marked" by dent of stairs up being in the spot the stairs down dropped you on. But the software is not actually aware of this.)

If crawlways behave like tps (where the coordinates are a link to the proper cell) I think this feature may be unnecessary.

However, your comment about chutes and other visual indicators of the LZ is still valid - i need to think a bit more about it.


Windows 11 ERROR: IOError: chmod("mySite\.gitignore", 0o644): invalid argument (EINVAL)

I tried creating a sample site as described on franklinjl.org, but when I execute the newsite() command, I get an error related to chmod. I spotted an earlier thread related to this involving a Windows 10 user, so I tried following the suggestions there (activating an environment inside of a dedicated folder and installing Franklin in that environment) but I keep getting the error.
Any suggestions for how to proceed would be appreciated.

hello, thanks for the report, can you please copy paste the full stacktrace, your Julia version and the result of ] status? I suspect the problem is with https://github.com/tlienart/FranklinTemplates.jl/blob/61d7b9e8db78a0add3b832f6bd984a38636ce731/src/utils.jl#L59 for you.
Following this I might get you to try a dedicated version of FranklinTemplates that has a specific behaviour for Windows.


WSL Works from Search Bar, but not Command Prompt

This bug-tracker is monitored by developers and other technical types.  We like detail!  So please use this form and tell us, concisely but precisely, what's up.  Please fill out ALL THE FIELDS!
If you have a feature request, please post to the UserVoice.
If this is a console issue (a problem with layout, rendering, colors, etc.), please post to the console issue tracker.
Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues.  Instead, send dumps/traces to<EMAIL_ADDRESS>referencing the GitHub bug number. Ideally, please configure your machine to capture minidumps, repro the issue, and send the minidump from "C:\Windows\minidump".

Your Windows build number:  (Type ver at a Windows Command Prompt)
10.0.17134.38

What you're doing and what's happening:  (Copy&paste specific commands and their output, or include screen shots)
Start Command Prompt as Administrator, then:
wsl

What's wrong / what should be happening instead:
Gives error:
Error: 0x80070005 Press any key to continue...

I can type wsl in search bar and Ubuntu starts, but it does not work when I type from command prompt (yes, in Administrator mode)

Strace of the failing command, if applicable:  (If some_command is failing, then run strace -o some_command.strace -f some_command some_args, and link the contents of some_command.strace in a gist here)

See our contributing instructions for assistance.

seems your windows i'ts not in the latest version. considering update them

I tried running Windows update to get that, but it says I'm in latest version
Also, here are the etl files I generated when trying to run bash from command prompt
etl_files.zip

In my update history, it shows version 1803 installed on 5/3

The only other thing I see is this:

Okay, I fixed the above by changing a registry key:
https://www.westechs.com/error-0x800f0954-when-installing-dot-net-on-windows-10/
I'll restart and see if wsl issue is fixed

Nope, restart did not fix wsl issue in command prompt. I still get 0x80070005 error when I type wsl in command prompt.
Idk why I can run wsl from search bar on taskbar, but it doesn't launch from within command prompt.

Alright...weird...apparently now Windows downloaded the 1083 update...I'll restart and check again.

Still no dice. I'm stumped...

Is it possible you are launching the Ubuntu app from start but wsl.exe from command prompt? In that case it is possible you have multiple distros and your default one is having issues (wslconfig.exe /l). Otherwise from your description it sounds like non-elevated wsl.exe is working while elevated wsl.exe is failing with access denied.

@ahendry2688  where you installing wsl source ? lxrun or microsoft store ?

@Brian-Perkins Here is the output from my Administrator command prompt

@Alternate-Egoist
I installed from Microsoft Store. I header lxrun is for the older version...

@ahendry2688 if you run from a non-elevated cmd.exe does it succeed?

Okay, yes! That is so weird! Why does that work?!

@Brian-Perkins Seriously, why does that work?

@ahendry2688 - are you logged in as an administrator, or when you elevate are you using credentials for a different user with admin privileges?

I'd prefer wsl to run from elevated command prompt since I have other commands only available when elevated I'd like to use when I switch back and forth from Windows to Linux.

@ahendry2688 - that is certainly an unusual problem. The trace files you sent show almost no activity (failure very early trying to establish a COM connection with the service). Given this very unusual behavior I wonder if you have any monitoring / AV products running that may be blocking access? If you are feeling ambitious, procmon may be able to narrow down the problem.

I've had issues with AV in the past...If I make another set of .etl's, could you take a look at them while I restart in safe mode, stop the AV service, and see if I can run from elevated prompt?

@Brian-Perkins Here are the files: one with elevated command prompt (where issue occurs), and one with non-elevated command prompt (where everything is fine).
elevated_etl_files.zip
nonelevated_etl_files.zip

@Brian-Perkins In safe mode, elevated command prompt gives different error when typing wsl: 0x8007043c.

@ahendry2688 the trace files show a successful start in the non-elevated case and then a very quick failure in the elevated one. Unfortunately the failure does not contain enough information to pinpoint the issue.
The safe mode failure (0x8007043c) is expected with: This service cannot be started in Safe Mode.

@Brian-Perkins @Alternate-Egoist Who can help me solve this problem?

@ahendry2688 running procmon shows you file and registry accesses, along with the results of those access. If you start it (Ctrl-E toggles capture off/on), run your failing scenario and then look through the results for "access denied" you may find the registry key or file that is configured incorrectly. It captures information system wide which means it grows very large, very quickly, so it is best to start procmon, stop captures and clear the log, and then prepare the scenario. When you are ready, start the capture, hit enter to invoke the failure, and then stop the capture as soon as it fails.

@Brian-Perkins Thank you so much! I'll get started and get back to you.
@Brian-Perkins @Alternate-Egoist Thank you for your rapid response. Truly unbelievable. This is the kind of support developers absolutely love!

@Brian-Perkins Running procmon and viewing operations linked to wsl.exe, I see several NAME NOT FOUNDs and BUFFER OVERFLOWs. But the two that strike me as most important are:

an ACCESS DENIED for a CreateFile operation, and
a FILE LOCKED WITH ONLY READERS for a CreateFileMapping mapping operation.

@Brian-Perkins Any thoughts for how to proceed further?

For one thing, it seems odd that it is looking for the folder lsxx in C:\Windows\System32. Shouldn't it be looking in %LocalAppData%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs?

@Brian-Perkins @Alternate-Egoist @benhillis Sorry, is anyone available?

@Brian-Perkins @Alternate-Egoist @benhillis Tried https://adrift.io/2017/10/11/windows-subsystem-for-linux-error-0x80070005-access-denied/ and was able to follow all instructions, but still did not work.
I'm not sure if not starting from command prompt as an admin is going to mean there will be certain things I can't do. If not, then we can close this issue. I would like to do application development back-and-forth between Windows and Ubuntu. I can still run sudo commands from non-elevated command prompt. If someone would please clarify if there are limitations to not launching from elevated admin prompt, I'd appreciate it.
Thank you.

@ahendry2688 the access denied error on LxssManagerProxyStub.dll is interesting, but it appears to have been opened successfully shortly before. Do you see any access denied errors in that same time frame from svchost.exe (that is the process containing the service that wsl.exe is trying to talk to). There are many svchost.exe processes, but if you are looking within the same time range as wsl.exe there is a good chance it will be the one you are interested in.

I was having a similar problem. Running wsl from Powershell would fail with the same error, whether I was running Powershell as Admin or not.
Finally got it to work by running it via cmd.exe.

I've got the same problem. All of a sudden Mobaxterm (a kind of iTerm client for windows) WSL bash started to fail with access denied. I had to start it without elevated rights to make it work, but it's not the desired situation

Closing an old issue.  If you have a similar issue, please open a new one so that we can track it correctly.  Thanks!


P4: Ridges volunteers already claiming to see already seen flags

We have high activity on P4: Ridges but very little of the subjects is retired, so I'm  a bit surprised that a volunteer on Talk saying they're already getting the 'Already Seen' flags. Could there be a something up with what selects the next subject to view?  Thanks

Could be for sure, this is a long standing problem and linked to other issues. Could be that we aren't syncing to subject selection service properly or we aren't creating the user seens quickly enough or we are failing on api calls and the front end is reusing the previous batch instead of dropping it.
Any more details to debug this are appreciated.

@camallen I've got the username let me know what else I should ask for.


Faster color conversions

The current color conversions, implemented by the From trait, are focused on accuracy and not conversion speed. This makes drawing of Rgb888 images on a Rgb565 target slow.
I did compare our current implementation to a lookup table based conversion with this test code:
let bb = display.bounding_box();
display.color_converted().fill_contiguous(&bb, core::iter::repeat(Rgb888::MAGENTA))?;

Note that the test uses fill_contiguous instead of fill_solid to force one color conversion per pixel which simulates drawing of an image without the image decoding overhead.
Using a STM32F0 with an 320x240 ILI9341 display connected via SPI at 10 MHz i got the following results:

Current implementation: 1103 ms
Lookup table: 421 ms

I believe the performance impact of our current implementation will be far less on a microcontroller with hardware divider, but I didn't have time to confirm this.
The decision whether to use a LUT or arithmetic is a tradeoff between flash usage and performance. The LUTs for the Rgb888 to  Rgb565, for example, consume 512 bytes of flash. This is a pretty large overhead if the color conversion performance isn't important, because the conversion isn't used to draw an entire image and is only needed to convert a few color values.
Should we support both implementations or decide to use one of them?

I'm closing this now that the performance improvements in #651 and #652 are merged.


Revert "Revert "wayland: mark as broken on darwin""

Description of changes
tl;dr: It is a mistake to port one package to macOS while breaking tons of others.
This PR reverts #214828, which misleadingly builds a stub Wayland package on macOS (see https://github.com/NixOS/nixpkgs/pull/214828#issuecomment-1418660135) and causes build failures on almost all packages marked as broken transitively by Wayland before.
The issue was observed at least two weeks ago, in #212123, when the maintainer discovered that inherit (wayland.meta) platforms didn't work as intended on macOS.
cc @alyssais @figsoda
Things done

Built on platform(s)

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

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

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

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

As I explained, a Wayland package on macOS is useful because of wayland-scanner (which is in the bin output, hence you not finding it in https://github.com/NixOS/nixpkgs/pull/214828#issuecomment-1418660135).  Wayland can be built for all Unixes to provide wayland-scanner, and it is necessary to have when cross-compiling to Linux.
Indeed wayland.meta.platforms does include Darwin, but this is correct, as the package does build for Darwin and contain useful functionality.  It does not include all functionality, but that's not something that meta.platforms can encode.
In spite of this, if you still think this change is the right thing to do, then I would like to suggest we ask for third opinions from my co-maintainers of the Wayland package: @primeos @codeopel.

(I'm also happy to go through and fix any incorrect occurrences on wayland.meta.platforms or similar — there seem to be a few but not that many. But I'd leave it for a few days, because I'm about to PR full FreeBSD support for our Wayland package, including the libraries, and that'll make it easier to test what the actually supported platforms for each compositor are: just Linux, or Linux+FreeBSD.)

I'm having an unofficial full-fledged Wayland package on macOS in my repo, so doing a simple comparison, I don't agree if what betweens useful and all functionality is the existence of libraries and headers in wayland.dev.
I'll be happy to test epoll-shim on macOS, if you decided to use the latest git version.

I'm having an unofficial full-fledged Wayland package on macOS in my repo

That's cool! I hope you can upstream it, as that would resolve all our problems here. :)

I'll be happy to test epoll-shim on macOS, if you decide to use the latest git version.

That's exactly what I'll be doing, because the latest git commit is a build fix from me. :P

I don't agree if what betweens useful and all functionality includes the non-existence of headers in wayland.dev and libraries in wayland:

I'm not entirely sure I understand what you mean here, but the headers should be built if and only if the libraries are, since otherwise the headers would be useless. The reason to have current Wayland be buildable for macOS and other Unixes is to have the wayland-scanner binary and associated .pc file available.

@wegank would https://github.com/NixOS/nixpkgs/pull/214906 be an acceptable solution?

@wegank would #214906 be an acceptable solution?

Thanks! I've also been trying to do something similar for the last hour, realizing finally that anything I can do should go to staging. So I think I'll close this PR now in favor of yours.

Cool. Glad we've got a path forward. :)


Document project goals.

create a docs folder. add high level project overview, who will use it, what its intended use case is etc...

Added a documentation repo


Add IPC method to select a profile

This "works", in the sense that the server receives the request and applies the profile. However, it seems that it immediately triggers a "detected change" event, and the server applies the old profile again:
applying profile 'home_desk'
applying profile output 'LG HDR WFHD' on connected head 'DP-3'
applying profile output 'eDP-1' on connected head 'eDP-1'
running commands for configuration 'home_desk'
configuration for profile 'home_desk' applied <------ HERE is where I call kanshictl
loading profile only_external
applying profile 'only_external'
applying profile output 'LG HDR WFHD' on connected head 'DP-3'
applying profile output 'eDP-1' on connected head 'eDP-1'
running commands for configuration 'only_external'
configuration for profile 'only_external' applied
applying profile 'home_desk' <------- THIS starts immediately
applying profile output 'LG HDR WFHD' on connected head 'DP-3'
applying profile output 'eDP-1' on connected head 'eDP-1'
running commands for configuration 'home_desk'
configuration for profile 'home_desk' applied

I'm looking into the code to try and understand how to make this not happen, but would definitely appreciate tips on where to look :)
I hope my approach is correct, too.

static void output_manager_handle_done(void *data,
		struct zwlr_output_manager_v1 *manager, uint32_t serial) {
	struct kanshi_state *state = data;
	state->serial = serial;

	//try_apply_profiles(state);
}

makes kanshi not do anything when it's started, but also makes it behave predictably when it receives kanshictl profile <> commands.

Ok, I think my latest commit fixes it. I left a few questions in the commit message about the implementation.

The compositor will broadcast events followed by a done event when the output configuration changes. When applying a profile we trigger a configuration change.
What I originally thought of was that the profile names would act as a tie-breaker. Setting a profile name would add a new condition to match_profile, something like
if (state->selected_profile_name != NULL && profile->name != NULL && strcmp(state->selected_profile_name, profile->name) != 0) {
    return false;
}

So that the normal matching logic still applies, ie.

kanchictl switch asdf doesn't apply asdf when asdf doesn't make sense given the currently plugged in outputs
It's possible to define multiple profiles with the same name and with a different set of outputs

To implement this, the "currently selected profile name" would need to be saved in state (in the example code above, in state->selected_profile_name).
I'm open to other ideas though.

So basically you would just have me update the current name, then call try_all_profiles?

Yup!

Would you prefer kanshictl switch over kanshictl profile?

I'd prefer to pick a subcommand name that describes an action. switch may not be that great, because it may not actually switch anything. Maybe set-profile?

I wonder if current and pending names wouldn't be necessary? Otherwise using a name that doesn't exist would break any further transitions.
And using set-profile even once would mean that automatic transitions would now need to also match the profile name. Maybe the manual should document that reload can be used to reset things?

Maybe we should try and report an error back to kanshictl if setting the profile fails...

Sounds sensible.
Also adding something like kanshictl set-profile "*" to reset to "match any profile name" would be handy. (Wildcard char subject to bikeshedding, something like - might be better to avoid shell quoting.)

(Wildcard char subject to bikeshedding, something like - might be better to avoid shell quoting.)

Would have to forbid profiles named -, then :p
But I like the idea.

So, I've been dog fooding another version of this for a while now, which implements the idea in https://github.com/emersion/kanshi/pull/108#issuecomment-886450367
I am, however, hitting an UX issue because of it.
My config is:
profile home_desk {
	output "LG HDR WFHD" enable mode 2560x1080 position 0,0
	output eDP-1 enable scale 1.1 position 0,1080
}

profile only_external {
	output "LG HDR WFHD" enable mode 2560x1080 position 0,0
	output eDP-1 disable
}

profile only_internal {
	output "LG HDR WFHD" disable
	output eDP-1 enable scale 1.0 position 0,0
}

profile out_and_about {
	output eDP-1 enable scale 1 position 0,0
}

I start with home_desk, but will often switch to only_external; if I switch back to home_desk, and then remove the external monitor (which should trigger out_and_about), it will instead do nothing, because it can't match a profile with the name home_desk to something that only has the internal monitor. This is even worse if I leave it in only_external.
I didn't like this experience, and I think I prefer the style where set-profile is something you set once to pick a profile for that particular monitor combination, and any change in output availability will return to the normal matching logic.
That's what the code you asked about in https://github.com/emersion/kanshi/pull/108#pullrequestreview-723154254 implemented: without that, selecting a profile led to kanshi moving to it, then getting a wayland callback, and moving back to the first match in the config (as described in https://github.com/emersion/kanshi/pull/108#issue-696429472); with that, it makes sure not to override a manually selected profile (which was set via the set-profile RPC call) when the callback is called, and therefore doesn't restore the first match in the config.

As discussed on IRC, two potential solutions:

Make set-profile "one-off": applies the profile with the specified name, and does nothing more. This has the downside of being fragile:

Requires a hack to avoid re-applying a different profile when the notification that the provided profile has been applied is sent by the compositor, but this is racy with a real hotplug.
Any little change in the output configuration (e.g. user executes a swaymsg output … command) will re-apply a different profile.

Make set-profile indicate a preference: if a profile with the specified name can be found and is applicable, use it, otherwise fallback to any other profile. The preference sticks around until another set-profile command is issued.


chore: bump protobuf deps up to use the new buf remote gen source

See https://buf.build/docs/migration-guides/migrate-remote-generation-alpha/#go-module-proxy

Not sure what I broke exactly, but I'm assuming it's because of my version of Antlr. I regenerated using Antlr v4.13.0 (the latest).

Going to merge and release under v2.0.0 so that we don't impact anyone else who may potentially be using it.


chore(release): v1.0.0 🎉

:robot: I have created a release beep boop
1.0.0 (2023-08-07)
Features

init: initialize based on with-simple-caching (e51cade)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/ehmpathy/with-cache-normalization/releases/tag/v1.0.0 :sunflower:


mDNS discovery (WIP)

Note: This is very much Work-in-progress; I'm mostly looking for early feedback so I don't end up on too many detours.
This provider finds services published under _prometheus-http._tcp and _prometheus-https._tcp via mDNS (RFC6762) and adds the appropriate targets in prometheus.
On OS X a fake service can be created by dns-sd -R "My Test" _prometheus-http._tcp. . 9090 path=/metrics - the discoverer uses ~half that information, but it's useful if one want to muck about with mapping things to labels...
Currently it sets

instance = provided hostname, ex your-machine-name.local
__scheme__ to http or https depending on which service type it gets
__address__ to (in order of what's found first) ipv4:port, [ipv6]:port and finally hostname:port.

TODO

[ ] Proper settings (scrape interval and ???)
[ ] Testing (how?)
[ ] Optionally parsing path+other attributes out of SRV's TXT record (RFC2782 mentions username and password for basic auth)
[ ] Vendor + quiet down mDNS implementation

Thank you for your contribution!
I think the main question we need to answer is whether this discovery mechanism has enough adoption to be included in the main Prometheus server by default. Will you be able to commit to act as maintainer for this discovery, in case any bug reports / further feature requests come in?

I dunno about maintaining it; I'm mostly toying about with some IoT-things + Prometheus, so it seemed convenient to have around...
  IMHO both parts needs to be fixed some way or other.

Have you seen the file_sd? You could write a standalone mDNS discovery tool which dumps out a JSON file upon change. Prometheus will watch the configured path and automatically reload the target.
Have a look at these blog posts for more info: https://prometheus.io/blog/2015/06/01/advanced-service-discovery/#custom-service-discovery and https://prometheus.io/blog/2015/08/17/service-discovery-with-etcd/

Have you seen the file_sd? You could write a standalone mDNS discovery tool which dumps out a JSON file upon change. Prometheus will watch the configured path and automatically reload the target.
Have a look at these blog posts for more info: https://prometheus.io/blog/2015/06/01/advanced-service-discovery/#custom-service-discovery and https://prometheus.io/blog/2015/08/17/service-discovery-with-etcd/

Hadn't thought about that - sounds like a feasible way to take things as well.

From reading issues on github.com/hashicorp/mdns, it looks to be somewhat unmaintained. I'm working on a switch to github.com/micro/mdns which looks to be the best-maintained fork out there...

Can you point me at the mDNS spec? I can't seem to find one online.

Technically, multicast DNS is RFC6762. The service-discovery layer, where all the fun stuff happens, is RFC6763. Skimming section four, mentally replacing .example.com with .local, should give you the gist of things.
In general, when people refer to mDNS, Zeroconf, Avahi, Bonjor, ... they mean RFC6763.

On reflection (and quite a bit late) it's probably better to have it as an external service-discovery mechanism.
(And I guess it can always be merged in, if it turns out popular...)

For future reference: I've made a standalone prometheus-mdns-sd.


Use OAuth client (=not constantly having to renew AUTH_KEY every 3 months)

Tailscale features OAuth clients which, unlike the expiring auth keys, don't need to be renewed constantly.
For examle, their Github Action is making use of them.
Things I tried were:

creating a new OAuth Client with Devices: write scope (also tried with All: write, did not change the issue)

make sure to specify a tag here, e.g. tag:mikrotik

copied the client id and client secret
on Mikrotik:

changed the AUTH_KEY env variable to e.g. tskey-client-this-is-not-real?preauthorized=true&ephemeral=true
added the OAuth tag to TAILSCALE_ARGS env variable, e.g. --accept-routes --advertise-exit-node --advertise-tags=tag:mikrotik

(re-)started the container and observed (1) the logs (logging=yes); also, I've observed (2) the Tailscale OAuth logs and now comes the actual issue: from (2) everything looks good, as far as I can tell, but from (1) I see constant retries, complaining that backend error: invalid key: API key <redacted> not valid (which also spam (2), but I can't see anything suspicions in (2).

Do you happen to have experience with Tailscale OAuth Clients (on Mikrotik)?
Anyway, thanks a lot for all your effort!

Thanks for raising this issue. You were on the right track - it looks like missing quotes in tailscale.sh was causing an issue with Oauth registration.
If you could test using 0.1.27 - I was able to register a new node using OAuth credentials.

Thank you very much!
Just tried it and it's working like a charm -- no more auth key updating every 3 months 👍


failed to connect the local repository

Hello,
I am trying  to connect my local repository with the remote repository, but it fails to do so. Instead I get the message " fatal: remote origin already exists " , afterwards it asks for my username which I provided and my password, which I couldn't type it in . When I click return, I get the following message " remote: anonymous access to kosmasdamianos/iTipper.git denied. fatal: Authentication failed for ' https:// github.com/kosmasdamianos/iTipper.git/. "

@kosmasdamianos, it seems your problem is nothing with FreeCodeCamp site.  sorry. this issue thread is only FreeCodeCamp repo.


swri_transform_util handles "/wgs84" but not "wgs84"

See swri-robotics/mapviz#478.  I would expect swri_transform_util to handle whatever its wgs84_frame is set to regardless of whether it has a slash in front of it or not.

This issue prompts the question, does it make sense to allow "utm" in addition to "/utm" as well? How about "/local_xy" too?
Relevent file: https://github.com/swri-robotics/marti_common/blob/indigo-devel/swri_transform_util/include/swri_transform_util/frames.h

👍 For adding support to the non-slash, but I don't think we should change the constants--that just creates confusion on the user end.
I recommend implementing a custom comparison function in swri_transform_util that does TF frame comparison and matches regardless of the leading slash. That way we can guarantee consistent behavior across the whole codebase, and I can think of other places I've had to compare TF frames that it would be useful.

tf uses tf::strip_leading_slash() before all comparisons for this reason. That might be the answer here as well. I still prefer the idea of implementing a comparison function, but that might just be because I wrote too much Java in my youth.

While implementing something like String.compareIgnoreLeadingSlash() would make me happy, for the sake of consistency it's probably better to do it just like tf does it.


[Addition]: Wen Zhou Shi Pantherx 38 spot Cluster, no coverage, interacting only internally but with many other local hotspots

Hotspot b58 Addresses
112Yh7DLvKupmwdSxVcpPQCAYbqfUui7zUNo3n2NJarY1SrH7oGN
112QgbfdBoawMUS5VmAqaSME6scYKeLXB2PXkwskykG1JtociNWA
11XgJ62pPzBedHSKmLG4BPskGcKAPztkrZbPbarXzGy3MuvERLt
112kDG77Pzbz1bwxSKp3KA3SKRVvGTiXo5JApzCdw72doTUo3eof
112sfqdUps2HWeEFht9rexsJYiSYUdBh3b4sR2LWFKkGiSiBHsFP
1128RWUZg15fr8aK3JeNGqKjJK8MUBFmtmbJ7AXgNnJg7BrDZawv
11H51UcyV32VoTWqREdxpEkDeALASuJBkq7svdp6RLmgTNKo7N2
11dWuNfr6jYvcmz7oTwcX8VbBHSFYKmHgeszh6ZP9UbkurfxCX7
11PVebj9PXdnJHH1irYnx7vZMgpKXntHDcC2HxHimy8wsWGYMfk
1126Zb1QGCszj7Gd4ixReKSKpWfVPK3MAGpfRQhKYdSYWwc7kvg8
112kmauFhwZkNFri6BFRyB3EiwswHjedEwovFgJTUWeLHqEwqVto
112qxYiiMg6o1rMtVtQbn2KW52zCrtSHnzmx5xpNY5kBEmwwh39W
116552ks8qUjAC6SWRp23jzkyTSnfVakWuB8cD2KoXHXSh9PMFD
11dHQLqFnJJcYiZvs6Z3ueWWgGxY2cYWRf19KKNWXPCLJDv1FTx
112wWywRDQbHF1tUgSiW6gwpeUpjgqJS7dPiZVdzCnATHjMUeuVG
11ZSgSuPWjRz4ZKpY7z3WzBBu3LSaG479T2rjqp3hGZ6Jt3pS5o
112hq4C6nN2eLDRuGucS6vxtM6VqwaZhzNfmm139iFdRyrGo4RSn
112Thj8HpJaZfJeYMLr1EjeEXFbVwZPbM7UTAHcfAZ3a4Jw7Vd87
1129YzTZ9fndsUg4kGYHshGV53uaA98bYG6xz886FEpH8b2AhUZg
11q4a4vMJHsiyBC9ojUGbLq8zSg47P9NKSYTiqCEe8aCkF2VJaw
11fHwfyDBXvrcCJhqvboLtLBAYALqVsbx1FULu7MfHvehqivM6n
112WdkSm8ASRqb2cq84Cdo1prefsLLVCd6qfz5gkriqZsbPakk9G
112PTzHVXxVU8vjfzA7KZ3Lyj3mGuZdXWkkpdd2P69Fhp9ujVLv
11BbCDYXe8hzetVxfHodiP53gF2oCVuLPUbBvBUDsyHm8D9dV4s
11VocEe46V9Nc1CXSzphf9fcvsKukcktaCMwrJSGhxmUd6cchpd
112NpbRSYhkGoispU6oen3KZT94PNxWKwPe5twWMq3YrB4Drdv9f
11TYs397W6ftHuMDQjk2Ha3C3U2yByPCFTS61ewj2Qzf7TrXaTq
112UtmWmrBtgCQzpC2gi8mE5WkyUXBPhXCkazeZF6Uu4mexgsT6J
112CfkDzTr7qqmmw6uNsgRmPa5KVZpZtzqN9EEXsMRXbYxTBcUQp
119EHDhfzMiQnLJRDBDYst6JLXdYmp5pBUyqUJcVFJ5Af2EKAks
11FKdQ4TcCGVUdbtpo9efCaMnAfZ598HGpCNsSumAguZ4KPmAmS
11mYsngPEszYSeh5m4bgCYLKHEYzJrDFFrrRcJ7v5A2Yt1hGkZV
113cPxfPmqPw2mxhQPva1PvyJX7UUsRa6fPKNaEG514LjEcAELE
112BVmXRvtfbwfqpy2ixXhEZugRRfXX1usQpXBBrdFwKeR95wvrN
112q8uxwdhrCAQpZqZ63Xg27q75Y68Fggr6PXSSnVawTuMxAKGFM
112HNNe9K3ERmrQLjzBXQpC6r6pLKSSvhi9xZVgcFvX7vbGPH8zt
11PgPggnBSnXzF75degLfsPfJE6jq6Mv1wmzoVUFKZ8aRjcxnuY
112am8Jxiu3Vq5gL3wfXu8KaBvJXsqukrL9f2mPt1MHP3kkTsdTe
Discord Handle
No response
Reason(s)

only PoC within cluster, despite (10 days x 10 hops) - many other spots around see map of cluster and other spots

all Pantherx

all asserted within three hours except for one hotspot which is asserted two days later. Aligned generally wallet by wallet

Witness of Witness analysis 10 days x 10 hops shows only interaction inside the cluster

The last spot is asserted an impossible (gamer mistake) 1500km distance away

Crowdspot analysis of first reported spot from Discord:

1 of he miner was number 1 gainer yesterday, 3hnt earn in 1 day!!! like someone said he mom should proud for him!!

What is the block chain spirit? Really not thinking about what you've done before. If there is a problem, or cheating is also a problem with the official rules. Or use a decentralized solution. Instead of reporting and rejecting lists. True de-centralization is what you should do in the future, no matter what you have done before. Use better systems to solve real problems. Not centralized reporting. There is already a technology to make hard forks, and blacklisted machines can produce other currencies. We'll join in other chains then. Dig another token


Refactor to compartmentalize tests into their package repositories, but allow them all to be run with coverage from develop monorepo root

The tests could then be run from here as a full test suite, and then run the package specific tests again in the subrepos to ensure nothing weird happened after merging. Note that some kind of trickery would need to be done to include the tests when splitting as test directories are excluded through export-ignore in .gitattributes.

Useful tests in hyde/hyde could be broad range tests for high level testing of the user experience.

This would tie in with adding back some workflows, see https://github.com/hydephp/framework/issues/538


Add prompt

Codecov Report

Merging #65 (dac5c25) into master (3f0080d) will decrease coverage by 7.19%.
The diff coverage is 93.68%.

@@            Coverage Diff             @@
##           master      #65      +/-   ##
==========================================
- Coverage   98.20%   91.00%   -7.20%
==========================================
  Files          32       36       +4
  Lines        1728     1946     +218
==========================================
+ Hits         1697     1771      +74
- Misses         31      175     +144

Flag
Coverage Δ

integration
?

unit
91.00% <93.68%> (+0.90%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.


Is this still working after Github added its image proxy?

http://blog.bitdeli.com/post/77717727361/on-githubs-image-proxy

See the note at the top of: https://github.com/igrigorik/ga-beacon#hands-on-example-google-analytics-for-github


It seems like it's not possible to await recv and send at the same time.

Here's a class I made recently:
  import asyncio

  class Read(object):
      def __init__(self, value):
          self.value = value

  class Write(object):
      def __init__(self, value):
          self.value = value

  class Client(object):
      def __init__(self, socket):
          self.socket = socket
          self.queue = asyncio.Queue()
          self.read_task = None
          self.write_task = None
          self.timeout = 1
          self.message = None

      def on_read(self, data):
          print("On read ", data)

      def on_write(self, data):
          print("On write ", data)

      async def event_loop(self):

          async def write():
              if not self.message:
                  self.message = await self.queue.get()

              await self.socket.send(self.message)
              self.message = None

          async def read():
              return await self.socket.recv()

          if not self.read_task:
              self.read_task = asyncio.create_task(read())

          if not self.write_task:
              self.write_task = asyncio.create_task(write())

          done, pending = await asyncio.wait(
              {self.read_task, self.write_task}, timeout=self.timeout
          )

          if self.read_task in done:
              self.on_read(await self.read_task)
              self.read_task = None

          if self.write_task in done:
              self.on_write(await self.write_task)
              self.write_task = None

Here if you set the timeout at 10 seconds you'll see the following.
Using a server like this one:
import websockets
import asyncio
import utils

async def echo(websocket, path):
    print("New connexion")

    client = utils.Client(websocket)

    for x in range(100):
        await client.queue.put("Job %d" % (x))

    while True:
        try:
            await client.event_loop()
        except Exception:
            print("Got exception")
            break

    print("Connection closed")

loop = asyncio.get_event_loop()
server = websockets.serve(echo, '<IP_ADDRESS>', 8000)
loop.run_until_complete(server)
loop.run_forever()

And a client like this one:
import websockets
import asyncio
import utils

class CustomClient(utils.Client):
    def on_read(self, data):
        self.queue.put_nowait(data)

async def connect():
    websocket = await websockets.connect('ws://localhost:8000')

    client = CustomClient(websocket)

    while True:
        await client.event_loop()

loop = asyncio.get_event_loop()
task = loop.create_task(connect())
loop.run_until_complete(task)

What's expected is as soon as a message is either read or written it should return from the pending job and continue...
What seems to be happening thought is that the both server and client will start awaiting for "recv". Both task will timeout after the provided timeout so if you had 10sec timeout it will wait 10sec before anything starts happening.
I didn't look at the code but it sounds as if there was a mutex on the socket that prevents reading/writing at the same time (asynchronously).
And since there is no timeout available it's not possible to tell the websocket library to abort a read that doesn't start reading for some time.
In my case, I'd rather have the websocket library timeout if it's not starting to receive a frame after some time. Because my current timeout works but it eventually make all requests very slow if they all have to timeout in recv. On the other hand a small timeout may make things faster due to less waiting between loops but if I was to receive a message longer than I can with the timeout it means I'll never receive the message or may be it could eventually get dropped and missed.
For example, if you set the timeout to None, it will create some kind of deadlock.  If you set the timeout to 0 it will not lock.

There's quite a lot of code and I don't have time to understand everything right now; however:

I'm not aware of such a limitation at this time;
this may help: https://websockets.readthedocs.io/en/stable/faq.html#how-do-i-set-a-timeout-on-recv

I'll try to take another look later.

I didn't have any doubts that you could read and write at the same time; here's the proof.
Server:
#!/usr/bin/env python

# WS server example

import asyncio
import logging
import websockets

logging.basicConfig(level=logging.DEBUG)

async def hello(websocket, path):

    async def send_hello():
        await asyncio.sleep(2)
        await websocket.send("Hello from server!")
        await asyncio.sleep(3)
        await websocket.send("How are you client?")

    task = asyncio.create_task(send_hello())

    await websocket.recv()
    await websocket.recv()

    await task

async def main():
    async with websockets.serve(hello, "localhost", 8765):
        await asyncio.Future()  # run forever

asyncio.run(main())

Client:
#!/usr/bin/env python

# WS client example

import asyncio
import logging
import websockets

logging.basicConfig(level=logging.DEBUG)

async def hello():
    uri = "ws://localhost:8765"
    async with websockets.connect(uri) as websocket:

        async def send_hello():
            await asyncio.sleep(3)
            await websocket.send("Hello from server!")
            await asyncio.sleep(2)
            await websocket.send("How are you client?")

        task = asyncio.create_task(send_hello())

        await websocket.recv()
        await websocket.recv()

        await task

asyncio.run(hello())

This works as intended. The sequence completes in 5 seconds.


Formula Alpha with cross sectional data

🌟 Feature Description
Formula Alpha with cross sectional data, such as:
"(-1 * Rank(CSRank($low), 9))"
Right now the processors could use cross sectional data, but the operators could only use the time series data.

Sorry, qlib's expression engine does not currently support this feature. Thank you for your issue.


Random station names!

Station names are now randomly generated.
:cl: moony

add: Station names are now randomly generated.

I'm not sure why that first commit is in but it is. Doesn't look like it'll do anything though


admin login screen is broad wide

Any more details? It's unclear what do you mean..

I'm closing this, since no OP activity


[backport] Support ROCm v4.3 in document

Backport of #5633 by @takagi

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit 7f90d08e7e93cb3fbbf2742d87009aa960d07f9d, target branch v9) failed with status FAILURE.


no video

no?

no video too

Can you give more information?

There is audio,no video

Tried to play a video on torrents by clicking on the play button.The player
pops up with audio playing bit without any video
On 27-May-2016 4:28 PM, "Tobias Baunbæk"<EMAIL_ADDRESS>wrote:

no?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mafintosh/playback/issues/110#issuecomment-222118960,
or mute the thread
https://github.com/notifications/unsubscribe/AJgGn52QY_P8ZBEsGhmsHwksi1NbadpQks5qFs5XgaJpZM4ImsjK
.

no video aswell just audio. how do i fix this ?

no video too.


Error running realsense-viewer

@MartyG-RealSense, @c-mendoza,  @dyamized, and @RealSenseSupport
I'm trying to install librealsense on M1 based mac and ran into some issues. I've been following the threads issue and #8090 and could successfully build the project so far. But am not able to run realsense-viewer. I additionally got the below error which I fixed by adding 'set(CMAKE_MACOSX_RPATH 1)' to the CMakeLists.txt file.
MACOSX_RPATH is not specified for the following targets: realsense2-gl
Current error:
'zsh: command not found: realsense_viewer'
I tried building the project using the XCode but it did not work.
Any help would be appreciated. Thanks in advance!!

Hi @jalapatip  there was a past case in which a RealSense MacOS user experienced the MACOSX_RPATH is not specified for the following targets: realsense2-gl error.  The solution that was suggested, which worked for them, was to remove -G Xcode from the CMake build instruction if you are using that build command.
https://github.com/IntelRealSense/librealsense/issues/5258#issuecomment-554918028

Hi @jalapatip There was a past case in which a RealSense MacOS user experienced the MACOSX_RPATH is not specified for the following targets: realsense2-gl error. The solution that was suggested, which worked for them, was to remove -G Xcode from the CMake build instruction if you are using that build command.
#5258 (comment)
Using this method may be the appropriate way to deal with that error.

Hello @MartyG-RealSense, thanks for the update. I did try without '-G Xcode' and the project compiled successfully. But I still couldn't open realsense-viewer.

Have you included -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=true in the CMake build instruction, please?
These commands build the SDK's example programs and tools, including the RealSense Viewer.

The following is the command that I'm using:
cmake .. -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=true -DBUILD_WITH_OPENMP=false -DHWM_OVER_XU=false
I also tried clearing the cache and re-building.

Could you check the location where the examples and tools are stored to confim that realsense-viewer is present there please.  You should be able to find it by doing a file search for realsense-viewer in MacOS.
https://support.apple.com/en-ie/guide/mac-help/mchlp2305/mac

I see examples and tools in the following locations:

/librealsense/tools/realsense-viewer
/librealsense/examples
/librealsense/build/tools/realsense-viewer
/librealsense/build/examples

Please go to the librealsense/build/tools/realsense-viewer folder and see if you can launch realsense-viewer from that folder instead of using the 'realsense-viewer' command.

I see a 'RealsenseToolsRealSenseViewer.xcodeproj' file in the folder and I tried to build and run it in XCode but it did not help. Anything else that I should be doing?

I have seen the zsh: command not found: realsense_viewer a couple of times in cases involving the Arm-based Nvidia Jetson and Ubuntu but not on MacOS.
I note from your CMake instruction that you are not telling it to build in Release mode, so it may be building by default in Debug mode instead.  Could you try including the command below in your CMake instruction to build librealsense in Release mode please?
-DCMAKE_BUILD_TYPE=Release

Thanks, I just tried adding '-DCMAKE_BUILD_TYPE=Release'. Unfortunately, it is still not working.
But when I repeated the above steps where I set the target as realsense-viewer and executed 'RealsenseToolsRealSenseViewer.xcodeproj', I'm only getting the following error:
clang: error: no such file or directory: '/Users/jalapatip/Work/DRCL/librealsense/build/libcurl/libcurl_install/lib/libcurl-d.a'
Command Ld failed with a nonzero exit code
I see that the 'librealsense2-gl.2.47.0.dylib' file in the librealsense/build/src/gl/Debug folder.

Okay, let's forget about RealsenseToolsRealSenseViewer.xcodeproj' as it is likely not related to the problem in this case.  I do not have a Mac computer to test with at my location, so I very much appreciate your patience.
Are you able to launch any built SDK programs other than the Viewer?

No problem, thank you so much for the help!!
I could run the examples and they are working fine.

Thanks very much!   If you are able to run the rs-capture example then that would likely rule out the possibility of the problem being related to OpenGL graphics, as the Viewer and rs-capture both make use of OpenGL.
Have you tested the Depth Quality Tool successfully, as this has a similar design to the Viewer tool.

Yes, I could run the rs-capture example and it is working fine.

I note that you already tried cleaning the CMake cache as https://github.com/IntelRealSense/librealsense/issues/8090#issuecomment-837115091 suggested regarding an error with libcurl_install/lib/libcurl-d.a but this did not correct the problem for you.  In the comment below that link, the RealSense user thought that they had already performed the clean but repeating the clean removed the problem.

I tried cleaning the cache and when it did not work, I deleted the build folder and re-built the package just to be sure. It did not fix the issue for me. Also, I see that the build is for arm64.
Link realsense-viewer (arm64) 0.1 seconds
Ld /Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/Debug/realsense-viewer normal (in target 'realsense-viewer' from project 'RealsenseToolsRealSenseViewer')
cd /Users/jalapatip/Work/DRCL/librealsense/tools/realsense-viewer
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -target arm64-apple-macos11.3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -L/Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/Debug -F/Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/Debug -filelist /Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/RealsenseToolsRealSenseViewer.build/Debug/realsense-viewer.build/Objects-normal/arm64/realsense-viewer.LinkFileList -Xlinker -rpath -Xlinker /Users/jalapatip/Work/DRCL/librealsense/build/src/gl/Debug -Xlinker -rpath -Xlinker /Users/jalapatip/Work/DRCL/librealsense/build/Debug -Xlinker -rpath -Xlinker /opt/homebrew/lib -Xlinker -object_path_lto -Xlinker /Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/RealsenseToolsRealSenseViewer.build/Debug/realsense-viewer.build/Objects-normal/arm64/realsense-viewer_lto.o -Xlinker -no_deduplicate<EMAIL_ADDRESS>-Wl,-search_paths_first -Wl,-headerpad_max_install_names /Users/jalapatip/Work/DRCL/librealsense/build/common/fw/Debug/libfw.a -framework OpenGL -framework OpenGL /Users/jalapatip/Work/DRCL/librealsense/build/src/gl/Debug/librealsense2-gl.2.47.0.dylib /Users/jalapatip/Work/DRCL/librealsense/build/Debug/librealsense<IP_ADDRESS>.dylib /opt/homebrew/lib/libglfw.3.3.dylib /Users/jalapatip/Work/DRCL/librealsense/build/libcurl/libcurl_install/lib/libcurl-d.a<EMAIL_ADDRESS><EMAIL_ADDRESS>-Xlinker -no_adhoc_codesign -Xlinker -dependency_info -Xlinker /Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/RealsenseToolsRealSenseViewer.build/Debug/realsense-viewer.build/Objects-normal/arm64/realsense-viewer_dependency_info.dat -o /Users/jalapatip/Work/DRCL/librealsense/build/tools/realsense-viewer/Debug/realsense-viewer
clang: error: no such file or directory: '/Users/jalapatip/Work/DRCL/librealsense/build/libcurl/libcurl_install/lib/libcurl-d.a'
Command Ld failed with a nonzero exit code

And you have followed the suggestion in https://github.com/IntelRealSense/librealsense/issues/8090#issuecomment-836892782 to modify CMake/external_libcurl.cmake to add the line below after line 35 of that file?
-DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl

Yes
set(CURL_FLAGS -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DUSE_WIN32_LDAP=OFF -DHTTP_ONLY=ON -DCURL_ZLIB=OFF -DCURL_DISABLE_CRYPTO_AUTH=ON -DCMAKE_USE_LIBSSH2=OFF -DBUILD_TESTING=OFF -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl)

I believe that at the tine of the https://github.com/IntelRealSense/librealsense/issues/8090 case, the SDK version being used was 2.44.0.  So 2.44.0 could be tested with the Mac M1 procedure to see whether the problem is one introduced since 2.44.0.

Hey, reverting to 2.44 worked!! Thank you so much for the help!!

That's excellent news, @jalapatip - thanks very much for the update!

Hey, reverting to 2.44 worked!! Thank you so much for the help!!

Hi! I also meet the problem like yours "zsh: command not found: realsense_viewer". I wonder how can I check and revert the version of SDK?


[FEATURE] I need MORE CONTROL over outpainting. Can you make a ControlNet level of control for OUTpainting (using an input image)

Hello,
Is it possible to use an input image as a reference for controling how the outpaining image will be?
Let me give an example, let's take this image:

I would like to outpaint the right side but I want to use an image to control what will be outpainted:

So the input image I have to use is this one:

Same thing with this example:

Let's suppose I did not have any idea what is the rest of the image, then we can input an image to control what is the outpaining gonna do:

Outpainted image:

The actual outpaint method you described with the use of the llama thing is random and has not control of what is going to be outpainted except for the prompt and usual parameters.
Can you make something like what I described?
Thanks
@lllyasviel

Really? I dont understand how no one has ever talked about this, or did a tutorial. Nice I will try to explore it

I think this is a better fit for the discussion section of the Automatic1111 extension: https://github.com/Mikubill/sd-webui-controlnet/discussions
(great idea btw!)


MINOR: fix cuda crossbow build

Rationale for this change
#37365 was built locally using a newer version of the CUDA driver API than the crossbow builds run with causing the crossbow build to fail due to a change in macro names. This puts the macro name back to allow it to build with the older version of the cuda driver api.

@github-actions crossbow submit ubuntu-cuda-cpp

@github-actions crossbow submit cuda

@github-actions crossbow submit *cuda*

@github-actions crossbow submit test-cuda-python

It seems that this has many changes to say "MINOR".
https://github.com/apache/arrow/blob/main/CONTRIBUTING.md#Minor-Fixes
Could you open an issue for this?

@pitrou @AlenkaF @jorisvandenbossche I haven't been able to work out why the include path for cuda.h isn't getting included properly for the pyarrow python build here. The change I made caused the cuda.h include to now be exposed to the cython build (previously it was only in a .cc file on the C++ side so the cython build never needed to include it through cuda_api.h). Unfortunately it seems i'm not familiar enough with the cython/pyarrow build to work this out on my own.
Running tests myself locally I don't have any problems building it with a mamba environment, so I'm not sure what I'm missing. Any of you have any ideas?

First thing I would try is adding the header file in the install of the cmake
https://github.com/apache/arrow/blob/c0998b1c94260284a624da6b3ddee6b59e5c4558/cpp/src/arrow/gpu/CMakeLists.txt#L84
as it is not being installed currently (https://github.com/ursacomputing/crossbow/actions/runs/6042448301/job/16397574982#step:5:6699).
I think this has to be updated here https://github.com/apache/arrow/blob/c0998b1c94260284a624da6b3ddee6b59e5c4558/cpp/src/arrow/gpu/CMakeLists.txt#L45 or here:
https://github.com/apache/arrow/blob/c0998b1c94260284a624da6b3ddee6b59e5c4558/cpp/src/arrow/gpu/CMakeLists.txt#L81-L84

How about this?
diff --git a/cpp/src/arrow/gpu/ArrowCUDAConfig.cmake.in b/cpp/src/arrow/gpu/ArrowCUDAConfig.cmake.in
index bb36abf24..626c536a0 100644
--- a/cpp/src/arrow/gpu/ArrowCUDAConfig.cmake.in
+++ b/cpp/src/arrow/gpu/ArrowCUDAConfig.cmake.in
@@ -30,6 +30,10 @@ include(CMakeFindDependencyMacro)
 find_dependency(Arrow)
 if(CMAKE_VERSION VERSION_LESS 3.17)
   find_package(CUDA REQUIRED)
+  add_library(ArrowCUDA::cuda_driver SHARED IMPORTED)
+  set_target_properties(ArrowCUDA::cuda_driver
+                        PROPERTIES IMPORTED_LOCATION "${CUDA_CUDA_LIBRARY}"
+                                   INTERFACE_INCLUDE_DIRECTORIES "${CUDA_INCLUDE_DIRS}")
 else()
   find_package(CUDAToolkit REQUIRED)
 endif()
diff --git a/cpp/src/arrow/gpu/CMakeLists.txt b/cpp/src/arrow/gpu/CMakeLists.txt
index 2556f30f0..a5b176793 100644
--- a/cpp/src/arrow/gpu/CMakeLists.txt
+++ b/cpp/src/arrow/gpu/CMakeLists.txt
@@ -32,8 +32,11 @@ endif()
 set(ARROW_CUDA_LINK_LIBS arrow::flatbuffers)
 if(CMAKE_VERSION VERSION_LESS 3.17)
   find_package(CUDA REQUIRED)
-  set(ARROW_CUDA_SHARED_LINK_LIBS ${CUDA_CUDA_LIBRARY})
-  include_directories(SYSTEM ${CUDA_INCLUDE_DIRS})
+  add_library(ArrowCUDA::cuda_driver SHARED IMPORTED)
+  set_target_properties(ArrowCUDA::cuda_driver
+                        PROPERTIES IMPORTED_LOCATION "${CUDA_CUDA_LIBRARY}"
+                                   INTERFACE_INCLUDE_DIRECTORIES "${CUDA_INCLUDE_DIRS}")
+  set(ARROW_CUDA_SHARED_LINK_LIBS ArrowCUDA::cuda_driver)
 else()
   # find_package(CUDA) is deprecated, and for newer CUDA, it doesn't
   # recognize that the CUDA driver library is in the "stubs" dir, but
@@ -61,6 +64,7 @@ add_arrow_lib(arrow_cuda
               ${ARROW_CUDA_SHARED_LINK_LIBS}
               SHARED_INSTALL_INTERFACE_LIBS
               Arrow::arrow_shared
+              ${ARROW_CUDA_SHARED_LINK_LIBS}
               # Static arrow_cuda must also link against CUDA shared libs
               STATIC_LINK_LIBS
               ${ARROW_CUDA_LINK_LIBS}

@github-actions crossbow submit test-cuda-python

@kou thanks! Your cmake changes fixed it perfectly! also I agree completely that this has expanded beyond the scope of a MINOR change. I'll create an issue for it.

@github-actions crossbow submit test-cuda-python


Added operation to add Border to elements that don't have them

TODO:
It would be nicer if the border properties were auto displayed and the View.Border automatically created when the properties are changed rather than needing an explicit operation
Also needs tests

I think I improved this a little by invoking the BorderChanged event for all properties except for the Child property, in this pr https://github.com/gui-cs/Terminal.Gui/pull/1862.

This PR was about adding borders to Views that do not currently have borders.  I think it is too old and out of date to be of value now.  We could revisit this issue later but will probably be easier to start again (especailly since it is only 1 commit!).
Also I'm pretty sure this PR was responsible for #22


refactor: Release 24.3 changes

Part of https://github.com/stackabletech/issues/issues/542
- [ ] Update `stackableRelease` to 24.3
- [ ] Replace all `0.0.0-dev` image tags with `24.3`
- [ ] ~Push `docker.stackable.tech/demos/spark-k8s-with-kafka-and-iceberg:3.5.1-stackable0.0.0-dev`~
- [ ] ~Push `docker.stackable.tech/demos/spark-k8s-with-scikit-learn:3.5.1-stackable0.0.0-dev`~
- [x] Push `docker.stackable.tech/demos/nifi:1.25.0-postgresql`

This is now waiting on release


Remove Platform from client

Similar to #74 - remove Platform from the client as well. AKA: don't always default to Linux.
PS: make sure to verify the server side can put in the default value for this as well.

So either (1) make os_type in Platform an optional parameter with a default value (current implementation, also preferred behavior IMO); or (2) make it mandatory without a default value.

Closed, not relevant anymore.


add edition field for the version information

Signed-off-by: zhangjinpeng1987<EMAIL_ADDRESS>
What problem does this PR solve?
Add the edition field for the version information.
What is changed and how it works?
Add the edition field for the version information.
Related changes

Need to cherry-pick to the release branch

Check List
Tests

No code

Side effects

No

Release note

No release note

It's better to use the EDITION environment variable name. https://github.com/pingcap/tidb/pull/17170

It's better to use the EDITION environment variable name. pingcap/tidb#17170

I think it's better to keep the existing style.

/merge


Add catalog-backend-module-okta

I didn't add this plugin to the demo site for obvious reasons. I could see us having some commented out code that says "uncomment and provide okta api env vars to ingest your org into the demo site", though.

:tada: This PR is included in version 1.0.0 :tada:
The release is available on npm package (@latest dist-tag)
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0 :tada:
The release is available on<EMAIL_ADDRESS>Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0 :tada:
The release is available on<EMAIL_ADDRESS>Your semantic-release bot :package::rocket:


Repair broken loader, since #388

Loader broke with #388, this fixes that.
However, there's reference and initialization to global state happening from within the GUI; that isn't nice. Initialisation should happen during api.install(), and all state should reside in avalon/__init__.py. Leaving this for now as technical debt.

Note that the initialization happens during UI as it requires an active Qt Application instance to exist which does not have to be true during api.install () as it could run command-line only without graphical interfaces.

Note that the initialization happens during UI as it requires an active Qt Application instance to exist

Hmmm, I think those two, refresh_family_config and refresh_group_config does not require an App instance to be existed, they were just updating icons.

It's looking like they create actual instances of Qt object.
https://github.com/getavalon/core/blob/48823f4d6369b9648e74709d2f63d69b89a8bcf8/avalon/tools/loader/lib.py#L96
That should probably happen within the GUI itself, rather than in conjunction with making database queries.

I just scanned the differences between before & after  #388(#418), and there's a bit more broken stuff.
The avalon.tools.loader.app has lost lots of things which was from #391. And looks like only app.py has been affected, others does not.

It's looking like they create actual instances of Qt object.

It creates actual Qt icons, yes. That's why it needs a QApplication instance.
This was also one of those things that I believe is referenced across multiple tools and it's to optimize the loading time of the icons. You wouldn't want do to that in the .data() method of the models as those would then be recreated very very often.
Basically it's persisting the icons for reuse.

The avalon.tools.loader.app has lost lots of things which was from #391

Oh that's not good. I wonder if everything was lost from that PR? It's possible that when merging 388 that the wrong app.py was picked; merging an older one instead of the current one. Having a look at this now. Which reminds me we need some way of launching tools without a host for debugging and development, something like python -m pyblish_qml --demo. Something to stress test every supported function.

You wouldn't want do to that in the .data() method of the models as those would then be recreated very very often.

No that's true, but there may be a better way to solve this, whilst at the same time making it clear that it is an optimisation rather than functional feature; by using a cache.
def data(self, index, parent):
  ...
  if role == DecorationRole:
    try:
      return self._icon_cache[index]
    except KeyError:
      icon = heavy_compute_of_qicon()
      self._icon_cache[index] = icon
      return icon

by using a cache.

This was exactly that. A cache for re-use, but then across multiple tools. Feel free to improve and submit a PR

It creates actual Qt icons, yes. That's why it needs a QApplication instance.

Ah, yes. Sorry, did not know that, thought only widgets were required. :P

I wonder if everything was lost from that PR?

Others are fine, just checked with branch comparing. :)

This was exactly that. A cache for re-use, but then across multiple tools. Feel free to improve and submit a PR

Yes, no sorry. I mean an explicit cache; something others can see "ah, that's an optimisation". There is currently no indication that these refresh_ functions do anything like that, and certainly should not be throwing errors if they fail. That's not a cache, that's magic.


fix: no panic on missing current dir

The shell is spammed with a panic message after each command if the current directory is not available, with this PR simply mise ignores/logs if that is the case instead of a hard crash.
I noticed the issue while browsing a remote snapshot directory tree that was FUSE mounted by kopia.

I've just realized that global/system config could still be read, considering this is such a niche case I assume it doesn't matter, still would it be worth it to open a separate PR for that?

we should probably support that. Is there a user that is going to have problems with it? I would expect probably not for a long time, but I also think it will happen one day and if we don't fix this now I think it would be very hard to diagnose.