error MSB6006: "cmd.exe" exited with code 1.

im building XGBoost with gpu support on windows 10 and i've installed cuda and im making using cmake with the following command:
cmake .. -G"Visual Studio 15 2017 Win64" -DUSE_CUDA=ON

and it runs successfully, but after i try to build it using the following command:
cmake --build . --target xgboost --config Release --clean-first

it gives the following error:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171, 5): error MSB6006: "cmd.exe" exited with code 1. [C:\Users\Ali J\code\xgboost\build\gpuxgboost.vcxproj]
"C:\Users\Ali J\code\xgboost\build\xgboost.vcxproj" (default target) (1) ->
"C:\Users\Ali J\code\xgboost\build\gpuxgboost.vcxproj" (default target) (4) ->
(CustomBuild target) ->
  C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(17 1,5): error MSB6006: "cmd.exe" exited with code 1. [C:\Users\Ali J\code\xgboost\build\gpuxgboost.vcxproj]

    61 Warning(s)
    1 Error(s)

any ideas on how to fix this?

just download the daily builds at http://www.picnet.com.au/blogs/guido/post/2016/09/22/xgboost-windows-x64-binariesfor-download/

Could you please tell me how to fix the compile error? Thank you so much ^_^


App store@layout fixed

Coverage decreased (-0.2%) to 46.393% when pulling 7c07d929723693641cb5002906c7eeafa2971d53 on nikage:app-store@layout-fixed into 24475810fb15e1918f2f40a277077e9f9a86b52b on supergiant:master.


[video_player] Implement support for RTSP on Android

Adds RTSP streaming support for Android.
List which issues are fixed by this PR. You must list at least one issue.
https://github.com/flutter/flutter/issues/82567
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[ ] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides. (Note that unlike the flutter/flutter repo, the flutter/plugins repo does use dart format. See plugin_tool format)
[x] I signed the CLA.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
[ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@googlebot I signed it!

The formatter crashes on my windows machine. I'm 100% fine with someone else running it and pushing it to this branch.

Tests pass. This is ready for review.

@stuartmorgan I'm not sure if you're a reviewer or not but I'd like one.

Ah. I missed the test part

I'm not sure if this was intended to be ready for review again (I see you pushed another change, but since you didn't comment I'm not sure if it's still a WIP), but it'll need coverage of the native changes as well. E.g., extracting buildMediaSource to a unit-testable utility to test the mappings.

It is not (since it's missing tests). I'm not sure if I have the time to
write them anytime soon.
On Wed, Jul 7, 2021, 8:48 AM stuartmorgan @.***> wrote:

I'm not sure if this was intended to be ready for review again (I see you
pushed another change, but since you didn't comment I'm not sure if it's
still a WIP), but it'll need coverage of the native changes as well. E.g.,
extracting buildMediaSource to a unit-testable utility to test the
mappings.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/flutter/plugins/pull/3933#issuecomment-875573952, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBACRA5DJ4FWKO43V3I4MDTWREJBANCNFSM45FK5U4A
.

FYI for when you do have time to come back to this—or when someone else has time to add the missing test—I'm extracting the ExoPlayer-update-related changes you made here to https://github.com/flutter/plugins/pull/4141 since we're having build issues caused by the server hosting the older version of ExoPlayer (which is why I was looking at this PR again). So this will end up with conflicts, but they should be trivial to resolve with a rebase.
(I cherry-picked the commit and then reverted the feature change portions, so your authorship is retained. Thank you for the contribution!)

@kjeremy I see you pushed an update here at some point; is this ready for review?

I haven't looked at this in a while and do not have the time to pursue. If
I recall some tests were wanted. Feel free to take it over.
On Tue, Sep 14, 2021, 3:08 PM stuartmorgan @.***> wrote:

@kjeremy https://github.com/kjeremy I see you pushed an update here at
some point; is this ready for review?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/flutter/plugins/pull/3933#issuecomment-919437852, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBACREAOIV567N32PYR4VDUB6MRZANCNFSM45FK5U4A
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

I noticed that the last push was "Add test"; I wasn't sure if that was a WIP (since you hadn't commented about it being ready for review), or addressed the previous comments.

Maybe it's good to go then.
On Tue, Sep 14, 2021, 3:41 PM stuartmorgan @.***> wrote:

I noticed that the last push was "Add test"; I wasn't sure if that was a
WIP (since you hadn't commented about it being ready for review), or
addressed the previous comments.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/flutter/plugins/pull/3933#issuecomment-919459366, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBACREQ3O5RRKD55YNU4MLUB6QPHANCNFSM45FK5U4A
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

I took a look at the current diff; there's a Dart test that the string is passed to the method channel, but it also needs either an integration test or Java unit test since currently the actual functionality of the change doesn't have any test coverage.
I'll leave this open to adopt since it's nearly done though. Anyone in the community is welcome to contribute a test to get this landed sooner, otherwise someone on the team will add tests when we get to this point in the backlog.

hi, I need this feature and I couldn't find any other player that plays RTSP stream properly.
Is there any estimation on when this feature will be implemented?

Is there any estimation on when this feature will be implemented?

Please see my comment directly above.

@blasten If you could allocate eng resources to getting this over the line (adding the necessary testing), that would be great; it should be relatively straightforward.

This isn't currently a priority for the team, as this isn't a high-requested feature, so we're not going to be able to take over the PR. I'm going to close this, but I encourage anyone interested in this feature to open a new PR based on this one, but including tests that address https://github.com/flutter/plugins/pull/3933#issuecomment-923245081.


Adding GDevelop to the javascript game engines

Adding GDevelop to the collection javascript game engines.
Thank you for contributing! Please confirm the following:

[X] I followed the contributing guidelines: https://github.com/github/explore/blob/master/CONTRIBUTING.md
[X] I have no affiliation with the project I am suggesting (as a maintainer, creator, contractor, or employee).

Which change are you proposing?

[X] Suggesting edits to an existing topic or collection
[ ] Curating a new topic or collection

Editing an existing topic or collection
I'm suggesting these edits to an existing topic or collection:

[ ] Image (and my file is *.png, square, dimensions 288x288)
[X] Content (and my changes are in index.md)

I've seen a previous pull request from the author of GDevelop that have been rejected because he is the author. I joined 3 game jams this year and I have seen GDevelop being used every time, so I think it has its spot in the list.

Please note: we will close your PR without comment if you do not check the boxes above and provide ALL requested information.

Thanks so much for your first contribution!  You rock, @Tokyonono!

<EMAIL_ADDRESS>

Add game

Adding GDevelop to the collection javascript game engines.


Update known-issues.md

fixing details around this known issue
Pull request guidance
Thank you for submitting your contribution to our support content! Our team works closely with subject matter experts in CSS and PMs in the product group to review all content requests to ensure technical accuracy and the best customer experience. This process can sometimes take one or more days, so we greatly appreciate your patience.
We also need your help in order to process your request as soon as possible:

We won't act on your pull request (PR) until you type "#sign-off" in a new comment in your pull request (PR) to indicate that your changes are complete.

After you sign off in your PR, the article will be tech reviewed by the PM or SME if it has more than minor changes. Once the article is approved, it will undergo a final editing pass before being merged.

@AnyaNovicheva1 'it's' i can't edit but those should be changed it 'its'

@AnyaNovicheva1, I made some changes, please help check whether the changes are accurate.

@AnyaNovicheva1, PR is merged. Thanks.


Feature Request: HTML message in Simple Dialogs

Feature Request
Would like to be able to use html strings as the message for the simple dialogs for the TdDialogService. Would allow use of bold () and line breaks () and others in the message.
ex
openConfirm(): void {
    this._dialogService.openConfirm({
      message: 'This is how simple it is to create a confirm with this wrapper service.
br>Do you agree?',
      disableClose: true | false, // defaults to false
      viewContainerRef: this._viewContainerRef, //OPTIONAL
      title: 'Confirm', //OPTIONAL, hides if not provided
      cancelButton: 'Disagree', //OPTIONAL, defaults to 'CANCEL'
      acceptButton: 'Agree', //OPTIONAL, defaults to 'ACCEPT'
    }).afterClosed().subscribe((accept: boolean) => {
      if (accept) {
        // DO SOMETHING
      } else {
        // DO SOMETHING ELSE
      }
    });
  }

We can probably set it as innerHTML and sanitize it instead of as a string to support this.

What's the status on this right now? I was looking for this feature but sad to see it's not available yet. Thanks in advance!

i wonder at what point we need to draw the line for "simple" dialogs, and just use the material dialog API for things like HTML templates https://material.angular.io/components/dialog/overview

You're completely right @kyleledbetter ;) I'll look at that instead!

I think more complex dialogs should be built from the material dialog. The covalent docs should probably include a link to the material service though.

I guess as @kyleledbetter mentions it's to decide how simple is "simple".
ie "This is too complex" to be used in a simple dialog

+1 on this.  I really just want to embed a link in it.

Keeping this open for debate if should add more functionality to "simple dialog"

+1 on this.


Make PanModalPresentationController subclassable

Summary
The PanModalPresentationController is public so it is not subclassable, so trying to do a custom pan modal presentation (see here) that requires changes in the presentation controller is not possible.
A possible scenario where this is could be used is trying to present a pan modal inside a form sheet on an iPad. Creating a subclass of PanModalPresentationController such as:
class EmbeddedPanModalPresentationController: PanModalPresentationController {
    	override var shouldPresentInFullscreen: Bool {
		return false
	}
}

would allow this customization easily.
This PR changes the PanModalPresentationController so it is open instead of public to allow subclassing for further customizations, without changing how foundational PanModal is.
Requirements

[x] I've read and understood the Contributing Guidelines and have done my best effort to follow them.

[x] I've read and agree to the Code of Conduct.

[x] I've written tests to cover the new code and functionality included in this PR.

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


[Enhancement] Add property prefix in Iceberg rest catalog

We add some properties' prefix iceberg.rest-catalog. for iceberg rest catalog.
Now we can create tabular in below way:
create external catalog tabular properties (
	"type"="iceberg",
	"iceberg.catalog.type"="rest",
	"iceberg.rest-catalog.uri"="https://api.tabular.io/ws",
	"iceberg.rest-catalog.credential"="t-5Ii8e32E-D5tT9m0",
	"iceberg.rest-catalog.warehouse"="chenao",
	"aws.s3.region"="us-west-2",
	"aws.s3.access_key"="AKIST",
	"aws.s3.secret_key"="LJUcvytmacTuf+"
);

Of course we will compatible with original way:
create external catalog tabular properties (
	"type"="iceberg",
	"iceberg.catalog.type"="rest",
	"uri"="https://api.tabular.io/ws",
	"credential"="t-5Ii8e32E-D5tT9m0",
	"warehouse"="chenao",
	"aws.s3.region"="us-west-2",
	"aws.s3.access_key"="AKIST",
	"aws.s3.secret_key"="LJUcvytmacTuf+"
);

What type of PR is this:

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

Checklist:

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

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

Bugfix cherry-pick branch check:

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

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

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

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/connector/iceberg/rest/IcebergRESTCatalog.java
0
7
00.00%
[64, 65, 66, 67, 68, 69, 71]


Multi-cut vias are not yet supported in the detail router

Description
As stated in title, currently OpenROAD doesn't support multi-cut vias which could be a crucial functionality as shown in the figure below.(In FlewPR.cpp) So I believe it's impossible to set constraint in ndr rule for multi-cut vias since it's basically not support in the OpenROAD router.

Suggested Solution
Further modification need to be done for the router or create a new router just for multi-cut vias.
Additional Context
No response

This is a known limitation to the detailed router and it has been discussed before. It would take some work to implement proper via selection, but we haven't had anyone to commit significant work on this.
I think @antonblanchard may be looking at better via selection such as in #2940 and #3021 but I think it was mostly geared towards single-cut vias. PDN definitely has support for multi-cut vias, but that's completely separate code.
The main issue is that there are some parts of DRT which are hard-coded to assume single-cut vias, and gc is not set up to check for multi-cut rules. dr may need adjustments to the costing to use multi-cut vias as well.
If there is someone to someone to look at these issues, then DRT could have better support for multi-cut vias.

I had a conversation with someone on the opensilicon Slack about how to force DRT to use double-cut vias. What they ended up doing was making a single-cut via with the same footprint as the double-cut via, then after DRT ran, they replaced the single-cut via with the double-cut via and checked for DRC errors. That process seemed to work for them, but largely because their PDK had uncomplicated via spacing rules. In more advanced PDKs, this process may not work.

For this use model I expect the user will give the vias they want the router to use in the form of an NDR.  It will require enhancing the router to support the rules related to such vias but via selection itself will be a user responsibility (at least for now).   At least gc will have to be smarter if not dr.

I think the current NDR rule doesn't really support user to specify custom vias for each layer. I couldn't find any exmaple in OpenROAD and I have tried the via name in tlef file. But it doesn't work. I'm not sure if I'm using it in the right way tho:
create_ndr -name NDR_5W_5S
-spacing { *3 }
-width { *3 }
-via { L1M1_PR_C M1M2_PR M2M3_PR M3M4_PR M3M5_PR }
So in the via input, I just put in all the vias use for connection consecutively.

@maliberty I was wondering if create_ndr is documented somewhere. I could not find any mention of it in the docs. Would you please shed some light on how to use it? My goal is to be able to insert at least double cut vias during routing. Any example or pointer to documentation would be welcome.

For this use model I expect the user will give the vias they want the router to use in the form of an NDR. It will require enhancing the router to support the rules related to such vias but via selection itself will be a user responsibility (at least for now). At least gc will have to be smarter if not dr.

We only support width and spacing ndrs currently.

I was under the impression when reading #3250, that support for custom vias was added... Is my understanding wrong?

We only support width and spacing ndrs currently.

@eder-matheus please comment on the via support in NDRs.

@gkamendje The mentioned PR added the ability to specify custom vias in an NDR and assign it to specific nets. You can see an example of how to use it here: https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/drt/test/ndr_vias2.tcl#L9-L19.
However, as @maliberty commented, the detailed router still needs to get official support for multi-cut vias, so you may find issues when using it.

@eder-matheus thanks for the hint. I am using the ORFS. What would be the best place to create the NDRs? Should they be created in pre_global_route.tcl file?

@gkamendje The mentioned PR added the ability to specify custom vias in an NDR and assign it to specific nets. You can see an example of how to use it here: https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/drt/test/ndr_vias2.tcl#L9-L19.
However, as @maliberty commented, the detailed router still needs to get official support for multi-cut vias, so you may find issues when using it.

@eder-matheus thanks for the hint. I am using the ORFS. What would be the best place to create the NDRs? Should they be created in pre_global_route.tcl file?

@gkamendje The mentioned PR added the ability to specify custom vias in an NDR and assign it to specific nets. You can see an example of how to use it here: https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/drt/test/ndr_vias2.tcl#L9-L19.
However, as @maliberty commented, the detailed router still needs to get official support for multi-cut vias, so you may find issues when using it.

@gkamendje Adding it to the pre_global_route.tcl file should be fine. Just remember to make sure that the env var PRE_GLOBAL_ROUTE is correctly defined with your script.
https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/flow/scripts/global_route.tcl#L5-L7

Yep makes sense. One last question. I have seen the following syntax for create_ndr
-spacing { *3}
-width { *3}

Does this means that in this case the default width and spacing rules are multiplied by 3 for all layers?

@eder-matheus thanks for the hint. I am using the ORFS. What would be the best place to create the NDRs? Should they be created in pre_global_route.tcl file?

@gkamendje Adding it to the pre_global_route.tcl file should be fine. Just remember to make sure that the env var PRE_GLOBAL_ROUTE is correctly defined with your script.
https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/flow/scripts/global_route.tcl#L5-L7

Yep makes sense. One last question. I have seen the following syntax for create_ndr
-spacing { *3}
-width { *3}

Does this means that in this case the default width and spacing rules are multiplied by 3 for all layers?

Yes, though I believe you don't need it to add that into your NDRs. AFAIK, you can just set the vias.

Hi guys,
I am following up on the topic regarding multi-cut vias. This is indeed quite typical to use double-cut vias instead of single ones to improve yield.
This is what we have been doing in the past using commercial tools, and when not possible reverting back to single vias.
Is there any progress on this since the last exchange?
I believe this is indeed a much needed feature, but correct me if I am wrong.
Thanks for your help

There hasn't been progress on this.  It is an important feature for high volume production where yield is important.  DRC rule completeness has been a higher priority for our limited routing team resources.  We are always open to community contributions.


no render of message attachments in direct message but the desktop version did

Submit feature requests to http://www.mattermost.org/feature-requests/. File non-security related bugs here in the following format:
Summary
I made a bot to send a message attachment below,the android version didn't show the attachment but the desktop version did.
{
  "attachments": [
    {
      "fallback": "test",
      "color": "#FF8000",
      "pretext": "This is optional pretext that shows above the attachment.",
      "text": "This is the text of the attachment. It should appear just above an image of the Mattermost logo. The left border of the attachment should be colored orange, and below the image it should include additional fields that are formatted in columns. At the top of the attachment, there should be an author name followed by a bolded title. Both the author name and the title should be hyperlinks.",
      "author_name": "Mattermost",
      "author_icon": "http://www.mattermost.org/wp-content/uploads/2016/04/icon_WS.png",
      "author_link": "http://www.mattermost.org/",
      "title": "Example Attachment",
      "title_link": "http://docs.mattermost.com/developer/message-attachments.html",
      "fields": [
        {
          "short": false,
          "title":"Long Field",
          "value":"Testing with a very long piece of text that will take up the whole width of the table. And then some more text to make it extra long."
        },
        {
          "short":true,
          "title":"Column One",
          "value":"Testing"
        },
        {
          "short":true,
          "title":"Column Two",
          "value":"Testing"
        },
        {
        "short":false,
        "title":"Another Field",
        "value":"Testing"
        }
      ],
      "image_url": "http://www.mattermost.org/wp-content/uploads/2016/03/logoHorizontal_WS.png"
    }
  ]
}

Environment Information
Device Name: LG Stylo 3
OS Version: Android 7.0
Mattermost App Version: 1.5.1
Mattermost Server Version: 4.4.5
Steps to reproduce
1.bot post a message attachment in direct message ,the android version show nothing but the desktop version show.
1.bot post a message attachment in public chanel,the android version show and  the desktop version show.
Expected behavior
bot post a message attachment in direct message ,the android version should the message attachment
Observed behavior
bot post a message attachment in direct message ,the android version show nothing

sorry for this for i used a diffrent user (non admin user)test on  android.


Issue with deriveEnumerationDecoder

I tried to use the new deriveEnumerationDecoder on an enum that was auto-generated by ScalaPB from a protobuf schema, but it fails to compile:
[error] /Users/chris.birchall/code/circe-scalapb-enum-issue/src/test/scala/CirceSpec.scala:11: could not find Lazy implicit value of type io.circe.generic.extras.decoding.EnumerationDecoder[protobuf.event.EventType]
[error]     implicit val decoder: Decoder[EventType] = deriveEnumerationDecoder[EventType]
[error]                                                                        ^
[error] one error found

Minimal reproduction here: https://github.com/cb372/circe-scalapb-enum-issue
The generated code looks pretty similar to the example given in the 0.6.0-RC1 release notes, so I'm not sure why this doesn't work. I thought it might be SI-7046 related, but I've tried with TLS to no avail.
Here's the generated code for the enum:
sealed trait EventType extends com.trueaccord.scalapb.GeneratedEnum {
  type EnumType = EventType
  def isQueued: Boolean = false
  def isDelivered: Boolean = false
  def isOpened: Boolean = false
  def isUnrecognized: Boolean = false
  def companion: com.trueaccord.scalapb.GeneratedEnumCompanion[EventType] = EventType
}

object EventType extends com.trueaccord.scalapb.GeneratedEnumCompanion[EventType] {
  implicit def enumCompanion: com.trueaccord.scalapb.GeneratedEnumCompanion[EventType] = this
  @SerialVersionUID(0L)
  case object QUEUED extends EventType {
    val value = 0
    val index = 0
    val name = "QUEUED"
    override def isQueued: Boolean = true
  }

  @SerialVersionUID(0L)
  case object DELIVERED extends EventType {
    val value = 1
    val index = 1
    val name = "DELIVERED"
    override def isDelivered: Boolean = true
  }

  @SerialVersionUID(0L)
  case object OPENED extends EventType {
    val value = 2
    val index = 2
    val name = "OPENED"
    override def isOpened: Boolean = true
  }

  @SerialVersionUID(0L)
  case class Unrecognized(value: Int) extends EventType {
    val name = "UNRECOGNIZED"
    val index = -1
    override def isUnrecognized: Boolean = true
  }

  lazy val values = scala.collection.Seq(QUEUED, DELIVERED, OPENED)
  def fromValue(value: Int): EventType = value match {
    case 0 => QUEUED
    case 1 => DELIVERED
    case 2 => OPENED
    case __other => Unrecognized(__other)
  }
  def descriptor: com.google.protobuf.Descriptors.EnumDescriptor = EventProto.descriptor.getEnumTypes.get(0)
}

The issue here is the Unrecognized case class, since this mechanism requires all constructors to be case objects. This restriction is mentioned briefly in the release notes ("If we had any case classes in our Suit ADT, the derivation would fail to compile"), but should be documented better.
The restriction isn't set in stone—I just wanted to provide a version of the functionality that didn't require a lot of fiddly decisions to be made. If we support case classes, do they get represented as { "Unrecognized": { "value": 0 } } or just { "value": 0 }? Do they get derived instances or do you have to provide those separately?

I see. Sorry, I did read that sentence in the release notes, but totally forgot about it.
For now I'm happy to write my decoders manually, as I only have 3 or 4 enum types. In the long term it might be nice to support case classes as well as case objects, but I understand the desire to avoid overcomplicating things.

Closing for now as out of scope.


Infinite recursion in griffe

Describe the bug
I went into infinite recursion after upgrading mkdocstrings to 0.19, which begins to use griffe.
The stack trace is very long. Its first part is as below:
ERROR    -  Error reading page 'api.md': maximum recursion depth exceeded
Traceback (most recent call last):
  File "/home/rd/venv-freetensor/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/click/core.py", line [10](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:11)55, in main
    rv = self.invoke(ctx)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocs/__main__.py", line 215, in gh_deploy_command
    build.build(cfg, dirty=not clean)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocs/commands/build.py", line 292, in build
    _populate_page(file.page, config, files, dirty)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocs/commands/build.py", line 174, in _populate_page
    page.render(config, files)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocs/structure/pages.py", line 175, in render
    self.content = md.convert(self.markdown)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/markdown/core.py", line 264, in convert
    root = self.parser.parseDocument(self.lines).getroot()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/markdown/blockparser.py", line 90, in parseDocument
    self.parseChunk(self.root, '\n'.join(lines))
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/markdown/blockparser.py", line 105, in parseChunk
    self.parseBlocks(parent, text.split('\n\n'))
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/markdown/blockparser.py", line 123, in parseBlocks
    if processor.run(parent, blocks) is not False:
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocstrings/extension.py", line 121, in run
    html, handler, data = self._process_block(identifier, block, heading_level)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocstrings/extension.py", line 195, in _process_block
    data: CollectorItem = handler.collect(identifier, options)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/mkdocstrings_handlers/python/handler.py", line 195, in collect
    unresolved, iterations = loader.resolve_aliases(only_exported=True, only_known_modules=True)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/loader.py", line 179, in resolve_aliases
    self.expand_wildcards(wildcards_module)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/loader.py", line 247, in expand_wildcards
    self.expand_wildcards(target, only_known_modules)  # type: ignore[union-attr]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/loader.py", line 267, in expand_wildcards
    obj[new_member.name] = Alias(
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 79, in __setitem__
    value.parent = self
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 888, in parent
    self._target.aliases[self.path] = self  # type: ignore[union-attr]  # we just checked the target is not None
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 8[11](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:12), in __getattr__
    attr = getattr(self.target, name)
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 9[20](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:21), in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line [27](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:28), in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 9[44](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:45), in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line [82](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:83)0, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line [92](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:93)0, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line [94](https://github.com/roastduck/FreeTensor/runs/6792201094?check_suite_focus=true#step:4:95)4, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/mixins.py", line 27, in __getitem__
    return self.members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 820, in __getitem__
    return self.target[key]
  File "/home/rd/venv-freetensor/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()

The full log is at here.
To Reproduce
I went into this issue for my Github repo. You can build the document following the guide. Please let me know if this requires too much effort, and I may try to provide a minimal reproduction.
Expected behavior
The doc should be built.
System (please complete the following information):

griffe version: 0.20.0
Python version: 3.9
OS: Linux

Hello, thanks for the report!
I was able to replicate. The issue is again with wildcard imports. They're a PITA to handle :sweat_smile:
I can push a patch that will allow you to build your docs, though the results might be unexpected.
Supporting wildcard imports as well as Python itself will require quite important changes in Griffe. This won't happen very soon :slightly_smiling_face:

I know it's been long since you opened this, but if you get the chance, could you try to build your docs using griffe's fix-more-alias-errors branch?

Could you please a guide on how to install griffe's fix-more-alias-errors branch? It seems there is no setup.py.

Thank you very much for trying and reporting back!
For potential future readers: you can install a Python package from a remote Git repository and a particular branch with:
pip install git+https://github.com/mkdocstrings/griffe@branche-name

I'll go ahead and close this, don't hesitate to open a new issue if it happens again :slightly_smiling_face:

Hi, this issue did happen again. 😂
Still the same issue which causes infinite recursion on the same lines.
No problem with griffe==0.23.0 or griffe==0.24.0, but failed with griffe==0.25.0. Versions of mkdocstrings[python] is resolved by pip accordingly.


Add "Description" field on Trigger Handler records

HEDA Idea: HEDA - Add "Description" field on Trigger Handler records
Created by: Jason Jensen (Smith College)
Idea:
Admins can disable HEDA-specific triggers using Trigger Handler records, but these records only display the name of the relevant class to be run or deactivated. I'd like to see a Description field added to these records with a brief description of what functionality can be managed using Trigger Handlers.
As an admin/developer, I've reviewed HEDA code in GIT to find this information in the past. Now I see that this info is available here: http://developer.salesforce.org/HEDAP/ApexDocumentation/index.html
Examples below are from: http://developer.salesforce.org/HEDAP/ApexDocumentation/Relationships.html

REL_Relationships_Cm_TDTM - Implements relationships behavior on CampaignMember.
REL_Relationships_Con_TDTM - Implements relationships behavior on Contact.
REL_Relationships_TDTM - Implements relationships behavior on Relationship__c.
REL_Utils - Relationships utilities

These descriptions should be added to their correspondent Trigger Handler records in HEDA.

**lurch: add

Tracking W-023528

Downgraded this partially since trigger handlers have associated records.

This GitHub Issue will be closed - please follow this Idea in the Trailblazer Community for updates.


feat: allow model, application as asset type

Related to https://github.com/odpf/meteor/pull/427, https://github.com/odpf/meteor/pull/440

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 86.183%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
4965

Relevant Lines:
5761

💛  - Coveralls


Drag issue with Lobipanel

Anyone knows a fix for the following issue? Unpin a form then move it up in your browser until the header is not visible anymore. You won't be able to pin the window or take control of the form anymore without refreshing the entire page.

This is a bug which is going to be fixed in next updates.

Thank you Zura,
Any workaround to disable moving the form too high and loose control over it?
Thanks
Regards
Hichem
From:  Zura Sekhniashvili<EMAIL_ADDRESS>Reply-To:  arboshiki/lobipanel<EMAIL_ADDRESS>Date:  Sunday 29 May 2016 at 14:49
To:  arboshiki/lobipanel<EMAIL_ADDRESS>Cc:  hichem agrebi<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject:  Re: [arboshiki/lobipanel] Drag issue with Lobipanel (#12)
This is a bug which is going to be fixed in next updates.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

For now I can not think the way how it can be fixed without updating the core of the plugin.
Thank you too

I guess you need to limit the dragging of the lobipanel inside the html document.
This tells the jquery ui (dragging module) to limit the dragging inside the html document only..
I suggest you do this.
Open the lobipanel.js > find this.enableDrag=function(){}

this.enableDrag = function(){
me.$el.draggable({
handle: '.panel-heading',

//add the following codes
containment: "document",
scroll: false

});
return me;
};

Thanks,
I have tested it and it seems to only work if  the panel is unpinned when theres no scrolling on the page.
If you unpin a panel after scrolling down your page (panel located at the bottom of your page) and move it up, the issue remains.
If however you unpin a panel located at the top of the page (without scrolling down), it works.
Any idea ?
Regards
From: shogunfighter<EMAIL_ADDRESS>Reply-To: arboshiki/lobipanel<EMAIL_ADDRESS>Date: Tuesday 28 June 2016 at 06:19
To: arboshiki/lobipanel<EMAIL_ADDRESS>Cc: hichem agrebi<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [arboshiki/lobipanel] Drag issue with Lobipanel (#12)
I guess you need to limit the dragging of the lobipanel inside the html document.
This tells the jquery ui (dragging module) to limit the dragging inside the html document only..
I suggest you do this.
Open the lobipanel.js > find this.enableDrag=function(){}
this.enableDrag = function(){
me.$el.draggable({
handle: '.panel-heading',
//add the following codes
containment: "document",
scroll: false
});
return me;
};

You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@jqueryuser1
I bet you just need to customize the draggable containment parameters in such a way the lobipanel wont throw out of the window/page. Maybe you can try using a different containment parameter aside from "document". You can create your own  and limit the dragging of the lobipanel inside that
More info:
jquery > draggable > containment

This issue is fixed.
Please check it out, if it's fixed

Good afternoon,
I was wondering whether it is possible to move the Lobipanel outside of the current page to make full use of extended or two screen monitors ?
Thanks
Regatds
Hichem
From: shogunfighter<EMAIL_ADDRESS>Reply-To: arboshiki/lobipanel<EMAIL_ADDRESS>Date: Tuesday 28 June 2016 at 06:19
To: arboshiki/lobipanel<EMAIL_ADDRESS>Cc: hichem agrebi<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [arboshiki/lobipanel] Drag issue with Lobipanel (#12)
I guess you need to limit the dragging of the lobipanel inside the html document.
This tells the jquery ui (dragging module) to limit the dragging inside the html document only..
I suggest you do this.
Open the lobipanel.js > find this.enableDrag=function(){}
this.enableDrag = function(){
me.$el.draggable({
handle: '.panel-heading',
//add the following codes
containment: "document",
scroll: false
});
return me;
};

You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Hello,
No this is not possible not in Lobipanel and not in any other web plugin.
Browser does not allow this to move its DOM element outside of it.
On Aug 2, 2016 10:05 PM, "jqueryuser1"<EMAIL_ADDRESS>wrote:
Good afternoon,
I was wondering whether it is possible to move the Lobipanel outside of the
current page to make full use of extended or two screen monitors ?
Thanks
Regatds
Hichem
From: shogunfighter<EMAIL_ADDRESS>Reply-To: arboshiki/lobipanel<EMAIL_ADDRESS>Date: Tuesday 28 June 2016 at 06:19
To: arboshiki/lobipanel<EMAIL_ADDRESS>Cc: hichem agrebi<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [arboshiki/lobipanel] Drag issue with Lobipanel (#12)
I guess you need to limit the dragging of the lobipanel inside the html
document.
This tells the jquery ui (dragging module) to limit the dragging inside the
html document only..
I suggest you do this.
Open the lobipanel.js > find this.enableDrag=function(){}
this.enableDrag = function(){
me.$el.draggable({
handle: '.panel-heading',
//add the following codes
containment: "document",
scroll: false
});
return me;
};
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/arboshiki/lobipanel/issues/12#issuecomment-236990147,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEad0nwh3OKKfsx876P3NN4WfDWiiFV2ks5qb4bqgaJpZM4IpJ_k
.


Installing hiredis-client on macos with M1 fails

Trying to install this as part of a bundle fails
Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [arm64-darwin21]
OS: macos 12.6.1 / Apple M1 Pro
...
Using hashery 2.1.2
Using hirb 0.7.3
Fetching hiredis-client 0.10.0
Installing hiredis-client 0.10.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...

checking for rb_hash_new_capa() in ruby.h... no
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb alloc.c
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb net.c
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb hiredis.c
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sds.c
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb async.c
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb read.c
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sockcompat.c
ar rcs libhiredis.a alloc.o net.o hiredis.o sds.o async.o read.o sockcompat.o
cc -std=c99 -pedantic -c -O3 -fPIC<EMAIL_ADDRESS>-Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb ssl.c
ar rcs libhiredis_ssl.a ssl.o
creating Makefile
..
make "DESTDIR="
compiling hiredis_connection.c
linking shared-object redis_client/hiredis_connection.bundle
Undefined symbols for architecture arm64:
  "_ruby_abi_version", referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [hiredis_connection.bundle] Error 1

make failed, exit code 2

..

An error occurred while installing hiredis-client (0.10.0), and Bundler cannot continue.
Make sure that `gem install hiredis-client -v '0.10.0' --source 'https://rubygems.org/'` succeeds before bundling.

Hum, works fine on my machine:
$ ruby -v
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [arm64-darwin21]

$ gem install hiredis-client -v 0.10.0
Fetching redis-client-0.10.0.gem
Fetching hiredis-client-0.10.0.gem
Successfully installed redis-client-0.10.0
Building native extensions. This could take a while...
Successfully installed hiredis-client-0.10.0
Parsing documentation for redis-client-0.10.0
Installing ri documentation for redis-client-0.10.0
Parsing documentation for hiredis-client-0.10.0
Installing ri documentation for hiredis-client-0.10.0
Done installing documentation for redis-client, hiredis-client after 1 seconds
2 gems installed

What does RbConfig::CONFIG['CC'] look like on your machine?

Thanks for the feedback.

What does RbConfig::CONFIG['CC'] look like on your machine?

Just tried with 2.7.6:
$ ruby -v
ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [arm64-darwin21]

$ ruby -e "puts RbConfig::CONFIG['CC']"
gcc

I get the same error when building as with ruby 2.7.5.
When I use the x86_64-darwin21 architecture, it works..

Hum, that's interesting, I'll try to reproduce.
What you pasted suggest your ruby was built with gcc, even though you are on macOS.
How did you build that ruby and did you brew install gcc or something? Asking to see if I can find a way to reproduce on my machine (I'm also on M1).
Also could you run cc --version and show me the output? Thank you!

I'm seeing the same issue:
gem install hiredis-client -v 0.10.0 -- --with-openssl-dir=/opt/homebrew/opt/openssl@3/ -v
Building native extensions with: '--with-openssl-dir=/opt/homebrew/opt/openssl@3/ -v'
This could take a while...
ERROR:  Error installing hiredis-client:
  ERROR: Failed to build gem native extension.

    current directory<EMAIL_ADDRESS>/Users/arian/.rvm/rubies/ruby-3.1.2/bin/ruby -I /Users/arian/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0 -r ./siteconf20221101-74283-hn6uzk.rb extconf.rb --with-openssl-dir\=/opt/homebrew/opt/openssl@3/ -v
checking for rb_hash_new_capa() in ruby.h... no
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb alloc.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb net.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb hiredis.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sds.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb async.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb read.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sockcompat.c
ar rcs libhiredis.a alloc.o net.o hiredis.o sds.o async.o read.o sockcompat.o
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/homebrew/opt/openssl@3//include" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb ssl.c
ar rcs libhiredis_ssl.a ssl.o
creating Makefile

current directory<EMAIL_ADDRESS>make DESTDIR\= clean

current directory<EMAIL_ADDRESS>make DESTDIR\=
compiling hiredis_connection.c
linking shared-object redis_client/hiredis_connection.bundle
Undefined symbols for architecture arm64:
  "_ruby_abi_version", referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [hiredis_connection.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in<EMAIL_ADDRESS>for inspection.
Results logged to<EMAIL_ADDRESS>
ruby -e "puts RbConfig::CONFIG['CC']"
gcc

@arianf thanks for the report, can you run cc --version and post the output?

$ cc --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin22.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Oh that's a weird one, even macOS 13 (Ventura) is supposed to ship with clang 13 and somehow you have clang 14.
I'll try to see if that's what cause the issue, not sure how I can upgrade though.

See an similar issue here: https://github.com/grpc/grpc/issues/30976

Yeah I know, @peterzhu2118 pointed the same GRPC error to me. I suppose we now know that clang-14 is the trigger. Now the question is how to fix it.

I'm not able to reproduce this issue on Xcode 14 either.
There is an upstream Ruby bug report about this, though: https://bugs.ruby-lang.org/issues/19005

Thank you very much @stanhu. If I understood that ticket correctly, ruby interpreters compiled with Xcode 14 have some missing flags in RbConfig::CONFIG['DLDFLAGS'], so we could probably work around this by adding them back?
@dup2 / @arianf I'd appreciate if you could share the value of p RbConfig::CONFIG['DLDFLAGS'] on your rubies, just do confirm dynamic_lookup is missing.
I'll try to repro and provide a fix tomorrow.

Oh, I forgot I had my compiler set with "-Wl,-undefined,dynamic_lookup".
When I used Ruby 3.1.2 without those flags, it fails on XCode 14.
irb(main):001:0> RbConfig::CONFIG['DLDFLAGS']
=> "-L/Users/stanhu/.asdf/installs/ruby/3.1.2/lib  -Wl,-multiply_defined,suppress"

Upgrading to Ruby 3.2.0-preview2 fixes it for me
gem install hiredis-client -v 0.11.0 -- --with-openssl-dir=/opt/homebrew/opt/openssl@3 -t
Building native extensions with: '--with-openssl-dir=/opt/homebrew/opt/openssl@3 -t'
This could take a while...
Successfully installed hiredis-client-0.11.0
Parsing documentation for hiredis-client-0.11.0
Installing ri documentation for hiredis-client-0.11.0
Done installing documentation for hiredis-client after 0 seconds
1 gem installed

Thank you very much @stanhu. If I understood that ticket correctly, ruby interpreters compiled with Xcode 14 have some missing flags in RbConfig::CONFIG['DLDFLAGS'], so we could probably work around this by adding them back?

Yes, that's a workaround, but I believe gems should be able to be compiled without those flags, though that's not a commonly-tested path.
Examples of other fixes:

https://github.com/pganalyze/pg_query/pull/256 (this one seems quite similar here)
https://github.com/chef/ffi-yajl/pull/114

Ruby 3.2.0-preview2:
$ 3.2.0-preview2 :001 > p RbConfig::CONFIG['DLDFLAGS']
"-Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress"

Ruby 3.1.2:
$ 3.1.2 :001 > p RbConfig::CONFIG['DLDFLAGS']
"-L/opt/homebrew/opt/libyaml/lib -L/opt/homebrew/opt/libksba/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/zlib/lib<EMAIL_ADDRESS>-Wl,-multiply_defined,suppress"

Dropping this line fixed the compilation issue for me:

Yeah, because it doesn't exist on 3.1 and older, but then that will break on 3.2.0 when this field will need to be exported. @peterzhu2118 can correct me if I'm wrong on that one.

I wonder if another option is to ignore the missing symbol via:
diff --git a/hiredis-client/ext/redis_client/hiredis/extconf.rb b/hiredis-client/ext/redis_client/hiredis/extconf.rb
index 39204c3..a7c13c1 100644
--- a/hiredis-client/ext/redis_client/hiredis/extconf.rb
+++ b/hiredis-client/ext/redis_client/hiredis/extconf.rb
@@ -45,6 +45,7 @@ if RUBY_ENGINE == "ruby" && !RUBY_PLATFORM.match?(/mswin/)

   $CFLAGS << " -I#{hiredis_dir}"
   $LDFLAGS << " -lssl -lcrypto"
+  $DLDFLAGS << " -Wl,-U,_ruby_abi_version"
   $libs << " #{hiredis_dir}/libhiredis.a #{hiredis_dir}/libhiredis_ssl.a "
   $CFLAGS << " -std=c99 "
   if ENV["EXT_PEDANTIC"]

Yeah, this export is required for Ruby 3.2 compatibility.
I wonder if this is a regression in xcode 14.1 beta. I remember being able to repro this issue in gRPC but I'm now unable to. Looking at @arianf's output, it seems like you're on xcode 14.1 beta 3, whereas I'm on the release version of xcode 14.1 (released today, Nov 1 2022) with a newer build of clang:
$ cc --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin22.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

I will try to downgrade to xcode 14.1 beta 3 tomorrow and see if I can repro this issue again.

I wonder if this is a regression in xcode 14.1 beta.

As I mentioned in the Ruby bug report, XCode 14.0 now warns with the message when -Wl,undefined,dynamic_lookup is used:
% gcc -o test -Wl,-undefined,dynamic_lookup test.c
ld: warning: -undefined dynamic_lookup may not work with chained fixups

This warning was enough to make the Ruby configure script believe that those flags were no longer available on the system. -Wl,undefined,dynamic_lookup has long been the default everywhere, and most gems were not tested without those flags.
I believe the patches in https://github.com/ruby/ruby/pull/6441/files fix the configure script in Ruby to enable this linker option despite the warning message, which is why the latest 3.2.0 preview release works fine.

Thanks for your quick reaction, lads - much appreciated!

@dup2 / @arianf I'd appreciate if you could share the value of p RbConfig::CONFIG['DLDFLAGS'] on your rubies, just do confirm dynamic_lookup is missing.

$ ruby --version
ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [arm64-darwin21]

$ ruby -e "p RbConfig::CONFIG['DLDFLAGS']"
"-Wl,-multiply_defined,suppress -L/opt/homebrew/opt/libyaml/lib -L/opt/homebrew/opt/libksba/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/zlib/lib<EMAIL_ADDRESS>
$ cc --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Ok, so I made a PR with what I think is a decent workaround: https://github.com/redis-rb/redis-client/pull/59
I'd appreciate if someone who experience this bug could give that branch a try to confirm the workaround doesn't only work on my machine.
gem "hiredis-client", github: "redis-rb/redis-client"

Also I'm far from a linker and compiler expert, so if you believe that is a better way to handle this, I'm all ears.

Ok, so I made a PR with what I think is a decent workaround: #59

Thanks!
Unfortunately, this does not work for me. Most likely because the check for RbConfig::CONFIG['CC'] does not match as it is set to gcc on my installation.

Thank you @dup2. I modified my PR a bit more to try to account for this. Could you try again?

Thank you @dup2. I modified my PR a bit more to try to account for this. Could you try again?

Thanks @casperisfine  - I get another error now:
/Users/ok/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/arm64-darwin21/rbconfig.rb:302:in `replace': can't modify frozen String: "$(CC) --version" (FrozenError)

Please note also that the reference in the Gemfile had to be like this to test the commit in the linked PR #59 :
gem "hiredis-client", github: "redis-rb/redis-client", ref: "5fdf0a53141e56d19cb3df2069dd827ae66d5961"

otherwise just the master branch would have been used..

Any chance #59 could be merged and a new release published?

Yeah, I was planning to do it today, I was waiting for more confirmation that it worked.

Done.

Hey!
I am getting this error on the latest version of hiredis-client with ruby 3.2.0 (installed from rvm) on M1 Mac (with Ventura):
current directory: /Users/yosi/.rvm/gems/ruby-3.2.0/gems/hiredis-client-0.11.2/ext/redis_client/hiredis
make DESTDIR\= sitearchdir\=./.gem.20221228-85594-pmzmc2 sitelibdir\=./.gem.20221228-85594-pmzmc2 clean

current directory: /Users/yosi/.rvm/gems/ruby-3.2.0/gems/hiredis-client-0.11.2/ext/redis_client/hiredis
make DESTDIR\= sitearchdir\=./.gem.20221228-85594-pmzmc2 sitelibdir\=./.gem.20221228-85594-pmzmc2
compiling hiredis_connection.c
linking shared-object redis_client/hiredis_connection.bundle
Undefined symbols for architecture arm64:
  "_ruby_abi_version", referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [hiredis_connection.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/yosi/.rvm/gems/ruby-3.2.0/gems/hiredis-client-0.11.2 for inspection.
Results logged to /Users/yosi/.rvm/gems/ruby-3.2.0/extensions/arm64-darwin-22/3.2.0/hiredis-client-0.11.2/gem_make.out

 ❯ ruby --version
ruby 3.2.0 (2022-12-25 revision a528908271) [arm64-darwin22]

~
 ❯ ruby -e "p RbConfig::CONFIG['DLDFLAGS']"
"-L/opt/homebrew/opt/libyaml/lib -L/opt/homebrew/opt/libksba/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/zlib/lib<EMAIL_ADDRESS>-Wl,-multiply_defined,suppress"

~
 ❯ cc --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin22.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

 ❯ gcc --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin22.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

 ❯ ruby -e "puts RbConfig::CONFIG['CC']"
gcc

am I missing something?

Same, it is reproduced again on Ruby 3.2.0 proper (as opposed to 3.2.0-rc1).

Indeed, I'm not seeing ruby_abi_version being exported in Ruby 3.2.0:
% nm ~/.asdf/installs/ruby/3.2.0/lib/libruby.dylib | grep ruby_abi
%

However, my older 3.2.0-dev install (circa November 2022), the symbol is present in the static library:
% nm ~/.asdf/installs/ruby/3.2.0-dev/lib/libruby.3.2-static.a | grep ruby_abi_version | tail -1
0000000000000000 T _ruby_abi_version

redis-client compiles fine with 3.2.0-dev, but not 3.2.0.
Looking at ruby-build, I see that it appears to build Ruby differently:

3.2.0: https://github.com/rbenv/ruby-build/blob/697bcff8b50e9673036cf54200bd82eb689fe3db/share/ruby-build/3.2.0#L2

irb(main):004:0> RbConfig::CONFIG['configure_args']
=> " '--prefix=/Users/stanhu/.asdf/installs/ruby/3.2.0' '--with-openssl-dir=/Users/stanhu/.asdf/installs/ruby/3.2.0/openssl' '--enable-shared' '--with-readline-dir=/opt/homebrew/opt/readline' '--with-gmp-dir=/opt/homebrew/opt/gmp' 'CC=clang' 'LDFLAGS=-L/Users/stanhu/.asdf/installs/ruby/3.2.0/lib ' 'CPPFLAGS=-I/Users/stanhu/.asdf/installs/ruby/3.2.0/include '"

3.2.0-dev: https://github.com/rbenv/ruby-build/blob/697bcff8b50e9673036cf54200bd82eb689fe3db/share/ruby-build/3.2.0-dev#L2

irb(main):004:0> RbConfig::CONFIG['configure_args']
=> " '--prefix=/Users/stanhu/.asdf/installs/ruby/3.2.0-dev' '--with-openssl-dir=/Users/stanhu/.asdf/installs/ruby/3.2.0-dev/openssl' '--with-readline-dir=/opt/homebrew/opt/readline' '--with-gmp-dir=/opt/homebrew/opt/gmp' 'CC=clang' 'LDFLAGS=-L/Users/stanhu/.asdf/installs/ruby/3.2.0-dev/lib ' 'CPPFLAGS=-I/Users/stanhu/.asdf/installs/ruby/3.2.0-dev/include '"

The main difference I see here is that --enable-shared is not used in the latter case. Is there a bug where this version isn't exported with --enabled-shared? Looking at https://bugs.ruby-lang.org/projects/ruby-master/repository/git/revisions/3df16924b45adfd88c20ef5fe25b10a1acb82dd7, I wonder if one of the macro definitions is set differently this case.
In addition, it seems that ruby_abi_version may not always be present, particularly with Windows: https://github.com/ruby/ruby/blob/cada537040743cbe49aac6740816d648ca0d3fb6/include/ruby/internal/abi.h#L29-L33

Actually, is the issue here that ruby_abi_version is only exported for Ruby 3.3.0, and not 3.2.0?

I think it's only exported in dev versions... finals don't have it.

That seems to be the case. Is it sufficient to check whether RUBY_DEVEL is defined?
irb(main):001:0> RbConfig::CONFIG['RUBY_DEVEL']
=> ""
irb(main):002:0> RbConfig::CONFIG.key?('RUBY_DEVEL')
=> true

Hum, not too sure. @peterzhu2118 what would you say would be the most reliable check?

I think the simplest check would be to use the RUBY_PATCHLEVEL constant. It's -1 on development versions and >= 0 on released versions.

Ah, thanks! I see https://github.com/ruby/ruby/pull/6231 now.

Is there a reason to use a symbol list (like https://github.com/redis-rb/redis-client/issues/58#issuecomment-1299338665) in this gem? Dropping that list would be the most future-proof solution and easiest to maintain.
The symbol list will also make the gem not build on TruffleRuby for instance which uses a different symbol (which predates rb_abi_version).

FYI I've filed https://bugs.ruby-lang.org/issues/19289 on the Ruby side to see how we could improve things related to rb_abi_version.

Is there a reason to use a symbol list (like #58 (comment)) in this gem?

Yes, it's to allow both hiredis-client and hiredis to be loaded in the same process: https://github.com/redis-rb/redis-client/pull/17 / https://github.com/redis-rb/redis-client/issues/16.
I wish I didn't have to do this, but the two gems might need to co-exist for a while.
If you know of a better way to fix that root cause I'd be happy to switch, otherwise, I might remove that hack in a year or so when I can expect most people will have migrated out of the hiredis / redis 4.x gems.

The same error exists for x86_64-darwin-22 with ruby 3.2.0
Undefined symbols for architecture x86_64:
  "_ruby_abi_version", referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture x86_64

Update to version 0.12.0 fixed the problem.

I think the simplest check would be to use the RUBY_PATCHLEVEL constant. It's -1 on development versions and >= 0 on released versions.

have_func("ruby_abi_version()") would suffice.

have_func("ruby_abi_version()") would suffice.

🤦 that makes so much sense...

Damn, somehow I also didn't think about that, but it's definitely cleaner than checking the version and patchlevel.
It assumes ruby_abi_version is a function and not a global variable, hopefully that doesn't need to change.

Maybe I'm doing something wrong, but it doesn't seem to work:
$ ruby -v
ruby 3.2.0dev (2022-12-12T07:21:31Z master be18b60c33) [arm64-darwin22]
$ bundle exec rake clean compile
mkdir -p tmp/arm64-darwin22/hiredis_connection/3.2.0
cd tmp/arm64-darwin22/hiredis_connection/3.2.0
/opt/rubies/3.2.0/bin/ruby -I. -r.rake-compiler-siteconf.rb ../../../../hiredis-client/ext/redis_client/hiredis/extconf.rb
checking for rb_hash_new_capa() in ruby.h... yes
checking for ruby_abi_version() in ruby.h... no

@casperisfine Could you try without the parens too, i.e., have_func("ruby_abi_version") ?
Or maybe have_func doesn't work for __attribute__((weak)) functions?

As usual the mkmf.log should contain more info about what it tried and what failed.

without parens:
have_func: checking for ruby_abi_version() in ruby.h... -------------------- no

DYLD_FALLBACK_LIBRARY_PATH=.:/opt/rubies/3.2.0/lib "clang -o conftest -I/opt/rubies/3.2.0/include/ruby-3.2.0/arm64-darwin22 -I/opt/rubies/3.2.0/include/ruby-3.2.0/ruby/backward -I/opt/rubies/3.2.0/include/ruby-3.2.0 -I../../../../hiredis-client/ext/redis_client/hiredis -I/opt/rubies/3.2.0/include  -I/opt/homebrew/opt/gmp/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT   -fdeclspec -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wundef  -fno-common -pipe conftest.c  -L. -L/opt/rubies/3.2.0/lib -L. -L/opt/rubies/3.2.0/lib  -fstack-protector-strong -L/opt/homebrew/opt/gmp/lib     -lruby.3.2  -lpthread  "
conftest.c:16:57: error: use of undeclared identifier 'ruby_abi_version'
int t(void) { void ((*volatile p)()); p = (void ((*)()))ruby_abi_version; return !p; }
                                                        ^
1 error generated.
checked program was:
/* begin */
 1: #include "ruby.h"
 2:
 3: #include <ruby.h>
 4:
 5: /*top*/
 6: extern int t(void);
 7: int main(int argc, char **argv)
 8: {
 9:   if (argc > 1000000) {
10:     int (* volatile tp)(void)=(int (*)(void))&t;
11:     printf("%d", (*tp)());
12:   }
13:
14:   return !!argv[argc];
15: }
16: int t(void) { void ((*volatile p)()); p = (void ((*)()))ruby_abi_version; return !p; }
/* end */

with parens:
have_func: checking for ruby_abi_version() in ruby.h... -------------------- no

DYLD_FALLBACK_LIBRARY_PATH=.:/opt/rubies/3.2.0/lib "clang -o conftest -I/opt/rubies/3.2.0/include/ruby-3.2.0/arm64-darwin22 -I/opt/rubies/3.2.0/include/ruby-3.2.0/ruby/backward -I/opt/rubies/3.2.0/include/ruby-3.2.0 -I../../../../hiredis-client/ext/redis_client/hiredis -I/opt/rubies/3.2.0/include  -I/opt/homebrew/opt/gmp/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT   -fdeclspec -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wundef  -fno-common -pipe conftest.c  -L. -L/opt/rubies/3.2.0/lib -L. -L/opt/rubies/3.2.0/lib  -fstack-protector-strong -L/opt/homebrew/opt/gmp/lib     -lruby.3.2  -lpthread  "
conftest.c:17:15: error: implicit declaration of function 'ruby_abi_version' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
int t(void) { ruby_abi_version(); return 0; }
              ^
conftest.c:17:15: note: did you mean 'ruby_show_version'?
/opt/rubies/3.2.0/include/ruby-3.2.0/ruby/internal/interpreter.h:120:6: note: 'ruby_show_version' declared here
void ruby_show_version(void);
     ^
1 error generated.
checked program was:
/* begin */
 1: #include "ruby.h"
 2:
 3: #include <ruby.h>
 4:
 5: /*top*/
 6: extern int t(void);
 7: int main(int argc, char **argv)
 8: {
 9:   if (argc > 1000000) {
10:     int (* volatile tp)(void)=(int (*)(void))&t;
11:     printf("%d", (*tp)());
12:   }
13:
14:   return !!argv[argc];
15: }
16:
17: int t(void) { ruby_abi_version(); return 0; }
/* end */

--------------------

Hum, wait: /opt/rubies/3.2.0/include
it's looking into my final 3.2.0, not the currently active dev version:
$ which ruby
/opt/rubies/3.2.0-dev-12-13/bin/ruby

$ which ruby
/opt/rubies/3.2.0-dev-12-13/bin/ruby

Did you configured it with --prefix=/opt/rubies/3.2.0-dev-12-13?

Rather I recommend decorating Init_hiredis_connection with RUBY_FUNC_EXPORTED and adding -fvisibility=hidden.

@nobu your solution works great, but I tried it and I don't think it works in this case:
$ nm hiredis-client/lib/redis_client/hiredis_connection.bundle
...
000000000000dab8 T _redisAsyncConnectWithOptions
000000000000e4f4 T _redisAsyncDisconnect
000000000000faf8 T _redisAsyncFormattedCommand
000000000000df08 T _redisAsyncFree
000000000000ed44 T _redisAsyncHandleRead
000000000000f0f8 T _redisAsyncHandleTimeout
000000000000f0a8 T _redisAsyncHandleWrite
000000000000ec40 T _redisAsyncRead
0000000000012460 t _redisAsyncRead.cold.1
...

I think the reason is that we first compile the hiredis library, and then link it:
  $libs << " #{hiredis_dir}/libhiredis.a #{hiredis_dir}/libhiredis_ssl.a "

If I try to compile libhiredis with -fvisibility=hidden too, then It fail to find openssl somehow:
$ bundle exec rake clean compile
mkdir -p tmp/arm64-darwin22/hiredis_connection/3.2.0
cd tmp/arm64-darwin22/hiredis_connection/3.2.0
/opt/rubies/3.2.0/bin/ruby -I. -r.rake-compiler-siteconf.rb ../../../../hiredis-client/ext/redis_client/hiredis/extconf.rb
checking for rb_hash_new_capa() in ruby.h... yes
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb alloc.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb net.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb hiredis.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sds.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb async.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb read.c
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sockcompat.c
ar rcs libhiredis.a alloc.o net.o hiredis.o sds.o async.o read.o sockcompat.o
cc -std=c99 -pedantic -c -O3 -fPIC  "-I/opt/rubies/3.2.0/openssl/include -fvisibility=hidden" -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb ssl.c
ssl.c:45:10: fatal error: 'openssl/ssl.h' file not found
#include <openssl/ssl.h>
         ^~~~~~~~~~~~~~~
1 error generated.
make: *** [ssl.o] Error 1
*** ../../../../hiredis-client/ext/redis_client/hiredis/extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Not sure if there is a way to fix this, I'm really not good enough with linkers and such to really figure that out. I'd love to make it work that way though, it seems much cleaner and simpler.

Nevermind, I think i figured it out.


Wildcards on Freecen2 search page

Wildcards: nothing about these in the help file. Which are permitted? Just * and ?
Why can wildcards only be used with a specific place? Is this a legacy notification? Possible to change this to not requiring a place (or a county)

@Captainkirkdawson what's your take on this?

@AnneV-Learn do you know an answer to why wildcards in a name can only be used with a specific place?

@PatReynolds @rhodamackenzie
My guess would be a combination of the following:
Just using a name in a Search cannot make use of indexes and so the search may take longer than the permitted 100 secs
Searches are limited to 500 results records and a wildcard without a place is very likely to return more records than that.
However I think I have found a bug - I cannot set the wildcard facility in Search to work at all, even if a specify a place.
If you agree there is a bug please raise another issue to cover that and assign to me.

Is this story #605?


Allow action composition

Can be useful:

to perform complex action (shuffle + rotate randomly)
to execute "phase of initiation of a new turn" with several actions (always the same) to be carried out in succession.

(Related to #317)

Think it like scripting...


action button postion

How to set action button on top right?

you can play around the props verticalOrientation, position, offsetY and offsetX

@princesust verticalOrientation="down" position="right"