{"library":"python-active-directory","title":"Python Active Directory Client Library","description":"Python-AD is an Active Directory client library designed for Python on UNIX/Linux systems. It provides a programmatic interface for performing various LDAP and Kerberos operations against Microsoft Active Directory domains. The library currently supports Python 3 environments, with its latest stable release being 2.0.1.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install python-active-directory"],"cli":null},"imports":["from activedirectory import Client"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom activedirectory import Client\n\n# Environment variables for sensitive information\nAD_SERVER = os.environ.get('AD_SERVER', 'your.ad.domain.com')\nAD_USERNAME = os.environ.get('AD_USERNAME', 'username@your.ad.domain.com')\nAD_PASSWORD = os.environ.get('AD_PASSWORD', 'your_password')\nAD_BASE_DN = os.environ.get('AD_BASE_DN', 'dc=your,dc=ad,dc=domain,dc=com')\n\ntry:\n    # Initialize the client, assuming typical LDAP over SSL (LDAPS) on port 636\n    # Note: The exact Client constructor might vary; this is an educated guess based on typical AD client libs.\n    # Consult official documentation or source code for precise constructor arguments.\n    ad_client = Client(\n        host=AD_SERVER,\n        username=AD_USERNAME,\n        password=AD_PASSWORD,\n        base_dn=AD_BASE_DN,\n        use_ssl=True, # Recommended for production\n        port=636\n    )\n\n    print(f\"Successfully connected to AD server: {AD_SERVER}\")\n\n    # Example: Search for a user (replace 'testuser' with an actual sAMAccountName)\n    # The library is expected to provide methods for common AD operations.\n    # This part is illustrative as specific methods are not detailed in public search results for 'theatlantic' fork.\n    # For a real implementation, you'd call a search_user or find_object method if available.\n    # For demonstration, let's assume a basic search capability for an object by its sAMAccountName.\n    # The actual implementation would require diving into the library's available methods.\n    print(f\"\\nAttempting to find user with sAMAccountName: {AD_USERNAME.split('@')[0]}\")\n    # In a real scenario, you'd use a dedicated search method like:\n    # user_found = ad_client.search_user(sAMAccountName=AD_USERNAME.split('@')[0])\n    # For a simple connection test without specific search methods, we'll just confirm connection.\n    # To perform actual searches, you would typically use methods exposed by the Client object, \n    # often involving LDAP filters.\n    \n    # Example of a generic search (hypothetical method):\n    # results = ad_client.search(base_dn=AD_BASE_DN, filter=f'(sAMAccountName={AD_USERNAME.split('@')[0]})')\n    # if results:\n    #     print(f\"Found user: {results[0].get('cn')}\")\n    # else:\n    #     print(\"User not found.\")\n\n    # If the Client object itself doesn't expose a direct 'search' method for this quickstart,\n    # we will just confirm the connection was successful.\n    print(\"Basic AD client initialized. Further operations depend on specific library methods.\")\n\nexcept Exception as e:\n    print(f\"Error connecting or interacting with Active Directory: {e}\")\n    print(\"Ensure AD_SERVER, AD_USERNAME, AD_PASSWORD, and AD_BASE_DN are correctly set.\")","lang":"python","description":"This quickstart demonstrates how to initialize the `Client` for connecting to Active Directory. It expects environment variables for the AD server, username (preferably UPN format), password, and base DN. The example assumes a secure connection using LDAPS on port 636, which is standard. Further interactions like searching for users would rely on methods exposed by the `Client` object, which are to be explored in the library's specific API documentation.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":null,"pypi_latest":"2.0.1","is_stale":null,"summary":{"python_range":"3.10–3.9","success_rate":0,"avg_install_s":null,"avg_import_s":null,"wheel_type":null},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.7,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":4,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":4.9,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":4.3,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-active-directory","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":4.1,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}