class PrincipalSource
An enumeration-style class that defines constants representing different sources from which a principal (user identity) can be obtained in an authentication/authorization context.
/tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/principal/source.py
1 - 23
simple
Purpose
PrincipalSource provides a set of integer constants that act as flags to specify where principal (user) information should be retrieved from. It supports bitwise operations through its values, allowing multiple sources to be combined. This is commonly used in security and authentication systems to determine which identity providers or user information sources should be consulted when establishing a user's identity and permissions.
Source Code
class PrincipalSource:
"""Specifies the source of a principal."""
def __init__(self):
pass
None_ = 0
"""Do not specify a principal source."""
UserInfoList = 1
"""Use the user information list as the source."""
Windows = 2
"""Use Windows as the source."""
MembershipProvider = 4
"""Use the current membership provider as the source."""
RoleProvider = 8
"""Use the current role provider as the source"""
All = 15
"""Use all principal sources."""
Parameters
| Name | Type | Default | Kind |
|---|---|---|---|
bases |
- | - |
Parameter Details
bases: This parameter appears in the docstring but is not actually used in the __init__ method. The constructor takes no parameters and performs no initialization.
Return Value
Instantiating PrincipalSource returns a PrincipalSource object, though the class is primarily designed to be used for its class-level constants rather than creating instances. The constants (None_, UserInfoList, Windows, MembershipProvider, RoleProvider, All) return integer values that can be used as flags.
Class Interface
Methods
__init__(self) -> None
Purpose: Initializes a PrincipalSource instance. The constructor is empty and performs no operations.
Returns: None - creates an instance of PrincipalSource
Attributes
| Name | Type | Description | Scope |
|---|---|---|---|
None_ |
int | Constant value 0 indicating no principal source should be specified | class |
UserInfoList |
int | Constant value 1 indicating the user information list should be used as the principal source | class |
Windows |
int | Constant value 2 indicating Windows authentication should be used as the principal source | class |
MembershipProvider |
int | Constant value 4 indicating the current membership provider should be used as the principal source | class |
RoleProvider |
int | Constant value 8 indicating the current role provider should be used as the principal source | class |
All |
int | Constant value 15 representing all principal sources combined (bitwise OR of all other constants) | class |
Usage Example
# Using PrincipalSource constants as flags
from principal_source import PrincipalSource
# Use a single source
source = PrincipalSource.Windows
print(source) # Output: 2
# Combine multiple sources using bitwise OR
combined_source = PrincipalSource.UserInfoList | PrincipalSource.Windows
print(combined_source) # Output: 3
# Check if a specific source is included using bitwise AND
if combined_source & PrincipalSource.Windows:
print("Windows source is included")
# Use all sources
all_sources = PrincipalSource.All
print(all_sources) # Output: 15
# Check if a source is set in a combined value
if all_sources & PrincipalSource.MembershipProvider:
print("MembershipProvider is included in All")
# Instantiation (though typically not needed)
ps = PrincipalSource()
print(ps.Windows) # Output: 2
Best Practices
- This class is designed as a constants container (similar to an enum) and typically should not be instantiated. Access the constants directly via the class name (e.g., PrincipalSource.Windows).
- The integer values are designed to work as bit flags, allowing multiple sources to be combined using bitwise OR (|) operations.
- Use bitwise AND (&) to check if a specific source is included in a combined value.
- The 'All' constant (15) is the bitwise OR of all other sources (1|2|4|8 = 15), representing all available principal sources.
- The 'None_' constant uses an underscore suffix to avoid conflict with Python's None keyword.
- Consider using Python's enum.IntFlag from the standard library for similar functionality in modern Python code, as it provides better type safety and IDE support.
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
class PrincipalType 72.8% similar
-
class Principal 62.3% similar
-
class Principal_v1 61.5% similar
-
class PrincipalInfo 58.1% similar
-
class ServicePrincipal 54.5% similar